manuskript/src/ui/views/treeView.py

86 lines
2.9 KiB
Python
Raw Normal View History

2015-06-09 22:32:43 +12:00
#!/usr/bin/env python
#--!-- coding: utf8 --!--
from qt import *
from enums import *
from functions import *
from ui.views.dndView import *
from ui.views.outlineBasics import *
2015-06-18 03:15:13 +12:00
from ui.views.treeDelegates import *
2015-06-09 22:32:43 +12:00
class treeView(QTreeView, dndView, outlineBasics):
2015-06-09 22:32:43 +12:00
def __init__(self, parent=None):
QTreeView.__init__(self, parent)
dndView.__init__(self, parent)
outlineBasics.__init__(self, parent)
2015-06-09 22:32:43 +12:00
def setModel(self, model):
QTreeView.setModel(self, model)
# Hiding columns
for c in range(1, self.model().columnCount()):
self.hideColumn(c)
2015-06-18 03:15:13 +12:00
# Setting delegate
self.titleDelegate = treeTitleDelegate()
self.setItemDelegateForColumn(Outline.title.value, self.titleDelegate)
2015-06-09 22:32:43 +12:00
2015-06-27 01:55:34 +12:00
def makePopupMenu(self):
menu = outlineBasics.makePopupMenu(self)
first = menu.actions()[0]
if len(self.selectedIndexes()) != 0:
index = self.currentIndex()
item = index.internalPointer()
self.actExpand = QAction(self.tr("Expand {}").format(item.title()), menu)
self.actExpand.triggered.connect(self.expandCurrentIndex)
menu.insertAction(first, self.actExpand)
self.actCollapse = QAction(self.tr("Collapse {}").format(item.title()), menu)
self.actCollapse.triggered.connect(self.collapseCurrentIndex)
menu.insertAction(first, self.actCollapse)
menu.insertSeparator(first)
self.actExpandAll = QAction(self.tr("Expand All"), menu)
self.actExpandAll.triggered.connect(self.expandAll)
menu.insertAction(first, self.actExpandAll)
self.actCollapseAll = QAction(self.tr("Collapse All"), menu)
self.actCollapseAll.triggered.connect(self.collapseAll)
menu.insertAction(first, self.actCollapseAll)
menu.insertSeparator(first)
return menu
def expandCurrentIndex(self, index=None):
if index is None or type(index) == bool:
index = self.currentIndex()
self.expand(index)
for i in range(self.model().rowCount(index)):
idx = self.model().index(i, 0, index)
self.expandCurrentIndex(index=idx)
def collapseCurrentIndex(self, index=None):
if index is None or type(index) == bool:
index = self.currentIndex()
self.collapse(index)
for i in range(self.model().rowCount(index)):
idx = self.model().index(i, 0, index)
self.collapseCurrentIndex(index=idx)
2015-06-09 22:32:43 +12:00
def dragMoveEvent(self, event):
dndView.dragMoveEvent(self, event)
QTreeView.dragMoveEvent(self, event)
def mouseReleaseEvent(self, event):
QTreeView.mouseReleaseEvent(self, event)
outlineBasics.mouseReleaseEvent(self, event)