diff options
Diffstat (limited to '')
-rw-r--r-- | src/dialogs.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/dialogs.py b/src/dialogs.py new file mode 100644 index 0000000..48c3bfe --- /dev/null +++ b/src/dialogs.py @@ -0,0 +1,61 @@ +from common import * + + +class KPTilesetChooserDialog(QtGui.QDialog): + def __init__(self, label='Choose a tileset'): + QtGui.QDialog.__init__(self) + + self.label = QtGui.QLabel(label) + self.label.setWordWrap(True) + + # can't be assed to create a model + self.chooser = QtGui.QListWidget() + self.nameList = KP.map.tilesets.keys() + self.nameList.sort() + self.chooser.addItems(self.nameList) + + self.chooser.currentRowChanged.connect(self.handleCurrentRowChanged) + self.chooser.itemActivated.connect(self.handleItemActivated) + + self.buttons = QtGui.QDialogButtonBox( + QtGui.QDialogButtonBox.Ok | + QtGui.QDialogButtonBox.Cancel) + + self.okButton = self.buttons.button(QtGui.QDialogButtonBox.Ok) + self.okButton.setEnabled(False) + + self.buttons.accepted.connect(self.accept) + self.buttons.rejected.connect(self.reject) + + self.layout = QtGui.QVBoxLayout() + self.layout.addWidget(self.label) + self.layout.addWidget(self.chooser) + self.layout.addWidget(self.buttons) + self.setLayout(self.layout) + + def handleCurrentRowChanged(self, row): + print row + self.okButton.setEnabled(row != -1) + + def handleItemActivated(self, item): + self.accept() + + def getChoice(self): + item = self.chooser.currentItem() + if item is None: + return None + else: + return str(item.text()) + + + @classmethod + def run(cls, label=None): + dialog = cls(label) + result = dialog.exec_() + + if result == QtGui.QDialog.Accepted: + return dialog.getChoice() + else: + return None + + |