aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortassaron2017-07-05 23:04:09 -0400
committertassaron2017-07-05 23:04:09 -0400
commit3de45b3629aa994e986245b6af2ef8016818a8e2 (patch)
tree8d9907d88764965f0556e90f3640f95b66924d02
parent3f7ead0d1f6be4f6b688cd05e75b69b61b15f861 (diff)
added basic rotate option to images
-rw-r--r--src/components/image.py9
-rw-r--r--src/components/image.ui51
-rw-r--r--src/toolkit.py6
3 files changed, 63 insertions, 3 deletions
diff --git a/src/components/image.py b/src/components/image.py
index 1aae51b..4ccfc80 100644
--- a/src/components/image.py
+++ b/src/components/image.py
@@ -15,13 +15,11 @@ class Component(Component):
self.parent = parent
self.settings = parent.settings
page = self.loadUi('image.ui')
- self.imagePath = ''
- self.x = 0
- self.y = 0
page.lineEdit_image.textChanged.connect(self.update)
page.pushButton_image.clicked.connect(self.pickImage)
page.spinBox_scale.valueChanged.connect(self.update)
+ page.spinBox_rotate.valueChanged.connect(self.update)
page.checkBox_stretch.stateChanged.connect(self.update)
page.spinBox_x.valueChanged.connect(self.update)
page.spinBox_y.valueChanged.connect(self.update)
@@ -32,6 +30,7 @@ class Component(Component):
def update(self):
self.imagePath = self.page.lineEdit_image.text()
self.scale = self.page.spinBox_scale.value()
+ self.rotate = self.page.spinBox_rotate.value()
self.xPosition = self.page.spinBox_x.value()
self.yPosition = self.page.spinBox_y.value()
self.stretched = self.page.checkBox_stretch.isChecked()
@@ -64,12 +63,15 @@ class Component(Component):
newWidth = int((image.width / 100) * self.scale)
image = image.resize((newWidth, newHeight), Image.ANTIALIAS)
frame.paste(image, box=(self.xPosition, self.yPosition))
+ if self.rotate != 0:
+ frame = frame.rotate(self.rotate)
return frame
def loadPreset(self, pr, presetName=None):
super().loadPreset(pr, presetName)
self.page.lineEdit_image.setText(pr['image'])
self.page.spinBox_scale.setValue(pr['scale'])
+ self.page.spinBox_rotate.setValue(pr['rotate'])
self.page.spinBox_x.setValue(pr['x'])
self.page.spinBox_y.setValue(pr['y'])
self.page.checkBox_stretch.setChecked(pr['stretched'])
@@ -79,6 +81,7 @@ class Component(Component):
'preset': self.currentPreset,
'image': self.imagePath,
'scale': self.scale,
+ 'rotate': self.rotate,
'stretched': self.stretched,
'x': self.xPosition,
'y': self.yPosition,
diff --git a/src/components/image.ui b/src/components/image.ui
index 6df03a5..33488f8 100644
--- a/src/components/image.ui
+++ b/src/components/image.ui
@@ -209,7 +209,58 @@
</spacer>
</item>
<item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Rotation</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="spinBox_rotate">
+ <property name="buttonSymbols">
+ <enum>QAbstractSpinBox::UpDownArrows</enum>
+ </property>
+ <property name="suffix">
+ <string notr="true">°</string>
+ </property>
+ <property name="minimum">
+ <number>0</number>
+ </property>
+ <property name="maximum">
+ <number>359</number>
+ </property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>10</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
<widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="text">
<string>Scale</string>
</property>
diff --git a/src/toolkit.py b/src/toolkit.py
index 798a5b5..589d8e6 100644
--- a/src/toolkit.py
+++ b/src/toolkit.py
@@ -55,6 +55,9 @@ def openPipe(commandList, **kwargs):
def disableWhenEncoding(func):
+ ''' Blocks calls to a function while the video is being exported
+ in MainWindow.
+ '''
def decorator(*args, **kwargs):
if args[0].encoding:
return
@@ -64,6 +67,9 @@ def disableWhenEncoding(func):
def LoadDefaultSettings(self):
+ ''' Runs once at each program start-up. Fills in default settings
+ for any settings not found in settings.ini
+ '''
self.resolutions = [
'1920x1080',
'1280x720',