mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-09-28 15:31:38 +12:00
Adds slider, and adapts title's rect to text
This commit is contained in:
parent
998c38eb2a
commit
5d69b46786
4 changed files with 52 additions and 35 deletions
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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("")
|
||||
|
|
|
@ -88,17 +88,20 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<widget class="QSlider" name="sldTxtSize">
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>20</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnSettings">
|
||||
|
|
Loading…
Reference in a new issue