1010.. autoclass:: PlotItemList
1111"""
1212
13+ from typing import TYPE_CHECKING
14+
1315from guidata .configtools import get_icon , get_image_layout
1416from guidata .qthelpers import add_actions , create_action
1517from guidata .utils .misc import assert_interfaces_valid
1921from plotpy .config import _
2022from plotpy .constants import ID_ITEMLIST
2123from plotpy .interfaces import IPanel
24+ from plotpy .interfaces import items as itf
2225from plotpy .panels .base import PanelWidget
2326
27+ if TYPE_CHECKING :
28+ from qtpy .QtGui import QContextMenuEvent , QIcon
29+ from qtpy .QtWidgets import QListWidgetItem , QWidget
30+
31+ from plotpy .plot import BasePlot , PlotManager
32+
2433
2534class ItemListWidget (QW .QListWidget ):
2635 """
2736 PlotItemList
2837 List of items attached to plot
2938 """
3039
31- def __init__ (self , parent ) :
40+ def __init__ (self , parent : QWidget ) -> None :
3241 super ().__init__ (parent )
3342
3443 self .manager = None
@@ -50,10 +59,11 @@ def __init__(self, parent):
5059 self .refresh_actions ()
5160 add_actions (self .menu , self .menu_actions )
5261
53- def register_panel (self , manager ) :
54- """
62+ def register_panel (self , manager : PlotManager ) -> None :
63+ """Register panel to plot manager
5564
56- :param manager:
65+ Args:
66+ manager: plot manager to register to
5767 """
5868 self .manager = manager
5969
@@ -62,16 +72,13 @@ def register_panel(self, manager):
6272 plot .SIG_ACTIVE_ITEM_CHANGED .connect (self .active_item_changed )
6373 self .plot = self .manager .get_plot ()
6474
65- def contextMenuEvent (self , event ) :
75+ def contextMenuEvent (self , event : QContextMenuEvent ) -> None :
6676 """Override Qt method"""
6777 self .refresh_actions ()
6878 self .menu .popup (event .globalPos ())
6979
70- def setup_actions (self ):
71- """
72-
73- :return:
74- """
80+ def setup_actions (self ) -> None :
81+ """Setup actions"""
7582 self .movedown_ac = create_action (
7683 self ,
7784 _ ("Move to back" ),
@@ -95,15 +102,16 @@ def setup_actions(self):
95102 )
96103 return [self .moveup_ac , self .movedown_ac , None , settings_ac , self .remove_ac ]
97104
98- def edit_plot_parameters (self ):
99- """ """
105+ def edit_plot_parameters (self ) -> None :
106+ """Edit plot parameters """
100107 self .plot .edit_plot_parameters ("item" )
101108
102- def __is_selection_contiguous (self ):
109+ def __is_selection_contiguous (self ) -> bool :
110+ """Check if selected items are contiguous"""
103111 indexes = sorted ([self .row (lw_item ) for lw_item in self .selectedItems ()])
104112 return len (indexes ) <= 1 or list (range (indexes [0 ], indexes [- 1 ] + 1 )) == indexes
105113
106- def get_selected_items (self ):
114+ def get_selected_items (self ) -> list [ itf . IBasePlotItem ] :
107115 """Return selected QwtPlot items
108116
109117 .. warning::
@@ -116,8 +124,8 @@ def get_selected_items(self):
116124 """
117125 return [self .items [self .row (lw_item )] for lw_item in self .selectedItems ()]
118126
119- def refresh_actions (self ):
120- """ """
127+ def refresh_actions (self ) -> None :
128+ """Refresh actions """
121129 is_selection = len (self .selectedItems ()) > 0
122130 for action in self .menu_actions :
123131 if action is not None :
@@ -130,15 +138,20 @@ def refresh_actions(self):
130138 for action in [self .moveup_ac , self .movedown_ac ]:
131139 action .setEnabled (self .__is_selection_contiguous ())
132140
133- def __get_item_icon (self , item ):
141+ def __get_item_icon (self , item : itf .IBasePlotItem ) -> QIcon :
142+ """Get item icon"""
134143 icon = item .icon ()
135144 if icon is None :
136145 return get_icon ("not_found.png" )
137146 else :
138147 return icon
139148
140- def items_changed (self , plot ):
141- """Plot items have changed"""
149+ def items_changed (self , plot : BasePlot ) -> None :
150+ """Plot items have changed
151+
152+ Args:
153+ plot: plot
154+ """
142155 active_plot = self .manager .get_active_plot ()
143156 if active_plot is not plot :
144157 return
@@ -164,8 +177,12 @@ def items_changed(self, plot):
164177 self .refresh_actions ()
165178 self .blockSignals (_block )
166179
167- def active_item_changed (self , plot ):
168- """Plot items have changed"""
180+ def active_item_changed (self , plot : BasePlot ) -> None :
181+ """Plot items have changed
182+
183+ Args:
184+ plot: plot
185+ """
169186 active_plot = self .manager .get_active_plot ()
170187 if active_plot is not plot :
171188 return
@@ -186,8 +203,12 @@ def active_item_changed(self, plot):
186203 self .refresh_actions ()
187204 self .blockSignals (_block )
188205
189- def current_row_changed (self , index ):
190- """QListWidget current row has changed"""
206+ def current_row_changed (self , index : int ) -> None :
207+ """QListWidget current row has changed
208+
209+ Args:
210+ index: index
211+ """
191212 if index == - 1 :
192213 return
193214 item = self .items [index ]
@@ -196,23 +217,31 @@ def current_row_changed(self, index):
196217 if item is None :
197218 self .plot .replot ()
198219
199- def selection_changed (self ):
200- """ """
220+ def selection_changed (self ) -> None :
221+ """Selection has changed """
201222 items = [item for item in self .get_selected_items () if item .can_select ()]
202223 self .plot .select_some_items (items )
203224 self .plot .replot ()
204225
205- def item_changed (self , listwidgetitem ):
206- """QListWidget item has changed"""
226+ def item_changed (self , listwidgetitem : QListWidgetItem ) -> None :
227+ """QListWidget item has changed
228+
229+ Args:
230+ listwidgetitem: list widget item
231+ """
207232 item = self .items [self .row (listwidgetitem )]
208233 visible = listwidgetitem .checkState () == QC .Qt .Checked
209234 if visible != item .isVisible ():
210235 self .plot .set_item_visible (item , visible )
211236
212- def move_item (self , direction ) :
237+ def move_item (self , direction : str ) -> None :
213238 """Move item to the background/foreground
214239 Works only for contiguous selection
215- -> 'refresh_actions' method should guarantee that"""
240+ -> 'refresh_actions' method should guarantee that
241+
242+ Args:
243+ direction: direction
244+ """
216245 items = self .get_selected_items ()
217246 if direction == "up" :
218247 self .plot .move_up (items )
@@ -226,8 +255,8 @@ def move_item(self, direction):
226255 lw_item .setSelected (True )
227256 self .plot .replot ()
228257
229- def remove_item (self ):
230- """ """
258+ def remove_item (self ) -> None :
259+ """Remove item """
231260 if len (self .selectedItems ()) == 1 :
232261 message = _ ("Do you really want to remove this item?" )
233262 else :
@@ -268,8 +297,12 @@ def __init__(self, parent):
268297 vlayout .addWidget (toolbar )
269298 add_actions (toolbar , self .listwidget .menu_actions )
270299
271- def register_panel (self , manager ):
272- """Register panel to plot manager"""
300+ def register_panel (self , manager : PlotManager ) -> None :
301+ """Register panel to plot manager
302+
303+ Args:
304+ manager: plot manager
305+ """
273306 self .manager = manager
274307 self .listwidget .register_panel (manager )
275308
0 commit comments