enhanced button behaviour

This commit is contained in:
Andreas Preikschat 2011-02-03 20:33:48 +01:00
commit 5f13b1fea5
2 changed files with 69 additions and 54 deletions

View File

@ -66,6 +66,7 @@ class Ui_AlertDialog(object):
self.saveButton.setObjectName(u'saveButton') self.saveButton.setObjectName(u'saveButton')
self.manageButtonLayout.addWidget(self.saveButton) self.manageButtonLayout.addWidget(self.saveButton)
self.deleteButton = QtGui.QPushButton(alertDialog) self.deleteButton = QtGui.QPushButton(alertDialog)
self.deleteButton.setEnabled(False)
self.deleteButton.setIcon(build_icon(u':/general/general_delete.png')) self.deleteButton.setIcon(build_icon(u':/general/general_delete.png'))
self.deleteButton.setObjectName(u'deleteButton') self.deleteButton.setObjectName(u'deleteButton')
self.manageButtonLayout.addWidget(self.deleteButton) self.manageButtonLayout.addWidget(self.deleteButton)
@ -75,11 +76,13 @@ class Ui_AlertDialog(object):
self.buttonBox.addButton(QtGui.QDialogButtonBox.Close) self.buttonBox.addButton(QtGui.QDialogButtonBox.Close)
displayIcon = build_icon(u':/general/general_live.png') displayIcon = build_icon(u':/general/general_live.png')
self.displayButton = QtGui.QPushButton(alertDialog) self.displayButton = QtGui.QPushButton(alertDialog)
self.displayButton.setEnabled(False)
self.displayButton.setIcon(displayIcon) self.displayButton.setIcon(displayIcon)
self.displayButton.setObjectName(u'displayButton') self.displayButton.setObjectName(u'displayButton')
self.buttonBox.addButton(self.displayButton, self.buttonBox.addButton(self.displayButton,
QtGui.QDialogButtonBox.ActionRole) QtGui.QDialogButtonBox.ActionRole)
self.displayCloseButton = QtGui.QPushButton(alertDialog) self.displayCloseButton = QtGui.QPushButton(alertDialog)
self.displayCloseButton.setEnabled(False)
self.displayCloseButton.setIcon(displayIcon) self.displayCloseButton.setIcon(displayIcon)
self.displayCloseButton.setObjectName(u'displayCloseButton') self.displayCloseButton.setObjectName(u'displayCloseButton')
self.buttonBox.addButton(self.displayCloseButton, self.buttonBox.addButton(self.displayCloseButton,

View File

@ -44,22 +44,24 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
self.item_id = None self.item_id = None
QtGui.QDialog.__init__(self, plugin.formparent) QtGui.QDialog.__init__(self, plugin.formparent)
self.setupUi(self) self.setupUi(self)
QtCore.QObject.connect(self.displayButton, QtCore.SIGNAL(u'clicked()'), QtCore.QObject.connect(self.displayButton,
self.onDisplayClicked) QtCore.SIGNAL(u'clicked()'), self.onDisplayClicked)
QtCore.QObject.connect(self.displayCloseButton, QtCore.QObject.connect(self.displayCloseButton,
QtCore.SIGNAL(u'clicked()'), self.onDisplayCloseClicked) QtCore.SIGNAL(u'clicked()'), self.onDisplayCloseClicked)
QtCore.QObject.connect(self.alertTextEdit, QtCore.QObject.connect(self.alertTextEdit,
QtCore.SIGNAL(u'textChanged(const QString&)'), self.onTextChanged) QtCore.SIGNAL(u'textChanged(const QString&)'), self.onTextChanged)
QtCore.QObject.connect(self.newButton, QtCore.SIGNAL(u'clicked()'), QtCore.QObject.connect(self.newButton,
self.onNewClick) QtCore.SIGNAL(u'clicked()'), self.onNewClick)
QtCore.QObject.connect(self.deleteButton, QtCore.SIGNAL(u'clicked()'), QtCore.QObject.connect(self.deleteButton,
self.onDeleteClick) QtCore.SIGNAL(u'clicked()'), self.onDeleteClick)
QtCore.QObject.connect(self.saveButton, QtCore.SIGNAL(u'clicked()'), QtCore.QObject.connect(self.saveButton,
self.onSaveClick) QtCore.SIGNAL(u'clicked()'), self.onSaveClick)
QtCore.QObject.connect(self.alertListWidget, QtCore.QObject.connect(self.alertListWidget,
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onDoubleClick) QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onDoubleClick)
QtCore.QObject.connect(self.alertListWidget, QtCore.QObject.connect(self.alertListWidget,
QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSingleClick) QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSingleClick)
QtCore.QObject.connect(self.alertListWidget,
QtCore.SIGNAL(u'currentRowChanged(int)'), self.onCurrentRowChanged)
def loadList(self): def loadList(self):
""" """
@ -72,12 +74,9 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
item_name = QtGui.QListWidgetItem(alert.text) item_name = QtGui.QListWidgetItem(alert.text)
item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(alert.id)) item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(alert.id))
self.alertListWidget.addItem(item_name) self.alertListWidget.addItem(item_name)
self.saveButton.setEnabled(False)
self.deleteButton.setEnabled(False)
def onDisplayClicked(self): def onDisplayClicked(self):
if self.triggerAlert(unicode(self.alertTextEdit.text())): self.triggerAlert(unicode(self.alertTextEdit.text()))
self.loadList()
def onDisplayCloseClicked(self): def onDisplayCloseClicked(self):
if self.triggerAlert(unicode(self.alertTextEdit.text())): if self.triggerAlert(unicode(self.alertTextEdit.text())):
@ -95,8 +94,6 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
self.alertListWidget.takeItem(row) self.alertListWidget.takeItem(row)
self.item_id = None self.item_id = None
self.alertTextEdit.setText(u'') self.alertTextEdit.setText(u'')
self.saveButton.setEnabled(False)
self.deleteButton.setEnabled(False)
def onNewClick(self): def onNewClick(self):
if len(self.alertTextEdit.text()) == 0: if len(self.alertTextEdit.text()) == 0:
@ -135,22 +132,19 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
""" """
List item has been double clicked to display it List item has been double clicked to display it
""" """
items = self.alertListWidget.selectedIndexes() item = self.alertListWidget.selectedIndexes()[0]
for item in items:
bitem = self.alertListWidget.item(item.row()) bitem = self.alertListWidget.item(item.row())
self.triggerAlert(unicode(bitem.text())) self.triggerAlert(unicode(bitem.text()))
self.alertTextEdit.setText(unicode(bitem.text())) self.alertTextEdit.setText(unicode(bitem.text()))
self.item_id = (bitem.data(QtCore.Qt.UserRole)).toInt()[0] self.item_id = (bitem.data(QtCore.Qt.UserRole)).toInt()[0]
self.saveButton.setEnabled(False) self.saveButton.setEnabled(False)
self.deleteButton.setEnabled(True)
def onSingleClick(self): def onSingleClick(self):
""" """
List item has been single clicked to add it to List item has been single clicked to add it to
the edit field so it can be changed. the edit field so it can be changed.
""" """
items = self.alertListWidget.selectedIndexes() item = self.alertListWidget.selectedIndexes()[0]
for item in items:
bitem = self.alertListWidget.item(item.row()) bitem = self.alertListWidget.item(item.row())
self.alertTextEdit.setText(unicode(bitem.text())) self.alertTextEdit.setText(unicode(bitem.text()))
self.item_id = (bitem.data(QtCore.Qt.UserRole)).toInt()[0] self.item_id = (bitem.data(QtCore.Qt.UserRole)).toInt()[0]
@ -158,7 +152,6 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
if unicode(self.alertTextEdit.text()).find(u'<>') == -1: if unicode(self.alertTextEdit.text()).find(u'<>') == -1:
self.parameterEdit.setText(u'') self.parameterEdit.setText(u'')
self.saveButton.setEnabled(False) self.saveButton.setEnabled(False)
self.deleteButton.setEnabled(True)
def triggerAlert(self, text): def triggerAlert(self, text):
""" """
@ -167,9 +160,9 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
``text`` ``text``
The alert text (unicode). The alert text (unicode).
""" """
if text: if not text:
# We found '<>' in the alert text, but the ParameterEdit field is return False
# empty. # We found '<>' in the alert text, but the ParameterEdit field is empty.
if text.find(u'<>') != -1 and not self.parameterEdit.text() and \ if text.find(u'<>') != -1 and not self.parameterEdit.text() and \
QtGui.QMessageBox.question(self, QtGui.QMessageBox.question(self,
translate('AlertPlugin.AlertForm', 'No Parameter found'), translate('AlertPlugin.AlertForm', 'No Parameter found'),
@ -193,4 +186,23 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog):
text = text.replace(u'<>', unicode(self.parameterEdit.text())) text = text.replace(u'<>', unicode(self.parameterEdit.text()))
self.parent.alertsmanager.displayAlert(text) self.parent.alertsmanager.displayAlert(text)
return True return True
return False
def onCurrentRowChanged(self, row):
"""
Called when the *alertListWidget*'s current row has been changed. This
enables or disables buttons which require an item to act on.
``row``
The row (int). If there is no current row, the value is -1.
"""
if row == -1:
self.displayButton.setEnabled(False)
self.displayCloseButton.setEnabled(False)
self.saveButton.setEnabled(False)
self.deleteButton.setEnabled(False)
else:
self.displayButton.setEnabled(True)
self.displayCloseButton.setEnabled(True)
self.deleteButton.setEnabled(True)
# We do not need to enable the save button, as it is only enabled
# when typing text in the "alertTextEdit".