base_panel: Include back/home button
This commit is contained in:
parent
a0d3bd6a0c
commit
73b54f7aba
@ -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
|
||||
|
||||
|
@ -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()
|
||||
|
@ -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):
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
10
screen.py
10
screen.py
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user