Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions lib/python/common/hal_glib.py
Original file line number Diff line number Diff line change
Expand Up @@ -615,8 +615,9 @@ def update(self):
state_new = self.old['state']
if state_new != state_old:

# set machine estop/clear
if state_old == linuxcnc.STATE_ESTOP and state_new == linuxcnc.STATE_ESTOP_RESET:
# set machine estop/clear; a reset and machine on between two
# polls go from ESTOP straight to ON and still clear the estop
if state_old == linuxcnc.STATE_ESTOP:
self.emit('state-estop-reset')
self.emit('interp-idle')
elif state_new == linuxcnc.STATE_ESTOP:
Expand Down
21 changes: 14 additions & 7 deletions src/emc/usr_intf/gmoccapy/gmoccapy.py
Original file line number Diff line number Diff line change
Expand Up @@ -3100,16 +3100,24 @@ def on_hal_status_tool_in_spindle_changed(self, object, new_tool_no):
self.prefs.putpref("tool_in_spindle", new_tool_no, int)
self._update_toolinfo(new_tool_no)

# Show a state change on a toggle button without its toggled handler,
# which would send the state again: when this runs late, that is an old
# state, and an ESTOP_RESET to a machine already on aborts its motion.
def _show_toggle(self, widget, active):
handler = icon_theme_helper.find_handler_id_by_signal(widget, "toggled")
with widget.handler_block(handler):
widget.set_active(active)

def on_hal_status_state_estop(self, widget=None):
self.widgets.tbtn_estop.set_active(True)
self._show_toggle(self.widgets.tbtn_estop, True)
self.widgets.tbtn_estop.set_image(self.widgets.img_emergency)
self.widgets.tbtn_on.set_image(self.widgets.img_machine_off)
self.widgets.tbtn_on.set_sensitive(False)
self.widgets.tbtn_on.set_active(False)
self._show_toggle(self.widgets.tbtn_on, False)
self.command.mode(linuxcnc.MODE_MANUAL)

def on_hal_status_state_estop_reset(self, widget=None):
self.widgets.tbtn_estop.set_active(False)
self._show_toggle(self.widgets.tbtn_estop, False)
self.widgets.tbtn_estop.set_image(self.widgets.img_emergency_off)
self.widgets.tbtn_on.set_image(self.widgets.img_machine_off)
self.widgets.tbtn_on.set_sensitive(True)
Expand All @@ -3132,8 +3140,7 @@ def on_hal_status_state_off(self, widget):
"btn_tool_touchoff_x", "btn_tool_touchoff_z"
]
self._sensitize_widgets(widgetlist, False)
if self.widgets.tbtn_on.get_active():
self.widgets.tbtn_on.set_active(False)
self._show_toggle(self.widgets.tbtn_on, False)
self.widgets.tbtn_on.set_image(self.widgets.img_machine_off)
self.widgets.btn_exit.set_sensitive(True)
self.widgets.ntb_main.set_current_page(0)
Expand All @@ -3148,8 +3155,8 @@ def on_hal_status_state_on(self, widget):
"btn_spindle_100", "spc_rapid", "spc_spindle"
]
self._sensitize_widgets(widgetlist, True)
if not self.widgets.tbtn_on.get_active():
self.widgets.tbtn_on.set_active(True)
self._show_toggle(self.widgets.tbtn_on, True)
self._update_widgets(True)
self.widgets.tbtn_on.set_image(self.widgets.img_machine_on)
self.widgets.btn_exit.set_sensitive(False)
if self.widgets.ntb_main.get_current_page() != 0:
Expand Down
Loading