screen: theme doesn't need a restart anymore
This commit is contained in:
parent
a37cb967a1
commit
5abfb6f226
@ -161,6 +161,7 @@ class KlippyGtk:
|
||||
if label is not None:
|
||||
b.set_label(label.replace("\n", " "))
|
||||
if image_name is not None:
|
||||
b.set_name(image_name)
|
||||
if scale is None:
|
||||
scale = self.button_image_scale
|
||||
if label is None:
|
||||
|
@ -12,7 +12,7 @@ from ks_includes.screen_panel import ScreenPanel
|
||||
|
||||
|
||||
class BasePanel(ScreenPanel):
|
||||
def __init__(self, screen, title):
|
||||
def __init__(self, screen, title=None):
|
||||
super().__init__(screen, title)
|
||||
self.current_panel = None
|
||||
self.time_min = -1
|
||||
@ -111,6 +111,16 @@ class BasePanel(ScreenPanel):
|
||||
|
||||
self.update_time()
|
||||
|
||||
def reload_icons(self):
|
||||
button: Gtk.Button
|
||||
for button in self.action_bar.get_children():
|
||||
img = button.get_image()
|
||||
name = button.get_name()
|
||||
pixbuf = img.get_pixbuf()
|
||||
width = pixbuf.get_width()
|
||||
height = pixbuf.get_height()
|
||||
button.set_image(self._gtk.Image(name, width, height))
|
||||
|
||||
def show_heaters(self, show=True):
|
||||
try:
|
||||
for child in self.control['temp_box'].get_children():
|
||||
|
14
screen.py
14
screen.py
@ -139,9 +139,9 @@ class KlipperScreen(Gtk.Window):
|
||||
self.gtk = KlippyGtk(self)
|
||||
self.base_css = ""
|
||||
self.load_base_styles()
|
||||
self.change_theme(self.theme)
|
||||
self.set_icon_from_file(os.path.join(klipperscreendir, "styles", "icon.svg"))
|
||||
self.base_panel = BasePanel(self, title="Base Panel")
|
||||
self.base_panel = BasePanel(self)
|
||||
self.change_theme(self.theme)
|
||||
self.add(self.base_panel.main_grid)
|
||||
self.show_all()
|
||||
min_ver = (3, 8)
|
||||
@ -329,6 +329,10 @@ class KlipperScreen(Gtk.Window):
|
||||
logging.exception(f"Error attaching panel:\n{e}\n\n{traceback.format_exc()}")
|
||||
|
||||
def attach_panel(self, panel):
|
||||
if panel in self.panels_reinit:
|
||||
# this happens when the first panel needs a reinit
|
||||
self.reload_panels()
|
||||
return
|
||||
self.base_panel.add_content(self.panels[panel])
|
||||
logging.debug(f"Current panel hierarchy: {' > '.join(self._cur_panels)}")
|
||||
while len(self.panels[panel].menu) > 1:
|
||||
@ -501,6 +505,7 @@ class KlipperScreen(Gtk.Window):
|
||||
screen = Gdk.Screen.get_default()
|
||||
if self.style_provider:
|
||||
Gtk.StyleContext.remove_provider_for_screen(screen, self.style_provider)
|
||||
self.style_provider = Gtk.CssProvider()
|
||||
self.style_provider.load_from_data(css_data.encode())
|
||||
Gtk.StyleContext.add_provider_for_screen(
|
||||
screen,
|
||||
@ -516,6 +521,11 @@ class KlipperScreen(Gtk.Window):
|
||||
self.style_options.update(theme_options)
|
||||
self.gtk.color_list = self.style_options['graph_colors']
|
||||
self.update_style_provider(theme_css)
|
||||
self.reload_icon_theme()
|
||||
|
||||
def reload_icon_theme(self):
|
||||
self.panels_reinit = list(self.panels)
|
||||
self.base_panel.reload_icons()
|
||||
|
||||
def _go_to_submenu(self, widget, name):
|
||||
logging.info(f"#### Go to submenu {name}")
|
||||
|
Loading…
x
Reference in New Issue
Block a user