aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/life.py56
-rw-r--r--src/components/life.ui49
2 files changed, 103 insertions, 2 deletions
diff --git a/src/components/life.py b/src/components/life.py
index 147d4d5..9254126 100644
--- a/src/components/life.py
+++ b/src/components/life.py
@@ -25,10 +25,24 @@ class Component(Component):
'shapeType': self.page.comboBox_shapeType,
'shadow': self.page.checkBox_shadow,
'customImg': self.page.checkBox_customImg,
+ 'showGrid': self.page.checkBox_showGrid,
'image': self.page.lineEdit_image,
}, colorWidgets={
'color': self.page.pushButton_color,
})
+ self.shiftButtons = (
+ self.page.toolButton_up,
+ self.page.toolButton_down,
+ self.page.toolButton_left,
+ self.page.toolButton_right,
+ )
+ def shiftFunc(i):
+ def shift():
+ self.shiftGrid(i)
+ return shift
+ shiftFuncs = [shiftFunc(i) for i in range(len(self.shiftButtons))]
+ for i, widget in enumerate(self.shiftButtons):
+ widget.clicked.connect(shiftFuncs[i])
self.page.spinBox_scale.setValue(self.scale)
self.page.spinBox_scale.valueChanged.connect(self.updateGridSize)
@@ -42,6 +56,24 @@ class Component(Component):
self.page.lineEdit_image.setText(filename)
self.update()
+ def shiftGrid(self, d):
+ def newGrid(Xchange, Ychange):
+ return {
+ (x + Xchange, y + Ychange): True
+ for x, y in self.startingGrid
+ }
+
+ if d == 0:
+ newGrid = newGrid(0, -1)
+ elif d == 1:
+ newGrid = newGrid(0, 1)
+ elif d == 2:
+ newGrid = newGrid(-1, 0)
+ elif d == 3:
+ newGrid = newGrid(1, 0)
+ self.startingGrid = newGrid
+ self.sendUpdateSignal()
+
def update(self):
self.updateGridSize()
if self.page.checkBox_customImg.isChecked():
@@ -62,6 +94,9 @@ class Component(Component):
self.page.label_image.setVisible(False)
self.page.lineEdit_image.setVisible(False)
self.page.pushButton_pickImage.setVisible(False)
+ enabled = (len(self.startingGrid) > 0)
+ for widget in self.shiftButtons:
+ widget.setEnabled(enabled)
super().update()
def previewClickEvent(self, pos, size, button):
@@ -298,6 +333,22 @@ class Component(Component):
shadImg = ImageChops.offset(shadImg, -2, 2)
shadImg.paste(frame, box=(0, 0), mask=frame)
frame = shadImg
+ if self.showGrid:
+ drawer = ImageDraw.Draw(frame)
+ w, h = scale(0.05, self.width, self.height, int)
+ for x in range(self.pxWidth, self.width, self.pxWidth):
+ drawer.rectangle(
+ ((x, 0),
+ (x + w, self.height)),
+ fill=self.color,
+ )
+ for y in range(self.pxHeight, self.height, self.pxHeight):
+ drawer.rectangle(
+ ((0, y),
+ (self.width, y + h)),
+ fill=self.color,
+ )
+
return frame
def gridForTick(self, tick):
@@ -334,8 +385,11 @@ class Component(Component):
return pr
def loadPreset(self, pr, *args):
- super().loadPreset(pr, *args)
self.startingGrid = dict(pr['GRID'])
+ if self.startingGrid:
+ for widget in self.shiftButtons:
+ widget.setEnabled(True)
+ super().loadPreset(pr, *args)
def nearbyCoords(x, y):
diff --git a/src/components/life.ui b/src/components/life.ui
index 3b393dd..85b2926 100644
--- a/src/components/life.ui
+++ b/src/components/life.ui
@@ -83,7 +83,7 @@
<item>
<widget class="QSpinBox" name="spinBox_scale">
<property name="minimum">
- <number>24</number>
+ <number>22</number>
</property>
<property name="maximum">
<number>128</number>
@@ -280,6 +280,13 @@
</widget>
</item>
<item>
+ <widget class="QCheckBox" name="checkBox_showGrid">
+ <property name="text">
+ <string>Show Grid</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@@ -297,6 +304,46 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout_9">
<item>
+ <widget class="QToolButton" name="toolButton_up">
+ <property name="text">
+ <string>Up</string>
+ </property>
+ <property name="arrowType">
+ <enum>Qt::UpArrow</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="toolButton_down">
+ <property name="text">
+ <string>Down</string>
+ </property>
+ <property name="arrowType">
+ <enum>Qt::DownArrow</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="toolButton_left">
+ <property name="text">
+ <string>Left</string>
+ </property>
+ <property name="arrowType">
+ <enum>Qt::LeftArrow</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="toolButton_right">
+ <property name="text">
+ <string>Right</string>
+ </property>
+ <property name="arrowType">
+ <enum>Qt::RightArrow</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Horizontal</enum>