summaryrefslogtreecommitdiff
path: root/src/dialogs.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/dialogs.py')
-rw-r--r--src/dialogs.py61
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
+
+