@@ -82,6 +82,13 @@ def contextMenuEvent(self, event: QContextMenuEvent) -> None:
8282
8383 def setup_actions (self ) -> None :
8484 """Setup actions"""
85+ self .rename_ac = create_action (
86+ self ,
87+ _ ("Rename" ),
88+ icon = get_icon ("rename.png" ),
89+ triggered = self .rename_item ,
90+ shortcut = "F2" ,
91+ )
8592 self .movedown_ac = create_action (
8693 self ,
8794 _ ("Move to back" ),
@@ -94,7 +101,7 @@ def setup_actions(self) -> None:
94101 icon = get_icon ("arrow_up.png" ),
95102 triggered = lambda : self .move_item ("up" ),
96103 )
97- settings_ac = create_action (
104+ self . settings_ac = create_action (
98105 self ,
99106 _ ("Parameters..." ),
100107 icon = get_icon ("settings.png" ),
@@ -103,7 +110,14 @@ def setup_actions(self) -> None:
103110 self .remove_ac = create_action (
104111 self , _ ("Remove" ), icon = get_icon ("trash.png" ), triggered = self .remove_item
105112 )
106- return [self .moveup_ac , self .movedown_ac , None , settings_ac , self .remove_ac ]
113+ return [
114+ self .rename_ac ,
115+ self .moveup_ac ,
116+ self .movedown_ac ,
117+ None ,
118+ self .settings_ac ,
119+ self .remove_ac ,
120+ ]
107121
108122 def edit_plot_parameters (self ) -> None :
109123 """Edit plot parameters"""
@@ -162,12 +176,14 @@ def refresh_actions(self) -> None:
162176 if action is not None :
163177 action .setEnabled (is_selection )
164178 if is_selection :
165- remove_state = True
179+ editable_state = True
166180 for item in self .get_selected_items ():
167- remove_state = remove_state and not item .is_readonly ()
168- self .remove_ac .setEnabled (remove_state )
181+ editable_state = editable_state and not item .is_readonly ()
182+ self .remove_ac .setEnabled (editable_state )
169183 for action in [self .moveup_ac , self .movedown_ac ]:
170184 action .setEnabled (self .__is_selection_contiguous ())
185+ self .rename_ac .setEnabled (editable_state and len (self .selectedItems ()) == 1 )
186+ self .settings_ac .setEnabled (editable_state )
171187
172188 def __get_item_icon (self , item : itf .IBasePlotItem ) -> QIcon :
173189 """Get item icon"""
@@ -272,6 +288,18 @@ def item_changed(self, listwidgetitem: QListWidgetItem) -> None:
272288 if visible != item .isVisible ():
273289 self .plot .set_item_visible (item , visible )
274290
291+ def rename_item (self ) -> None :
292+ """Rename item"""
293+ item = self .get_selected_items ()[0 ]
294+ title = item .title ().text ()
295+ new_title , ok = QW .QInputDialog .getText (
296+ self , _ ("Rename" ), _ ("New title:" ), text = title
297+ )
298+ if ok and new_title != title :
299+ item .setTitle (new_title )
300+ self .plot .replot ()
301+ self .items_changed (self .plot )
302+
275303 def move_item (self , direction : str ) -> None :
276304 """Move item to the background/foreground
277305 Works only for contiguous selection
0 commit comments