Make the project tree columns fixed
This commit is contained in:
+12
-35
@@ -34,7 +34,7 @@ from PyQt5.QtCore import Qt, QSize, pyqtSignal, pyqtSlot
|
|||||||
from PyQt5.QtGui import QIcon
|
from PyQt5.QtGui import QIcon
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QTreeWidget, QTreeWidgetItem, QAbstractItemView, QMenu, QAction, QFrame,
|
QTreeWidget, QTreeWidgetItem, QAbstractItemView, QMenu, QAction, QFrame,
|
||||||
QDialog
|
QDialog, QHeaderView
|
||||||
)
|
)
|
||||||
|
|
||||||
from novelwriter.core import NWDoc
|
from novelwriter.core import NWDoc
|
||||||
@@ -88,28 +88,24 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
|
|
||||||
# Tree Settings
|
# Tree Settings
|
||||||
iPx = self.theTheme.baseIconSize
|
iPx = self.theTheme.baseIconSize
|
||||||
|
cMg = self.mainConf.pxInt(6)
|
||||||
self.setIconSize(QSize(iPx, iPx))
|
self.setIconSize(QSize(iPx, iPx))
|
||||||
self.setFrameStyle(QFrame.NoFrame)
|
self.setFrameStyle(QFrame.NoFrame)
|
||||||
self.setExpandsOnDoubleClick(False)
|
self.setExpandsOnDoubleClick(False)
|
||||||
|
self.setHeaderHidden(True)
|
||||||
self.setIndentation(iPx)
|
self.setIndentation(iPx)
|
||||||
self.setColumnCount(4)
|
self.setColumnCount(4)
|
||||||
self.setHeaderLabels([
|
|
||||||
self.tr("Project Tree"), self.tr("Words"), "", ""
|
|
||||||
])
|
|
||||||
|
|
||||||
treeHeadItem = self.headerItem()
|
# Lock the column sizes
|
||||||
treeHeadItem.setTextAlignment(self.C_COUNT, Qt.AlignRight)
|
|
||||||
treeHeadItem.setToolTip(self.C_NAME, self.tr("Item label"))
|
|
||||||
treeHeadItem.setToolTip(self.C_COUNT, self.tr("Word count"))
|
|
||||||
treeHeadItem.setToolTip(self.C_EXPORT, self.tr("Include in build"))
|
|
||||||
treeHeadItem.setToolTip(self.C_STATUS, self.tr("Item status"))
|
|
||||||
|
|
||||||
# Let the last column stretch, and set the minimum size to the
|
|
||||||
# size of the icon as the default Qt font metrics approach fails
|
|
||||||
# for some fonts like the Ubuntu font.
|
|
||||||
treeHeader = self.header()
|
treeHeader = self.header()
|
||||||
treeHeader.setStretchLastSection(True)
|
treeHeader.setStretchLastSection(False)
|
||||||
treeHeader.setMinimumSectionSize(iPx + 6)
|
treeHeader.setMinimumSectionSize(iPx + cMg)
|
||||||
|
treeHeader.setSectionResizeMode(self.C_NAME, QHeaderView.Stretch)
|
||||||
|
treeHeader.setSectionResizeMode(self.C_COUNT, QHeaderView.ResizeToContents)
|
||||||
|
treeHeader.setSectionResizeMode(self.C_EXPORT, QHeaderView.Fixed)
|
||||||
|
treeHeader.setSectionResizeMode(self.C_STATUS, QHeaderView.Fixed)
|
||||||
|
treeHeader.resizeSection(self.C_EXPORT, iPx + cMg)
|
||||||
|
treeHeader.resizeSection(self.C_STATUS, iPx + cMg)
|
||||||
|
|
||||||
# Allow Move by Drag & Drop
|
# Allow Move by Drag & Drop
|
||||||
self.setDragEnabled(True)
|
self.setDragEnabled(True)
|
||||||
@@ -124,15 +120,6 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
# self.setSelectionMode(QAbstractItemView.ExtendedSelection)
|
# self.setSelectionMode(QAbstractItemView.ExtendedSelection)
|
||||||
self.setSelectionBehavior(QAbstractItemView.SelectRows)
|
self.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||||
|
|
||||||
# Get user's column width preferences for NAME and COUNT
|
|
||||||
treeColWidth = self.mainConf.getTreeColWidths()
|
|
||||||
if len(treeColWidth) <= 4:
|
|
||||||
for colN, colW in enumerate(treeColWidth):
|
|
||||||
self.setColumnWidth(colN, colW)
|
|
||||||
|
|
||||||
# The last column should just auto-scale
|
|
||||||
self.resizeColumnToContents(self.C_STATUS)
|
|
||||||
|
|
||||||
# Connect signals
|
# Connect signals
|
||||||
self.itemDoubleClicked.connect(self._treeDoubleClick)
|
self.itemDoubleClicked.connect(self._treeDoubleClick)
|
||||||
self.itemSelectionChanged.connect(self._treeSelectionChange)
|
self.itemSelectionChanged.connect(self._treeSelectionChange)
|
||||||
@@ -369,16 +356,6 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
theList = self._scanChildren(theList, theItem, 0)
|
theList = self._scanChildren(theList, theItem, 0)
|
||||||
return theList
|
return theList
|
||||||
|
|
||||||
def getColumnSizes(self):
|
|
||||||
"""Return the column widths for the tree columns.
|
|
||||||
"""
|
|
||||||
retVals = [
|
|
||||||
self.columnWidth(0),
|
|
||||||
self.columnWidth(1),
|
|
||||||
self.columnWidth(2),
|
|
||||||
]
|
|
||||||
return retVals
|
|
||||||
|
|
||||||
def emptyTrash(self):
|
def emptyTrash(self):
|
||||||
"""Permanently delete all documents in the Trash folder. This
|
"""Permanently delete all documents in the Trash folder. This
|
||||||
function only asks for confirmation once, and calls the regular
|
function only asks for confirmation once, and calls the regular
|
||||||
|
|||||||
@@ -1161,7 +1161,6 @@ class GuiMain(QMainWindow):
|
|||||||
self.mainConf.setViewPanePos(self.splitView.sizes())
|
self.mainConf.setViewPanePos(self.splitView.sizes())
|
||||||
|
|
||||||
self.mainConf.setShowRefPanel(self.viewMeta.isVisible())
|
self.mainConf.setShowRefPanel(self.viewMeta.isVisible())
|
||||||
self.mainConf.setTreeColWidths(self.treeView.getColumnSizes())
|
|
||||||
self.mainConf.setNovelColWidths(self.novelView.getColumnSizes())
|
self.mainConf.setNovelColWidths(self.novelView.getColumnSizes())
|
||||||
if not self.mainConf.isFullScreen:
|
if not self.mainConf.isFullScreen:
|
||||||
self.mainConf.setWinSize(self.width(), self.height())
|
self.mainConf.setWinSize(self.width(), self.height())
|
||||||
|
|||||||
Reference in New Issue
Block a user