action.setIcon(QtGui.QIcon(absIconPath))
break
pieItem = qtpie.QActionPieItem(action)
+ actionToken = sliceData["action"]
else:
pieItem = qtpie.PieFiling.NULL_CENTER
- action = ""
- yield direction, pieItem, action
+ actionToken = ""
+ yield direction, pieItem, actionToken
def load_keyboard(keyboardName, dataTree, keyboard, keyboardHandler, iconPaths):
pieButton = qtpie.QPieButton(center)
pieButton.set_center(center)
+ keyboardHandler.map_slice_action(center, centerAction)
for direction, pieItem, action in pieItems:
pieButton.insertItem(pieItem)
+ keyboardHandler.map_slice_action(pieItem, action)
keyboard.add_pie(row, column, pieButton)
del self.__modifiers["<%s>" % modifierName]
def map_slice_action(self, slice, action):
- self.__sliceActions[slice.name] = action
-
- def __call__(self, pie, slice, direction):
- try:
- action = self.__sliceActions[slice.name]
- except KeyError:
- return
+ callback = lambda direction: self(direction, action)
+ slice.action().triggered.connect(callback)
+ self.__sliceActions[slice] = (action, callback)
+ def __call__(self, direction, action):
activeModifiers = [
mod.name
for mod in self.__modifiers.itervalues()
@property
def equation(self):
- return operation.render_operation(self._prettyRenderer, self._node),
+ return operation.render_operation(self._prettyRenderer, self._node)
@property
def result(self):
- return operation.render_operation(self._prettyRenderer, self._simpleNode),
+ return operation.render_operation(self._prettyRenderer, self._simpleNode)
def data(self, column):
if column == self.CLOSE_COLUMN:
def data(self, index, role):
if not index.isValid():
return None
+
+ if role == QtCore.Qt.DisplayRole:
+ item = index.internalPointer()
+ if isinstance(item, RowData):
+ print "d-rw", item.data(index.column())
+ return item.data(index.column())
+ elif item is RowData.HEADERS:
+ print "d-h", item[index.column()]
+ return item[index.column()]
+ elif role == QtCore.Qt.TextAlignmentRole:
+ return RowData.ALIGNMENT[index.column()]
elif role == QtCore.Qt.DecorationRole:
if index.column() == RowData.CLOSE_COLUMN:
return None
else:
return None
- elif role == QtCore.Qt.TextAlignmentRole:
- return RowData.ALIGNMENT[index.column()]
- elif role != QtCore.Qt.DisplayRole:
+ else:
return None
- item = index.internalPointer()
- if isinstance(item, RowData):
- return item.data(index.column())
- elif item is RowData.HEADERS:
- return item[index.column()]
-
@misc_utils.log_exception(_moduleLogger)
def flags(self, index):
if not index.isValid():
if not self.hasIndex(row, column, parent):
return QtCore.QModelIndex()
- if parent.isValid():
+ elif parent.isValid():
return QtCore.QModelIndex()
parentItem = RowData.HEADERS
childItem = self._children[row]
if childItem:
+ print "i", row, column, childItem
return self.createIndex(row, column, childItem)
else:
return QtCore.QModelIndex()
return 0
if not parent.isValid():
+ print "rc", len(self._children)
return len(self._children)
else:
+ print "rc", len(self._children)
return len(self._children)
def push(self, row):
self._children.append(row)
self._signal_rows_added()
+ print "push", row
+ print "push", len(self._children)
def pop(self):
data = self._children[-1]
del self._children[-1]
self._signal_rows_removed()
+ print "pop", data
return data
def peek(self):
def _signal_rows_added(self):
# @todo Only signal new rows
- self._all_changed
+ self._all_changed()
def _signal_rows_removed(self):
# @todo Only signal new rows
- self._all_changed
+ self._all_changed()
def _all_changed(self):
+ if not self._children:
+ return
topLeft = self.createIndex(0, 0, self._children[0])
bottomRight = self.createIndex(len(self._children)-1, len(RowData.HEADERS)-1, self._children[-1])
self.dataChanged.emit(topLeft, bottomRight)