diff --git a/ks_includes/screen_panel.py b/ks_includes/screen_panel.py index 65d63d92..7069c3af 100644 --- a/ks_includes/screen_panel.py +++ b/ks_includes/screen_panel.py @@ -67,12 +67,6 @@ class ScreenPanel: def menu_item_clicked(self, widget, panel, item): self._screen.show_panel(panel, item['panel'], item['name'], 1, False) - def menu_return(self, widget, home=False): - if home is False: - self._screen._menu_go_back() - return - self._screen._menu_go_home() - def set_title(self, title): self.title = title diff --git a/panels/base_panel.py b/panels/base_panel.py index be182de6..b2eddc7c 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -32,7 +32,7 @@ class BasePanel(ScreenPanel): self.control['back'] = self._gtk.ButtonImage('back', scale=scale) self.control['back'].connect("clicked", self.back) self.control['home'] = self._gtk.ButtonImage('main', scale=scale) - self.control['home'].connect("clicked", self.menu_return, True) + self.control['home'].connect("clicked", self._screen._menu_go_home) if len(self._config.get_printers()) > 1: self.control['printer_select'] = self._gtk.ButtonImage('shuffle', scale=scale) @@ -203,7 +203,7 @@ class BasePanel(ScreenPanel): self.set_title(panel.get_title()) self.content.add(panel.get_content()) - def back(self, widget): + def back(self, widget=None): if self.current_panel is None: return diff --git a/panels/exclude.py b/panels/exclude.py index 818d18e1..3a29e8db 100644 --- a/panels/exclude.py +++ b/panels/exclude.py @@ -116,7 +116,7 @@ class ExcludeObjectPanel(ScreenPanel): self.object_list.remove(self.buttons[name]) self.update_graph() if len(self.excluded_objects) == len(self.objects): - self.menu_return(False) + self._screen._menu_go_back() elif action == "notify_gcode_response" and "Excluding object" in data: self._screen.show_popup_message(data, level=1) self.update_graph() diff --git a/panels/zcalibrate.py b/panels/zcalibrate.py index e622a472..0e8536a9 100644 --- a/panels/zcalibrate.py +++ b/panels/zcalibrate.py @@ -267,7 +267,7 @@ class ZCalibratePanel(ScreenPanel): logging.info("Aborting calibration") self._screen._ws.klippy.gcode_script(KlippyGcodes.ABORT) self.buttons_not_calibrating() - self.menu_return(widget) + self._screen._menu_go_back() def accept(self, widget): logging.info("Accepting Z position") diff --git a/screen.py b/screen.py index c19e5c26..0989ab76 100644 --- a/screen.py +++ b/screen.py @@ -100,6 +100,7 @@ class KlipperScreen(Gtk.Window): self.lang_ltr = set_text_direction(self._config.get_main_config().get("language", None)) Gtk.Window.__init__(self) + self.connect("key-press-event", self._key_press_event) self.set_title("KlipperScreen") monitor = Gdk.Display.get_default().get_primary_monitor() self.width = self._config.get_main_config().getint("width", monitor.get_geometry().width) @@ -511,7 +512,7 @@ class KlipperScreen(Gtk.Window): self.close_popup_message() self._remove_current_panel() - def _menu_go_home(self): + def _menu_go_home(self, widget=None): logging.info("#### Menu go home") self.remove_keyboard() self.close_popup_message() @@ -957,6 +958,13 @@ class KlipperScreen(Gtk.Window): self.base_panel.get_content().remove(self.keyboard['box']) self.keyboard = None + def _key_press_event(self, widget, event): + keyval_name = Gdk.keyval_name(event.keyval) + if keyval_name == "Escape": + self._menu_go_home() + elif keyval_name == "BackSpace" and len(self._cur_panels) > 1: + self.base_panel.back() + def main(): version = functions.get_software_version()