From 98a47a21d986ccede574baececd179be7550c9d6 Mon Sep 17 00:00:00 2001
From: tassaron
Date: Thu, 3 Aug 2017 20:43:23 -0400
Subject: save presets as floats so project resolution is not relevant
unfortunately this breaks old projects and presets
---
src/component.py | 56 ++++++++++++++++++++----
src/components/text.py | 18 ++++----
src/components/text.ui | 114 ++++++++++++++++++++++++++++++-------------------
src/core.py | 2 +-
4 files changed, 127 insertions(+), 63 deletions(-)
(limited to 'src')
diff --git a/src/component.py b/src/component.py
index ea4b5ec..5b38473 100644
--- a/src/component.py
+++ b/src/component.py
@@ -346,16 +346,29 @@ class Component(QtCore.QObject, metaclass=ComponentMetaclass):
% QColor(*val).name()
)
self._colorWidgets[attr].setStyleSheet(btnStyle)
+ elif attr in self._relativeWidgets:
+ self._relativeValues[attr] = val
+ pixelVal = self.pixelValForAttr(attr, val)
+ setWidgetValue(widget, pixelVal)
else:
setWidgetValue(widget, val)
def savePreset(self):
saveValueStore = {}
for attr, widget in self._trackedWidgets.items():
- saveValueStore[
+ presetAttrName = (
attr if attr not in self._presetNames
else self._presetNames[attr]
- ] = getattr(self, attr)
+ )
+ if attr in self._relativeWidgets:
+ try:
+ val = self._relativeValues[attr]
+ except AttributeError:
+ val = self.floatValForAttr(attr)
+ else:
+ val = getattr(self, attr)
+
+ saveValueStore[presetAttrName] = val
return saveValueStore
def commandHelp(self):
@@ -490,17 +503,42 @@ class Component(QtCore.QObject, metaclass=ComponentMetaclass):
self.unlockProperties()
self.unlockError()
+ def relativeWidgetAxis(func):
+ def relativeWidgetAxis(self, attr, *args, **kwargs):
+ if 'axis' not in kwargs:
+ axis = self.width
+ if 'height' in attr.lower() \
+ or 'ypos' in attr.lower() or attr == 'y':
+ axis = self.height
+ kwargs['axis'] = axis
+ return func(self, attr, *args, **kwargs)
+ return relativeWidgetAxis
+
+ @relativeWidgetAxis
+ def pixelValForAttr(self, attr, val=None, **kwargs):
+ if val is None:
+ val = self._relativeValues[attr]
+ return math.ceil(kwargs['axis'] * val)
+
+ @relativeWidgetAxis
+ def floatValForAttr(self, attr, val=None, **kwargs):
+ if val is None:
+ val = self._trackedWidgets[attr].value()
+ return val / kwargs['axis']
+
+ def setRelativeWidget(self, attr, floatVal):
+ '''Set a relative widget using a float'''
+ pixelVal = self.pixelValForAttr(attr, floatVal)
+ self._trackedWidgets[attr].setValue(pixelVal)
+
+
def updateRelativeWidget(self, attr):
- dimension = self.width
- if 'height' in attr.lower() \
- or 'ypos' in attr.lower() or attr == 'y':
- dimension = self.height
try:
oldUserValue = getattr(self, attr)
except AttributeError:
oldUserValue = self._trackedWidgets[attr].value()
newUserValue = self._trackedWidgets[attr].value()
- newRelativeVal = newUserValue / dimension
+ newRelativeVal = self.floatValForAttr(attr, newUserValue)
if attr in self._relativeValues:
oldRelativeVal = self._relativeValues[attr]
@@ -510,8 +548,8 @@ class Component(QtCore.QObject, metaclass=ComponentMetaclass):
# means the pixel value needs to be updated
self._trackedWidgets[attr].blockSignals(True)
self.updateRelativeWidgetMaximum(attr)
- self._trackedWidgets[attr].setValue(
- math.ceil(dimension * oldRelativeVal))
+ pixelVal = self.pixelValForAttr(attr, oldRelativeVal)
+ self._trackedWidgets[attr].setValue(pixelVal)
self._trackedWidgets[attr].blockSignals(False)
if attr not in self._relativeValues \
diff --git a/src/components/text.py b/src/components/text.py
index b7c244e..c3f3bdc 100644
--- a/src/components/text.py
+++ b/src/components/text.py
@@ -9,7 +9,7 @@ from toolkit.frame import FramePainter
class Component(Component):
name = 'Title Text'
- version = '1.0.0'
+ version = '1.0.1'
def __init__(self, *args):
super().__init__(*args)
@@ -25,20 +25,17 @@ class Component(Component):
self.page.comboBox_textAlign.addItem("Left")
self.page.comboBox_textAlign.addItem("Middle")
self.page.comboBox_textAlign.addItem("Right")
+ self.page.comboBox_textAlign.setCurrentIndex(int(self.alignment))
self.page.lineEdit_textColor.setText('%s,%s,%s' % self.textColor)
- self.page.lineEdit_title.setText(self.title)
- self.page.comboBox_textAlign.setCurrentIndex(int(self.alignment))
self.page.spinBox_fontSize.setValue(int(self.fontSize))
+ self.page.lineEdit_title.setText(self.title)
- fm = QtGui.QFontMetrics(self.titleFont)
- self.page.spinBox_xTextAlign.setValue(
- self.width / 2 - fm.width(self.title)/2)
- self.page.spinBox_yTextAlign.setValue(self.height / 2 * 1.036)
-
+ self.page.pushButton_center.clicked.connect(self.centerXY)
self.page.fontComboBox_titleFont.currentFontChanged.connect(
self.update
)
+
self.trackWidgets({
'textColor': self.page.lineEdit_textColor,
'title': self.page.lineEdit_title,
@@ -51,11 +48,16 @@ class Component(Component):
}, relativeWidgets=[
'xPosition', 'yPosition', 'fontSize',
])
+ self.centerXY()
def update(self):
self.titleFont = self.page.fontComboBox_titleFont.currentFont()
super().update()
+ def centerXY(self):
+ self.setRelativeWidget('xPosition', 0.5)
+ self.setRelativeWidget('yPosition', 0.5)
+
def getXY(self):
'''Returns true x, y after considering alignment settings'''
fm = QtGui.QFontMetrics(self.titleFont)
diff --git a/src/components/text.ui b/src/components/text.ui
index bb5e5af..f76979c 100644
--- a/src/components/text.ui
+++ b/src/components/text.ui
@@ -19,6 +19,36 @@
4
+ -
+
+
-
+
+
+ Title
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+ Testing New GUI
+
+
+
+
+
-
-
@@ -93,38 +123,6 @@
-
-
-
-
-
-
- 0
- 0
-
-
-
- Text Layout
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 5
- 20
-
-
-
-
-
@@ -132,6 +130,9 @@
+ -
+
+
-
@@ -152,7 +153,17 @@
-
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
@@ -162,28 +173,41 @@
0
-
-
+
+
+
+ 0
+ 0
+
+
- Title
+ Text Layout
-
-
-
-
- 0
- 0
-
+
+
+ -
+
+
+ Qt::Horizontal
-
+
+ QSizePolicy::Fixed
+
+
- 0
- 0
+ 5
+ 20
+
+
+ -
+
- Testing New GUI
+ Center
diff --git a/src/core.py b/src/core.py
index afb1e45..61905eb 100644
--- a/src/core.py
+++ b/src/core.py
@@ -161,7 +161,7 @@ class Core:
for widget, value in data['WindowFields']:
widget = eval('loader.window.%s' % widget)
widget.blockSignals(True)
- widget.setText(value)
+ toolkit.setWidgetValue(widget, value)
widget.blockSignals(False)
for key, value in data['Settings']:
--
cgit v1.2.3