From d28c73dc6347e679803721b15432094d3cbef0e3 Mon Sep 17 00:00:00 2001 From: david mueller Date: Sun, 18 Jan 2026 12:06:27 +0100 Subject: [PATCH 1/4] Gmoccapy: Restore tooltips for tooltable buttons and reconnect Delete handler --- src/emc/usr_intf/gmoccapy/gmoccapy.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/emc/usr_intf/gmoccapy/gmoccapy.py b/src/emc/usr_intf/gmoccapy/gmoccapy.py index 06b67f7bd58..1a7952109d4 100644 --- a/src/emc/usr_intf/gmoccapy/gmoccapy.py +++ b/src/emc/usr_intf/gmoccapy/gmoccapy.py @@ -1997,24 +1997,29 @@ def _init_tooleditor(self): btn_delete.set_size_request(56, 56) btn_delete.set_label("") btn_delete.set_image(self.widgets.img_tool_delete) + btn_delete.set_tooltip_text(_("Delete selected tools")) btn_delete.set_always_show_image(True) + btn_delete.connect("clicked",self.on_btn_delete_tool_clicked) # Add button btn_add = self.widgets.tooledit1.wTree.get_object("add") btn_add.set_size_request(56, 56) btn_add.set_label("") btn_add.set_image(self.widgets.img_tool_add) + btn_add.set_tooltip_text(_("Add new tool")) btn_add.set_always_show_image(True) # Reload button btn_reload = self.widgets.tooledit1.wTree.get_object("reload") btn_reload.set_size_request(56, 56) btn_reload.set_label("") btn_reload.set_image(self.widgets.img_tool_reload) + btn_reload.set_tooltip_text(_("Reload tool table from file")) btn_reload.set_always_show_image(True) # Save button btn_save = self.widgets.tooledit1.wTree.get_object("apply") btn_save.set_size_request(56, 56) btn_save.set_label("") btn_save.set_image(self.widgets.img_tool_save) + btn_save.set_tooltip_text(_("Save tool table to file")) btn_save.set_always_show_image(True) # Create a label for current tool in spindle lbl_tool = Gtk.Label() @@ -5446,17 +5451,6 @@ def on_btn_delete_tool_clicked(self, widget, data=None): self.widgets.tooledit1.delete(None) self.widgets.tooledit1.set_selected_tool(act_tool) - def on_btn_add_tool_clicked(self, widget, data=None): - self.widgets.tooledit1.add(None) - - def on_btn_reload_tooltable_clicked(self, widget, data=None): - self.widgets.tooledit1.reload(None) - self.widgets.tooledit1.set_selected_tool(self.stat.tool_in_spindle) - - def on_btn_save_tool_changes_clicked(self, widget, data=None): - self.widgets.tooledit1.save(None) - self.widgets.tooledit1.set_selected_tool(self.stat.tool_in_spindle) - def on_btn_tool_touchoff_clicked(self, widget, data=None): if not self.widgets.tooledit1.get_selected_tool(): message = _("No or multiple tools selected in the tool table. ") From f05883aeca7dbf7d621225ede86175aac60774e2 Mon Sep 17 00:00:00 2001 From: david mueller Date: Sun, 18 Jan 2026 12:27:33 +0100 Subject: [PATCH 2/4] Gmoccapy: Fix current tool check when deleting multiple tools --- lib/python/gladevcp/tooledit_widget.py | 10 ++++++++-- src/emc/usr_intf/gmoccapy/gmoccapy.py | 11 ++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/python/gladevcp/tooledit_widget.py b/lib/python/gladevcp/tooledit_widget.py index b5df98c98b3..1f800782f61 100644 --- a/lib/python/gladevcp/tooledit_widget.py +++ b/lib/python/gladevcp/tooledit_widget.py @@ -206,10 +206,16 @@ def match_value_cb(model, path, iter, pathlist): pathlist = [] liststore.foreach(match_value_cb, pathlist) # foreach works in a depth first fashion - if len(pathlist) != 1: + if len(pathlist) == 0: return None - else: + elif len(pathlist) == 1: return(liststore.get_value(liststore.get_iter(pathlist[0]),1)) + else: + selected_tools = [] + for path in pathlist: + tool = (liststore.get_value(liststore.get_iter(path[0]),1)) + selected_tools.append(tool) + return selected_tools # return tool number of the highlighted (ie selected) row def get_selected_row(self): diff --git a/src/emc/usr_intf/gmoccapy/gmoccapy.py b/src/emc/usr_intf/gmoccapy/gmoccapy.py index 1a7952109d4..a9fd6b9e069 100644 --- a/src/emc/usr_intf/gmoccapy/gmoccapy.py +++ b/src/emc/usr_intf/gmoccapy/gmoccapy.py @@ -1999,6 +1999,7 @@ def _init_tooleditor(self): btn_delete.set_image(self.widgets.img_tool_delete) btn_delete.set_tooltip_text(_("Delete selected tools")) btn_delete.set_always_show_image(True) + btn_delete.disconnect_by_func(self.widgets.tooledit1.delete) btn_delete.connect("clicked",self.on_btn_delete_tool_clicked) # Add button btn_add = self.widgets.tooledit1.wTree.get_object("add") @@ -5441,15 +5442,15 @@ def on_tool_change(self, widget): self.halcomp['toolchange-changed'] = False def on_btn_delete_tool_clicked(self, widget, data=None): - act_tool = self.stat.tool_in_spindle - if act_tool == self.widgets.tooledit1.get_selected_tool(): + selected_tools = self.widgets.tooledit1.get_selected_tool() + if not isinstance(selected_tools, list): + selected_tools = [selected_tools] + if self.stat.tool_in_spindle in selected_tools: message = _("You are trying to delete the tool mounted in the spindle\n") message += _("This is not allowed, please change tool prior to delete it") self.dialogs.warning_dialog(self, _("Warning Tool can not be deleted!"), message) return - - self.widgets.tooledit1.delete(None) - self.widgets.tooledit1.set_selected_tool(act_tool) + self.widgets.tooledit1.delete(widget) def on_btn_tool_touchoff_clicked(self, widget, data=None): if not self.widgets.tooledit1.get_selected_tool(): From 57da7f74b93ede6564e29ccacf410b4044b98587 Mon Sep 17 00:00:00 2001 From: david mueller Date: Sun, 18 Jan 2026 13:16:46 +0100 Subject: [PATCH 3/4] Gmoccapy: Only show current tool number in tooltable frame when touch keybord activated --- src/emc/usr_intf/gmoccapy/gmoccapy.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/emc/usr_intf/gmoccapy/gmoccapy.py b/src/emc/usr_intf/gmoccapy/gmoccapy.py index a9fd6b9e069..cfabdd8a325 100644 --- a/src/emc/usr_intf/gmoccapy/gmoccapy.py +++ b/src/emc/usr_intf/gmoccapy/gmoccapy.py @@ -2046,7 +2046,10 @@ def _init_tooleditor(self): self.widgets.tooledit1.set_selected_tool = self.set_selected_tool def set_selected_tool(self, toolnumber): - lbl_tool_text = "Tool loaded: " + str(toolnumber) + lbl_tool_text = "" + # When using touch keyboard we display the current tool in the tooltable frame + if self.widgets.chk_use_kb_on_tooledit.get_active(): + lbl_tool_text = "Tool loaded: " + str(toolnumber) self.widgets.tooledit1.lbl_tool.set_text(lbl_tool_text) def on_tree_navigate_key_press(self, treeview, event, filter): From 2d5a5b956c227793942bea8ff73d5635e50c62b2 Mon Sep 17 00:00:00 2001 From: david mueller Date: Sun, 18 Jan 2026 17:47:08 +0100 Subject: [PATCH 4/4] Gmoccapy: Reload tooltable when the widget is shown --- src/emc/usr_intf/gmoccapy/gmoccapy.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/emc/usr_intf/gmoccapy/gmoccapy.py b/src/emc/usr_intf/gmoccapy/gmoccapy.py index cfabdd8a325..f9e06ed63d4 100644 --- a/src/emc/usr_intf/gmoccapy/gmoccapy.py +++ b/src/emc/usr_intf/gmoccapy/gmoccapy.py @@ -2607,6 +2607,7 @@ def _show_tooledit_tab(self, state): self.widgets.ntb_preview.set_property("show-tabs", not state) self.widgets.vbx_jog.hide() self.widgets.ntb_preview.set_current_page(2) + self.widgets.tooledit1.reload(None) self.widgets.tooledit1.set_selected_tool(self.stat.tool_in_spindle) if self.widgets.chk_use_kb_on_tooledit.get_active(): self.widgets.ntb_info.set_current_page(1)