settings: add extra large font close #798

This commit is contained in:
alfrix 2022-11-20 18:44:00 -03:00
parent fa10b00db7
commit 054523d937
6 changed files with 54 additions and 40 deletions

View File

@ -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", " "))

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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;
}