From 223b93bf8d5ec07806b8cfcebfc2282b626efdc5 Mon Sep 17 00:00:00 2001 From: Olivier Keshavjee Date: Sun, 21 Jun 2015 10:44:11 +0200 Subject: [PATCH] Infos in tree views --- src/models/outlineModel.py | 2 + src/settings.py | 2 + src/settingsWindow.py | 27 ++++++ src/ui/settings.py | 128 +++++++++++++++++++++----- src/ui/settings.ui | 165 ++++++++++++++++++++++++++++++++-- src/ui/views/treeDelegates.py | 33 +++++++ 6 files changed, 325 insertions(+), 32 deletions(-) diff --git a/src/models/outlineModel.py b/src/models/outlineModel.py index e98fe56..1f4046a 100644 --- a/src/models/outlineModel.py +++ b/src/models/outlineModel.py @@ -465,6 +465,8 @@ class outlineItem(): if goal: self.setData(Outline.goalPercentage.value, wc / float(goal)) + else: + self.setData(Outline.goalPercentage.value, "") self.emitDataChanged() diff --git a/src/settings.py b/src/settings.py index 98fff43..0e5c300 100644 --- a/src/settings.py +++ b/src/settings.py @@ -9,6 +9,8 @@ viewSettings = { "Icon": "Nothing", "Text": "Compile", "Background": "Nothing", + "InfoFolder": "Nothing", + "InfoText": "Nothing", }, "Cork": { "Icon": "Nothing", diff --git a/src/settingsWindow.py b/src/settingsWindow.py index 008110b..eb43428 100644 --- a/src/settingsWindow.py +++ b/src/settingsWindow.py @@ -60,6 +60,18 @@ class settingsWindow(QWidget, Ui_Settings): col = self.outlineColumnsData()[chk] chk.setChecked(col in settings.outlineViewColumns) chk.stateChanged.connect(self.outlineColumnsChanged) + + for item, what, value in [ + (self.rdoTreeItemCount, "InfoFolder", "Count"), + (self.rdoTreeWC, "InfoFolder", "WC"), + (self.rdoTreeProgress, "InfoFolder", "Progress"), + (self.rdoTreeNothing, "InfoFolder", "Nothing"), + (self.rdoTreeTextWC, "InfoText", "WC"), + (self.rdoTreeTextProgress, "InfoText", "Progress"), + (self.rdoTreeTextNothing, "InfoText", "Nothing"), + ]: + item.setChecked(settings.viewSettings["Tree"][what] == value) + item.toggled.connect(self.treeViewSettignsChanged) self.populatesCmbBackgrounds(self.cmbCorkImage) self.setCorkImageDefault() @@ -187,6 +199,21 @@ class settingsWindow(QWidget, Ui_Settings): self.mw.redacEditor.outlineView.hideColumns() self.mw.treePlanOutline.hideColumns() + def treeViewSettignsChanged(self): + for item, what, value in [ + (self.rdoTreeItemCount, "InfoFolder", "Count"), + (self.rdoTreeWC, "InfoFolder", "WC"), + (self.rdoTreeProgress, "InfoFolder", "Progress"), + (self.rdoTreeNothing, "InfoFolder", "Nothing"), + (self.rdoTreeTextWC, "InfoText", "WC"), + (self.rdoTreeTextProgress, "InfoText", "Progress"), + (self.rdoTreeTextNothing, "InfoText", "Nothing"), + ]: + if item.isChecked(): + settings.viewSettings["Tree"][what] = value + + self.mw.treeRedacOutline.viewport().update() + def setCorkColor(self): color = QColor(settings.corkBackground["color"]) self.colorDialog = QColorDialog(color, self) diff --git a/src/ui/settings.py b/src/ui/settings.py index 3d29875..17e00fd 100644 --- a/src/ui/settings.py +++ b/src/ui/settings.py @@ -190,8 +190,8 @@ class Ui_Settings(object): self.tabViews.setObjectName("tabViews") self.tab = QtWidgets.QWidget() self.tab.setObjectName("tab") - self.verticalLayout = QtWidgets.QVBoxLayout(self.tab) - self.verticalLayout.setObjectName("verticalLayout") + self.verticalLayout_17 = QtWidgets.QVBoxLayout(self.tab) + self.verticalLayout_17.setObjectName("verticalLayout_17") self.groupBox_3 = QtWidgets.QGroupBox(self.tab) font = QtGui.QFont() font.setBold(True) @@ -273,9 +273,82 @@ class Ui_Settings(object): self.cmbTreeBackground.addItem("") self.cmbTreeBackground.addItem("") self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.cmbTreeBackground) - self.verticalLayout.addWidget(self.groupBox_3) + self.verticalLayout_17.addWidget(self.groupBox_3) + self.horizontalLayout_9 = QtWidgets.QHBoxLayout() + self.horizontalLayout_9.setObjectName("horizontalLayout_9") + self.groupBox_8 = QtWidgets.QGroupBox(self.tab) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.groupBox_8.setFont(font) + self.groupBox_8.setObjectName("groupBox_8") + self.verticalLayout_15 = QtWidgets.QVBoxLayout(self.groupBox_8) + self.verticalLayout_15.setObjectName("verticalLayout_15") + self.rdoTreeItemCount = QtWidgets.QRadioButton(self.groupBox_8) + font = QtGui.QFont() + font.setBold(False) + font.setWeight(50) + self.rdoTreeItemCount.setFont(font) + self.rdoTreeItemCount.setObjectName("rdoTreeItemCount") + self.verticalLayout_15.addWidget(self.rdoTreeItemCount) + self.rdoTreeWC = QtWidgets.QRadioButton(self.groupBox_8) + font = QtGui.QFont() + font.setBold(False) + font.setWeight(50) + self.rdoTreeWC.setFont(font) + self.rdoTreeWC.setObjectName("rdoTreeWC") + self.verticalLayout_15.addWidget(self.rdoTreeWC) + self.rdoTreeProgress = QtWidgets.QRadioButton(self.groupBox_8) + font = QtGui.QFont() + font.setBold(False) + font.setWeight(50) + self.rdoTreeProgress.setFont(font) + self.rdoTreeProgress.setObjectName("rdoTreeProgress") + self.verticalLayout_15.addWidget(self.rdoTreeProgress) + self.rdoTreeNothing = QtWidgets.QRadioButton(self.groupBox_8) + font = QtGui.QFont() + font.setBold(False) + font.setWeight(50) + self.rdoTreeNothing.setFont(font) + self.rdoTreeNothing.setChecked(True) + self.rdoTreeNothing.setObjectName("rdoTreeNothing") + self.verticalLayout_15.addWidget(self.rdoTreeNothing) + self.horizontalLayout_9.addWidget(self.groupBox_8) + self.groupBox_9 = QtWidgets.QGroupBox(self.tab) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.groupBox_9.setFont(font) + self.groupBox_9.setObjectName("groupBox_9") + self.verticalLayout_16 = QtWidgets.QVBoxLayout(self.groupBox_9) + self.verticalLayout_16.setObjectName("verticalLayout_16") + self.rdoTreeTextWC = QtWidgets.QRadioButton(self.groupBox_9) + font = QtGui.QFont() + font.setBold(False) + font.setWeight(50) + self.rdoTreeTextWC.setFont(font) + self.rdoTreeTextWC.setObjectName("rdoTreeTextWC") + self.verticalLayout_16.addWidget(self.rdoTreeTextWC) + self.rdoTreeTextProgress = QtWidgets.QRadioButton(self.groupBox_9) + font = QtGui.QFont() + font.setBold(False) + font.setWeight(50) + self.rdoTreeTextProgress.setFont(font) + self.rdoTreeTextProgress.setObjectName("rdoTreeTextProgress") + self.verticalLayout_16.addWidget(self.rdoTreeTextProgress) + self.rdoTreeTextNothing = QtWidgets.QRadioButton(self.groupBox_9) + font = QtGui.QFont() + font.setBold(False) + font.setWeight(50) + self.rdoTreeTextNothing.setFont(font) + self.rdoTreeTextNothing.setObjectName("rdoTreeTextNothing") + self.verticalLayout_16.addWidget(self.rdoTreeTextNothing) spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout.addItem(spacerItem3) + self.verticalLayout_16.addItem(spacerItem3) + self.horizontalLayout_9.addWidget(self.groupBox_9) + self.verticalLayout_17.addLayout(self.horizontalLayout_9) + spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_17.addItem(spacerItem4) self.tabViews.addTab(self.tab, "") self.tab_2 = QtWidgets.QWidget() self.tab_2.setObjectName("tab_2") @@ -436,8 +509,8 @@ class Ui_Settings(object): self.chkOutlineTitle.setObjectName("chkOutlineTitle") self.gridLayout.addWidget(self.chkOutlineTitle, 3, 0, 1, 1) self.verticalLayout_11.addWidget(self.groupBox_6) - spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout_11.addItem(spacerItem4) + spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_11.addItem(spacerItem5) self.tabViews.addTab(self.tab_2, "") self.tab_3 = QtWidgets.QWidget() self.tab_3.setObjectName("tab_3") @@ -587,8 +660,8 @@ class Ui_Settings(object): self.cmbCorkImage.setFont(font) self.cmbCorkImage.setObjectName("cmbCorkImage") self.verticalLayout_8.addWidget(self.cmbCorkImage) - spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout_8.addItem(spacerItem5) + spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_8.addItem(spacerItem6) self.horizontalLayout_4.addWidget(self.groupBox_7) self.tabViews.addTab(self.tab_3, "") self.verticalLayout_9.addWidget(self.tabViews) @@ -634,8 +707,8 @@ class Ui_Settings(object): self.btnLabelColor.setIconSize(QtCore.QSize(64, 64)) self.btnLabelColor.setObjectName("btnLabelColor") self.verticalLayout_2.addWidget(self.btnLabelColor) - spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout_2.addItem(spacerItem6) + spacerItem7 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_2.addItem(spacerItem7) self.horizontalLayout_2.addLayout(self.verticalLayout_2) self.verticalLayout_3.addLayout(self.horizontalLayout_2) self.horizontalLayout = QtWidgets.QHBoxLayout() @@ -652,8 +725,8 @@ class Ui_Settings(object): self.btnLabelRemove.setIcon(icon) self.btnLabelRemove.setObjectName("btnLabelRemove") self.horizontalLayout.addWidget(self.btnLabelRemove) - spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.horizontalLayout.addItem(spacerItem7) + spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem8) self.verticalLayout_3.addLayout(self.horizontalLayout) self.stack.addWidget(self.stackedWidgetPage3) self.stackedWidgetPage4 = QtWidgets.QWidget() @@ -694,8 +767,8 @@ class Ui_Settings(object): self.btnStatusRemove.setIcon(icon) self.btnStatusRemove.setObjectName("btnStatusRemove") self.horizontalLayout_3.addWidget(self.btnStatusRemove) - spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.horizontalLayout_3.addItem(spacerItem8) + spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_3.addItem(spacerItem9) self.verticalLayout_4.addLayout(self.horizontalLayout_3) self.stack.addWidget(self.stackedWidgetPage4) self.page = QtWidgets.QWidget() @@ -750,8 +823,8 @@ class Ui_Settings(object): self.btnThemeRemove.setIcon(icon) self.btnThemeRemove.setObjectName("btnThemeRemove") self.horizontalLayout_6.addWidget(self.btnThemeRemove) - spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.horizontalLayout_6.addItem(spacerItem9) + spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_6.addItem(spacerItem10) self.verticalLayout_12.addLayout(self.horizontalLayout_6) self.themeStack.addWidget(self.stackedWidgetPage1_3) self.stackedWidgetPage2_3 = QtWidgets.QWidget() @@ -794,19 +867,19 @@ class Ui_Settings(object): self.splitter.setHandleWidth(3) self.splitter.setChildrenCollapsible(False) self.splitter.setObjectName("splitter") - self.widget = QtWidgets.QWidget(self.splitter) - self.widget.setObjectName("widget") - self.verticalLayout_14 = QtWidgets.QVBoxLayout(self.widget) + self.layoutWidget = QtWidgets.QWidget(self.splitter) + self.layoutWidget.setObjectName("layoutWidget") + self.verticalLayout_14 = QtWidgets.QVBoxLayout(self.layoutWidget) self.verticalLayout_14.setContentsMargins(0, 0, 0, 0) self.verticalLayout_14.setObjectName("verticalLayout_14") - self.cmbThemeEdit = QtWidgets.QComboBox(self.widget) + self.cmbThemeEdit = QtWidgets.QComboBox(self.layoutWidget) self.cmbThemeEdit.setObjectName("cmbThemeEdit") self.cmbThemeEdit.addItem("") self.cmbThemeEdit.addItem("") self.cmbThemeEdit.addItem("") self.cmbThemeEdit.addItem("") self.verticalLayout_14.addWidget(self.cmbThemeEdit) - self.themeEditStack = QtWidgets.QStackedWidget(self.widget) + self.themeEditStack = QtWidgets.QStackedWidget(self.layoutWidget) self.themeEditStack.setObjectName("themeEditStack") self.stackedWidgetPage1_2 = QtWidgets.QWidget() self.stackedWidgetPage1_2.setObjectName("stackedWidgetPage1_2") @@ -1077,8 +1150,8 @@ class Ui_Settings(object): self.horizontalLayout_8.addWidget(self.stack) self.retranslateUi(Settings) - self.stack.setCurrentIndex(4) - self.tabViews.setCurrentIndex(2) + self.stack.setCurrentIndex(1) + self.tabViews.setCurrentIndex(0) self.themeStack.setCurrentIndex(1) self.themeEditStack.setCurrentIndex(1) self.lstMenu.currentRowChanged['int'].connect(self.stack.setCurrentIndex) @@ -1129,6 +1202,15 @@ class Ui_Settings(object): self.cmbTreeBackground.setItemText(2, _translate("Settings", "Label")) self.cmbTreeBackground.setItemText(3, _translate("Settings", "Progress")) self.cmbTreeBackground.setItemText(4, _translate("Settings", "Compile")) + self.groupBox_8.setTitle(_translate("Settings", "Folders")) + self.rdoTreeItemCount.setText(_translate("Settings", "Show item count")) + self.rdoTreeWC.setText(_translate("Settings", "Show wordcount")) + self.rdoTreeProgress.setText(_translate("Settings", "Show progress")) + self.rdoTreeNothing.setText(_translate("Settings", "Nothing")) + self.groupBox_9.setTitle(_translate("Settings", "Text")) + self.rdoTreeTextWC.setText(_translate("Settings", "Show wordcount")) + self.rdoTreeTextProgress.setText(_translate("Settings", "Show progress")) + self.rdoTreeTextNothing.setText(_translate("Settings", "Nothing")) self.tabViews.setTabText(self.tabViews.indexOf(self.tab), _translate("Settings", "Tree")) self.groupBox_4.setTitle(_translate("Settings", "Colors")) self.label_6.setText(_translate("Settings", "Icon color:")) diff --git a/src/ui/settings.ui b/src/ui/settings.ui index 117e57d..6cc0b95 100644 --- a/src/ui/settings.ui +++ b/src/ui/settings.ui @@ -46,7 +46,7 @@ - 4 + 1 @@ -361,13 +361,13 @@ text-align:center; - 2 + 0 Tree - + @@ -548,6 +548,153 @@ text-align:center; + + + + + + + 75 + true + + + + Folders + + + + + + + 50 + false + + + + Show item count + + + + + + + + 50 + false + + + + Show wordcount + + + + + + + + 50 + false + + + + Show progress + + + + + + + + 50 + false + + + + Nothing + + + true + + + + + + + + + + + 75 + true + + + + Text + + + + + + + 50 + false + + + + Show wordcount + + + + + + + + 50 + false + + + + Show progress + + + + + + + + 50 + false + + + + Nothing + + + + + + + + 50 + false + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + @@ -1508,7 +1655,7 @@ text-align:center; 1 - + 0 @@ -1583,7 +1730,7 @@ text-align:center; - + 0 @@ -1646,7 +1793,7 @@ text-align:center; false - + @@ -1677,7 +1824,7 @@ text-align:center; 1 - + QFormLayout::AllNonFixedFieldsGrow @@ -1749,7 +1896,7 @@ text-align:center; - + QFormLayout::AllNonFixedFieldsGrow @@ -2033,7 +2180,7 @@ text-align:center; - + QFormLayout::AllNonFixedFieldsGrow diff --git a/src/ui/views/treeDelegates.py b/src/ui/views/treeDelegates.py index 5fa9303..45aaf14 100644 --- a/src/ui/views/treeDelegates.py +++ b/src/ui/views/treeDelegates.py @@ -83,6 +83,39 @@ class treeTitleDelegate(QStyledItemDelegate): elidedText = fm.elidedText(opt.text, Qt.ElideRight, textRect.width()) painter.drawText(textRect, Qt.AlignLeft, elidedText) + extraText = "" + if item.isFolder() and settings.viewSettings["Tree"]["InfoFolder"] != "Nothing": + if settings.viewSettings["Tree"]["InfoFolder"] == "Count": + extraText = item.childCount() + extraText = " [{}]".format(extraText) + elif settings.viewSettings["Tree"]["InfoFolder"] == "WC": + extraText = item.data(Outline.wordCount.value) + extraText = " ({})".format(extraText) + elif settings.viewSettings["Tree"]["InfoFolder"] == "Progress": + extraText = int(toFloat(item.data(Outline.goalPercentage.value)) * 100) + if extraText: + extraText = " ({}%)".format(extraText) + + if item.isText() and settings.viewSettings["Tree"]["InfoText"] != "Nothing": + if settings.viewSettings["Tree"]["InfoText"] == "WC": + extraText = item.data(Outline.wordCount.value) + extraText = " ({})".format(extraText) + elif settings.viewSettings["Tree"]["InfoText"] == "Progress": + extraText = int(toFloat(item.data(Outline.goalPercentage.value)) * 100) + if extraText: + extraText = " ({}%)".format(extraText) + + if extraText: + + r = QRect(textRect) + r.setLeft(r.left() + fm.width(opt.text + " ")) + + painter.save() + painter.setPen(Qt.darkGray) + painter.drawText(r, Qt.AlignLeft | Qt.AlignBottom, extraText) + painter.restore() + + painter.restore() #QStyledItemDelegate.paint(self, painter, option, index) \ No newline at end of file