diff --git a/manuskript/ui/mainWindow.py b/manuskript/ui/mainWindow.py index dba45bcf..dbcda034 100644 --- a/manuskript/ui/mainWindow.py +++ b/manuskript/ui/mainWindow.py @@ -2,7 +2,8 @@ # Form implementation generated from reading ui file 'manuskript/ui/mainWindow.ui' # -# Created by: PyQt5 UI code generator 5.4.2 +# Created: Sun Feb 28 09:13:29 2016 +# by: PyQt5 UI code generator 5.2.1 # # WARNING! All changes made in this file will be lost! @@ -16,8 +17,8 @@ class Ui_MainWindow(object): self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.centralwidget) - self.horizontalLayout_2.setContentsMargins(0, 6, 0, 0) self.horizontalLayout_2.setSpacing(0) + self.horizontalLayout_2.setContentsMargins(0, 6, 0, 0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.stack = QtWidgets.QStackedWidget(self.centralwidget) self.stack.setObjectName("stack") @@ -808,6 +809,7 @@ class Ui_MainWindow(object): self.layoutWidget = QtWidgets.QWidget(self.splitterOutlineH) 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.splitterOutlineV = QtWidgets.QSplitter(self.layoutWidget) self.splitterOutlineV.setOrientation(QtCore.Qt.Vertical) @@ -1299,18 +1301,18 @@ class Ui_MainWindow(object): self.actCompile.setShortcut(_translate("MainWindow", "F6")) self.actToolFrequency.setText(_translate("MainWindow", "&Frequency Analyzer")) -from manuskript.ui.cheatSheet import cheatSheet -from manuskript.ui.editors.mainEditor import mainEditor -from manuskript.ui.search import search -from manuskript.ui.sldImportance import sldImportance -from manuskript.ui.views.basicItemView import basicItemView -from manuskript.ui.views.lineEditView import lineEditView -from manuskript.ui.views.metadataView import metadataView -from manuskript.ui.views.outlineView import outlineView -from manuskript.ui.views.persoTreeView import persoTreeView from manuskript.ui.views.plotTreeView import plotTreeView from manuskript.ui.views.storylineView import storylineView -from manuskript.ui.views.textEditCompleter import textEditCompleter -from manuskript.ui.views.textEditView import textEditView +from manuskript.ui.views.basicItemView import basicItemView from manuskript.ui.views.treeView import treeView +from manuskript.ui.views.outlineView import outlineView +from manuskript.ui.search import search +from manuskript.ui.sldImportance import sldImportance +from manuskript.ui.views.textEditCompleter import textEditCompleter +from manuskript.ui.views.metadataView import metadataView +from manuskript.ui.views.persoTreeView import persoTreeView +from manuskript.ui.cheatSheet import cheatSheet from manuskript.ui.welcome import welcome +from manuskript.ui.editors.mainEditor import mainEditor +from manuskript.ui.views.lineEditView import lineEditView +from manuskript.ui.views.textEditView import textEditView diff --git a/manuskript/ui/views/storylineView.py b/manuskript/ui/views/storylineView.py index 67088684..058be9db 100644 --- a/manuskript/ui/views/storylineView.py +++ b/manuskript/ui/views/storylineView.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # --!-- coding: utf8 --!-- from PyQt5.QtCore import Qt, QTimer -from PyQt5.QtGui import QBrush, QPen +from PyQt5.QtGui import QBrush, QPen, QFontMetrics from PyQt5.QtWidgets import QWidget, QGraphicsScene, QGraphicsSimpleTextItem, QMenu, QAction, QGraphicsRectItem, \ QGraphicsLineItem @@ -14,7 +14,6 @@ class storylineView(QWidget, Ui_storylineView): QWidget.__init__(self, parent) self.setupUi(self) self._mdlPlots = None - self.btnRefresh.clicked.connect(self.refresh) self.scene = QGraphicsScene() self.view.setScene(self.scene) @@ -23,6 +22,9 @@ class storylineView(QWidget, Ui_storylineView): self.reloadTimer.setSingleShot(True) self.reloadTimer.setInterval(500) + self.btnRefresh.clicked.connect(self.refresh) + self.sldTxtSize.sliderMoved.connect(self.reloadTimer.start) + self.generateMenu() def generateMenu(self): @@ -58,14 +60,13 @@ class storylineView(QWidget, Ui_storylineView): LINE_HEIGHT = 32 SPACING = 6 - RECT_WIDTH = 200 - TEXT_WIDTH = 25 + TEXT_WIDTH = self.sldTxtSize.value() LEVEL_HEIGHT = 12 s = self.scene s.clear() - # Get Max Level + # Get Max Level (max depth) root = self._mdlOutline.rootItem def maxLevel(item, level=0, max=0): if level > max: @@ -81,18 +82,23 @@ class storylineView(QWidget, Ui_storylineView): # Get plots plotsID = self._mdlPlots.getPlotsByImportance() plots = [] + fm = QFontMetrics(s.font()) + max_name = 0 + for importance in plotsID: for ID in importance: name = self._mdlPlots.getPlotNameByID(ID) plots.append((ID, name)) + max_name = max(fm.width(name), max_name) ROWS_HEIGHT = len(plots) * (LINE_HEIGHT + SPACING ) + TITLE_WIDTH = max_name + 2 * SPACING # Add Folders and Texts outline = OutlineRect(0, 0, 0, ROWS_HEIGHT + SPACING + MAX_LEVEL * LEVEL_HEIGHT) s.addItem(outline) - outline.setPos(RECT_WIDTH + SPACING, 0) + outline.setPos(TITLE_WIDTH + SPACING, 0) # A Function to add a rect with centered text def addRectText(x, w, parent, text="", level=0, tooltip=""): @@ -114,7 +120,7 @@ class storylineView(QWidget, Ui_storylineView): r = 0 for c in item.children(): r += itemWidth(c) - return r + return r or TEXT_WIDTH else: return TEXT_WIDTH @@ -142,7 +148,7 @@ class storylineView(QWidget, Ui_storylineView): color = randomColor() # Rect - r = QGraphicsRectItem(0, 0, RECT_WIDTH, LINE_HEIGHT, itemsRect) + r = QGraphicsRectItem(0, 0, TITLE_WIDTH, LINE_HEIGHT, itemsRect) r.setPen(QPen(Qt.NoPen)) r.setBrush(QBrush(color)) r.setPos(0, i * LINE_HEIGHT + i * SPACING) @@ -153,9 +159,9 @@ class storylineView(QWidget, Ui_storylineView): txt.setPos(r.boundingRect().center() - txt.boundingRect().center()) # Line - line = PlotLine(RECT_WIDTH, + line = PlotLine(TITLE_WIDTH, r.mapToScene(r.rect().center()).y(), - OUTLINE_WIDTH + RECT_WIDTH + SPACING, + OUTLINE_WIDTH + TITLE_WIDTH + SPACING, r.mapToScene(r.rect().center()).y()) s.addItem(line) line.setPen(QPen(color, 5)) diff --git a/manuskript/ui/views/storylineView_ui.py b/manuskript/ui/views/storylineView_ui.py index c9413c2b..9f886ffd 100644 --- a/manuskript/ui/views/storylineView_ui.py +++ b/manuskript/ui/views/storylineView_ui.py @@ -2,7 +2,8 @@ # Form implementation generated from reading ui file 'manuskript/ui/views/storylineView_ui.ui' # -# Created by: PyQt5 UI code generator 5.4.2 +# Created: Sun Feb 28 09:13:29 2016 +# by: PyQt5 UI code generator 5.2.1 # # WARNING! All changes made in this file will be lost! @@ -13,8 +14,8 @@ class Ui_storylineView(object): storylineView.setObjectName("storylineView") storylineView.resize(1040, 130) self.horizontalLayout = QtWidgets.QHBoxLayout(storylineView) - self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.horizontalLayout.setSpacing(0) + self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.horizontalLayout.setObjectName("horizontalLayout") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setSpacing(0) @@ -37,8 +38,13 @@ class Ui_storylineView(object): self.btnRefresh.setFlat(True) self.btnRefresh.setObjectName("btnRefresh") self.verticalLayout.addWidget(self.btnRefresh) - spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout.addItem(spacerItem) + self.sldTxtSize = QtWidgets.QSlider(storylineView) + self.sldTxtSize.setMinimum(1) + self.sldTxtSize.setMaximum(100) + self.sldTxtSize.setProperty("value", 20) + self.sldTxtSize.setOrientation(QtCore.Qt.Vertical) + self.sldTxtSize.setObjectName("sldTxtSize") + self.verticalLayout.addWidget(self.sldTxtSize) self.btnSettings = QtWidgets.QPushButton(storylineView) self.btnSettings.setMaximumSize(QtCore.QSize(32, 32)) self.btnSettings.setText("") diff --git a/manuskript/ui/views/storylineView_ui.ui b/manuskript/ui/views/storylineView_ui.ui index 71741da9..069de66e 100644 --- a/manuskript/ui/views/storylineView_ui.ui +++ b/manuskript/ui/views/storylineView_ui.ui @@ -88,17 +88,20 @@ - + + + 1 + + + 100 + + + 20 + Qt::Vertical - - - 20 - 40 - - - +