mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-06-02 11:04:33 +12:00
Multi indexes chkOutlineCompile
This commit is contained in:
parent
56306a819c
commit
20b44ad517
|
@ -13,33 +13,107 @@ class chkOutlineCompile(QCheckBox):
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
QCheckBox.__init__(self, parent)
|
QCheckBox.__init__(self, parent)
|
||||||
self.stateChanged.connect(self.changed)
|
self.stateChanged.connect(self.submit)
|
||||||
self.currentModelIndex = None
|
self._column = Outline.compile.value
|
||||||
|
self._index = None
|
||||||
|
self._indexes = None
|
||||||
|
self._model = None
|
||||||
|
self._updating = False
|
||||||
|
|
||||||
def setModel(self, mdlOutline):
|
def setModel(self, model):
|
||||||
self.mdlOutline = mdlOutline
|
self._model = model
|
||||||
self.mdlOutline.dataChanged.connect(self.updateSelectedItem)
|
self._model.dataChanged.connect(self.update)
|
||||||
|
|
||||||
def setCurrentModelIndex(self, idx):
|
def setCurrentModelIndex(self, index):
|
||||||
self.currentModelIndex = idx
|
self._indexes = None
|
||||||
self.updateSelectedItem()
|
if index.column() != self._column:
|
||||||
|
index = index.sibling(index.row(), self._column)
|
||||||
|
self._index = index
|
||||||
|
self.setTristate(False)
|
||||||
|
self.updateCheckState()
|
||||||
|
|
||||||
def updateSelectedItem(self, idx1=None, idx2=None):
|
def setCurrentModelIndexes(self, indexes):
|
||||||
if not self.currentModelIndex or not self.currentModelIndex.isValid():
|
self._index = None
|
||||||
|
self._indexes = []
|
||||||
|
for i in indexes:
|
||||||
|
if i.column() != self._column:
|
||||||
|
i = i.sibling(i.row(), self._column)
|
||||||
|
self._indexes.append(i)
|
||||||
|
self.updateCheckState()
|
||||||
|
|
||||||
|
def getCheckedValue(self, index):
|
||||||
|
item = index.internalPointer()
|
||||||
|
c = item.data(Outline.compile)
|
||||||
|
if c:
|
||||||
|
c = int(c)
|
||||||
|
else:
|
||||||
|
c = Qt.Unchecked
|
||||||
|
|
||||||
|
return c
|
||||||
|
|
||||||
|
def update(self, topLeft, bottomRight):
|
||||||
|
|
||||||
|
if self._updating:
|
||||||
|
# We are currently putting data in the model, so no updates
|
||||||
|
return
|
||||||
|
|
||||||
|
if self._index:
|
||||||
|
if topLeft.row() <= self._index.row() <= bottomRight.row():
|
||||||
|
self.updateCheckState()
|
||||||
|
|
||||||
|
elif self._indexes:
|
||||||
|
update = False
|
||||||
|
|
||||||
|
for i in self._indexes:
|
||||||
|
if topLeft.row() <= i.row() <= bottomRight.row():
|
||||||
|
update = True
|
||||||
|
|
||||||
|
if update:
|
||||||
|
self.updateCheckState()
|
||||||
|
|
||||||
|
def updateCheckState(self):
|
||||||
|
|
||||||
|
if self._index:
|
||||||
|
self.setEnabled(True)
|
||||||
|
c = self.getCheckedValue(self._index)
|
||||||
|
self.setCheckState(c)
|
||||||
|
|
||||||
|
elif self._indexes:
|
||||||
|
self.setEnabled(True)
|
||||||
|
values = []
|
||||||
|
for i in self._indexes:
|
||||||
|
values.append(self.getCheckedValue(i))
|
||||||
|
|
||||||
|
same = True
|
||||||
|
for v in values[1:]:
|
||||||
|
if v != values[0]:
|
||||||
|
same = False
|
||||||
|
break
|
||||||
|
|
||||||
|
if same:
|
||||||
|
self.setCheckState(values[0])
|
||||||
|
else:
|
||||||
|
self._updating = True
|
||||||
|
self.setCheckState(Qt.PartiallyChecked)
|
||||||
|
self._updating = False
|
||||||
|
|
||||||
|
else:
|
||||||
self.setChecked(False)
|
self.setChecked(False)
|
||||||
self.setEnabled(False)
|
self.setEnabled(False)
|
||||||
else:
|
|
||||||
self.setEnabled(True)
|
|
||||||
item = self.currentModelIndex.internalPointer()
|
|
||||||
c = item.data(Outline.compile)
|
|
||||||
if c:
|
|
||||||
c = int(c)
|
|
||||||
else:
|
|
||||||
c = Qt.Unchecked
|
|
||||||
self.setCheckState(c)
|
|
||||||
|
|
||||||
def changed(self, state):
|
def submit(self, state):
|
||||||
if self.currentModelIndex and self.currentModelIndex.isValid():
|
|
||||||
mdl = self.currentModelIndex.model()
|
if self._updating:
|
||||||
modelIndex = mdl.index(self.currentModelIndex.row(), Outline.compile.value, self.currentModelIndex.parent())
|
return
|
||||||
mdl.setData(modelIndex, state)
|
|
||||||
|
if self._index:
|
||||||
|
if self._model.data(self._index) != state:
|
||||||
|
self._model.setData(self._index, state)
|
||||||
|
|
||||||
|
elif self._indexes:
|
||||||
|
for i in self._indexes:
|
||||||
|
if self._model.data(i) != state:
|
||||||
|
self._model.setData(i, state)
|
||||||
|
|
||||||
|
self.setTristate(False)
|
||||||
|
|
|
@ -17,6 +17,7 @@ class lineEditView(QLineEdit):
|
||||||
|
|
||||||
def setModel(self, model):
|
def setModel(self, model):
|
||||||
self._model = model
|
self._model = model
|
||||||
|
self._model.dataChanged.connect(self.update)
|
||||||
|
|
||||||
def setColumn(self, col):
|
def setColumn(self, col):
|
||||||
self._column = col
|
self._column = col
|
||||||
|
@ -31,7 +32,6 @@ class lineEditView(QLineEdit):
|
||||||
if self._placeholderText != None:
|
if self._placeholderText != None:
|
||||||
self.setPlaceholderText(self._placeholderText)
|
self.setPlaceholderText(self._placeholderText)
|
||||||
self.textEdited.connect(self.submit)
|
self.textEdited.connect(self.submit)
|
||||||
self._model.dataChanged.connect(self.update)
|
|
||||||
self.updateText()
|
self.updateText()
|
||||||
|
|
||||||
def setCurrentModelIndexes(self, indexes):
|
def setCurrentModelIndexes(self, indexes):
|
||||||
|
@ -45,7 +45,6 @@ class lineEditView(QLineEdit):
|
||||||
self._indexes.append(i)
|
self._indexes.append(i)
|
||||||
|
|
||||||
self.textEdited.connect(self.submit)
|
self.textEdited.connect(self.submit)
|
||||||
self._model.dataChanged.connect(self.update)
|
|
||||||
self.updateText()
|
self.updateText()
|
||||||
|
|
||||||
def submit(self):
|
def submit(self):
|
||||||
|
@ -98,6 +97,7 @@ class lineEditView(QLineEdit):
|
||||||
for t2 in t[1:]:
|
for t2 in t[1:]:
|
||||||
if t2 != t[0]:
|
if t2 != t[0]:
|
||||||
same = False
|
same = False
|
||||||
|
break
|
||||||
|
|
||||||
if same:
|
if same:
|
||||||
self.setText(t[0])
|
self.setText(t[0])
|
||||||
|
|
|
@ -54,5 +54,6 @@ class propertiesView(QWidget, Ui_propertiesView):
|
||||||
print("Multiple selection, Work in progress")
|
print("Multiple selection, Work in progress")
|
||||||
self.txtTitle.setCurrentModelIndexes(indexes)
|
self.txtTitle.setCurrentModelIndexes(indexes)
|
||||||
self.txtGoal.setCurrentModelIndexes(indexes)
|
self.txtGoal.setCurrentModelIndexes(indexes)
|
||||||
|
self.chkCompile.setCurrentModelIndexes(indexes)
|
||||||
#FIXME: do the other views
|
#FIXME: do the other views
|
||||||
|
|
Loading…
Reference in a new issue