base_panel: Include back/home button

This commit is contained in:
Jordan 2021-05-18 22:05:55 -04:00
parent a0d3bd6a0c
commit 73b54f7aba
6 changed files with 50 additions and 25 deletions

View File

@ -12,6 +12,7 @@ from ks_includes.screen_panel import ScreenPanel
class BasePanel(ScreenPanel):
def __init__(self, screen, title, back=True, action_bar=True, printer_name=True):
super().__init__(screen, title, back, action_bar, printer_name)
self.current_panel = None
self.buttons_showing = {
'back': False if back else True
@ -30,7 +31,7 @@ class BasePanel(ScreenPanel):
logging.debug("Button scale: %s" % button_scale)
self.control['back'] = self._gtk.ButtonImage('back', None, None, button_scale[0], button_scale[1])
self.control['back'].connect("clicked", self._screen._menu_go_back)
self.control['back'].connect("clicked", self.back)
self.control['home'] = self._gtk.ButtonImage('main', None, None, button_scale[0], button_scale[1])
self.control['home'].connect("clicked", self.menu_return, True)
@ -82,9 +83,20 @@ class BasePanel(ScreenPanel):
return
def add_content(self, panel):
self.current_panel = panel
self.set_title(panel.get_title())
self.content.add(panel.get_content())
def back(self, widget):
if self.current_panel == None:
return
if hasattr(self.current_panel, "back"):
if not self.current_panel.back():
self._screen._menu_go_back()
else:
self._screen._menu_go_back()
def get(self):
return self.layout

View File

@ -55,8 +55,6 @@ class BedMeshPanel(ScreenPanel):
self.load_meshes()
self.labels['main_box'] = box
self.control['back'].disconnect_by_func(self._screen._menu_go_back)
self.control['back'].connect("clicked", self.back)
self.content.add(self.labels['main_box'])
self._screen.add_subscription(panel_name)
@ -185,13 +183,11 @@ class BedMeshPanel(ScreenPanel):
self.labels['profiles'].attach(self.profiles[profile]['row'], 0, pos, 1, 1)
self.labels['profiles'].show_all()
#Gdk.threads_add_idle(GLib.PRIORITY_LOW, self.create_graph, profile)
def back(self, widget):
def back(self):
if self.show_create == True:
self.remove_create()
else:
self._screen._menu_go_back()
return True
return False
def create_profile(self, widget):
name = self.labels['profile_name'].get_text()

View File

@ -19,6 +19,8 @@ class NetworkPanel(ScreenPanel):
def initialize(self, menu):
_ = self.lang.gettext
self.show_add = False
grid = self._gtk.HomogeneousGrid()
grid.set_hexpand(True)
@ -205,7 +207,7 @@ class NetworkPanel(ScreenPanel):
psk = self.labels['network_psk'].get_text()
result = self._screen.wifi.add_network(ssid, psk)
self.close_add_network(widget, ssid)
self.close_add_network()
if connect == True:
if result == True:
@ -213,6 +215,12 @@ class NetworkPanel(ScreenPanel):
else:
self._screen.show_popup_message("Error adding network %s" % ssid)
def back(self):
if self.show_add == True:
self.close_add_network()
return True
return False
def check_missing_networks(self):
networks = self._screen.wifi.get_networks()
for net in list(self.networks):
@ -223,11 +231,18 @@ class NetworkPanel(ScreenPanel):
self.add_network(net)
self.labels['networklist'].show_all()
def close_add_network(self, widget, ssid):
def close_add_network(self):
if self.show_add == False:
return
for child in self.content.get_children():
self.content.remove(child)
self.content.add(self.labels['main_box'])
self.content.show()
for i in ['add_network','network_psk']:
if i in self.labels:
del self.labels[i]
self.show_add = False
def close_dialog(self, widget, response_id):
widget.destroy()
@ -317,6 +332,9 @@ class NetworkPanel(ScreenPanel):
self.content.show_all()
def show_add_network(self, widget, ssid):
if self.show_add == True:
return
_ = self.lang.gettext
for child in self.content.get_children():
self.content.remove(child)
@ -352,9 +370,10 @@ class NetworkPanel(ScreenPanel):
self.show_create = True
self.labels['network_psk'].set_text('')
self.content.add(self.labels['add_network'])
self.content.show()
self._screen.show_keyboard()
self.labels['network_psk'].grab_focus_without_selecting()
self.content.show_all()
self.show_add = True
def update_all_networks(self):
for network in list(self.networks):

View File

@ -82,8 +82,6 @@ class PrintPanel(ScreenPanel):
scroll.add(self.dir_panels['gcodes'])
self.scroll = scroll
self.control['back'].disconnect_by_func(self._screen._menu_go_back)
self.control['back'].connect("clicked", self.back)
self.content.add(box)
self._screen.files.add_file_callback(self._callback)
@ -248,11 +246,11 @@ class PrintPanel(ScreenPanel):
if show == True:
self.dir_panels[directory].show_all()
def back(self, widget):
def back(self):
if len(self.cur_directory.split('/')) > 1:
self.change_dir(None, '/'.join(self.cur_directory.split('/')[:-1]))
else:
self._screen._menu_go_back()
return True
return False
def change_dir(self, widget, directory):
if directory not in self.dir_panels:

View File

@ -67,19 +67,17 @@ class SettingsPanel(ScreenPanel):
}
self.add_option("printers", self.printers, pname, self.printers[pname])
self.control['back'].disconnect_by_func(self._screen._menu_go_back)
self.control['back'].connect("clicked", self.back)
self.content.add(self.labels['main_box'])
def activate(self):
while len(self.menu) > 1:
self.unload_menu()
def back(self, widget):
def back(self):
if len(self.menu) > 1:
self.unload_menu()
else:
self._screen._menu_go_back()
return True
return False
def create_box(self, name, insert=None):
# Create a scroll window for the macros

View File

@ -122,6 +122,8 @@ class KlipperScreen(Gtk.Window):
self.base_panel = BasePanel(self, "Base Panel", False)
self.add(self.base_panel.get())
self.show_all()
self.base_panel.activate()
self.printer_initializing(_("Initializing"))
@ -433,7 +435,7 @@ class KlipperScreen(Gtk.Window):
logging.info("No items in menu, returning.")
return
self.show_panel(self._cur_panels[-1] + '_menu', "menu", disname, 1, False, display_name=disname,
self.show_panel(self._cur_panels[-1] + '_' + name, "menu", disname, 1, False, display_name=disname,
items=menuitems)
def _remove_all_panels(self):
@ -737,14 +739,14 @@ class KlipperScreen(Gtk.Window):
#for i in ['back','estop','home']:
# if i in cur_panel.control:
# cur_panel.control[i].set_sensitive(False)
cur_panel.get().put(box, action_bar_width, self.height - 200)
self.base_panel.get().put(box, action_bar_width, self.height - 200)
self.show_all()
keyboard.add_id(xid)
keyboard.show()
self.keyboard = {
"box": box,
"panel": cur_panel.get(),
#"panel": cur_panel.get(),
"process": p,
"socket": keyboard
}
@ -753,7 +755,7 @@ class KlipperScreen(Gtk.Window):
if self.keyboard is None:
return
self.keyboard['panel'].remove(self.keyboard['box'])
self.base_panel.get().remove(self.keyboard['box'])
os.kill(self.keyboard['process'].pid, signal.SIGTERM)
self.keyboard = None