manuskript/manuskript/ui/views/metadataView.py

128 lines
4.6 KiB
Python
Raw Permalink Normal View History

2015-06-15 22:18:42 +12:00
#!/usr/bin/env python
2016-02-07 00:34:22 +13:00
# --!-- coding: utf8 --!--
2016-04-12 01:14:24 +12:00
from PyQt5.QtWidgets import QWidget, QAbstractItemView
from PyQt5.QtCore import QModelIndex
2016-02-07 00:34:22 +13:00
from manuskript.enums import Outline
from manuskript.ui.views.metadataView_ui import Ui_metadataView
2016-04-12 09:54:47 +12:00
from manuskript.ui import style
2015-06-15 22:18:42 +12:00
class metadataView(QWidget, Ui_metadataView):
def __init__(self, parent=None):
2015-07-10 01:01:07 +12:00
QWidget.__init__(self, parent)
2015-06-15 22:18:42 +12:00
self.setupUi(self)
2015-06-25 05:53:51 +12:00
self._lastIndexes = None
2017-11-16 08:58:12 +13:00
self.txtSummarySentence.setColumn(Outline.summarySentence)
self.txtSummaryFull.setColumn(Outline.summaryFull)
self.txtNotes.setColumn(Outline.notes)
2015-07-04 04:41:18 +12:00
self.revisions.setEnabled(False)
2016-04-12 09:54:47 +12:00
self.txtSummarySentence.setStyleSheet(style.lineEditSS())
self.txtSummaryFull.setStyleSheet(style.transparentSS() +
style.simpleScrollBarV())
self.txtNotes.setStyleSheet(style.transparentSS() +
style.simpleScrollBarV())
self.revisions.setStyleSheet(style.simpleScrollBarV())
2016-02-07 00:34:22 +13:00
def setModels(self, mdlOutline, mdlCharacter, mdlLabels, mdlStatus):
self.properties.setModels(mdlOutline, mdlCharacter, mdlLabels, mdlStatus)
self.txtSummarySentence.setModel(mdlOutline)
2015-06-15 22:18:42 +12:00
self.txtSummaryFull.setModel(mdlOutline)
self.txtNotes.setModel(mdlOutline)
2015-07-04 04:41:18 +12:00
self.revisions.setModel(mdlOutline)
2016-02-07 00:34:22 +13:00
2015-06-15 22:18:42 +12:00
def getIndexes(self, sourceView):
2016-02-07 00:34:22 +13:00
"""Returns a list of indexes from list of QItemSelectionRange"""
2015-06-15 22:18:42 +12:00
indexes = []
2016-02-07 00:34:22 +13:00
2016-04-12 01:14:24 +12:00
for i in sourceView.selection().indexes():
2016-02-07 00:34:22 +13:00
if i.column() != 0:
2015-06-15 22:18:42 +12:00
continue
2016-02-07 00:34:22 +13:00
2015-06-15 22:18:42 +12:00
if i not in indexes:
indexes.append(i)
2016-02-07 00:34:22 +13:00
2015-06-15 22:18:42 +12:00
return indexes
2016-02-07 00:34:22 +13:00
2016-04-12 01:14:24 +12:00
def selectionChanged(self):
if isinstance(self.sender(), QAbstractItemView):
selectionModel = self.sender().selectionModel()
else:
selectionModel = self.sender()
indexes = self.getIndexes(selectionModel)
2016-02-07 00:34:22 +13:00
2015-06-25 05:53:51 +12:00
if self._lastIndexes == indexes:
return
2016-02-07 00:34:22 +13:00
# No item selected
2015-06-15 22:18:42 +12:00
if len(indexes) == 0:
self.setEnabled(False)
2015-07-04 04:41:18 +12:00
self.revisions.setEnabled(False)
self.txtSummarySentence.setCurrentModelIndex(QModelIndex())
self.txtSummaryFull.setCurrentModelIndex(QModelIndex())
self.txtNotes.setCurrentModelIndex(QModelIndex())
2016-02-07 00:34:22 +13:00
# One item selected
2015-06-15 22:18:42 +12:00
elif len(indexes) == 1:
self.setEnabled(True)
idx = indexes[0]
self.txtSummarySentence.setEnabled(True)
self.txtSummaryFull.setEnabled(True)
self.txtNotes.setEnabled(True)
2016-03-02 12:36:51 +13:00
self.txtSummarySentence.setCurrentModelIndex(idx)
2015-06-15 22:18:42 +12:00
self.txtSummaryFull.setCurrentModelIndex(idx)
self.txtNotes.setCurrentModelIndex(idx)
2015-07-04 04:41:18 +12:00
self.revisions.setEnabled(True)
self.revisions.setCurrentModelIndex(idx)
2016-02-07 00:34:22 +13:00
# Multiple items selected
2015-06-15 22:18:42 +12:00
else:
self.setEnabled(True)
# Behavior 1:
# We disable the text areas when multiple indexes are selected
self.txtSummarySentence.setEnabled(False)
self.txtSummaryFull.setEnabled(False)
self.txtNotes.setEnabled(False)
self.txtSummarySentence.setCurrentModelIndex(QModelIndex())
self.txtSummaryFull.setCurrentModelIndex(QModelIndex())
self.txtNotes.setCurrentModelIndex(QModelIndex())
# Behavior 2:
# Allow edition of multiple indexes.
# Bug: Multiple selections of items sometimes gets Notes/references
# field to be erased. See #10 on github.
#self.txtSummarySentence.setCurrentModelIndexes(indexes)
#self.txtSummaryFull.setCurrentModelIndexes(indexes)
#self.txtNotes.setCurrentModelIndexes(indexes)
2015-07-04 04:41:18 +12:00
self.revisions.setEnabled(False)
2016-02-07 00:34:22 +13:00
2016-04-12 01:41:43 +12:00
self.properties.selectionChanged(selectionModel)
2015-06-25 05:53:51 +12:00
self._lastIndexes = indexes
2016-02-07 00:34:22 +13:00
def setDict(self, d):
self.txtNotes.setDict(d)
self.txtSummaryFull.setDict(d)
2016-02-07 00:34:22 +13:00
2015-06-15 22:18:42 +12:00
def toggleSpellcheck(self, v):
self.txtNotes.toggleSpellcheck(v)
self.txtSummaryFull.toggleSpellcheck(v)
2016-02-07 00:34:22 +13:00
2015-07-04 19:59:35 +12:00
def saveState(self):
return [
self.grpProperties.saveState(),
self.grpSummary.saveState(),
self.grpNotes.saveState(),
self.grpRevisions.saveState(),
self.revisions.saveState()
2016-02-07 00:34:22 +13:00
]
2015-07-04 19:59:35 +12:00
def restoreState(self, state):
self.grpProperties.restoreState(state[0])
self.grpSummary.restoreState(state[1])
self.grpNotes.restoreState(state[2])
2016-02-07 00:34:22 +13:00
self.grpRevisions.restoreState(state[3])