11from collections .abc import Iterable
2- from qtpy .QtCore import Signal , QByteArray , QPoint , QSize , QSettings , QEvent
3- from qtpy .QtGui import QImage , QPainter , QContextMenuEvent , QMouseEvent , QPixmap , QKeyEvent
2+ from typing import Any , Dict , List , Optional
3+
4+ from PyQt5 import QtGui
5+ from qtpy .QtCore import QByteArray , QEvent , QPoint , QSettings , QSize , Qt , Signal
6+ from qtpy .QtGui import (
7+ QContextMenuEvent ,
8+ QImage ,
9+ QKeyEvent ,
10+ QMouseEvent ,
11+ QPainter ,
12+ QPixmap ,
13+ )
414from qtpy .QtWidgets import (
5- QWidget ,
6- QMenu ,
715 QAction ,
8- QGraphicsView ,
9- QGraphicsScene ,
1016 QGraphicsPixmapItem ,
17+ QGraphicsScene ,
18+ QGraphicsView ,
19+ QMenu ,
1120 QVBoxLayout ,
21+ QWidget ,
1222)
13- from typing import List , Any , Dict , Optional
14- from .widgets .downloader import VideoThread
15- from .plugins .base_plugin import BasePlugin , SupportsBasePlugin
23+
1624from .plugin_settings import PluginSettingsDialog
25+ from .plugins .base_plugin import BasePlugin , SupportsBasePlugin
26+ from .widgets .downloader import VideoThread
1727
1828
1929class Microscope (QWidget ):
@@ -25,7 +35,7 @@ class Microscope(QWidget):
2535 mouse_wheel_signal : Signal = Signal (object )
2636 key_press_signal : Signal = Signal (object )
2737 key_release_signal : Signal = Signal (object )
28-
38+
2939 def __init__ (
3040 self ,
3141 parent : Optional [QWidget ] = None ,
@@ -41,6 +51,7 @@ def __init__(
4151 self .pixmap = QGraphicsPixmapItem (None )
4252 self .scene = QGraphicsScene (self )
4353 self .view = QGraphicsView (self .scene )
54+ self .view .setFocusPolicy (Qt .FocusPolicy .StrongFocus )
4455 self .view .setRenderHints (QPainter .Antialiasing | QPainter .SmoothPixmapTransform )
4556 self .scene .addItem (self .pixmap )
4657 self .layout = QVBoxLayout ()
@@ -77,6 +88,7 @@ def __init__(
7788 self .key_release_signal .connect (plugin .key_release_event )
7889
7990 self .view .viewport ().installEventFilter (self )
91+ self .view .installEventFilter (self )
8092
8193 def updatedImageSize (self ) -> None :
8294 if self .image .size () != self .minimumSize ():
@@ -113,54 +125,38 @@ def eventFilter(self, obj, event):
113125 self .mouse_move_event (event )
114126 if event .type () == QEvent .Wheel :
115127 self .mouse_wheel_event (event )
128+ if obj is self .view :
129+ if event .type () == QEvent .Type .Enter :
130+ self .view .setFocus ()
131+ print ("Entered widget" )
132+ if event .type () == QEvent .Type .Leave :
133+ self .view .clearFocus ()
134+ print ("Leaving Widget" )
116135 if event .type () == QEvent .KeyPress :
117136 self .key_press_event (event )
118137 if event .type () == QEvent .KeyRelease :
119138 self .key_release_event (event )
139+
120140 return QWidget .eventFilter (self , obj , event )
121141
122142 def key_press_event (self , event : QKeyEvent ):
123143 self .key_press_signal .emit (event )
124144
125145 def key_release_event (self , event : QKeyEvent ):
126- self .key_release_event .emit (event )
146+ self .key_release_signal .emit (event )
127147
128148 def mouse_wheel_event (self , event ):
129- self .mouse_wheel_signal .emit (event .angleDelta ())
130- """
131- # Zoom Factor
132- zoomInFactor = 1.05
133- zoomOutFactor = 1 / zoomInFactor
134-
135- # Set Anchors
136- self.view.setTransformationAnchor(QGraphicsView.NoAnchor)
137- self.view.setResizeAnchor(QGraphicsView.NoAnchor)
138-
139- # Save the scene pos
140- oldPos = self.view.mapToScene(event.pos())
141-
142- # Zoom
143- if event.angleDelta().y() > 0:
144- zoomFactor = zoomInFactor
145- else:
146- zoomFactor = zoomOutFactor
147- self.view.scale(zoomFactor, zoomFactor)
148-
149- # Get the new position
150- newPos = self.view.mapToScene(event.pos())
149+ print (event .angleDelta ())
150+ self .mouse_wheel_signal .emit (event .angleDelta ())
151151
152- # Move scene to old position
153- delta = newPos - oldPos
154- self.view.translate(delta.x(), delta.y())
155- """
156-
157152 def mouse_press_event (self , a0 : QMouseEvent ):
158153 if self .viewport :
159154 self .clicked_url .emit (self .settings_group )
160155
161156 self .mouse_press_signal .emit (a0 )
162157
163158 def mouse_move_event (self , a0 : QMouseEvent ):
159+ self .setFocus ()
164160 self .mouse_move_signal .emit (a0 )
165161
166162 def mouse_release_event (self , a0 : QMouseEvent ) -> None :
@@ -194,7 +190,9 @@ def addMenuItem(self, item):
194190 self .menu .addMenu (item )
195191
196192 def _config_plugins (self ):
197- plugin_settings_dialog = PluginSettingsDialog (parent = self , plugins = self .plugins .values ())
193+ plugin_settings_dialog = PluginSettingsDialog (
194+ parent = self , plugins = self .plugins .values ()
195+ )
198196
199197 def sizeHint (self ) -> QSize :
200198 return QSize (400 , 400 )
0 commit comments