screen: Set buttons under message bar to not be sensitive when covered

This commit is contained in:
Jordan Ruthe 2020-12-05 14:14:02 -05:00
parent d61db5fb17
commit cf3a924bb2
2 changed files with 23 additions and 11 deletions

View File

@ -10,6 +10,7 @@ logger = logging.getLogger("KlipperScreen.ScreenPanel")
class ScreenPanel:
title_spacing = 50
control = {}
def __init__(self, screen, title, back=True):
self._screen = screen
@ -21,17 +22,17 @@ class ScreenPanel:
self.layout.set_size(self._screen.width, self._screen.height)
if back == True:
b = KlippyGtk.ButtonImage('back', None, None, 40, 40)
b.connect("clicked", self._screen._menu_go_back)
self.layout.put(b, 0, 0)
self.control['back'] = KlippyGtk.ButtonImage('back', None, None, 40, 40)
self.control['back'].connect("clicked", self._screen._menu_go_back)
self.layout.put(self.control['back'], 0, 0)
h = KlippyGtk.ButtonImage('home', None, None, 40, 40)
h.connect("clicked", self.menu_return, True)
self.layout.put(h, self._screen.width - 55, 0)
self.control['home'] = KlippyGtk.ButtonImage('home', None, None, 40, 40)
self.control['home'].connect("clicked", self.menu_return, True)
self.layout.put(self.control['home'], self._screen.width - 55, 0)
e = KlippyGtk.ButtonImage('emergency', None, None, 40, 40)
e.connect("clicked", self.emergency_stop)
self.layout.put(e, int(self._screen.width/4*3) - 20, 0)
self.control['estop'] = KlippyGtk.ButtonImage('emergency', None, None, 40, 40)
self.control['estop'].connect("clicked", self.emergency_stop)
self.layout.put(self.control['estop'], int(self._screen.width/4*3) - 20, 0)
self.title = Gtk.Label()
self.title.set_size_request(self._screen.width, self.title_spacing)

View File

@ -189,6 +189,8 @@ class KlipperScreen(Gtk.Window):
box.get_style_context().add_class("message_popup")
box.set_size_request(self.width, 50)
label = Gtk.Label()
if "must home axis first" in message.lower():
message = "Must home all axis first."
label.set_text(message)
close = Gtk.Button.new_with_label("X")
@ -200,7 +202,12 @@ class KlipperScreen(Gtk.Window):
box.pack_end(close, False, False, 10)
box.set_halign(Gtk.Align.CENTER)
self.panels[self._cur_panels[-1]].get().put(box, 0,0)
cur_panel = self.panels[self._cur_panels[-1]]
for i in ['back','estop','home']:
if i in cur_panel.control:
cur_panel.control[i].set_sensitive(False)
cur_panel.get().put(box, 0,0)
self.show_all()
self.popup_message = box
@ -212,7 +219,11 @@ class KlipperScreen(Gtk.Window):
if self.popup_message == None:
return
self.panels[self._cur_panels[-1]].get().remove(self.popup_message)
cur_panel = self.panels[self._cur_panels[-1]]
for i in ['back','estop','home']:
if i in cur_panel.control:
cur_panel.control[i].set_sensitive(True)
cur_panel.get().remove(self.popup_message)
self.popup_message = None
self.show_all()