diff --git a/src/mainWindow.py b/src/mainWindow.py
index 2b470b7b..8d865581 100644
--- a/src/mainWindow.py
+++ b/src/mainWindow.py
@@ -8,7 +8,6 @@ from qt import *
from ui.mainWindow import *
from ui.helpLabel import helpLabel
-from ui.treeOutlineDelegates import *
from loadSave import *
from enums import *
from models.outlineModel import *
@@ -138,25 +137,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# Outline
self.mdlOutline = outlineModel()
self.treeRedacOutline.setModel(self.mdlOutline)
+ self.treePlanOutline.setModelPersos(self.mdlPersos)
self.treePlanOutline.setModel(self.mdlOutline)
- self.treePlanOutlinePersoDelegate = treeOutlinePersoDelegate(self.mdlPersos)
- self.treePlanOutline.setItemDelegateForColumn(Outline.POV.value, self.treePlanOutlinePersoDelegate)
- self.treePlanOutlineCompileDelegate = treeOutlineCompileDelegate()
- self.treePlanOutline.setItemDelegateForColumn(Outline.compile.value, self.treePlanOutlineCompileDelegate)
- self.treePlanOutlineStatusDelegate = treeOutlineStatusDelegate()
- self.treePlanOutline.setItemDelegateForColumn(Outline.status.value, self.treePlanOutlineStatusDelegate)
- self.treePlanOutlineGoalPercentageDelegate = treeOutlineGoalPercentageDelegate()
- self.treePlanOutline.setItemDelegateForColumn(Outline.goalPercentage.value, self.treePlanOutlineGoalPercentageDelegate)
-
self.cmbPlanPOV.setModels(self.mdlPersos, self.mdlOutline)
-
- self.treePlanOutline.header().setSectionResizeMode(Outline.title.value, QHeaderView.Stretch)
- self.treePlanOutline.header().setSectionResizeMode(Outline.POV.value, QHeaderView.ResizeToContents)
- self.treePlanOutline.header().setSectionResizeMode(Outline.status.value, QHeaderView.ResizeToContents)
- self.treePlanOutline.header().setSectionResizeMode(Outline.compile.value, QHeaderView.ResizeToContents)
- self.treePlanOutline.header().setSectionResizeMode(Outline.wordCount.value, QHeaderView.ResizeToContents)
- self.treePlanOutline.header().setSectionResizeMode(Outline.goal.value, QHeaderView.ResizeToContents)
- self.treePlanOutline.header().setSectionResizeMode(Outline.goalPercentage.value, QHeaderView.ResizeToContents)
self.mprPlan = QDataWidgetMapper()
self.mprPlan.setModel(self.mdlOutline)
@@ -175,12 +158,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.treeRedacOutline.setSelectionModel(self.treePlanOutline.selectionModel())
- for c in range(1, self.mdlOutline.columnCount()):
- self.treeRedacOutline.hideColumn(c)
- self.treePlanOutline.hideColumn(c)
- for c in [Outline.POV.value, Outline.status.value, Outline.compile.value, Outline.wordCount.value, Outline.goal.value, Outline.goalPercentage.value]:
- self.treePlanOutline.showColumn(c)
-
self.btnRedacAddFolder.clicked.connect(lambda: self.outlineAddItem("folder"))
self.btnPlanAddFolder.clicked.connect(lambda: self.outlineAddItem("folder"))
self.btnRedacAddScene.clicked.connect(lambda: self.outlineAddItem("scene"))
@@ -221,7 +198,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.sldCorkSizeFactor.valueChanged.connect(self.redacEditor.setCorkSizeFactor)
self.btnRedacFolderCork.toggled.connect(self.sldCorkSizeFactor.setVisible)
- self.btnRedacFolderText.toggled.connect(lambda v: self.redacEditor.setFolderView("text" if v else "cork"))
+ self.btnRedacFolderText.clicked.connect(lambda v: self.redacEditor.setFolderView("text"))
+ self.btnRedacFolderCork.clicked.connect(lambda v: self.redacEditor.setFolderView("cork"))
+ self.btnRedacFolderOutline.clicked.connect(lambda v: self.redacEditor.setFolderView("outline"))
#Debug
self.mdlFlatData.setVerticalHeaderLabels(["Infos générales", "Summary"])
@@ -249,6 +228,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.cmbPlanPOV.setHidden(idx.internalPointer().isFolder())
self.btnRedacFolderText.setHidden(not idx.internalPointer().isFolder())
self.btnRedacFolderCork.setHidden(not idx.internalPointer().isFolder())
+ self.btnRedacFolderOutline.setHidden(not idx.internalPointer().isFolder())
self.sldCorkSizeFactor.setHidden(not idx.internalPointer().isFolder())
def outlineAddItem(self, type="folder"):
diff --git a/src/models/outlineModel.py b/src/models/outlineModel.py
index e67828cb..3f31e4da 100644
--- a/src/models/outlineModel.py
+++ b/src/models/outlineModel.py
@@ -176,8 +176,7 @@ class outlineModel(QAbstractItemModel):
def supportedDropActions(self):
- return Qt.MoveAction # Qt.CopyAction |
- #return Qt.CopyAction | Qt.MoveAction
+ return Qt.CopyAction | Qt.MoveAction
#def canDropMimeData(self, data, action, row, column, parent):
#if not data.hasFormat("application/xml"):
@@ -276,7 +275,6 @@ class outlineModel(QAbstractItemModel):
return self.removeRows(row, 1, parent)
def removeRows(self, row, count, parent=QModelIndex()):
- print("Removing")
if not parent.isValid():
parentItem = self.rootItem
else:
diff --git a/src/ui/editors/editorWidget.py b/src/ui/editors/editorWidget.py
index 7afc7162..4b7ae5b3 100644
--- a/src/ui/editors/editorWidget.py
+++ b/src/ui/editors/editorWidget.py
@@ -8,7 +8,6 @@ from qt import *
from enums import *
from ui.editors.editorWidget_ui import *
from ui.editors.customTextEdit import *
-from ui.editors.corkDelegate import *
from functions import *
class editorWidget(QWidget, Ui_editorWidget_ui):
@@ -28,18 +27,12 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.spellcheck = True
self.folderView = "cork"
- self.corkView.setResizeMode(QListView.Adjust)
- self.corkView.setWrapping(True)
- self.corkView.setItemDelegate(corkDelegate())
- self.corkView.setSpacing(5)
- self.corkView.setStyleSheet("""QListView {
- background:#926239;
- }""")
-
def setFolderView(self, v):
oldV = self.folderView
if v == "cork":
self.folderView = "cork"
+ elif v == "outline":
+ self.folderView = "outline"
else:
self.folderView = "text"
@@ -61,7 +54,67 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
item = index.internalPointer()
- if item.isFolder() and self.folderView == "text":
+ # Couting the number of selected items
+ sel = [index]
+ for i in mainWindow().treeRedacOutline.selectionModel().selection().indexes():
+ if i.column() != 0: continue
+ if i not in sel: sel.append(i)
+
+ def addTitle(itm):
+ edt = customTextEdit(self, html="{t}".format(l=min(itm.level()+1, 5), t=itm.title()), autoResize=True)
+ edt.setFrameShape(QFrame.NoFrame)
+ self.txtEdits.append(edt)
+ l.addWidget(edt)
+
+ def addLine():
+ line = QFrame(self.scene)
+ line.setFrameShape(QFrame.HLine)
+ line.setFrameShadow(QFrame.Sunken)
+ l.addWidget(line)
+
+ def addScene(itm):
+ edt = customTextEdit(self, index=itm.index(), spellcheck=self.spellcheck, dict=self.currentDict, autoResize=True)
+ edt.setFrameShape(QFrame.NoFrame)
+ edt.setStatusTip(itm.path())
+ self.toggledSpellcheck.connect(edt.toggleSpellcheck)
+ self.dictChanged.connect(edt.setDict)
+ #edt.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
+ self.txtEdits.append(edt)
+ l.addWidget(edt)
+
+ def addChildren(itm):
+ for c in range(itm.childCount()):
+ child = itm.child(c)
+
+ if child.isFolder():
+ addTitle(child)
+ addChildren(child)
+
+ else:
+ addScene(child)
+ addLine()
+
+ def addSpacer():
+ l.addItem(QSpacerItem(10, 1000, QSizePolicy.Minimum, QSizePolicy.Expanding))
+
+ # Display multiple selected items
+ if len(sel) > 1 and False: # Buggy and not very useful, skip
+ self.stack.setCurrentIndex(1)
+ w = QWidget()
+ l = QVBoxLayout(w)
+ self.txtEdits = []
+ for idx in sel:
+ sItem = idx.internalPointer()
+ addTitle(sItem)
+ if sItem.isFolder():
+ addChildren(sItem)
+ else:
+ addScene(sItem)
+ addLine()
+ addSpacer()
+ self.scroll.setWidget(w)
+
+ elif item.isFolder() and self.folderView == "text":
self.stack.setCurrentIndex(1)
w = QWidget()
@@ -70,44 +123,9 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.txtEdits = []
- def addTitle(itm):
- edt = customTextEdit(self, html="{t}".format(l=min(itm.level()+1, 5), t=itm.title()), autoResize=True)
- edt.setFrameShape(QFrame.NoFrame)
- self.txtEdits.append(edt)
- l.addWidget(edt)
-
- def addLine():
- line = QFrame(self.scene)
- line.setFrameShape(QFrame.HLine)
- line.setFrameShadow(QFrame.Sunken)
- l.addWidget(line)
-
- def addScene(itm):
- edt = customTextEdit(self, index=itm.index(), spellcheck=self.spellcheck, dict=self.currentDict, autoResize=True)
- edt.setFrameShape(QFrame.NoFrame)
- edt.setStatusTip(itm.path())
- self.toggledSpellcheck.connect(edt.toggleSpellcheck)
- self.dictChanged.connect(edt.setDict)
- #edt.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
- self.txtEdits.append(edt)
- l.addWidget(edt)
-
- def addChildren(itm):
-
- for c in range(itm.childCount()):
- child = itm.child(c)
-
- if child.isFolder():
- addTitle(child)
- addChildren(child)
-
- else:
- addScene(child)
- addLine()
-
addTitle(item)
addChildren(item)
- l.addItem(QSpacerItem(10, 1000, QSizePolicy.Minimum, QSizePolicy.Expanding))
+ addSpacer()
self.scroll.setWidget(w)
elif item.isFolder() and self.folderView == "cork":
@@ -115,6 +133,12 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.corkView.setModel(self._model)
self.corkView.setRootIndex(self.currentIndex)
+ elif item.isFolder() and self.folderView == "outline":
+ self.stack.setCurrentIndex(3)
+ self.outlineView.setModelPersos(mainWindow().mdlPersos)
+ self.outlineView.setModel(self._model)
+ self.outlineView.setRootIndex(self.currentIndex)
+
else:
self.stack.setCurrentIndex(0)
diff --git a/src/ui/editors/editorWidget_ui.py b/src/ui/editors/editorWidget_ui.py
index fad6945d..ba4030cc 100644
--- a/src/ui/editors/editorWidget_ui.py
+++ b/src/ui/editors/editorWidget_ui.py
@@ -47,16 +47,19 @@ class Ui_editorWidget_ui(object):
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.cork)
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
- self.corkView = QtWidgets.QListView(self.cork)
- self.corkView.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop)
- self.corkView.setDefaultDropAction(QtCore.Qt.MoveAction)
- self.corkView.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
- self.corkView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
- self.corkView.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
- self.corkView.setFlow(QtWidgets.QListView.LeftToRight)
+ self.corkView = corkView(self.cork)
self.corkView.setObjectName("corkView")
self.horizontalLayout_3.addWidget(self.corkView)
self.stack.addWidget(self.cork)
+ self.outline = QtWidgets.QWidget()
+ self.outline.setObjectName("outline")
+ self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.outline)
+ self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.outlineView = outlineView(self.outline)
+ self.outlineView.setObjectName("outlineView")
+ self.verticalLayout_3.addWidget(self.outlineView)
+ self.stack.addWidget(self.outline)
self.verticalLayout_2.addWidget(self.stack)
self.retranslateUi(editorWidget_ui)
@@ -68,3 +71,5 @@ class Ui_editorWidget_ui(object):
editorWidget_ui.setWindowTitle(_translate("editorWidget_ui", "Form"))
from ui.editors.customTextEdit import customTextEdit
+from ui.views.outlineView import outlineView
+from ui.views.corkView import corkView
diff --git a/src/ui/editors/editorWidget_ui.ui b/src/ui/editors/editorWidget_ui.ui
index e2969430..92ed5fb9 100644
--- a/src/ui/editors/editorWidget_ui.ui
+++ b/src/ui/editors/editorWidget_ui.ui
@@ -68,26 +68,17 @@
0
-
-
-
- QAbstractItemView::DragDrop
-
-
- Qt::MoveAction
-
-
- QAbstractItemView::ExtendedSelection
-
-
- QAbstractItemView::SelectRows
-
-
- QAbstractItemView::ScrollPerPixel
-
-
- QListView::LeftToRight
-
-
+
+
+
+
+
+
+
+ 0
+
+ -
+
@@ -101,6 +92,16 @@
QTextEdit
ui.editors.customTextEdit.h
+
+ outlineView
+ QTreeView
+
+
+
+ corkView
+ QListView
+
+
diff --git a/src/ui/mainWindow.py b/src/ui/mainWindow.py
index 426c5a73..f4a1c6c0 100644
--- a/src/ui/mainWindow.py
+++ b/src/ui/mainWindow.py
@@ -703,7 +703,7 @@ class Ui_MainWindow(object):
self.splitterOutlineV = QtWidgets.QSplitter(self.layoutWidget)
self.splitterOutlineV.setOrientation(QtCore.Qt.Vertical)
self.splitterOutlineV.setObjectName("splitterOutlineV")
- self.treePlanOutline = QtWidgets.QTreeView(self.splitterOutlineV)
+ self.treePlanOutline = outlineView(self.splitterOutlineV)
self.treePlanOutline.setDragEnabled(True)
self.treePlanOutline.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop)
self.treePlanOutline.setDefaultDropAction(QtCore.Qt.MoveAction)
@@ -800,10 +800,7 @@ class Ui_MainWindow(object):
self.verticalLayout_30 = QtWidgets.QVBoxLayout(self.widget)
self.verticalLayout_30.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_30.setObjectName("verticalLayout_30")
- self.treeRedacOutline = QtWidgets.QTreeView(self.widget)
- self.treeRedacOutline.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop)
- self.treeRedacOutline.setDefaultDropAction(QtCore.Qt.MoveAction)
- self.treeRedacOutline.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
+ self.treeRedacOutline = treeView(self.widget)
self.treeRedacOutline.setObjectName("treeRedacOutline")
self.verticalLayout_30.addWidget(self.treeRedacOutline)
self.horizontalLayout_31 = QtWidgets.QHBoxLayout()
@@ -870,6 +867,11 @@ class Ui_MainWindow(object):
self.btnRedacFolderCork.setObjectName("btnRedacFolderCork")
self.buttonGroup.addButton(self.btnRedacFolderCork)
self.horizontalLayout_19.addWidget(self.btnRedacFolderCork)
+ self.btnRedacFolderOutline = QtWidgets.QPushButton(self.layoutWidget1)
+ self.btnRedacFolderOutline.setCheckable(True)
+ self.btnRedacFolderOutline.setObjectName("btnRedacFolderOutline")
+ self.buttonGroup.addButton(self.btnRedacFolderOutline)
+ self.horizontalLayout_19.addWidget(self.btnRedacFolderOutline)
self.sldCorkSizeFactor = QtWidgets.QSlider(self.layoutWidget1)
self.sldCorkSizeFactor.setMinimumSize(QtCore.QSize(100, 0))
self.sldCorkSizeFactor.setMaximumSize(QtCore.QSize(200, 16777215))
@@ -1276,6 +1278,7 @@ class Ui_MainWindow(object):
self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabOutline), _translate("MainWindow", "Outline"))
self.btnRedacFolderText.setText(_translate("MainWindow", "Text"))
self.btnRedacFolderCork.setText(_translate("MainWindow", "Cork"))
+ self.btnRedacFolderOutline.setText(_translate("MainWindow", "Outline"))
self.btnRedacFullscreen.setShortcut(_translate("MainWindow", "F11"))
self.groupBox_4.setTitle(_translate("MainWindow", "Properties"))
self.lblRedacPOV.setText(_translate("MainWindow", "POV"))
@@ -1329,9 +1332,11 @@ class Ui_MainWindow(object):
self.actSpellcheck.setText(_translate("MainWindow", "Spellcheck"))
self.actSpellcheck.setShortcut(_translate("MainWindow", "F8"))
-from ui.sldImportance import sldImportance
-from ui.chkOutlineCompile import chkOutlineCompile
-from ui.editors.editorWidget import editorWidget
-from ui.cmbOutlineStatusChoser import cmbOutlineStatusChoser
from ui.cmbOutlinePersoChoser import cmbOutlinePersoChoser
from ui.collapsibleGroupBox2 import collapsibleGroupBox2
+from ui.sldImportance import sldImportance
+from ui.views.treeView import treeView
+from ui.editors.editorWidget import editorWidget
+from ui.views.outlineView import outlineView
+from ui.chkOutlineCompile import chkOutlineCompile
+from ui.cmbOutlineStatusChoser import cmbOutlineStatusChoser
diff --git a/src/ui/mainWindow.ui b/src/ui/mainWindow.ui
index 7e4da4c7..0b23a737 100644
--- a/src/ui/mainWindow.ui
+++ b/src/ui/mainWindow.ui
@@ -1341,7 +1341,7 @@
Qt::Vertical
-
+
true
@@ -1549,17 +1549,7 @@
0
-
-
-
- QAbstractItemView::DragDrop
-
-
- Qt::MoveAction
-
-
- QAbstractItemView::ExtendedSelection
-
-
+
-
@@ -1689,6 +1679,19 @@
+ -
+
+
+ Outline
+
+
+ true
+
+
+ buttonGroup
+
+
+
-
@@ -2324,6 +2327,16 @@
ui.collapsibleGroupBox2.h
1
+
+ outlineView
+ QTreeView
+
+
+
+ treeView
+ QTreeView
+
+
diff --git a/src/ui/views/__init__.py b/src/ui/views/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/src/ui/editors/corkDelegate.py b/src/ui/views/corkDelegate.py
similarity index 100%
rename from src/ui/editors/corkDelegate.py
rename to src/ui/views/corkDelegate.py
index 30fa5949..933fec93 100644
--- a/src/ui/editors/corkDelegate.py
+++ b/src/ui/views/corkDelegate.py
@@ -248,6 +248,18 @@ class corkDelegate(QStyledItemDelegate):
#itemRect.right(), iconRect.bottom() + margin)
p.drawLine(bottomRect.topLeft(), bottomRect.topRight())
p.restore()
+
+ # Lines
+ if True:
+ p.save()
+ p.setPen(QColor("#EEE"))
+ fm = QFontMetrics(option.font)
+ h = fm.lineSpacing()
+ l = self.mainTextRect.topLeft() + QPoint(0, h)
+ while self.mainTextRect.contains(l):
+ p.drawLine(l, QPoint(self.mainTextRect.right(), l.y()))
+ l.setY(l.y() + h)
+ p.restore()
# Draw status
mainRect = self.mainRect
@@ -281,18 +293,6 @@ class corkDelegate(QStyledItemDelegate):
p.setFont(option.font)
p.drawText(self.mainTextRect, Qt.TextWordWrap, fullSummary)
- # Lines
- if True:
- p.save()
- p.setPen(QColor("#EEE"))
- fm = QFontMetrics(option.font)
- h = fm.lineSpacing()
- l = self.mainTextRect.topLeft() + QPoint(0, h)
- while self.mainTextRect.contains(l):
- p.drawLine(l, QPoint(self.mainTextRect.right(), l.y()))
- l.setY(l.y() + h)
- p.restore()
-
#Debug
#for r in [self.itemRect, self.iconRect, self.titleRect, self.bottomRect, self.mainLineRect, self.mainTextRect]:
#p.drawRect(r)
\ No newline at end of file
diff --git a/src/ui/views/corkView.py b/src/ui/views/corkView.py
new file mode 100644
index 00000000..a407a9b7
--- /dev/null
+++ b/src/ui/views/corkView.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+#--!-- coding: utf8 --!--
+
+
+
+
+from qt import *
+from enums import *
+from functions import *
+from ui.views.corkDelegate import *
+from ui.views.dndView import *
+
+class corkView(QListView, dndView):
+
+ def __init__(self, parent=None):
+ QListView.__init__(self, parent)
+ dndView.__init__(self, parent)
+
+ self.setResizeMode(QListView.Adjust)
+ self.setWrapping(True)
+ self.setItemDelegate(corkDelegate())
+ self.setSpacing(5)
+ self.setStyleSheet("""QListView {
+ background:#926239;
+ }""")
+ self.setVerticalScrollMode(self.ScrollPerPixel)
+ self.setFlow(self.LeftToRight)
+ self.setSelectionBehavior(self.SelectRows)
+
+ def dragMoveEvent(self, event):
+ dndView.dragMoveEvent(self, event)
+ QListView.dragMoveEvent(self, event)
\ No newline at end of file
diff --git a/src/ui/views/dndView.py b/src/ui/views/dndView.py
new file mode 100644
index 00000000..5b73980f
--- /dev/null
+++ b/src/ui/views/dndView.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+#--!-- coding: utf8 --!--
+
+
+
+
+from qt import *
+from enums import *
+from functions import *
+
+class dndView(QAbstractItemView):
+
+ def __init__(self, parent=None):
+ QAbstractItemView.__init__(self, parent)
+ self.setDragDropMode(self.DragDrop)
+ self.setDefaultDropAction(Qt.MoveAction)
+ self.setSelectionMode(self.ExtendedSelection)
+
+ def dragMoveEvent(self, event):
+ #return QAbstractItemView.dragMoveEvent(self, event)
+ #print(a)
+ if event.keyboardModifiers() & Qt.ControlModifier:
+ event.setDropAction(Qt.CopyAction)
+ else:
+ event.setDropAction(Qt.MoveAction)
\ No newline at end of file
diff --git a/src/ui/views/outlineView.py b/src/ui/views/outlineView.py
new file mode 100644
index 00000000..d1167cc2
--- /dev/null
+++ b/src/ui/views/outlineView.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+#--!-- coding: utf8 --!--
+
+
+
+
+from qt import *
+from enums import *
+from functions import *
+from ui.views.treeOutlineDelegates import *
+from ui.views.dndView import *
+
+class outlineView(QTreeView, dndView):
+
+ def __init__(self, parent=None, modelPersos=None):
+ QTreeView.__init__(self, parent)
+ dndView.__init__(self, parent)
+ self.modelPersos = modelPersos
+ self.header().setStretchLastSection(False)
+
+ def setModelPersos(self, model):
+ # This is used by treeOutlinePersoDelegate to select character
+ self.modelPersos = model
+
+ def setModel(self, model):
+ QTreeView.setModel(self, model)
+
+ # Setting delegates
+ self.treePlanOutlinePersoDelegate = treeOutlinePersoDelegate(self.modelPersos)
+ self.setItemDelegateForColumn(Outline.POV.value, self.treePlanOutlinePersoDelegate)
+ self.treePlanOutlineCompileDelegate = treeOutlineCompileDelegate()
+ self.setItemDelegateForColumn(Outline.compile.value, self.treePlanOutlineCompileDelegate)
+ self.treePlanOutlineStatusDelegate = treeOutlineStatusDelegate()
+ self.setItemDelegateForColumn(Outline.status.value, self.treePlanOutlineStatusDelegate)
+ self.treePlanOutlineGoalPercentageDelegate = treeOutlineGoalPercentageDelegate()
+ self.setItemDelegateForColumn(Outline.goalPercentage.value, self.treePlanOutlineGoalPercentageDelegate)
+
+ # Hiding columns
+ for c in range(1, self.model().columnCount()):
+ self.hideColumn(c)
+ for c in [Outline.POV.value, Outline.status.value, Outline.compile.value,
+ Outline.wordCount.value, Outline.goal.value, Outline.goalPercentage.value]:
+ self.showColumn(c)
+
+ self.header().setSectionResizeMode(Outline.title.value, QHeaderView.Stretch)
+ self.header().setSectionResizeMode(Outline.POV.value, QHeaderView.ResizeToContents)
+ self.header().setSectionResizeMode(Outline.status.value, QHeaderView.ResizeToContents)
+ self.header().setSectionResizeMode(Outline.compile.value, QHeaderView.ResizeToContents)
+ self.header().setSectionResizeMode(Outline.wordCount.value, QHeaderView.ResizeToContents)
+ self.header().setSectionResizeMode(Outline.goal.value, QHeaderView.ResizeToContents)
+ self.header().setSectionResizeMode(Outline.goalPercentage.value, QHeaderView.ResizeToContents)
+
+ def setRootIndex(self, index):
+ QTreeView.setRootIndex(self, index)
+ self.treePlanOutlineGoalPercentageDelegate = treeOutlineGoalPercentageDelegate(index)
+ self.setItemDelegateForColumn(Outline.goalPercentage.value, self.treePlanOutlineGoalPercentageDelegate)
+
+ def dragMoveEvent(self, event):
+ dndView.dragMoveEvent(self, event)
+ QTreeView.dragMoveEvent(self, event)
+
\ No newline at end of file
diff --git a/src/ui/treeOutlineDelegates.py b/src/ui/views/treeOutlineDelegates.py
similarity index 91%
rename from src/ui/treeOutlineDelegates.py
rename to src/ui/views/treeOutlineDelegates.py
index 2d5a8b29..591354ec 100644
--- a/src/ui/treeOutlineDelegates.py
+++ b/src/ui/views/treeOutlineDelegates.py
@@ -59,8 +59,15 @@ class treeOutlineCompileDelegate(QStyledItemDelegate):
return ""
class treeOutlineGoalPercentageDelegate(QStyledItemDelegate):
- def __init__(self, parent=None):
+ def __init__(self, rootIndex=None, parent=None):
QStyledItemDelegate.__init__(self, parent)
+ self.rootIndex = rootIndex
+
+ def sizeHint(self, option, index):
+ sh = QStyledItemDelegate.sizeHint(self, option, index)
+ #if sh.width() > 50:
+ sh.setWidth(100)
+ return sh
def paint(self, painter, option, index):
if not index.isValid():
@@ -78,6 +85,8 @@ class treeOutlineGoalPercentageDelegate(QStyledItemDelegate):
typ = item.data(Outline.type.value)
level = item.level()
+ if self.rootIndex:
+ level -= self.rootIndex.internalPointer().level() + 1
margin = 5
height = max(min(option.rect.height() - 2*margin, 12) - 2 * level, 6)
diff --git a/src/ui/views/treeView.py b/src/ui/views/treeView.py
new file mode 100644
index 00000000..e9d34b72
--- /dev/null
+++ b/src/ui/views/treeView.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python
+#--!-- coding: utf8 --!--
+
+
+
+
+from qt import *
+from enums import *
+from functions import *
+from ui.views.dndView import *
+
+class treeView(QTreeView, dndView):
+
+ def __init__(self, parent=None):
+ QTreeView.__init__(self, parent)
+ dndView.__init__(self, parent)
+
+
+ def setModel(self, model):
+ QTreeView.setModel(self, model)
+
+ # Hiding columns
+ for c in range(1, self.model().columnCount()):
+ self.hideColumn(c)
+
+ def dragMoveEvent(self, event):
+ dndView.dragMoveEvent(self, event)
+ QTreeView.dragMoveEvent(self, event)
\ No newline at end of file
diff --git a/test_project/outline.xml b/test_project/outline.xml
index 136377dc..84ebbe35 100644
--- a/test_project/outline.xml
+++ b/test_project/outline.xml
@@ -1,5 +1,5 @@
-
+
@@ -17,12 +17,13 @@
-
+
+
+
+
+
+
-
-
-
-
@@ -36,28 +37,24 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
+
+