#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Copyright (C) 2006, TUBITAK/UEKAE
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option)
# any later version.
#
from qt import *
from kdecore import *
from kdeui import *
from utility import *
class GID:
def __init__(self, stack, w, grid):
self.stack = stack
lab = QLabel(i18n("ID:"), w)
hb = QHBox(w)
hb.setSpacing(6)
self.gid = QLineEdit(hb)
self.gid.connect(self.gid, SIGNAL("textChanged(const QString &)"), self.slotChange)
self.gid.setValidator(QIntValidator(0, 65535, self.gid))
self.gid.setEnabled(False)
lab.setBuddy(self.gid)
self.gid_auto = QCheckBox(i18n("Select manually"), hb)
w.connect(self.gid_auto, SIGNAL("toggled(bool)"), self.slotToggle)
row = grid.numRows()
grid.addWidget(lab, row, 0, Qt.AlignRight)
grid.addWidget(hb, row, 1)
def slotChange(self, text):
self.stack.guide.check()
def slotToggle(self, bool):
self.gid.setEnabled(bool)
self.stack.guide.check()
def text(self):
if self.gid_auto.isChecked():
return str(self.gid.text())
else:
return "auto"
def setText(self, text):
if text == "auto":
self.gid_auto.setChecked(False)
self.gid.setText("")
else:
self.gid_auto.setChecked(True)
self.gid.setText(text)
class Name:
def __init__(self, stack, w, grid):
self.stack = stack
lab = QLabel(i18n("Group name:"), w)
self.name = QLineEdit(w)
lab.setBuddy(self.name)
self.name.setValidator(QRegExpValidator(QRegExp("[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]*"), self.name))
self.name.connect(self.name, SIGNAL("textChanged(const QString &)"), self.slotChange)
row = grid.numRows()
grid.addWidget(lab, row, 0, Qt.AlignRight)
grid.addWidget(self.name, row, 1)
def slotChange(self, text):
self.stack.guide.check()
def text(self):
return str(self.name.text())
def setText(self, text):
self.name.setText(text)
class Guide(QWidget):
def __init__(self, parent):
QWidget.__init__(self, parent)
hb = QHBoxLayout(self)
hb.setMargin(6)
hb.setSpacing(6)
lab = QLabel(self)
lab.setPixmap(getIconSet("help.png", KIcon.Panel).pixmap(QIconSet.Automatic, QIconSet.Normal))
hb.addWidget(lab, 0, hb.AlignTop)
self.info = KActiveLabel(" ", self)
hb.addWidget(self.info)
def check(self):
err = None
p = self.parent()
if p.g_id.text() == "":
err = i18n("Enter a group ID or use auto selection")
if not err and p.g_name.text() == "":
err = i18n("Enter a group name")
if err:
self.info.setText(u"%s" % err)
self.ok_but.setEnabled(False)
else:
self.info.setText("")
self.ok_but.setEnabled(True)
return err
def op_start(self, msg):
self.buttons.setEnabled(False)
self.info.setText(msg)
def op_end(self, msg=None):
self.buttons.setEnabled(True)
if msg:
self.info.setText(u"%s" % msg)
class GroupStack(QVBox):
def __init__(self, parent):
QVBox.__init__(self, parent)
self.setMargin(6)
self.setSpacing(6)
self.mainwidget = parent
lab = QLabel(u"%s" % i18n("Enter Information For New Group"), self)
hb = QHBox(self)
w = QWidget(hb)
hb.setStretchFactor(w, 2)
grid = QGridLayout(w, 0, 0)
grid.setSpacing(6)
grid.addWidget(QLabel(" ", w), grid.numRows(), 0)
self.g_id = GID(self, w, grid)
grid.addWidget(QLabel(" ", w), grid.numRows(), 0)
self.g_name = Name(self, w, grid)
grid.addWidget(QLabel(" ", w), grid.numRows(), 0)
lab = QLabel(" ", hb)
hb.setStretchFactor(lab, 1)
self.guide = Guide(self)
hb = QHBox(self)
hb.setSpacing(12)
QLabel(" ", hb)
but = QPushButton(getIconSet("add.png", KIcon.Small), i18n("Add"), hb)
self.guide.ok_but = but
self.connect(but, SIGNAL("clicked()"), self.slotAdd)
but = QPushButton(getIconSet("cancel.png", KIcon.Small), i18n("Cancel"), hb)
self.connect(but, SIGNAL("clicked()"), parent.slotCancel)
self.guide.buttons = hb
def slotAdd(self):
if self.guide.check():
return
self.guide.op_start(i18n("Adding group..."))
def groupDone(gid):
self.parent().browse.groupModified(gid, self.g_name.text())
self.guide.op_end()
self.parent().slotCancel()
def groupCancel():
self.parent().slotCancel()
def groupError(heta):
self.parent().slotCancel()
if self.g_id.text() == "auto":
gid = -1
else:
gid = int (self.g_id.text())
ch = self.mainwidget.callMethod("addGroup", "tr.org.pardus.comar.user.manager.addgroup")
ch.registerDone(groupDone)
ch.registerError(groupError)
ch.registerCancel(groupCancel)
ch.call(gid, self.g_name.text())
def startAdd(self):
self.g_id.setText("auto")
self.g_name.setText("")
self.guide.check()
self.g_name.name.setFocus()