1414except ImportError :
1515 from napari ._qt .widgets .qt_viewer_buttons import QtViewerPushButton
1616
17+ import qtawesome as qta
1718from napari .components import ViewerModel as Viewer
1819from napari .layers import Layer , Points
1920from napari .layers .image import Image as NapariImage
2021from napari .layers .labels import Labels
2122from napari .qt import QtStateButton , QtViewer
2223from napari .qt .threading import thread_worker
2324from qtpy .QtCore import QEvent , QObject , QPoint , Qt , Signal
24- from qtpy .QtWidgets import QCheckBox , QHBoxLayout , QLabel , QMenu , QToolTip , QVBoxLayout , QWidget
25+ from qtpy .QtGui import QColor
26+ from qtpy .QtWidgets import QCheckBox , QHBoxLayout , QLabel , QMenu , QPushButton , QToolTip , QVBoxLayout , QWidget
2527from vispy .color import Color , Colormap
2628from vispy .scene import BaseCamera
2729
@@ -190,6 +192,8 @@ def __init__(
190192 self .points_view_button = QtViewerPushButton (
191193 self .viewer , "new_points" , "Show points" , self .toggle_points_visibility
192194 )
195+ self .search_roi_btn = SearchROIButton (self )
196+ self .search_roi_btn .setHidden (True )
193197 self .roll_dim_button = QtViewerPushButton (self .viewer , "roll" , "Roll dimension" , self ._rotate_dim )
194198 self .roll_dim_button .setContextMenuPolicy (Qt .CustomContextMenu )
195199 self .roll_dim_button .customContextMenuRequested .connect (self ._dim_order_menu )
@@ -201,6 +205,7 @@ def __init__(
201205 self .btn_layout .addWidget (self .ndim_btn )
202206 self .btn_layout .addWidget (self .roll_dim_button )
203207 self .btn_layout .addWidget (self .points_view_button )
208+ self .btn_layout .addWidget (self .search_roi_btn )
204209 self .btn_layout .addWidget (self .channel_control , 1 )
205210 self .btn_layout .addWidget (self .mask_label )
206211 self .btn_layout .addWidget (self .mask_chk )
@@ -750,7 +755,8 @@ def close(self):
750755 self .dockConsole .deleteLater ()
751756 self .dockLayerList .deleteLater ()
752757 self .dockLayerControls .deleteLater ()
753- self .activityDock .deleteLater ()
758+ if hasattr (self , "activityDock" ):
759+ self .activityDock .deleteLater ()
754760 return super ().close ()
755761
756762 def closeEvent (self , event ):
@@ -768,6 +774,18 @@ class ImageParameters:
768774 layers : int = 0
769775
770776
777+ class SearchROIButton (QPushButton ):
778+ def __init__ (self , image_view : ImageView ):
779+ super ().__init__ (qta .icon ("fa5s.search" ), "" )
780+ self .image_view = image_view
781+ image_view .settings .theme_changed .connect (self ._theme_changed )
782+ self ._theme_changed ()
783+
784+ def _theme_changed (self ):
785+ color = self .image_view .settings .theme .text
786+ self .setIcon (qta .icon ("fa5s.search" , color = QColor (* color .as_rgb_tuple ())))
787+
788+
771789def _prepare_layers (image : Image , param : ImageParameters , replace : bool ) -> Tuple [ImageInfo , bool ]:
772790 image_layers = []
773791 for i in range (image .channels ):
0 commit comments