mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-09-30 01:07:24 +13:00
48 lines
1.6 KiB
Python
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()
|