diff options
author | Treeki <treeki@gmail.com> | 2011-11-14 05:52:58 +0100 |
---|---|---|
committer | Treeki <treeki@gmail.com> | 2011-11-14 05:52:58 +0100 |
commit | dde51e148b09644ed70241832186b845aed071ec (patch) | |
tree | 3962ae37fde4c93ddc7af3cfa576a43c87f12102 /src | |
parent | 055e832da46a246bdea89c59ac9eb07d9f335d9b (diff) | |
download | koopatlas-dde51e148b09644ed70241832186b845aed071ec.tar.gz koopatlas-dde51e148b09644ed70241832186b845aed071ec.zip |
some new stuff. KPTilesetChooserDialog needs a bit of polish
Diffstat (limited to '')
-rw-r--r-- | src/dialogs.py | 61 | ||||
-rw-r--r-- | src/ui.py | 9 |
2 files changed, 69 insertions, 1 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 + + @@ -56,7 +56,13 @@ class KPLayerList(QtGui.QWidget): def addLayer(self): - KP.map.appendLayer(KP.map.createNewLayer()) + from dialogs import KPTilesetChooserDialog + + tilesetName = KPTilesetChooserDialog.run('Choose a tileset for the new layer') + if tilesetName is None: + return + + KP.map.appendLayer(KP.map.createNewLayer(tilesetName)) self.setButtonStates() def removeLayer(self): @@ -69,6 +75,7 @@ class KPLayerList(QtGui.QWidget): scene.removeItem(item) KP.map.removeLayer(self.selectedLayer()) + self.setButtonStates() def moveUp(self): index = self.selectedLayerIndex() |