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
|
2017-10-16 20:43:09 +13:00
|
|
|
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)
|
2017-10-21 10:39:57 +13:00
|
|
|
|
2016-04-12 09:54:47 +12:00
|
|
|
self.txtSummarySentence.setStyleSheet(style.lineEditSS())
|
2017-10-21 10:39:57 +13:00
|
|
|
self.txtSummaryFull.setStyleSheet(style.transparentSS() +
|
2017-10-18 05:04:30 +13:00
|
|
|
style.simpleScrollBarV())
|
|
|
|
self.txtNotes.setStyleSheet(style.transparentSS() +
|
|
|
|
style.simpleScrollBarV())
|
|
|
|
self.revisions.setStyleSheet(style.simpleScrollBarV())
|
2016-02-07 00:34:22 +13:00
|
|
|
|
2016-03-04 04:38:38 +13:00
|
|
|
def setModels(self, mdlOutline, mdlCharacter, mdlLabels, mdlStatus):
|
|
|
|
self.properties.setModels(mdlOutline, mdlCharacter, mdlLabels, mdlStatus)
|
2016-03-02 11:33:35 +13:00
|
|
|
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
|
|
|
|
2017-10-16 20:43:09 +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)
|
2017-10-21 10:39:57 +13:00
|
|
|
self.txtSummarySentence.setCurrentModelIndex(QModelIndex())
|
|
|
|
self.txtSummaryFull.setCurrentModelIndex(QModelIndex())
|
|
|
|
self.txtNotes.setCurrentModelIndex(QModelIndex())
|
2016-02-07 00:34:22 +13:00
|
|
|
|
2017-10-16 20:43:09 +13:00
|
|
|
# One item selected
|
2015-06-15 22:18:42 +12:00
|
|
|
elif len(indexes) == 1:
|
|
|
|
self.setEnabled(True)
|
|
|
|
idx = indexes[0]
|
2017-10-16 20:43:09 +13:00
|
|
|
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
|
|
|
|
2017-10-16 20:43:09 +13:00
|
|
|
# Multiple items selected
|
2015-06-15 22:18:42 +12:00
|
|
|
else:
|
|
|
|
self.setEnabled(True)
|
2017-10-16 20:43:09 +13:00
|
|
|
|
|
|
|
# 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.
|
2017-10-21 10:39:57 +13:00
|
|
|
# Bug: Multiple selections of items sometimes gets Notes/references
|
2018-01-07 06:48:40 +13:00
|
|
|
# field to be erased. See #10 on github.
|
2017-10-16 20:43:09 +13:00
|
|
|
#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
|
|
|
|
2015-06-16 06:09:16 +12: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(),
|
2015-07-04 20:54:06 +12:00
|
|
|
self.revisions.saveState()
|
2016-02-07 00:34:22 +13:00
|
|
|
]
|
|
|
|
|
2015-07-04 19:59:35 +12:00
|
|
|
def restoreState(self, state):
|
2015-07-04 20:54:06 +12:00
|
|
|
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])
|