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 *
|
2015-06-10 01:52:20 +12:00
|
|
|
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
|
|
|
|
2015-06-10 01:52:20 +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)
|
2015-06-10 01:52:20 +12:00
|
|
|
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)
|
2015-06-10 01:52:20 +12:00
|
|
|
QTreeView.dragMoveEvent(self, event)
|
|
|
|
|
|
|
|
def mouseReleaseEvent(self, event):
|
|
|
|
QTreeView.mouseReleaseEvent(self, event)
|
|
|
|
outlineBasics.mouseReleaseEvent(self, event)
|