manuskript/src/ui/cmbOutlinePersoChoser.py

53 lines
1.8 KiB
Python
Raw Normal View History

2015-06-04 17:08:49 +12:00
#!/usr/bin/env python
#--!-- coding: utf8 --!--
from __future__ import print_function
from __future__ import unicode_literals
from qt import *
from enums import *
class cmbOutlinePersoChoser(QComboBox):
def __init__(self, parent=None):
QComboBox.__init__(self, parent)
self.activated[int].connect(self.changed)
self.currentModelIndex = None
def setModels(self, mdlPersos, mdlOutline):
self.mdlPersos = mdlPersos
self.mdlPersos.dataChanged.connect(self.updateItems)
self.mdlOutline = mdlOutline
self.mdlOutline.dataChanged.connect(self.updateSelectedItem)
def updateSelectedItem(self, idx1=None, idx2=None):
if not self.currentModelIndex:
self.setCurrentIndex(0)
else:
item = self.currentModelIndex.internalPointer()
2015-06-05 06:22:37 +12:00
POV = item.data(Outline.POV.value)
2015-06-04 17:08:49 +12:00
idx = self.findData(POV)
if idx <> -1:
self.setCurrentIndex(idx)
else:
self.setCurrentIndex(0)
def changed(self, idx):
if self.currentModelIndex:
modelIndex = self.mdlOutline.index(self.currentModelIndex.row(), Outline.POV.value, self.currentModelIndex.parent())
self.mdlOutline.setData(modelIndex, self.currentData())
def setCurrentModelIndex(self, idx):
self.currentModelIndex = idx
self.updateSelectedItem()
def updateItems(self):
self.clear()
self.addItem("")
for i in range(self.mdlPersos.rowCount()):
try:
self.addItem(self.mdlPersos.item(i, Perso.name.value).text(), self.mdlPersos.item(i, Perso.ID.value).text())
except:
pass
if self.currentModelIndex:
self.updateSelectedItem()