manuskript/src/ui/cmbOutlineLabelChoser.py
2015-06-09 14:03:22 +02:00

48 lines
1.6 KiB
Python

#!/usr/bin/env python
#--!-- coding: utf8 --!--
from qt import *
from enums import *
class cmbOutlineLabelChoser(QComboBox):
def __init__(self, parent=None):
QComboBox.__init__(self, parent)
self.activated[int].connect(self.changed)
self.currentModelIndex = None
def setModels(self, mdlLabels, mdlOutline):
self.mdlLabels = mdlLabels
self.mdlLabels.dataChanged.connect(self.updateItems)
self.mdlOutline = mdlOutline
self.mdlOutline.dataChanged.connect(self.updateSelectedItem)
self.updateItems()
def updateSelectedItem(self, idx1=None, idx2=None):
if not self.currentModelIndex or not self.currentModelIndex.isValid():
self.setCurrentIndex(0)
else:
val = self.currentModelIndex.internalPointer().data(Outline.label.value)
if not val: val = 0
self.setCurrentIndex(int(val))
def changed(self, idx):
if self.currentModelIndex:
modelIndex = self.mdlOutline.index(self.currentModelIndex.row(), Outline.label.value, self.currentModelIndex.parent())
self.mdlOutline.setData(modelIndex, self.currentIndex())
def setCurrentModelIndex(self, idx):
self.currentModelIndex = idx
self.updateSelectedItem()
def updateItems(self):
self.clear()
for i in range(self.mdlLabels.rowCount()):
self.addItem(self.mdlLabels.item(i, 0).icon(),
self.mdlLabels.item(i, 0).text())
if self.currentModelIndex:
self.updateSelectedItem()