changeset 49:5ca986354475

TilePicker: add tile flipping functionality The middle mouse button flips tiles. This is currently bad UI, but it's good enough for me to play with. I'll fix this later.
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Wed, 04 Sep 2019 12:31:05 -0400
parents fa5b36acf03f
children fef68d9650af
files tilerswift
diffstat 1 files changed, 24 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/tilerswift
+++ b/tilerswift
@@ -152,8 +152,10 @@
         self.numcols = 20
 
         self.picked_tiles = []
+        self.flips = []
         for i in range(self.numrows):
             self.picked_tiles.append([None]*self.numcols)
+            self.flips.append([(1, 1)]*self.numcols)
 
         self.resize()
 
@@ -186,11 +188,31 @@
                         8*self.grid_canvas.scalefactor,
                         8*self.grid_canvas.scalefactor
                     )
-                    painter.drawPixmap(rect, tile.pixmap)
+                    flipx, flipy = self.flips[i][j]
+                    painter.drawPixmap(
+                        rect,
+                        tile.pixmap.transformed(QtGui.QTransform().scale(flipx, flipy))
+                    )
 
     def mousePressEvent(self, event):
         j, i = event.x()//self.tilesize, event.y()//self.tilesize
-        self.picked_tiles[i][j] = self.grid_canvas.picked_tile
+        if event.button() == QtCore.Qt.LeftButton:
+            self.picked_tiles[i][j] = self.grid_canvas.picked_tile
+        elif event.button() == QtCore.Qt.RightButton:
+            self.picked_tiles[i][j] = None
+        elif event.button() == QtCore.Qt.MidButton:
+            flipx, flipy = self.flips[i][j]
+            if flipx == 1:
+                if flipy == 1:
+                    self.flips[i][j] = (1, -1)
+                else:
+                    self.flips[i][j] = (-1, 1)
+            else:
+                if flipy == 1:
+                    self.flips[i][j] = (-1, -1)
+                else:
+                    self.flips[i][j] = (1, 1)
+
         self.update()