IconEditor/IconEditorWindow.py

changeset 1518
e6e21910210d
parent 1509
c0b5e693b0eb
child 2101
5bac7dee9e1a
child 2303
0ed4ed026c16
--- a/IconEditor/IconEditorWindow.py	Fri Dec 30 15:20:34 2011 +0100
+++ b/IconEditor/IconEditorWindow.py	Fri Dec 30 18:33:18 2011 +0100
@@ -7,7 +7,8 @@
 Module implementing the icon editor main window.
 """
 
-from PyQt4.QtCore import pyqtSignal, Qt, QSize, QSignalMapper, QFileInfo, QFile
+from PyQt4.QtCore import pyqtSignal, Qt, QSize, QSignalMapper, QFileInfo, QFile, \
+    QEvent
 from PyQt4.QtGui import QMainWindow, QScrollArea, QPalette, QImage, QImageReader, \
     QImageWriter, QKeySequence, qApp, QLabel, QDockWidget, QDialog, QWhatsThis
 
@@ -100,6 +101,8 @@
                 self.__loadIconFile(fileName)
             
             self.__checkActions()
+            
+            self.grabGesture(Qt.PinchGesture)
     
     def __initFileFilters(self):
         """
@@ -1226,7 +1229,7 @@
         @param evt reference to the wheel event (QWheelEvent)
         """
         if evt.modifiers() & Qt.ControlModifier:
-            if evt.delta()< 0:
+            if evt.delta() < 0:
                 self.__zoomOut()
             else:
                 self.__zoomIn()
@@ -1234,3 +1237,31 @@
             return
         
         super().wheelEvent(evt)
+    
+    def event(self, evt):
+        """
+        Protected method handling events.
+        
+        @param evt reference to the event (QEvent)
+        @return flag indicating, if the event was handled (boolean)
+        """
+        if evt.type() == QEvent.Gesture:
+            self.gestureEvent(evt)
+            return True
+        
+        return super().event(evt)
+    
+    def gestureEvent(self, evt):
+        """
+        Protected method handling gesture events.
+        
+        @param evt reference to the gesture event (QGestureEvent
+        """
+        pinch = evt.gesture(Qt.PinchGesture)
+        if pinch:
+            if pinch.state() == Qt.GestureStarted:
+                pinch.setScaleFactor(self.__editor.zoomFactor() / 100.0)
+            else:
+                self.__editor.setZoomFactor(int(pinch.scaleFactor() * 100))
+                self.__updateZoom()
+            evt.accept()

eric ide

mercurial