From 9d4c8e28b33689750e44b4c1f390caaf5c9b878e Mon Sep 17 00:00:00 2001 From: Treeki Date: Thu, 10 Nov 2011 04:18:03 +0100 Subject: some work on the layer handling --- src/editorui.py | 21 +++++++++++++++++++++ src/mapdata.py | 5 +++-- src/ui.py | 13 ++++++------- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/editorui.py b/src/editorui.py index 51b148d..4eeca1d 100644 --- a/src/editorui.py +++ b/src/editorui.py @@ -1,6 +1,12 @@ from common import * class KPMapScene(QtGui.QGraphicsScene): + def __init__(self): + QtGui.QGraphicsScene.__init__(self) + + self.currentLayer = None + + def drawBackground(self, painter, rect): painter.fillRect(rect, Qt.white) @@ -58,6 +64,21 @@ class KPMapScene(QtGui.QGraphicsScene): srcY += 1 destY += 24 + + + def setCurrentLayer(self, layer): + if self.currentLayer is not None: + self.setLayerObjectsFlag(self.currentLayer, QtGui.QGraphicsItem.ItemIsSelectable, False) + + self.currentLayer = layer + self.setLayerObjectsFlag(layer, QtGui.QGraphicsItem.ItemIsSelectable, True) + + + def setLayerObjectsFlag(self, layer, flag, value): + for obj in layer.objects: + item = obj.qtItem + if item: + item.setFlag(flag, value) class KPEditorWidget(QtGui.QGraphicsView): pass diff --git a/src/mapdata.py b/src/mapdata.py index 2b7a403..3938047 100644 --- a/src/mapdata.py +++ b/src/mapdata.py @@ -11,6 +11,7 @@ class KPObject(object): self.kind = 0 self.cache = [] self.tileset = None + self.qtItem = None def updateCache(self): self.cache = KP.map.tilesets[self.tileset].objects[self.kind].render(self.size) @@ -128,9 +129,9 @@ class KPMap(object): # TESTING CRAP import os.path if os.path.exists('/Users/Tempus'): - self.tilesets['Test'] = {'path': '/Users/Tempus/Dropbox/NEWERsmbw/Test2.arc'} + self.tilesets['Test'] = {'path': '/Users/Tempus/Dropbox/NEWERsmbw/Test3.arc'} else: - self.tilesets['Test'] = {'path': '/home/me/Dropbox/NEWERsmbw/Test2.arc'} + self.tilesets['Test'] = {'path': '/home/me/Dropbox/NEWERsmbw/Test3.arc'} self.reloadTileset('Test') diff --git a/src/ui.py b/src/ui.py index f933457..06a6902 100644 --- a/src/ui.py +++ b/src/ui.py @@ -38,14 +38,11 @@ class KPLayerList(QtGui.QWidget): def selectedLayer(self): return KP.map.layers[self.listView.selectionModel().currentIndex().row()] - selectedLayerChanged = QtCore.pyqtSignal(KPLayer, KPLayer) + selectedLayerChanged = QtCore.pyqtSignal(KPLayer) @QtCore.pyqtSlot(QtCore.QModelIndex, QtCore.QModelIndex) def handleRowChanged(self, current, previous): - self.selectedLayerChanged.emit( - KP.map.layers[current.row()], - ((previous.row() >= 0) and KP.map.layers[previous.row()]) or None - ) + self.selectedLayerChanged.emit(KP.map.layers[current.row()]) def addLayer(self): @@ -146,6 +143,8 @@ class KPObjectSelector(QtGui.QListView): QtGui.QListView.setModel(self, model) + model.view = self + menuList = model.groupItem().getGroupList() string = QtCore.QString(QtCore.QChar(0x25BE)) @@ -234,6 +233,8 @@ class KPMainWindow(QtGui.QMainWindow): self.layerListDock = QtGui.QDockWidget('Layers') self.layerListDock.setWidget(self.layerList) + self.layerList.selectedLayerChanged.connect(self.scene.setCurrentLayer) + self.objectSelector = KPObjectSelector() self.updateObjectSelector() self.objectSelectorDock = QtGui.QDockWidget('Objects') @@ -252,8 +253,6 @@ class KPMainWindow(QtGui.QMainWindow): tileset = KPTileset.loadFromArc('/home/me/Dropbox/NEWERsmbw/Test3.arc') self.objectSelector.setModel(tileset.getModel()) - tileset.getModel().view = self.objectSelector - -- cgit v1.2.3