fixed relative image scale bug & Life preset bug
dicts must be alphabetized in AV files
This commit is contained in:
parent
c5a0c9b364
commit
bdb006f25d
2
setup.py
2
setup.py
|
@ -2,7 +2,7 @@ from setuptools import setup
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
__version__ = '2.0.0.rc3'
|
__version__ = '2.0.0.rc4'
|
||||||
|
|
||||||
|
|
||||||
def package_files(directory):
|
def package_files(directory):
|
||||||
|
|
|
@ -8,7 +8,7 @@ from toolkit.frame import BlankFrame
|
||||||
|
|
||||||
class Component(Component):
|
class Component(Component):
|
||||||
name = 'Image'
|
name = 'Image'
|
||||||
version = '1.0.0'
|
version = '1.0.1'
|
||||||
|
|
||||||
def widget(self, *args):
|
def widget(self, *args):
|
||||||
super().widget(*args)
|
super().widget(*args)
|
||||||
|
@ -16,6 +16,7 @@ class Component(Component):
|
||||||
self.trackWidgets({
|
self.trackWidgets({
|
||||||
'imagePath': self.page.lineEdit_image,
|
'imagePath': self.page.lineEdit_image,
|
||||||
'scale': self.page.spinBox_scale,
|
'scale': self.page.spinBox_scale,
|
||||||
|
'stretchScale': self.page.spinBox_scale_stretch,
|
||||||
'rotate': self.page.spinBox_rotate,
|
'rotate': self.page.spinBox_rotate,
|
||||||
'color': self.page.spinBox_color,
|
'color': self.page.spinBox_color,
|
||||||
'xPosition': self.page.spinBox_x,
|
'xPosition': self.page.spinBox_x,
|
||||||
|
@ -51,6 +52,7 @@ class Component(Component):
|
||||||
def drawFrame(self, width, height):
|
def drawFrame(self, width, height):
|
||||||
frame = BlankFrame(width, height)
|
frame = BlankFrame(width, height)
|
||||||
if self.imagePath and os.path.exists(self.imagePath):
|
if self.imagePath and os.path.exists(self.imagePath):
|
||||||
|
scale = self.scale if not self.stretched else self.stretchScale
|
||||||
image = Image.open(self.imagePath)
|
image = Image.open(self.imagePath)
|
||||||
|
|
||||||
# Modify image's appearance
|
# Modify image's appearance
|
||||||
|
@ -62,9 +64,9 @@ class Component(Component):
|
||||||
image = image.transpose(Image.FLIP_LEFT_RIGHT)
|
image = image.transpose(Image.FLIP_LEFT_RIGHT)
|
||||||
if self.stretched and image.size != (width, height):
|
if self.stretched and image.size != (width, height):
|
||||||
image = image.resize((width, height), Image.ANTIALIAS)
|
image = image.resize((width, height), Image.ANTIALIAS)
|
||||||
if self.scale != 100:
|
if scale != 100:
|
||||||
newHeight = int((image.height / 100) * self.scale)
|
newHeight = int((image.height / 100) * scale)
|
||||||
newWidth = int((image.width / 100) * self.scale)
|
newWidth = int((image.width / 100) * scale)
|
||||||
image = image.resize((newWidth, newHeight), Image.ANTIALIAS)
|
image = image.resize((newWidth, newHeight), Image.ANTIALIAS)
|
||||||
|
|
||||||
# Paste image at correct position
|
# Paste image at correct position
|
||||||
|
@ -100,3 +102,25 @@ class Component(Component):
|
||||||
|
|
||||||
def commandHelp(self):
|
def commandHelp(self):
|
||||||
print('Load an image:\n path=/filepath/to/image.png')
|
print('Load an image:\n path=/filepath/to/image.png')
|
||||||
|
|
||||||
|
def savePreset(self):
|
||||||
|
# Maintain the illusion that the scale spinbox is one widget
|
||||||
|
scaleBox = self.page.spinBox_scale
|
||||||
|
stretchScaleBox = self.page.spinBox_scale_stretch
|
||||||
|
if self.page.checkBox_stretch.isChecked():
|
||||||
|
scaleBox.setValue(stretchScaleBox.value())
|
||||||
|
else:
|
||||||
|
stretchScaleBox.setValue(scaleBox.value())
|
||||||
|
return super().savePreset()
|
||||||
|
|
||||||
|
def update(self):
|
||||||
|
# Maintain the illusion that the scale spinbox is one widget
|
||||||
|
scaleBox = self.page.spinBox_scale
|
||||||
|
stretchScaleBox = self.page.spinBox_scale_stretch
|
||||||
|
if self.page.checkBox_stretch.isChecked():
|
||||||
|
scaleBox.setVisible(False)
|
||||||
|
stretchScaleBox.setVisible(True)
|
||||||
|
else:
|
||||||
|
scaleBox.setVisible(True)
|
||||||
|
stretchScaleBox.setVisible(False)
|
||||||
|
super().update()
|
||||||
|
|
|
@ -293,6 +293,22 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="spinBox_scale_stretch">
|
||||||
|
<property name="suffix">
|
||||||
|
<string>%</string>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>10</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>400</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>100</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
|
|
@ -4,12 +4,13 @@ import os
|
||||||
import math
|
import math
|
||||||
|
|
||||||
from component import Component
|
from component import Component
|
||||||
|
from toolkit import alphabetizeDict
|
||||||
from toolkit.frame import BlankFrame, scale
|
from toolkit.frame import BlankFrame, scale
|
||||||
|
|
||||||
|
|
||||||
class Component(Component):
|
class Component(Component):
|
||||||
name = 'Conway\'s Game of Life'
|
name = 'Conway\'s Game of Life'
|
||||||
version = '1.0.0a'
|
version = '1.0.0'
|
||||||
|
|
||||||
def widget(self, *args):
|
def widget(self, *args):
|
||||||
super().widget(*args)
|
super().widget(*args)
|
||||||
|
@ -329,12 +330,12 @@ class Component(Component):
|
||||||
|
|
||||||
def savePreset(self):
|
def savePreset(self):
|
||||||
pr = super().savePreset()
|
pr = super().savePreset()
|
||||||
pr['GRID'] = self.startingGrid
|
pr['GRID'] = alphabetizeDict(self.startingGrid)
|
||||||
return pr
|
return pr
|
||||||
|
|
||||||
def loadPreset(self, pr, *args):
|
def loadPreset(self, pr, *args):
|
||||||
super().loadPreset(pr, *args)
|
super().loadPreset(pr, *args)
|
||||||
self.startingGrid = pr['GRID']
|
self.startingGrid = dict(pr['GRID'])
|
||||||
|
|
||||||
|
|
||||||
def nearbyCoords(x, y):
|
def nearbyCoords(x, y):
|
||||||
|
|
Reference in New Issue