mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-06-30 12:10:19 +12:00
Adds slider, and adapts title's rect to text
This commit is contained in:
parent
998c38eb2a
commit
5d69b46786
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
# Form implementation generated from reading ui file 'manuskript/ui/mainWindow.ui'
|
# 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!
|
# 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 = QtWidgets.QWidget(MainWindow)
|
||||||
self.centralwidget.setObjectName("centralwidget")
|
self.centralwidget.setObjectName("centralwidget")
|
||||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.centralwidget)
|
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.centralwidget)
|
||||||
self.horizontalLayout_2.setContentsMargins(0, 6, 0, 0)
|
|
||||||
self.horizontalLayout_2.setSpacing(0)
|
self.horizontalLayout_2.setSpacing(0)
|
||||||
|
self.horizontalLayout_2.setContentsMargins(0, 6, 0, 0)
|
||||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||||
self.stack = QtWidgets.QStackedWidget(self.centralwidget)
|
self.stack = QtWidgets.QStackedWidget(self.centralwidget)
|
||||||
self.stack.setObjectName("stack")
|
self.stack.setObjectName("stack")
|
||||||
|
@ -808,6 +809,7 @@ class Ui_MainWindow(object):
|
||||||
self.layoutWidget = QtWidgets.QWidget(self.splitterOutlineH)
|
self.layoutWidget = QtWidgets.QWidget(self.splitterOutlineH)
|
||||||
self.layoutWidget.setObjectName("layoutWidget")
|
self.layoutWidget.setObjectName("layoutWidget")
|
||||||
self.verticalLayout_14 = QtWidgets.QVBoxLayout(self.layoutWidget)
|
self.verticalLayout_14 = QtWidgets.QVBoxLayout(self.layoutWidget)
|
||||||
|
self.verticalLayout_14.setContentsMargins(0, 0, 0, 0)
|
||||||
self.verticalLayout_14.setObjectName("verticalLayout_14")
|
self.verticalLayout_14.setObjectName("verticalLayout_14")
|
||||||
self.splitterOutlineV = QtWidgets.QSplitter(self.layoutWidget)
|
self.splitterOutlineV = QtWidgets.QSplitter(self.layoutWidget)
|
||||||
self.splitterOutlineV.setOrientation(QtCore.Qt.Vertical)
|
self.splitterOutlineV.setOrientation(QtCore.Qt.Vertical)
|
||||||
|
@ -1299,18 +1301,18 @@ class Ui_MainWindow(object):
|
||||||
self.actCompile.setShortcut(_translate("MainWindow", "F6"))
|
self.actCompile.setShortcut(_translate("MainWindow", "F6"))
|
||||||
self.actToolFrequency.setText(_translate("MainWindow", "&Frequency Analyzer"))
|
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.plotTreeView import plotTreeView
|
||||||
from manuskript.ui.views.storylineView import storylineView
|
from manuskript.ui.views.storylineView import storylineView
|
||||||
from manuskript.ui.views.textEditCompleter import textEditCompleter
|
from manuskript.ui.views.basicItemView import basicItemView
|
||||||
from manuskript.ui.views.textEditView import textEditView
|
|
||||||
from manuskript.ui.views.treeView import treeView
|
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.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
|
#!/usr/bin/env python
|
||||||
# --!-- coding: utf8 --!--
|
# --!-- coding: utf8 --!--
|
||||||
from PyQt5.QtCore import Qt, QTimer
|
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, \
|
from PyQt5.QtWidgets import QWidget, QGraphicsScene, QGraphicsSimpleTextItem, QMenu, QAction, QGraphicsRectItem, \
|
||||||
QGraphicsLineItem
|
QGraphicsLineItem
|
||||||
|
|
||||||
|
@ -14,7 +14,6 @@ class storylineView(QWidget, Ui_storylineView):
|
||||||
QWidget.__init__(self, parent)
|
QWidget.__init__(self, parent)
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
self._mdlPlots = None
|
self._mdlPlots = None
|
||||||
self.btnRefresh.clicked.connect(self.refresh)
|
|
||||||
self.scene = QGraphicsScene()
|
self.scene = QGraphicsScene()
|
||||||
self.view.setScene(self.scene)
|
self.view.setScene(self.scene)
|
||||||
|
|
||||||
|
@ -23,6 +22,9 @@ class storylineView(QWidget, Ui_storylineView):
|
||||||
self.reloadTimer.setSingleShot(True)
|
self.reloadTimer.setSingleShot(True)
|
||||||
self.reloadTimer.setInterval(500)
|
self.reloadTimer.setInterval(500)
|
||||||
|
|
||||||
|
self.btnRefresh.clicked.connect(self.refresh)
|
||||||
|
self.sldTxtSize.sliderMoved.connect(self.reloadTimer.start)
|
||||||
|
|
||||||
self.generateMenu()
|
self.generateMenu()
|
||||||
|
|
||||||
def generateMenu(self):
|
def generateMenu(self):
|
||||||
|
@ -58,14 +60,13 @@ class storylineView(QWidget, Ui_storylineView):
|
||||||
|
|
||||||
LINE_HEIGHT = 32
|
LINE_HEIGHT = 32
|
||||||
SPACING = 6
|
SPACING = 6
|
||||||
RECT_WIDTH = 200
|
TEXT_WIDTH = self.sldTxtSize.value()
|
||||||
TEXT_WIDTH = 25
|
|
||||||
LEVEL_HEIGHT = 12
|
LEVEL_HEIGHT = 12
|
||||||
|
|
||||||
s = self.scene
|
s = self.scene
|
||||||
s.clear()
|
s.clear()
|
||||||
|
|
||||||
# Get Max Level
|
# Get Max Level (max depth)
|
||||||
root = self._mdlOutline.rootItem
|
root = self._mdlOutline.rootItem
|
||||||
def maxLevel(item, level=0, max=0):
|
def maxLevel(item, level=0, max=0):
|
||||||
if level > max:
|
if level > max:
|
||||||
|
@ -81,18 +82,23 @@ class storylineView(QWidget, Ui_storylineView):
|
||||||
# Get plots
|
# Get plots
|
||||||
plotsID = self._mdlPlots.getPlotsByImportance()
|
plotsID = self._mdlPlots.getPlotsByImportance()
|
||||||
plots = []
|
plots = []
|
||||||
|
fm = QFontMetrics(s.font())
|
||||||
|
max_name = 0
|
||||||
|
|
||||||
for importance in plotsID:
|
for importance in plotsID:
|
||||||
for ID in importance:
|
for ID in importance:
|
||||||
name = self._mdlPlots.getPlotNameByID(ID)
|
name = self._mdlPlots.getPlotNameByID(ID)
|
||||||
plots.append((ID, name))
|
plots.append((ID, name))
|
||||||
|
max_name = max(fm.width(name), max_name)
|
||||||
|
|
||||||
ROWS_HEIGHT = len(plots) * (LINE_HEIGHT + SPACING )
|
ROWS_HEIGHT = len(plots) * (LINE_HEIGHT + SPACING )
|
||||||
|
TITLE_WIDTH = max_name + 2 * SPACING
|
||||||
|
|
||||||
|
|
||||||
# Add Folders and Texts
|
# Add Folders and Texts
|
||||||
outline = OutlineRect(0, 0, 0, ROWS_HEIGHT + SPACING + MAX_LEVEL * LEVEL_HEIGHT)
|
outline = OutlineRect(0, 0, 0, ROWS_HEIGHT + SPACING + MAX_LEVEL * LEVEL_HEIGHT)
|
||||||
s.addItem(outline)
|
s.addItem(outline)
|
||||||
outline.setPos(RECT_WIDTH + SPACING, 0)
|
outline.setPos(TITLE_WIDTH + SPACING, 0)
|
||||||
|
|
||||||
# A Function to add a rect with centered text
|
# A Function to add a rect with centered text
|
||||||
def addRectText(x, w, parent, text="", level=0, tooltip=""):
|
def addRectText(x, w, parent, text="", level=0, tooltip=""):
|
||||||
|
@ -114,7 +120,7 @@ class storylineView(QWidget, Ui_storylineView):
|
||||||
r = 0
|
r = 0
|
||||||
for c in item.children():
|
for c in item.children():
|
||||||
r += itemWidth(c)
|
r += itemWidth(c)
|
||||||
return r
|
return r or TEXT_WIDTH
|
||||||
else:
|
else:
|
||||||
return TEXT_WIDTH
|
return TEXT_WIDTH
|
||||||
|
|
||||||
|
@ -142,7 +148,7 @@ class storylineView(QWidget, Ui_storylineView):
|
||||||
color = randomColor()
|
color = randomColor()
|
||||||
|
|
||||||
# Rect
|
# 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.setPen(QPen(Qt.NoPen))
|
||||||
r.setBrush(QBrush(color))
|
r.setBrush(QBrush(color))
|
||||||
r.setPos(0, i * LINE_HEIGHT + i * SPACING)
|
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())
|
txt.setPos(r.boundingRect().center() - txt.boundingRect().center())
|
||||||
|
|
||||||
# Line
|
# Line
|
||||||
line = PlotLine(RECT_WIDTH,
|
line = PlotLine(TITLE_WIDTH,
|
||||||
r.mapToScene(r.rect().center()).y(),
|
r.mapToScene(r.rect().center()).y(),
|
||||||
OUTLINE_WIDTH + RECT_WIDTH + SPACING,
|
OUTLINE_WIDTH + TITLE_WIDTH + SPACING,
|
||||||
r.mapToScene(r.rect().center()).y())
|
r.mapToScene(r.rect().center()).y())
|
||||||
s.addItem(line)
|
s.addItem(line)
|
||||||
line.setPen(QPen(color, 5))
|
line.setPen(QPen(color, 5))
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
# Form implementation generated from reading ui file 'manuskript/ui/views/storylineView_ui.ui'
|
# 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!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
|
||||||
|
@ -13,8 +14,8 @@ class Ui_storylineView(object):
|
||||||
storylineView.setObjectName("storylineView")
|
storylineView.setObjectName("storylineView")
|
||||||
storylineView.resize(1040, 130)
|
storylineView.resize(1040, 130)
|
||||||
self.horizontalLayout = QtWidgets.QHBoxLayout(storylineView)
|
self.horizontalLayout = QtWidgets.QHBoxLayout(storylineView)
|
||||||
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
|
|
||||||
self.horizontalLayout.setSpacing(0)
|
self.horizontalLayout.setSpacing(0)
|
||||||
|
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
|
||||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||||
self.verticalLayout = QtWidgets.QVBoxLayout()
|
self.verticalLayout = QtWidgets.QVBoxLayout()
|
||||||
self.verticalLayout.setSpacing(0)
|
self.verticalLayout.setSpacing(0)
|
||||||
|
@ -37,8 +38,13 @@ class Ui_storylineView(object):
|
||||||
self.btnRefresh.setFlat(True)
|
self.btnRefresh.setFlat(True)
|
||||||
self.btnRefresh.setObjectName("btnRefresh")
|
self.btnRefresh.setObjectName("btnRefresh")
|
||||||
self.verticalLayout.addWidget(self.btnRefresh)
|
self.verticalLayout.addWidget(self.btnRefresh)
|
||||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
self.sldTxtSize = QtWidgets.QSlider(storylineView)
|
||||||
self.verticalLayout.addItem(spacerItem)
|
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 = QtWidgets.QPushButton(storylineView)
|
||||||
self.btnSettings.setMaximumSize(QtCore.QSize(32, 32))
|
self.btnSettings.setMaximumSize(QtCore.QSize(32, 32))
|
||||||
self.btnSettings.setText("")
|
self.btnSettings.setText("")
|
||||||
|
|
|
@ -88,17 +88,20 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<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">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
</widget>
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="btnSettings">
|
<widget class="QPushButton" name="btnSettings">
|
||||||
|
|
Loading…
Reference in a new issue