labelDialog.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from PyQt4.QtGui import *
  2. from PyQt4.QtCore import *
  3. from lib import newButton
  4. BB = QDialogButtonBox
  5. class LabelDialog(QDialog):
  6. OK, UNDO, DELETE = range(3)
  7. def __init__(self, text='', parent=None):
  8. super(LabelDialog, self).__init__(parent)
  9. self.action = self.OK
  10. self.edit = QLineEdit()
  11. self.edit.setText(text)
  12. layout = QHBoxLayout()
  13. layout.addWidget(self.edit)
  14. delete = newButton('Delete', icon='delete', slot=self.delete)
  15. undo = newButton('Undo close', icon='undo', slot=self.undo)
  16. bb = BB(Qt.Vertical, self)
  17. bb.addButton(BB.Ok)
  18. bb.addButton(undo, BB.RejectRole)
  19. bb.addButton(delete, BB.RejectRole)
  20. bb.accepted.connect(self.accept)
  21. bb.rejected.connect(self.reject)
  22. layout.addWidget(bb)
  23. self.setLayout(layout)
  24. def undo(self):
  25. self.action = self.UNDO
  26. def delete(self):
  27. self.action = self.DELETE
  28. def text(self):
  29. return self.edit.text()
  30. def popUp(self, position):
  31. # It actually works without moving...
  32. #self.move(position)
  33. self.edit.setText(u"Enter label")
  34. self.edit.setSelection(0, len(self.text()))
  35. self.edit.setFocus(Qt.PopupFocusReason)
  36. return self.OK if self.exec_() else self.action