summaryrefslogtreecommitdiff
path: root/src/ui.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui.py')
-rw-r--r--src/ui.py153
1 files changed, 78 insertions, 75 deletions
diff --git a/src/ui.py b/src/ui.py
index 3949bdc..96e2ceb 100644
--- a/src/ui.py
+++ b/src/ui.py
@@ -55,79 +55,82 @@ class KPLayerList(QtGui.QWidget):
+
+
class KPObjectSelector(QtGui.QListView):
- def __init__(self):
- """Initialises the widget. Remember to call setModel() on it with a KPGroupModel
- whenever the layer changes."""
-
- QtGui.QListView.__init__(self)
- self.setFlow(QtGui.QListView.LeftToRight)
- self.setLayoutMode(QtGui.QListView.SinglePass)
- self.setMovement(QtGui.QListView.Static)
- self.setResizeMode(QtGui.QListView.Adjust)
- self.setWrapping(True)
-
- # self.setItemDelegate(KPObjectSelector.ObjectItemDelegate())
-
- self.clicked.connect(self.HandleObjReplace)
-
-
- def toggleTopLevel(self, id):
- """Changes the top level group in the list view."""
-
- # Not quite sure how to implement this yet. Basically, the model is hierarchal,
- # and it'll return items from whatever the top level KPGroupItem is. But removing
- # and adding stuff isn't possible, since I need to retain my recursive object.
- #
- # So here's the structure. Above this QListView, there will be a QComboBox.
- #
- # The QComboBox will list all groups in my hierarchy.
- # Selecting a group will cause the QListView to only show items for those rows,
- # even though all rows are retained.
- #
- # It's kind of like a custom QSortFilterProxyModel. Maybe I should subclass that.
-
-
- self.setCurrentIndex(self.model().index(sel, 0, QtCore.QModelIndex()))
-
- @QtCore.pyqtSlot(QtCore.QModelIndex, QtCore.QModelIndex)
- def currentChanged(self, current, previous):
- """Throws a signal when the selected object changed"""
- self.ObjChanged.emit(current.row())
-
- def HandleObjReplace(self, index):
- """Throws a signal when the selected object is used as a replacement"""
- if QtGui.QApplication.keyboardModifiers() == QtCore.Qt.AltModifier:
- self.ObjReplace.emit(index.row())
-
- ObjChanged = QtCore.pyqtSignal(int)
- ObjReplace = QtCore.pyqtSignal(int)
-
-
- class KPGroupItemDelegate(QtGui.QAbstractItemDelegate):
- """Handles tileset groups, objects and their rendering"""
-
- def __init__(self):
- """Initialises the delegate"""
- QtGui.QAbstractItemDelegate.__init__(self)
-
- def paint(self, painter, option, index):
- """Paints an object"""
- if option.state & QtGui.QStyle.State_Selected:
- painter.fillRect(option.rect, option.palette.highlight())
-
- p = index.model().data(index, QtCore.Qt.DecorationRole)
- painter.drawPixmap(option.rect.x()+2, option.rect.y()+2, p)
- #painter.drawText(option.rect, str(index.row()))
-
- def sizeHint(self, option, index):
- """Returns the size for the object"""
- p = index.model().data(index, QtCore.Qt.UserRole)
- return p
-
-
-
+ def __init__(self):
+ """Initialises the widget. Remember to call setModel() on it with a KPGroupModel
+ whenever the layer changes."""
+
+ QtGui.QListView.__init__(self)
+ self.setFlow(QtGui.QListView.LeftToRight)
+ self.setLayoutMode(QtGui.QListView.SinglePass)
+ self.setMovement(QtGui.QListView.Static)
+ self.setResizeMode(QtGui.QListView.Adjust)
+ self.setWrapping(True)
+
+ # self.setItemDelegate(KPObjectSelector.ObjectItemDelegate())
+ # Borrowed the signals and junk from Reggie, figure we'll need em'
+
+ self.clicked.connect(self.HandleObjReplace)
+
+
+ def toggleTopLevel(self, id):
+ """Changes the top level group in the list view."""
+
+ # Not quite sure how to implement this yet. Basically, the model is hierarchal,
+ # and it'll return items from whatever the top level KPGroupItem is. But removing
+ # and adding stuff isn't possible, since I need to retain my recursive object.
+ #
+ # So here's the structure. Above this QListView, there will be a QComboBox.
+ #
+ # The QComboBox will list all groups in my hierarchy.
+ # Selecting a group will cause the QListView to only show items for those rows,
+ # even though all rows are retained.
+ #
+ # It's kind of like a custom QSortFilterProxyModel. Maybe I should subclass that.
+
+
+ self.setCurrentIndex(self.model().index(sel, 0, QtCore.QModelIndex()))
+
+ @QtCore.pyqtSlot(QtCore.QModelIndex, QtCore.QModelIndex)
+ def currentChanged(self, current, previous):
+ """Throws a signal when the selected object changed"""
+ self.ObjChanged.emit(current.row())
+
+ def HandleObjReplace(self, index):
+ """Throws a signal when the selected object is used as a replacement"""
+ if QtGui.QApplication.keyboardModifiers() == QtCore.Qt.AltModifier:
+ self.ObjReplace.emit(index.row())
+
+ ObjChanged = QtCore.pyqtSignal(int)
+ ObjReplace = QtCore.pyqtSignal(int)
+
+
+ class KPGroupItemDelegate(QtGui.QAbstractItemDelegate):
+ """Handles tileset groups, objects and their rendering"""
+
+ def __init__(self):
+ """Initialises the delegate"""
+ QtGui.QAbstractItemDelegate.__init__(self)
+
+ def paint(self, painter, option, index):
+ """Paints an object"""
+ if option.state & QtGui.QStyle.State_Selected:
+ painter.fillRect(option.rect, option.palette.highlight())
+
+ p = index.model().data(index, QtCore.Qt.DecorationRole)
+ painter.drawPixmap(option.rect.x()+2, option.rect.y()+2, p)
+ #painter.drawText(option.rect, str(index.row()))
+
+ def sizeHint(self, option, index):
+ """Returns the size for the object"""
+ p = index.model().data(index, QtCore.Qt.UserRole)
+ return p
+
+
+
@@ -158,10 +161,10 @@ class KPMainWindow(QtGui.QMainWindow):
self.layerListDock = QtGui.QDockWidget('Layers')
self.layerListDock.setWidget(self.layerList)
- self.objectSelector = KPObjectSelector()
- # self.objectSelector.setModel(SomeTileset.getModel())
- self.objectSelectorDock = QtGui.QDockWidget('Layers')
- self.objectSelectorDock.setWidget(self.layerList)
+ # self.objectSelector = KPObjectSelector()
+ # # self.objectSelector.setModel(SomeTileset.getModel())
+ # self.objectSelectorDock = QtGui.QDockWidget('Layers')
+ # self.objectSelectorDock.setWidget(self.layerList)
self.addDockWidget(Qt.RightDockWidgetArea, self.layerListDock)