diff --git a/ks_includes/KlippyGtk.py b/ks_includes/KlippyGtk.py index a756df71..cdf7dd41 100644 --- a/ks_includes/KlippyGtk.py +++ b/ks_includes/KlippyGtk.py @@ -18,37 +18,40 @@ class KlippyGtk: self.width = width self.height = height self.themedir = os.path.join(pathlib.Path(__file__).parent.resolve().parent, "styles", theme, "images") + self.cursor = cursor + self.font_size_type = fontsize_type self.font_ratio = [33, 49] if self.screen.vertical_mode else [43, 29] - self.font_size = int(min( - self.width / self.font_ratio[0], - self.height / self.font_ratio[1] - )) - if fontsize_type == "small": - self.font_size = round(self.font_size * 0.91) + self.font_size = min(self.width / self.font_ratio[0], self.height / self.font_ratio[1]) + self.img_scale = self.font_size * 2 + if fontsize_type == "max": + self.font_size = self.font_size * 1.2 + elif fontsize_type == "extralarge": + self.font_size = self.font_size * 1.14 + self.img_scale = self.img_scale * 0.6 elif fontsize_type == "large": - self.font_size = round(self.font_size * 1.09) - self.titlebar_height = self.font_size * 2 - self.img_scale = self.font_size * 2.5 + self.font_size = self.font_size * 1.09 + self.img_scale = self.img_scale * 0.9 + elif fontsize_type == "small": + self.font_size = self.font_size * 0.91 self.img_width = self.font_size * 3 self.img_height = self.font_size * 3 + self.titlebar_height = self.font_size * 2 + logging.info(f"Font size: {self.font_size} ({fontsize_type})") + if self.screen.vertical_mode: self.action_bar_width = int(self.width) self.action_bar_height = int(self.height * .1) else: self.action_bar_width = int(self.width * .1) self.action_bar_height = int(self.height) - self.cursor = cursor self.color_list = {} # This is set by screen.py init_style() - for key in self.color_list: if "base" in self.color_list[key]: rgb = [int(self.color_list[key]['base'][i:i + 2], 16) for i in range(0, 6, 2)] self.color_list[key]['rgb'] = rgb - logging.debug(f"img width: {self.img_width} height: {self.img_height}") - def get_action_bar_width(self): return self.action_bar_width @@ -150,6 +153,8 @@ class KlippyGtk: return b def ButtonImage(self, image_name=None, label=None, style=None, scale=1.38, position=Gtk.PositionType.TOP, lines=2): + if self.font_size_type == "max" and label is not None and scale == 1.38: + image_name = None b = Gtk.Button() if label is not None: b.set_label(label.replace("\n", " ")) diff --git a/ks_includes/config.py b/ks_includes/config.py index d8edee5c..82d26447 100644 --- a/ks_includes/config.py +++ b/ks_includes/config.py @@ -241,7 +241,9 @@ class KlipperScreenConfig: "value": "medium", "callback": screen.restart_warning, "options": [ {"name": _("Small"), "value": "small"}, {"name": _("Medium") + " " + _("(default)"), "value": "medium"}, - {"name": _("Large"), "value": "large"}]}}, + {"name": _("Large"), "value": "large"}, + {"name": _("Extra Large"), "value": "extralarge"}, + {"name": _("Maximum"), "value": "max"}]}}, {"confirm_estop": {"section": "main", "name": _("Confirm Emergency Stop"), "type": "binary", "value": "False"}}, {"only_heaters": {"section": "main", "name": _("Hide sensors in Temp."), "type": "binary", @@ -486,7 +488,7 @@ class KlipperScreenConfig: f"{self.do_not_edit_line}\n" f"{self.do_not_edit_prefix}\n" + '\n'.join(save_output) + f"\n" - f"{self.do_not_edit_prefix}\n") + f"{self.do_not_edit_prefix}\n") if self.config_path != self.default_config_path: filepath = self.config_path diff --git a/panels/base_panel.py b/panels/base_panel.py index a872e2ac..9112accf 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -30,22 +30,23 @@ class BasePanel(ScreenPanel): } self.current_extruder = None # Action bar buttons - self.control['back'] = self._gtk.ButtonImage('back', scale=1) + scale = 1.5 if self._gtk.font_size_type == "extralarge" else 1 + self.control['back'] = self._gtk.ButtonImage('back', scale=scale) self.control['back'].connect("clicked", self.back) - self.control['home'] = self._gtk.ButtonImage('main', scale=1) + self.control['home'] = self._gtk.ButtonImage('main', scale=scale) self.control['home'].connect("clicked", self.menu_return, True) if len(self._config.get_printers()) > 1: - self.control['printer_select'] = self._gtk.ButtonImage('shuffle', scale=1) + self.control['printer_select'] = self._gtk.ButtonImage('shuffle', scale=scale) self.control['printer_select'].connect("clicked", self._screen.show_printer_select) - self.control['macros_shortcut'] = self._gtk.ButtonImage('custom-script', scale=1) + self.control['macros_shortcut'] = self._gtk.ButtonImage('custom-script', scale=scale) self.control['macros_shortcut'].connect("clicked", self.menu_item_clicked, "gcode_macros", { "name": "Macros", "panel": "gcode_macros" }) - self.control['estop'] = self._gtk.ButtonImage('emergency', scale=1) + self.control['estop'] = self._gtk.ButtonImage('emergency', scale=scale) self.control['estop'].connect("clicked", self.emergency_stop) # Any action bar button should close the keyboard @@ -122,7 +123,10 @@ class BasePanel(ScreenPanel): if not show or self._screen.printer.get_temp_store_devices() is None: return - img_size = self._gtk.img_scale * .5 + if self._gtk.font_size_type == "extralarge": + img_size = self._gtk.img_scale * .75 + else: + img_size = self._gtk.img_scale * .5 for device in self._screen.printer.get_temp_store_devices(): self.labels[device] = Gtk.Label(label="100ยบ") self.labels[device].set_ellipsize(Pango.EllipsizeMode.START) diff --git a/panels/job_status.py b/panels/job_status.py index 282fe372..965a287f 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -48,6 +48,7 @@ class JobStatusPanel(ScreenPanel): self.progress = self.zoffset = self.flowrate = self.vel = 0 self.main_status_displayed = True self.velstore = self.flowstore = [] + self.bt_scale = 1 if self._gtk.font_size_type == "extralarge" else .6 data = ['pos_x', 'pos_y', 'pos_z', 'time_left', 'duration', 'slicer_time', 'file_time', 'filament_time', 'est_time', 'speed_factor', 'req_speed', 'max_accel', 'extrude_factor', 'zoffset', @@ -152,8 +153,8 @@ class JobStatusPanel(ScreenPanel): if self._screen.printer.get_tools(): for i, extruder in enumerate(self._printer.get_tools()): self.labels[extruder] = Gtk.Label("-") - self.extruder_button[extruder] = self._gtk.ButtonImage(f"extruder-{i}", - None, None, .6, Gtk.PositionType.LEFT) + self.extruder_button[extruder] = self._gtk.ButtonImage(f"extruder-{i}", None, None, self.bt_scale, + Gtk.PositionType.LEFT) self.extruder_button[extruder].set_label(self.labels[extruder].get_text()) self.extruder_button[extruder].connect("clicked", self.menu_item_clicked, "temperature", {"panel": "temperature", "name": _("Temperature")}) @@ -165,8 +166,8 @@ class JobStatusPanel(ScreenPanel): self.current_extruder = None self.heater_button = {} if self._printer.has_heated_bed(): - self.heater_button['heater_bed'] = self._gtk.ButtonImage("bed", - None, None, .6, Gtk.PositionType.LEFT) + self.heater_button['heater_bed'] = self._gtk.ButtonImage("bed", None, None, self.bt_scale, + Gtk.PositionType.LEFT) self.labels['heater_bed'] = Gtk.Label("-") self.heater_button['heater_bed'].set_label(self.labels['heater_bed'].get_text()) self.heater_button['heater_bed'].connect("clicked", self.menu_item_clicked, "temperature", @@ -178,8 +179,8 @@ class JobStatusPanel(ScreenPanel): if n >= nlimit: break if device.startswith("heater_generic"): - self.heater_button[device] = self._gtk.ButtonImage("heater", - None, None, .6, Gtk.PositionType.LEFT) + self.heater_button[device] = self._gtk.ButtonImage("heater", None, None, self.bt_scale, + Gtk.PositionType.LEFT) self.labels[device] = Gtk.Label("-") self.heater_button[device].set_label(self.labels[device].get_text()) self.heater_button[device].connect("clicked", self.menu_item_clicked, "temperature", @@ -203,7 +204,7 @@ class JobStatusPanel(ScreenPanel): nlimit += 1 if n >= nlimit: break - self.heater_button[device] = self._gtk.ButtonImage("heat-up", None, None, .6, + self.heater_button[device] = self._gtk.ButtonImage("heat-up", None, None, self.bt_scale, Gtk.PositionType.LEFT) self.labels[device] = Gtk.Label("-") self.heater_button[device].set_label(self.labels[device].get_text()) @@ -214,33 +215,35 @@ class JobStatusPanel(ScreenPanel): n += 1 break - self.z_button = self._gtk.ButtonImage("home-z", None, None, .6, Gtk.PositionType.LEFT) + self.z_button = self._gtk.ButtonImage("home-z", None, None, self.bt_scale, Gtk.PositionType.LEFT) self.z_button.set_label(self.labels['pos_z'].get_text()) self.z_button.connect("clicked", self.create_move_grid) self.z_button.set_halign(Gtk.Align.START) - self.speed_button = self._gtk.ButtonImage("speed+", None, None, .6, Gtk.PositionType.LEFT) + self.speed_button = self._gtk.ButtonImage("speed+", None, None, self.bt_scale, Gtk.PositionType.LEFT) self.speed_button.set_label(self.labels['speed_factor'].get_text()) self.speed_button.connect("clicked", self.create_move_grid) self.speed_button.set_halign(Gtk.Align.START) - self.extrusion_button = self._gtk.ButtonImage("extrude", None, None, .6, Gtk.PositionType.LEFT) + self.extrusion_button = self._gtk.ButtonImage("extrude", None, None, self.bt_scale, Gtk.PositionType.LEFT) self.extrusion_button.set_label(self.labels['extrude_factor'].get_text()) self.extrusion_button.connect("clicked", self.create_extrusion_grid) self.extrusion_button.set_halign(Gtk.Align.START) - self.fan_button = self._gtk.ButtonImage("fan", None, None, .6, Gtk.PositionType.LEFT) + self.fan_button = self._gtk.ButtonImage("fan", None, None, self.bt_scale, Gtk.PositionType.LEFT) self.fan_button.set_label(self.labels['fan'].get_text()) self.fan_button.connect("clicked", self.menu_item_clicked, "fan", {"panel": "fan", "name": _("Fan")}) self.fan_button.set_halign(Gtk.Align.START) elapsed_label = self.labels['elapsed'].get_text() + " " + self.labels['duration'].get_text() - self.elapsed_button = self._gtk.ButtonImage("clock", elapsed_label, None, .6, Gtk.PositionType.LEFT, False) + self.elapsed_button = self._gtk.ButtonImage("clock", elapsed_label, None, + self.bt_scale, Gtk.PositionType.LEFT, False) self.elapsed_button.connect("clicked", self.create_time_grid) self.elapsed_button.set_halign(Gtk.Align.START) remaining_label = self.labels['left'].get_text() + " " + self.labels['time_left'].get_text() - self.left_button = self._gtk.ButtonImage("hourglass", remaining_label, None, .6, Gtk.PositionType.LEFT, False) + self.left_button = self._gtk.ButtonImage("hourglass", remaining_label, + None, self.bt_scale, Gtk.PositionType.LEFT, False) self.left_button.connect("clicked", self.create_time_grid) self.left_button.set_halign(Gtk.Align.START) @@ -262,7 +265,7 @@ class JobStatusPanel(ScreenPanel): def create_extrusion_grid(self, widget=None): self.main_status_displayed = False - goback = self._gtk.ButtonImage("back", None, "color1", .66, Gtk.PositionType.TOP, False) + goback = self._gtk.ButtonImage("back", None, "color1", self.bt_scale, Gtk.PositionType.TOP, False) goback.connect("clicked", self.create_status_grid) goback.set_hexpand(False) goback.get_style_context().add_class("printing-info") @@ -287,7 +290,7 @@ class JobStatusPanel(ScreenPanel): def create_move_grid(self, widget=None): self.main_status_displayed = False - goback = self._gtk.ButtonImage("back", None, "color2", .66, Gtk.PositionType.TOP, False) + goback = self._gtk.ButtonImage("back", None, "color2", self.bt_scale, Gtk.PositionType.TOP, False) goback.connect("clicked", self.create_status_grid) goback.set_hexpand(False) goback.get_style_context().add_class("printing-info") @@ -318,7 +321,7 @@ class JobStatusPanel(ScreenPanel): def create_time_grid(self, widget=None): self.main_status_displayed = False - goback = self._gtk.ButtonImage("back", None, "color3", .66, Gtk.PositionType.TOP, False) + goback = self._gtk.ButtonImage("back", None, "color3", self.bt_scale, Gtk.PositionType.TOP, False) goback.connect("clicked", self.create_status_grid) goback.set_hexpand(False) diff --git a/panels/temperature.py b/panels/temperature.py index 125437b4..e4fc4c52 100644 --- a/panels/temperature.py +++ b/panels/temperature.py @@ -70,7 +70,7 @@ class TemperaturePanel(ScreenPanel): def create_right_panel(self): cooldown = self._gtk.ButtonImage('cool-down', _('Cooldown'), "color4", .5, Gtk.PositionType.LEFT, 1) - adjust = self._gtk.ButtonImage('fine-tune', '', "color3", 1, Gtk.PositionType.LEFT, 1) + adjust = self._gtk.ButtonImage('fine-tune', None, "color3", 1, Gtk.PositionType.LEFT, 1) right = self._gtk.HomogeneousGrid() right.attach(cooldown, 0, 0, 2, 1) diff --git a/styles/base.css b/styles/base.css index e7658ae5..e4366bba 100644 --- a/styles/base.css +++ b/styles/base.css @@ -372,7 +372,7 @@ trough { } .printing-filename { - font-size: 1.75em; + font-size: 1.4em; font-weight: bold; margin: .25em .25em 0 0; } @@ -381,7 +381,7 @@ trough { margin-right: .25em; } .printing-info button { - margin: .15em; + margin: .1em; background-color: rgba(0, 0, 0, 0.1); border-radius: .5em; }