diff options
| author | tassaron | 2017-06-14 19:37:47 -0400 |
|---|---|---|
| committer | tassaron | 2017-06-14 19:37:47 -0400 |
| commit | 8846af57ba9635fe4a1c44778dc468f22277e538 (patch) | |
| tree | 6ea61299f57074f23dfbe2837a3f918e13f9f72f | |
| parent | 807e37bddd16cb8fa195a220d415cb4bedb1364b (diff) | |
image component stretch/scale/x/y options
| -rw-r--r-- | components/image.py | 24 | ||||
| -rw-r--r-- | components/image.ui | 68 | ||||
| -rw-r--r-- | components/video.ui | 43 | ||||
| -rw-r--r-- | core.py | 23 |
4 files changed, 139 insertions, 19 deletions
diff --git a/components/image.py b/components/image.py index cdf10c7..a2f0521 100644 --- a/components/image.py +++ b/components/image.py @@ -20,12 +20,20 @@ class Component(__base__.Component): page.lineEdit_image.textChanged.connect(self.update) page.pushButton_image.clicked.connect(self.pickImage) + page.spinBox_scale.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) self.page = page return page def update(self): self.imagePath = self.page.lineEdit_image.text() + self.scale = self.page.spinBox_scale.value() + self.xPosition = self.page.spinBox_x.value() + self.yPosition = self.page.spinBox_y.value() + self.stretched = self.page.checkBox_stretch.isChecked() self.parent.drawPreview() super().update() @@ -47,19 +55,31 @@ class Component(__base__.Component): frame = Image.new("RGBA", (width, height), (0, 0, 0, 0)) if self.imagePath and os.path.exists(self.imagePath): image = Image.open(self.imagePath) - if image.size != (width, height): + if self.stretched and image.size != (width, height): image = image.resize((width, height), Image.ANTIALIAS) - frame.paste(image) + if self.scale != 100: + newHeight = int((image.height / 100) * self.scale) + newWidth = int((image.width / 100) * self.scale) + image = image.resize((newWidth, newHeight), Image.ANTIALIAS) + frame.paste(image, box=(self.xPosition, self.yPosition)) 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_x.setValue(pr['x']) + self.page.spinBox_y.setValue(pr['y']) + self.page.checkBox_stretch.setChecked(pr['stretched']) def savePreset(self): return { 'preset': self.currentPreset, 'image': self.imagePath, + 'scale': self.scale, + 'stretched': self.stretched, + 'x': self.xPosition, + 'y': self.yPosition, } def pickImage(self): diff --git a/components/image.ui b/components/image.ui index 3cd5b1b..685e997 100644 --- a/components/image.ui +++ b/components/image.ui @@ -124,8 +124,11 @@ <height>16777215</height> </size> </property> + <property name="minimum"> + <number>-10000</number> + </property> <property name="maximum"> - <number>999999999</number> + <number>10000</number> </property> </widget> </item> @@ -163,10 +166,10 @@ </size> </property> <property name="minimum"> - <number>0</number> + <number>-1000</number> </property> <property name="maximum"> - <number>999999999</number> + <number>1000</number> </property> <property name="value"> <number>0</number> @@ -178,6 +181,65 @@ </layout> </item> <item> + <layout class="QHBoxLayout" name="horizontalLayout_9"> + <item> + <widget class="QCheckBox" name="checkBox_stretch"> + <property name="text"> + <string>Stretch</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_10"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>5</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Scale</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="spinBox_scale"> + <property name="buttonSymbols"> + <enum>QAbstractSpinBox::UpDownArrows</enum> + </property> + <property name="suffix"> + <string>%</string> + </property> + <property name="minimum"> + <number>10</number> + </property> + <property name="maximum"> + <number>200</number> + </property> + <property name="value"> + <number>100</number> + </property> + </widget> + </item> + </layout> + </item> + <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> diff --git a/components/video.ui b/components/video.ui index 6a01368..aca46b4 100644 --- a/components/video.ui +++ b/components/video.ui @@ -111,7 +111,7 @@ </widget> </item> <item> - <widget class="QSpinBox" name="spinBox_x_2"> + <widget class="QSpinBox" name="spinBox_x"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch> @@ -124,8 +124,11 @@ <height>16777215</height> </size> </property> + <property name="minimum"> + <number>-10000</number> + </property> <property name="maximum"> - <number>999999999</number> + <number>10000</number> </property> </widget> </item> @@ -163,10 +166,10 @@ </size> </property> <property name="minimum"> - <number>0</number> + <number>-10000</number> </property> <property name="maximum"> - <number>999999999</number> + <number>10000</number> </property> <property name="value"> <number>0</number> @@ -202,6 +205,35 @@ </property> </spacer> </item> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Scale</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="spinBox_scale"> + <property name="buttonSymbols"> + <enum>QAbstractSpinBox::UpDownArrows</enum> + </property> + <property name="suffix"> + <string>%</string> + </property> + <property name="minimum"> + <number>10</number> + </property> + <property name="maximum"> + <number>200</number> + </property> + <property name="value"> + <number>100</number> + </property> + </widget> + </item> </layout> </item> <item> @@ -217,6 +249,9 @@ </property> </spacer> </item> + <item> + <widget class="QWidget" name="widget" native="true"/> + </item> </layout> </widget> <resources/> @@ -124,16 +124,19 @@ class Core(): # insert component into the loader loader.insertComponent( self.moduleIndexFor(name), -1) - - if 'preset' in preset and preset['preset'] != None: - self.selectedComponents[-1].loadPreset( - preset - ) - else: - self.selectedComponents[-1].loadPreset( - preset, - preset['preset'] - ) + try: + if 'preset' in preset and preset['preset'] != None: + self.selectedComponents[-1].loadPreset( + preset + ) + else: + self.selectedComponents[-1].loadPreset( + preset, + preset['preset'] + ) + except KeyError as e: + print('%s missing value %s' % + (self.selectedComponents[-1], e)) elif errcode == 1: typ, value, _ = data |
