labelDialog.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from PyQt4.QtGui import *
  2. from PyQt4.QtCore import *
  3. from lib import newIcon, labelValidator
  4. BB = QDialogButtonBox
  5. class LabelDialog(QDialog):
  6. def __init__(self, text="Enter object label", parent=None):
  7. super(LabelDialog, self).__init__(parent)
  8. self.edit = QLineEdit()
  9. self.edit.setText(text)
  10. self.edit.setValidator(labelValidator())
  11. self.edit.editingFinished.connect(self.postProcess)
  12. layout = QVBoxLayout()
  13. layout.addWidget(self.edit)
  14. self.buttonBox = bb = BB(BB.Ok | BB.Cancel, Qt.Horizontal, self)
  15. bb.button(BB.Ok).setIcon(newIcon('done'))
  16. bb.button(BB.Cancel).setIcon(newIcon('undo'))
  17. bb.accepted.connect(self.validate)
  18. bb.rejected.connect(self.reject)
  19. layout.addWidget(bb)
  20. self.setLayout(layout)
  21. def validate(self):
  22. if self.edit.text().trimmed():
  23. self.accept()
  24. def postProcess(self):
  25. self.edit.setText(self.edit.text().trimmed())
  26. def popUp(self, text='', position=None):
  27. self.edit.setText(text)
  28. self.edit.setSelection(0, len(text))
  29. self.edit.setFocus(Qt.PopupFocusReason)
  30. if position is not None:
  31. self.move(position)
  32. return self.edit.text() if self.exec_() else None