mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-18 11:52:25 +12:00
6ea209e523
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
96 lines
4.3 KiB
Python
96 lines
4.3 KiB
Python
#!/usr/bin/env python
|
|
# --!-- coding: utf8 --!--
|
|
from PyQt5.QtCore import Qt
|
|
from PyQt5.QtWidgets import QTreeView, QHeaderView
|
|
|
|
from manuskript import settings
|
|
from manuskript.enums import Outline
|
|
from manuskript.ui.views.dndView import dndView
|
|
from manuskript.ui.views.outlineBasics import outlineBasics
|
|
from manuskript.ui.views.outlineDelegates import outlineTitleDelegate, outlineCharacterDelegate, outlineCompileDelegate, \
|
|
outlineStatusDelegate, outlineGoalPercentageDelegate, outlineLabelDelegate
|
|
|
|
|
|
class outlineView(QTreeView, dndView, outlineBasics):
|
|
def __init__(self, parent=None, modelCharacters=None, modelLabels=None, modelStatus=None):
|
|
QTreeView.__init__(self, parent)
|
|
dndView.__init__(self)
|
|
outlineBasics.__init__(self, parent)
|
|
|
|
self.modelCharacters = modelCharacters
|
|
self.modelLabels = modelLabels
|
|
self.modelStatus = modelStatus
|
|
|
|
self.header().setStretchLastSection(False)
|
|
|
|
def setModelCharacters(self, model):
|
|
# This is used by outlineCharacterDelegate to select character
|
|
self.modelCharacters = model
|
|
|
|
def setModelLabels(self, model):
|
|
# This is used by outlineLabelDelegate to display labels
|
|
self.modelLabels = model
|
|
|
|
def setModelStatus(self, model):
|
|
# This is used by outlineStatusDelegate to display statuses
|
|
self.modelStatus = model
|
|
|
|
def setModel(self, model):
|
|
QTreeView.setModel(self, model)
|
|
|
|
# Setting delegates
|
|
self.outlineTitleDelegate = outlineTitleDelegate(self)
|
|
# self.outlineTitleDelegate.setView(self)
|
|
self.setItemDelegateForColumn(Outline.title, self.outlineTitleDelegate)
|
|
self.outlineCharacterDelegate = outlineCharacterDelegate(self.modelCharacters)
|
|
self.setItemDelegateForColumn(Outline.POV, self.outlineCharacterDelegate)
|
|
self.outlineCompileDelegate = outlineCompileDelegate()
|
|
self.setItemDelegateForColumn(Outline.compile, self.outlineCompileDelegate)
|
|
self.outlineStatusDelegate = outlineStatusDelegate(self.modelStatus)
|
|
self.setItemDelegateForColumn(Outline.status, self.outlineStatusDelegate)
|
|
self.outlineGoalPercentageDelegate = outlineGoalPercentageDelegate()
|
|
self.setItemDelegateForColumn(Outline.goalPercentage, self.outlineGoalPercentageDelegate)
|
|
self.outlineLabelDelegate = outlineLabelDelegate(self.modelLabels)
|
|
self.setItemDelegateForColumn(Outline.label, self.outlineLabelDelegate)
|
|
|
|
# Hiding columns
|
|
self.hideColumns()
|
|
|
|
self.header().setSectionResizeMode(Outline.title, QHeaderView.Stretch)
|
|
self.header().setSectionResizeMode(Outline.POV, QHeaderView.ResizeToContents)
|
|
self.header().setSectionResizeMode(Outline.status, QHeaderView.ResizeToContents)
|
|
self.header().setSectionResizeMode(Outline.label, QHeaderView.ResizeToContents)
|
|
self.header().setSectionResizeMode(Outline.compile, QHeaderView.ResizeToContents)
|
|
self.header().setSectionResizeMode(Outline.wordCount, QHeaderView.ResizeToContents)
|
|
self.header().setSectionResizeMode(Outline.goal, QHeaderView.ResizeToContents)
|
|
self.header().setSectionResizeMode(Outline.goalPercentage, QHeaderView.ResizeToContents)
|
|
|
|
def hideColumns(self):
|
|
if not self.model():
|
|
# outlineView is probably not initialized, because editorWidgets shows index cards or text.
|
|
return
|
|
|
|
for c in range(self.model().columnCount()):
|
|
self.hideColumn(c)
|
|
for c in settings.outlineViewColumns:
|
|
self.showColumn(c)
|
|
|
|
def setRootIndex(self, index):
|
|
QTreeView.setRootIndex(self, index)
|
|
self.outlineGoalPercentageDelegate = outlineGoalPercentageDelegate(index)
|
|
self.setItemDelegateForColumn(Outline.goalPercentage, self.outlineGoalPercentageDelegate)
|
|
|
|
def dragMoveEvent(self, event):
|
|
dndView.dragMoveEvent(self, event)
|
|
QTreeView.dragMoveEvent(self, event)
|
|
|
|
def mousePressEvent(self, event):
|
|
# Prevent selecting item while right-clicking for popup menu!
|
|
if event.button() != Qt.RightButton:
|
|
QTreeView.mousePressEvent(self, event)
|
|
outlineBasics.mousePressEvent(self, event)
|
|
|
|
def mouseReleaseEvent(self, event):
|
|
QTreeView.mouseReleaseEvent(self, event)
|
|
outlineBasics.mouseReleaseEvent(self, event)
|