diff --git a/ks_includes/KlippyGtk.py b/ks_includes/KlippyGtk.py
index af6c84ff..23d76b59 100644
--- a/ks_includes/KlippyGtk.py
+++ b/ks_includes/KlippyGtk.py
@@ -110,13 +110,6 @@ class KlippyGtk:
for key in self.color_list:
self.color_list[key]['state'] = 0
- @staticmethod
- def Label(label, style=None):
- la = Gtk.Label(label)
- if style is not None:
- la.get_style_context().add_class(style)
- return la
-
def Image(self, image_name=None, width=None, height=None):
if image_name is None:
return Gtk.Image()
@@ -158,14 +151,9 @@ class KlippyGtk:
def Button(self, image_name=None, label=None, style=None, scale=None, position=Gtk.PositionType.TOP, lines=2):
if self.font_size_type == "max" and label is not None and scale is None:
image_name = None
- b = Gtk.Button()
+ b = Gtk.Button(hexpand=True, vexpand=True, can_focus=False, image_position=position, always_show_image=True)
if label is not None:
b.set_label(label.replace("\n", " "))
- b.set_hexpand(True)
- b.set_vexpand(True)
- b.set_can_focus(False)
- b.set_image_position(position)
- b.set_always_show_image(True)
if image_name is not None:
if scale is None:
scale = self.button_image_scale
@@ -173,9 +161,7 @@ class KlippyGtk:
scale = scale * 1.4
width = height = self.img_scale * scale
b.set_image(self.Image(image_name, width, height))
- spinner = Gtk.Spinner.new()
- spinner.set_no_show_all(True)
- spinner.set_size_request(width, height)
+ spinner = Gtk.Spinner(width_request=width, height_request=height, no_show_all=True)
spinner.hide()
box = find_widget(b, Gtk.Box)
if box:
@@ -210,11 +196,8 @@ class KlippyGtk:
widget.set_sensitive(True)
def Dialog(self, title, buttons, content, callback=None, *args):
- dialog = Gtk.Dialog(title=title)
- dialog.set_resizable(False)
- dialog.set_transient_for(self.screen)
- dialog.set_modal(True)
- dialog.set_default_size(self.width, self.height)
+ dialog = Gtk.Dialog(title=title, modal=True, transient_for=self.screen,
+ default_width=self.width, default_height=self.height)
if not self.screen.windowed:
dialog.fullscreen()
@@ -238,11 +221,10 @@ class KlippyGtk:
dialog.get_style_context().add_class("dialog")
content_area = dialog.get_content_area()
- content_area.set_margin_start(5)
- content_area.set_margin_end(5)
- content_area.set_margin_top(5)
- content_area.set_margin_bottom(0)
- content.set_valign(Gtk.Align.CENTER)
+ content_area.set_margin_start(15)
+ content_area.set_margin_end(15)
+ content_area.set_margin_top(15)
+ content_area.set_margin_bottom(15)
content_area.add(content)
dialog.show_all()
@@ -268,30 +250,16 @@ class KlippyGtk:
return
logging.debug(f"Cannot remove dialog {dialog}")
- @staticmethod
- def HomogeneousGrid(width=None, height=None):
- g = Gtk.Grid()
- g.set_row_homogeneous(True)
- g.set_column_homogeneous(True)
- if width is not None and height is not None:
- g.set_size_request(width, height)
- return g
-
def ToggleButton(self, text):
- b = Gtk.ToggleButton(text)
- b.props.relief = Gtk.ReliefStyle.NONE
- b.set_hexpand(True)
- b.set_vexpand(True)
+ b = Gtk.ToggleButton(label=text, hexpand=True, vexpand=True)
b.connect("clicked", self.screen.reset_screensaver_timeout)
return b
def ScrolledWindow(self, steppers=True):
- scroll = Gtk.ScrolledWindow(vexpand=True)
- scroll.set_property("overlay-scrolling", False)
+ scroll = Gtk.ScrolledWindow(hexpand=True, vexpand=True, overlay_scrolling=False)
scroll.add_events(Gdk.EventMask.BUTTON_PRESS_MASK |
Gdk.EventMask.TOUCH_MASK |
Gdk.EventMask.BUTTON_RELEASE_MASK)
- scroll.set_kinetic_scrolling(True)
if self.screen._config.get_main_config().getboolean("show_scroll_steppers", fallback=False) and steppers:
scroll.get_vscrollbar().get_style_context().add_class("with-steppers")
return scroll
diff --git a/ks_includes/screen_panel.py b/ks_includes/screen_panel.py
index c811aeb8..aea6655b 100644
--- a/ks_includes/screen_panel.py
+++ b/ks_includes/screen_panel.py
@@ -26,10 +26,8 @@ class ScreenPanel:
self.title = title
self.devices = {}
self.active_heaters = []
- self.content = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
+ self.content = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, hexpand=True, vexpand=True)
self.content.get_style_context().add_class("content")
- self.content.set_hexpand(True)
- self.content.set_vexpand(True)
self._show_heater_power = self._config.get_main_config().getboolean('show_heater_power', False)
self.bts = self._gtk.bsidescale
diff --git a/ks_includes/widgets/keyboard.py b/ks_includes/widgets/keyboard.py
index fae107c7..e4451424 100644
--- a/ks_includes/widgets/keyboard.py
+++ b/ks_includes/widgets/keyboard.py
@@ -122,8 +122,6 @@ class Keyboard(Gtk.Box):
self.buttons[p][r][k] = screen.gtk.Button("arrow-down", scale=.6)
else:
self.buttons[p][r][k] = screen.gtk.Button(label=key, lines=1)
- self.buttons[p][r][k].set_hexpand(True)
- self.buttons[p][r][k].set_vexpand(True)
self.buttons[p][r][k].connect('button-press-event', self.repeat, key)
self.buttons[p][r][k].connect('button-release-event', self.release)
self.buttons[p][r][k].get_style_context().add_class("keyboard_pad")
diff --git a/ks_includes/widgets/keypad.py b/ks_includes/widgets/keypad.py
index 26d82282..4f029bb1 100644
--- a/ks_includes/widgets/keypad.py
+++ b/ks_includes/widgets/keypad.py
@@ -14,7 +14,7 @@ class Keypad(Gtk.Box):
self.screen = screen
self._gtk = screen.gtk
- numpad = self._gtk.HomogeneousGrid()
+ numpad = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
numpad.set_direction(Gtk.TextDirection.LTR)
numpad.get_style_context().add_class('numpad')
@@ -59,7 +59,7 @@ class Keypad(Gtk.Box):
self.add(self.labels['entry'])
self.add(numpad)
- self.bottom = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
+ self.bottom = Gtk.Box()
self.bottom.add(self.pid)
self.bottom.add(b)
self.add(self.bottom)
diff --git a/panels/base_panel.py b/panels/base_panel.py
index 6b10139b..f3d01c3f 100644
--- a/panels/base_panel.py
+++ b/panels/base_panel.py
@@ -71,20 +71,15 @@ class BasePanel(ScreenPanel):
# This box will be populated by show_heaters
self.control['temp_box'] = Gtk.Box(spacing=10)
- self.titlelbl = Gtk.Label()
- self.titlelbl.set_hexpand(True)
- self.titlelbl.set_halign(Gtk.Align.CENTER)
- self.titlelbl.set_ellipsize(Pango.EllipsizeMode.END)
+ self.titlelbl = Gtk.Label(hexpand=True, halign=Gtk.Align.CENTER, ellipsize=Pango.EllipsizeMode.END)
self.set_title(title)
self.control['time'] = Gtk.Label(label="00:00 AM")
- self.control['time_box'] = Gtk.Box()
- self.control['time_box'].set_halign(Gtk.Align.END)
+ self.control['time_box'] = Gtk.Box(halign=Gtk.Align.END)
self.control['time_box'].pack_end(self.control['time'], True, True, 10)
- self.titlebar = Gtk.Box(spacing=5)
+ self.titlebar = Gtk.Box(spacing=5, valign=Gtk.Align.CENTER)
self.titlebar.get_style_context().add_class("title_bar")
- self.titlebar.set_valign(Gtk.Align.CENTER)
self.titlebar.add(self.control['temp_box'])
self.titlebar.add(self.titlelbl)
self.titlebar.add(self.control['time_box'])
@@ -115,8 +110,7 @@ class BasePanel(ScreenPanel):
img_size = self._gtk.img_scale * self.bts
for device in devices:
- self.labels[device] = Gtk.Label()
- self.labels[device].set_ellipsize(Pango.EllipsizeMode.START)
+ self.labels[device] = Gtk.Label(ellipsize=Pango.EllipsizeMode.START)
self.labels[f'{device}_box'] = Gtk.Box()
icon = self.get_icon(device, img_size)
@@ -309,13 +303,9 @@ class BasePanel(ScreenPanel):
def show_update_dialog(self):
if self.update_dialog is not None:
return
- button = [{"name": _("Finish"), "response": Gtk.ResponseType.OK, "style": 'dialog-default'}]
- self.labels['update_progress'] = Gtk.Label()
- self.labels['update_progress'].set_halign(Gtk.Align.START)
- self.labels['update_progress'].set_valign(Gtk.Align.START)
- self.labels['update_progress'].set_ellipsize(Pango.EllipsizeMode.END)
+ button = [{"name": _("Finish"), "response": Gtk.ResponseType.OK}]
+ self.labels['update_progress'] = Gtk.Label(hexpand=True, vexpand=True, ellipsize=Pango.EllipsizeMode.END)
self.labels['update_scroll'] = self._gtk.ScrolledWindow(steppers=False)
- self.labels['update_scroll'].set_size_request(self._gtk.width - 30, self._gtk.height * .6)
self.labels['update_scroll'].set_property("overlay-scrolling", True)
self.labels['update_scroll'].add(self.labels['update_progress'])
self.labels['update_scroll'].connect("size-allocate", self._autoscroll)
diff --git a/panels/bed_level.py b/panels/bed_level.py
index 5b552d5c..ae98cd40 100644
--- a/panels/bed_level.py
+++ b/panels/bed_level.py
@@ -52,7 +52,7 @@ class Panel(ScreenPanel):
self.horizontal_move_z = 5
self.horizontal_speed = 50
- grid = self._gtk.HomogeneousGrid()
+ grid = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
grid.attach(self.buttons['dm'], 0, 0, 1, 1)
if "screws_tilt_adjust" in self._printer.get_config_section_list():
@@ -188,12 +188,11 @@ class Panel(ScreenPanel):
bedgrid.attach(self.buttons['center'], 2, 1, 1, 1)
self.buttons['center'].connect("clicked", self.go_to_position, center)
else:
- label = Gtk.Label(
+ label = Gtk.Label(wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
+ label.set_text(
_("Bed screw configuration:") + f" {nscrews}\n\n"
+ _("Not supported for auto-detection, it needs to be configured in klipperscreen.conf")
)
- label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
- label.set_line_wrap(True)
grid.attach(label, 1, 0, 3, 2)
self.content.add(grid)
return
diff --git a/panels/bed_mesh.py b/panels/bed_mesh.py
index e905675d..c9047846 100644
--- a/panels/bed_mesh.py
+++ b/panels/bed_mesh.py
@@ -22,31 +22,23 @@ class Panel(ScreenPanel):
'clear': self._gtk.Button("cancel", " " + _("Clear"), "color2", self.bts, Gtk.PositionType.LEFT, 1),
}
self.buttons['add'].connect("clicked", self.show_create_profile)
- self.buttons['add'].set_hexpand(True)
self.buttons['clear'].connect("clicked", self.send_clear_mesh)
- self.buttons['clear'].set_hexpand(True)
self.buttons['calib'].connect("clicked", self.calibrate_mesh)
- self.buttons['calib'].set_hexpand(True)
- topbar = Gtk.Box(spacing=5)
- topbar.set_hexpand(True)
- topbar.set_vexpand(False)
+ topbar = Gtk.Box(spacing=5, hexpand=True, vexpand=False)
topbar.add(self.buttons['add'])
topbar.add(self.buttons['clear'])
topbar.add(self.buttons['calib'])
# Create a grid for all profiles
- self.labels['profiles'] = Gtk.Grid()
- self.labels['profiles'].set_valign(Gtk.Align.CENTER)
+ self.labels['profiles'] = Gtk.Grid(valign=Gtk.Align.CENTER)
scroll = self._gtk.ScrolledWindow()
scroll.add(self.labels['profiles'])
- scroll.set_vexpand(True)
self.load_meshes()
- grid = self._gtk.HomogeneousGrid()
- grid.set_row_homogeneous(False)
+ grid = Gtk.Grid(column_homogeneous=True)
grid.attach(topbar, 0, 0, 2, 1)
self.labels['map'] = BedMap(self._gtk.font_size, self.active_mesh)
if self._screen.vertical_mode:
@@ -130,12 +122,12 @@ class Panel(ScreenPanel):
b.set_vexpand(False)
b.set_halign(Gtk.Align.END)
- button_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
+ button_box = Gtk.Box(spacing=5)
if profile != "default":
button_box.add(buttons["save"])
button_box.add(buttons["delete"])
- box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
+ box = Gtk.Box(spacing=5)
box.get_style_context().add_class("frame-item")
box.pack_start(name, True, True, 0)
box.pack_start(button_box, False, False, 0)
@@ -213,11 +205,8 @@ class Panel(ScreenPanel):
self.content.remove(child)
if "create_profile" not in self.labels:
- pl = self._gtk.Label(_("Profile Name:"))
- pl.set_hexpand(False)
- self.labels['profile_name'] = Gtk.Entry()
- self.labels['profile_name'].set_text('')
- self.labels['profile_name'].set_hexpand(True)
+ pl = Gtk.Label(label=_("Profile Name:"), hexpand=False)
+ self.labels['profile_name'] = Gtk.Entry(hexpand=True, text='')
self.labels['profile_name'].connect("activate", self.create_profile)
self.labels['profile_name'].connect("focus-in-event", self._screen.show_keyboard)
@@ -229,10 +218,8 @@ class Panel(ScreenPanel):
box.pack_start(self.labels['profile_name'], True, True, 5)
box.pack_start(save, False, False, 5)
- self.labels['create_profile'] = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5)
- self.labels['create_profile'].set_valign(Gtk.Align.CENTER)
- self.labels['create_profile'].set_hexpand(True)
- self.labels['create_profile'].set_vexpand(True)
+ self.labels['create_profile'] = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5,
+ valign=Gtk.Align.CENTER, hexpand=True, vexpand=True)
self.labels['create_profile'].pack_start(pl, True, True, 5)
self.labels['create_profile'].pack_start(box, True, True, 5)
@@ -243,7 +230,7 @@ class Panel(ScreenPanel):
def create_profile(self, widget):
name = self.labels['profile_name'].get_text()
if self.active_mesh is None:
- self.calibrate_mesh(None)
+ self.calibrate_mesh(widget)
self._screen._send_action(widget, "printer.gcode.script", {"script": f"BED_MESH_PROFILE SAVE={name}"})
self.remove_create()
diff --git a/panels/console.py b/panels/console.py
index 3618a055..f026564c 100644
--- a/panels/console.py
+++ b/panels/console.py
@@ -37,33 +37,23 @@ class Panel(ScreenPanel):
o3_button.get_style_context().add_class("buttons_slim")
o3_button.connect("clicked", self.clear)
- options = Gtk.Grid()
- options.set_vexpand(False)
+ options = Gtk.Grid(vexpand=False)
options.attach(o1_button, 0, 0, 1, 1)
options.attach(o2_button, 1, 0, 1, 1)
options.attach(o3_button, 2, 0, 1, 1)
- sw = Gtk.ScrolledWindow()
- sw.set_hexpand(True)
- sw.set_vexpand(True)
+ sw = Gtk.ScrolledWindow(hexpand=True, vexpand=True)
tb = Gtk.TextBuffer()
- tv = Gtk.TextView()
- tv.set_buffer(tb)
- tv.set_editable(False)
- tv.set_cursor_visible(False)
+ tv = Gtk.TextView(buffer=tb, editable=False, cursor_visible=False)
tv.connect("size-allocate", self._autoscroll)
tv.connect("focus-in-event", self._screen.remove_keyboard)
sw.add(tv)
- ebox = Gtk.Box()
- ebox.set_hexpand(True)
- ebox.set_vexpand(False)
+ ebox = Gtk.Box(hexpand=True, vexpand=False)
- entry = Gtk.Entry()
- entry.set_hexpand(True)
- entry.set_vexpand(False)
+ entry = Gtk.Entry(hexpand=True, vexpand=False)
entry.connect("button-press-event", self._screen.show_keyboard)
entry.connect("focus-in-event", self._screen.show_keyboard)
entry.connect("activate", self._send_command)
diff --git a/panels/exclude.py b/panels/exclude.py
index f0d92f73..040c8f16 100644
--- a/panels/exclude.py
+++ b/panels/exclude.py
@@ -11,9 +11,7 @@ class Panel(ScreenPanel):
def __init__(self, screen, title):
super().__init__(screen, title)
self._screen = screen
- self.object_list = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
- self.object_list.set_valign(Gtk.Align.CENTER)
- self.object_list.set_halign(Gtk.Align.START)
+ self.object_list = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, hexpand=True, vexpand=True)
self.buttons = {}
self.current_object = self._gtk.Button("extrude", "", scale=self.bts, position=Gtk.PositionType.LEFT, lines=1)
self.current_object.connect("clicked", self.exclude_current)
@@ -28,10 +26,8 @@ class Panel(ScreenPanel):
scroll = self._gtk.ScrolledWindow()
scroll.add(self.object_list)
- scroll.set_halign(Gtk.Align.CENTER)
- grid = self._gtk.HomogeneousGrid()
- grid.set_row_homogeneous(False)
+ grid = Gtk.Grid(column_homogeneous=True)
grid.attach(self.current_object, 0, 0, 2, 1)
grid.attach(Gtk.Separator(), 0, 1, 2, 1)
@@ -40,14 +36,11 @@ class Panel(ScreenPanel):
if self._screen.vertical_mode:
grid.attach(self.labels['map'], 0, 2, 2, 1)
grid.attach(scroll, 0, 3, 2, 1)
- scroll.set_size_request(self._gtk.content_width - 30, -1)
else:
grid.attach(self.labels['map'], 0, 2, 1, 1)
grid.attach(scroll, 1, 2, 1, 1)
- scroll.set_size_request(self._gtk.content_width / 2 - 30, -1)
else:
grid.attach(scroll, 0, 2, 2, 1)
- scroll.set_size_request(self._gtk.content_width - 30, -1)
self.content.add(grid)
self.content.show_all()
diff --git a/panels/extrude.py b/panels/extrude.py
index 949692ca..7d4825c3 100644
--- a/panels/extrude.py
+++ b/panels/extrude.py
@@ -53,7 +53,7 @@ class Panel(ScreenPanel):
"name": "Spoolman",
"panel": "spoolman"
})
- extgrid = self._gtk.HomogeneousGrid()
+ extgrid = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
limit = 5
i = 0
for extruder in self._printer.get_tools():
@@ -116,35 +116,26 @@ class Panel(ScreenPanel):
speedbox.add(speedgrid)
filament_sensors = self._printer.get_filament_sensors()
- sensors = Gtk.Grid()
- sensors.set_size_request(self._gtk.content_width - 30, -1)
+ sensors = Gtk.Grid(valign=Gtk.Align.CENTER, row_spacing=5, column_spacing=5)
if len(filament_sensors) > 0:
- sensors.set_column_spacing(5)
- sensors.set_row_spacing(5)
- sensors.set_halign(Gtk.Align.CENTER)
- sensors.set_valign(Gtk.Align.CENTER)
for s, x in enumerate(filament_sensors):
if s > limit:
break
name = x[23:].strip()
self.labels[x] = {
- 'label': Gtk.Label(self.prettify(name)),
- 'switch': Gtk.Switch(),
+ 'label': Gtk.Label(label=self.prettify(name), hexpand=True, halign=Gtk.Align.CENTER,
+ ellipsize=Pango.EllipsizeMode.END),
+ 'switch': Gtk.Switch(width_request=round(self._gtk.font_size * 2),
+ height_request=round(self._gtk.font_size)),
'box': Gtk.Box()
}
- self.labels[x]['label'].set_halign(Gtk.Align.CENTER)
- self.labels[x]['label'].set_hexpand(True)
- self.labels[x]['label'].set_ellipsize(Pango.EllipsizeMode.END)
- self.labels[x]['switch'].set_property("width-request", round(self._gtk.font_size * 2))
- self.labels[x]['switch'].set_property("height-request", round(self._gtk.font_size))
self.labels[x]['switch'].connect("notify::active", self.enable_disable_fs, name, x)
self.labels[x]['box'].pack_start(self.labels[x]['label'], True, True, 10)
self.labels[x]['box'].pack_start(self.labels[x]['switch'], False, False, 0)
self.labels[x]['box'].get_style_context().add_class("filament_sensor")
sensors.attach(self.labels[x]['box'], s, 0, 1, 1)
- grid = Gtk.Grid()
- grid.set_column_homogeneous(True)
+ grid = Gtk.Grid(column_homogeneous=True)
grid.attach(extgrid, 0, 0, 4, 1)
if self._screen.vertical_mode:
diff --git a/panels/fan.py b/panels/fan.py
index 28c4b10f..ec167170 100644
--- a/panels/fan.py
+++ b/panels/fan.py
@@ -15,8 +15,7 @@ class Panel(ScreenPanel):
self.fan_speed = {}
self.devices = {}
# Create a grid for all devices
- self.labels['devices'] = Gtk.Grid()
- self.labels['devices'].set_valign(Gtk.Align.CENTER)
+ self.labels['devices'] = Gtk.Grid(valign=Gtk.Align.CENTER)
self.load_fans()
@@ -54,17 +53,12 @@ class Panel(ScreenPanel):
logging.info(f"Adding fan: {fan}")
changeable = any(fan.startswith(x) or fan == x for x in CHANGEABLE_FANS)
- name = Gtk.Label()
+ name = Gtk.Label(halign=Gtk.Align.START, valign=Gtk.Align.CENTER, hexpand=True, vexpand=True,
+ wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
fan_name = _("Part Fan") if fan == "fan" else fan.split()[1]
name.set_markup(f"\n{fan_name}\n")
- name.set_hexpand(True)
- name.set_vexpand(True)
- name.set_halign(Gtk.Align.START)
- name.set_valign(Gtk.Align.CENTER)
- name.set_line_wrap(True)
- name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
- fan_col = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
+ fan_col = Gtk.Box(spacing=5)
stop_btn = self._gtk.Button("cancel", None, "color1")
stop_btn.set_hexpand(False)
stop_btn.connect("clicked", self.update_fan_speed, fan, 0)
@@ -75,7 +69,7 @@ class Panel(ScreenPanel):
speed = float(self._printer.get_fan_speed(fan))
if changeable:
speed = round(speed * 100)
- scale = Gtk.Scale.new_with_range(orientation=Gtk.Orientation.HORIZONTAL, min=0, max=100, step=1)
+ scale = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL, min=0, max=100, step=1)
scale.set_value(speed)
scale.set_digits(0)
scale.set_hexpand(True)
@@ -86,10 +80,7 @@ class Panel(ScreenPanel):
fan_col.add(scale)
fan_col.add(max_btn)
else:
- scale = Gtk.ProgressBar()
- scale.set_fraction(speed)
- scale.set_show_text(True)
- scale.set_hexpand(True)
+ scale = Gtk.ProgressBar(hexpand=True, show_text=True, fraction=speed)
fan_col.pack_start(scale, True, True, 10)
fan_row = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
diff --git a/panels/fine_tune.py b/panels/fine_tune.py
index 5b323031..d198637c 100644
--- a/panels/fine_tune.py
+++ b/panels/fine_tune.py
@@ -72,8 +72,7 @@ class Panel(ScreenPanel):
if i == self.e_delta:
ctx.add_class("distbutton_active")
extgrid.attach(self.labels[f"edelta{i}"], j, 0, 1, 1)
- grid = self._gtk.HomogeneousGrid()
- grid.set_row_homogeneous(False)
+ grid = Gtk.Grid(column_homogeneous=True)
self.labels['z+'] = self._gtk.Button("z-farther", "Z+", "color1")
self.labels['z-'] = self._gtk.Button("z-closer", "Z-", "color1")
diff --git a/panels/gcode_macros.py b/panels/gcode_macros.py
index 0615025b..f1c693a2 100644
--- a/panels/gcode_macros.py
+++ b/panels/gcode_macros.py
@@ -24,8 +24,7 @@ class Panel(ScreenPanel):
adjust.connect("clicked", self.load_menu, 'options', _("Settings"))
adjust.set_hexpand(False)
- sbox = Gtk.Box()
- sbox.set_vexpand(False)
+ sbox = Gtk.Box(vexpand=False)
sbox.pack_start(self.sort_btn, True, True, 5)
sbox.pack_start(adjust, True, True, 5)
@@ -33,8 +32,7 @@ class Panel(ScreenPanel):
self.labels['macros'] = Gtk.Grid()
self.labels['macros_list'].add(self.labels['macros'])
- self.labels['macros_menu'] = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
- self.labels['macros_menu'].set_vexpand(True)
+ self.labels['macros_menu'] = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, vexpand=True)
self.labels['macros_menu'].pack_start(sbox, False, False, 0)
self.labels['macros_menu'].pack_start(self.labels['macros_list'], True, True, 0)
@@ -61,14 +59,9 @@ class Panel(ScreenPanel):
else:
logging.debug(f"Couldn't load {macro}\n{section}")
return
- name = Gtk.Label()
+ name = Gtk.Label(hexpand=True, vexpand=True, halign=Gtk.Align.START, valign=Gtk.Align.CENTER,
+ wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
name.set_markup(f"{macro}")
- name.set_hexpand(True)
- name.set_vexpand(True)
- name.set_halign(Gtk.Align.START)
- name.set_valign(Gtk.Align.CENTER)
- name.set_line_wrap(True)
- name.set_line_wrap_mode(Pango.WrapMode.CHAR)
btn = self._gtk.Button("resume", style="color3")
btn.connect("clicked", self.run_gcode_macro, macro)
@@ -151,31 +144,20 @@ class Panel(ScreenPanel):
self.labels['macros'].show_all()
def add_option(self, boxname, opt_array, opt_name, option):
- name = Gtk.Label()
+ name = Gtk.Label(hexpand=True, vexpand=True, halign=Gtk.Align.START, valign=Gtk.Align.CENTER,
+ wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
name.set_markup(f"{option['name']}")
- name.set_hexpand(True)
- name.set_vexpand(True)
- name.set_halign(Gtk.Align.START)
- name.set_valign(Gtk.Align.CENTER)
- name.set_line_wrap(True)
- name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
- box = Gtk.Box()
- box.set_vexpand(False)
- switch = Gtk.Switch()
- switch.set_hexpand(False)
- switch.set_vexpand(False)
- switch.set_active(self._config.get_config().getboolean(option['section'], opt_name, fallback=True))
+ box = Gtk.Box(vexpand=False)
+ switch = Gtk.Switch(hexpand=False, vexpand=False,
+ width_request=round(self._gtk.font_size * 7),
+ height_request=round(self._gtk.font_size * 3.5),
+ active=self._config.get_config().getboolean(option['section'], opt_name, fallback=True))
switch.connect("notify::active", self.switch_config_option, option['section'], opt_name)
- switch.set_property("width-request", round(self._gtk.font_size * 7))
- switch.set_property("height-request", round(self._gtk.font_size * 3.5))
box.add(switch)
- dev = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
+ dev = Gtk.Box(hexpand=True, vexpand=False, valign=Gtk.Align.CENTER)
dev.get_style_context().add_class("frame-item")
- dev.set_hexpand(True)
- dev.set_vexpand(False)
- dev.set_valign(Gtk.Align.CENTER)
dev.add(name)
dev.add(box)
diff --git a/panels/input_shaper.py b/panels/input_shaper.py
index d55ae8a7..917236c5 100644
--- a/panels/input_shaper.py
+++ b/panels/input_shaper.py
@@ -22,50 +22,35 @@ class Panel(ScreenPanel):
self.calibrate_btn = self._gtk.Button("move", _('Finding ADXL'), "color1", lines=1)
self.calibrate_btn.connect("clicked", self.on_popover_clicked)
self.calibrate_btn.set_sensitive(False)
- self.status = Gtk.Label()
- self.status.set_hexpand(True)
- self.status.set_vexpand(False)
- self.status.set_halign(Gtk.Align.START)
- self.status.set_ellipsize(Pango.EllipsizeMode.END)
+ self.status = Gtk.Label(hexpand=True, vexpand=False, halign=Gtk.Align.START, ellipsize=Pango.EllipsizeMode.END)
self.calibrating_axis = None
self.calibrating_axis = None
- auto_calibration_label = Gtk.Label()
+ auto_calibration_label = Gtk.Label(hexpand=True)
auto_calibration_label.set_markup('Auto Calibration')
- auto_calibration_label.set_hexpand(True)
auto_grid = Gtk.Grid()
auto_grid.attach(auto_calibration_label, 0, 0, 1, 1)
auto_grid.attach(self.calibrate_btn, 1, 0, 1, 1)
- manual_calibration_label = Gtk.Label()
+ manual_calibration_label = Gtk.Label(vexpand=True)
manual_calibration_label.set_markup('Manual Calibration')
- manual_calibration_label.set_vexpand(True)
- disclaimer = Gtk.Label()
+ disclaimer = Gtk.Label(wrap=True, halign=Gtk.Align.CENTER)
disclaimer.set_markup('NOTE: Edit your printer.cfg to save manual calibration changes.')
- disclaimer.set_line_wrap(True)
- disclaimer.set_halign(Gtk.Align.CENTER)
input_grid = Gtk.Grid()
input_grid.attach(manual_calibration_label, 0, 0, 3, 1)
input_grid.attach(disclaimer, 0, 1, 3, 1)
for i, dim_freq in enumerate(XY_FREQ):
- axis_lbl = Gtk.Label()
+ axis_lbl = Gtk.Label(hexpand=False, vexpand=True, halign=Gtk.Align.START, valign=Gtk.Align.CENTER,
+ wrap=True)
axis_lbl.set_markup(f"{dim_freq['name']}")
- axis_lbl.set_hexpand(False)
- axis_lbl.set_vexpand(True)
- axis_lbl.set_halign(Gtk.Align.START)
- axis_lbl.set_valign(Gtk.Align.CENTER)
- axis_lbl.set_line_wrap(True)
self.freq_xy_adj[dim_freq['config']] = Gtk.Adjustment(0, dim_freq['min'], dim_freq['max'], 0.1)
- scale = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL, adjustment=self.freq_xy_adj[dim_freq['config']])
- scale.set_digits(1)
- scale.set_hexpand(True)
- scale.set_valign(Gtk.Align.END)
- scale.set_has_origin(True)
+ scale = Gtk.Scale(adjustment=self.freq_xy_adj[dim_freq['config']],
+ digits=1, hexpand=True, valign=Gtk.Align.END, has_origin=True)
scale.get_style_context().add_class("option_slider")
scale.connect("button-release-event", self.set_opt_value, dim_freq['config'])
diff --git a/panels/job_status.py b/panels/job_status.py
index 62e48f54..6d519f38 100644
--- a/panels/job_status.py
+++ b/panels/job_status.py
@@ -16,8 +16,7 @@ from ks_includes.KlippyGtk import find_widget
class Panel(ScreenPanel):
def __init__(self, screen, title):
super().__init__(screen, title)
- self.grid = self._gtk.HomogeneousGrid()
- self.grid.set_row_homogeneous(False)
+ self.grid = Gtk.Grid(column_homogeneous=True)
self.pos_z = 0.0
self.extrusion = 100
self.speed_factor = 1.0
@@ -47,9 +46,7 @@ class Panel(ScreenPanel):
'flowrate']
for item in data:
- self.labels[item] = Gtk.Label(label="-")
- self.labels[item].set_vexpand(True)
- self.labels[item].set_hexpand(True)
+ self.labels[item] = Gtk.Label(label="-", hexpand=True, vexpand=True)
self.labels['left'] = Gtk.Label(_("Left:"))
self.labels['elapsed'] = Gtk.Label(_("Elapsed:"))
@@ -83,9 +80,8 @@ class Panel(ScreenPanel):
"speed": "-"
}
- self.labels['file'] = Gtk.Label(label="Filename")
+ self.labels['file'] = Gtk.Label(label="Filename", hexpand=True)
self.labels['file'].get_style_context().add_class("printing-filename")
- self.labels['file'].set_hexpand(True)
self.labels['status'] = Gtk.Label(label="Status")
self.labels['status'].get_style_context().add_class("printing-status")
self.labels['lcdmessage'] = Gtk.Label()
@@ -104,14 +100,12 @@ class Panel(ScreenPanel):
self.labels['darea'] = Gtk.DrawingArea()
self.labels['darea'].connect("draw", self.on_draw)
- box = Gtk.Box()
- box.set_halign(Gtk.Align.CENTER)
+ box = Gtk.Box(halign=Gtk.Align.CENTER)
self.labels['progress_text'] = Gtk.Label(label="0%")
self.labels['progress_text'].get_style_context().add_class("printing-progress-text")
box.add(self.labels['progress_text'])
- overlay = Gtk.Overlay()
- overlay.set_hexpand(True)
+ overlay = Gtk.Overlay(hexpand=True)
overlay.add(self.labels['darea'])
overlay.add_overlay(box)
self.grid.attach(overlay, 0, 0, 1, 1)
@@ -128,8 +122,7 @@ class Panel(ScreenPanel):
self.buttons = {}
self.create_buttons()
- self.buttons['button_grid'] = self._gtk.HomogeneousGrid()
- self.buttons['button_grid'].set_vexpand(False)
+ self.buttons['button_grid'] = Gtk.Grid(row_homogeneous=True, column_homogeneous=True, vexpand=False)
self.grid.attach(self.buttons['button_grid'], 0, 3, 4, 1)
self.create_status_grid()
@@ -223,8 +216,7 @@ class Panel(ScreenPanel):
n += 1
break
- szfe = Gtk.Grid()
- szfe.set_column_homogeneous(True)
+ szfe = Gtk.Grid(column_homogeneous=True)
szfe.attach(self.buttons['speed'], 0, 0, 3, 1)
szfe.attach(self.buttons['z'], 2, 0, 2, 1)
if self._printer.get_tools():
@@ -232,8 +224,7 @@ class Panel(ScreenPanel):
if self._printer.get_fans():
szfe.attach(self.buttons['fan'], 2, 1, 2, 1)
- info = Gtk.Grid()
- info.set_row_homogeneous(True)
+ info = Gtk.Grid(row_homogeneous=True)
info.get_style_context().add_class("printing-info")
info.attach(self.labels['temp_grid'], 0, 0, 1, 1)
info.attach(szfe, 0, 1, 1, 2)
@@ -247,10 +238,7 @@ class Panel(ScreenPanel):
goback.set_hexpand(False)
goback.get_style_context().add_class("printing-info")
- info = Gtk.Grid()
- info.set_hexpand(True)
- info.set_vexpand(True)
- info.set_halign(Gtk.Align.START)
+ info = Gtk.Grid(hexpand=True, vexpand=True, halign=Gtk.Align.START)
info.get_style_context().add_class("printing-info-secondary")
info.attach(goback, 0, 0, 1, 6)
info.attach(self.labels['flow'], 1, 0, 1, 1)
@@ -277,10 +265,7 @@ class Panel(ScreenPanel):
pos_box.add(self.labels['pos_y'])
pos_box.add(self.labels['pos_z'])
- info = Gtk.Grid()
- info.set_hexpand(True)
- info.set_vexpand(True)
- info.set_halign(Gtk.Align.START)
+ info = Gtk.Grid(hexpand=True, vexpand=True, halign=Gtk.Align.START)
info.get_style_context().add_class("printing-info-secondary")
info.attach(goback, 0, 0, 1, 6)
info.attach(self.labels['speed_lbl'], 1, 0, 1, 1)
@@ -383,7 +368,7 @@ class Panel(ScreenPanel):
def save_offset(self, widget, device):
sign = "+" if self.zoffset > 0 else "-"
- label = Gtk.Label()
+ label = Gtk.Label(hexpand=True, vexpand=True, wrap=True)
if device == "probe":
probe = self._printer.get_probe()
saved_z_offset = probe['z_offset'] if probe else "?"
@@ -392,20 +377,12 @@ class Panel(ScreenPanel):
+ _("Saved offset: %s") % saved_z_offset)
elif device == "endstop":
label.set_label(_("Apply %s%.3f offset to Endstop?") % (sign, abs(self.zoffset)))
- label.set_hexpand(True)
- label.set_halign(Gtk.Align.CENTER)
- label.set_vexpand(True)
- label.set_valign(Gtk.Align.CENTER)
- label.set_line_wrap(True)
- label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
- grid = self._gtk.HomogeneousGrid()
- grid.attach(label, 0, 0, 1, 1)
buttons = [
{"name": _("Apply"), "response": Gtk.ResponseType.APPLY, "style": 'dialog-default'},
{"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL, "style": 'dialog-error'}
]
- self._gtk.Dialog(_("Save Z"), buttons, grid, self.save_confirm, device)
+ self._gtk.Dialog(_("Save Z"), buttons, label, self.save_confirm, device)
def save_confirm(self, dialog, response_id, device):
self._gtk.remove_dialog(dialog)
@@ -443,14 +420,8 @@ class Panel(ScreenPanel):
]
if len(self._printer.get_stat("exclude_object", "objects")) > 1:
buttons.insert(0, {"name": _("Exclude Object"), "response": Gtk.ResponseType.APPLY})
- label = Gtk.Label()
+ label = Gtk.Label(hexpand=True, vexpand=True, wrap=True)
label.set_markup(_("Are you sure you wish to cancel this print?"))
- label.set_hexpand(True)
- label.set_halign(Gtk.Align.CENTER)
- label.set_vexpand(True)
- label.set_valign(Gtk.Align.CENTER)
- label.set_line_wrap(True)
- label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
self._gtk.Dialog(_("Cancel"), buttons, label, self.cancel_confirm)
def cancel_confirm(self, dialog, response_id):
@@ -780,15 +751,12 @@ class Panel(ScreenPanel):
buttons = [
{"name": _("Close"), "response": Gtk.ResponseType.CANCEL}
]
- height = self._screen.height * .9 - self._gtk.font_size * 7.5
- pixbuf = self.get_file_image(self.filename, self._screen.width * .9, height)
+ pixbuf = self.get_file_image(self.filename, self._screen.width * .9, self._screen.height * .75)
if pixbuf is None:
return
image = Gtk.Image.new_from_pixbuf(pixbuf)
- box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
- box.add(image)
- box.set_vexpand(True)
- self._gtk.Dialog(self.filename, buttons, box, self.close_fullscreen_thumbnail)
+ image.set_vexpand(True)
+ self._gtk.Dialog(self.filename, buttons, image, self.close_fullscreen_thumbnail)
def close_fullscreen_thumbnail(self, dialog, response_id):
self._gtk.remove_dialog(dialog)
diff --git a/panels/led.py b/panels/led.py
index 698a0045..ee5f11fd 100644
--- a/panels/led.py
+++ b/panels/led.py
@@ -16,8 +16,8 @@ class Panel(ScreenPanel):
self.preview = Gtk.DrawingArea(width_request=self.da_size, height_request=self.da_size)
self.preview.set_size_request(-1, self.da_size * 2)
self.preview.connect("draw", self.on_draw)
- self.preview_label = Gtk.Label(label='')
- self.preset_list = self._gtk.HomogeneousGrid()
+ self.preview_label = Gtk.Label()
+ self.preset_list = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
self.color_data = [0, 0, 0, 0]
self.color_order = 'RGBW'
self.presets = {"off": [0.0, 0.0, 0.0, 0.0]}
@@ -61,7 +61,7 @@ class Panel(ScreenPanel):
def led_selector(self):
self.current_led = None
columns = 3 if self._screen.vertical_mode else 4
- grid = self._gtk.HomogeneousGrid()
+ grid = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
for i, led in enumerate(self.leds):
name = led.split()[1] if len(led.split()) > 1 else led
button = self._gtk.Button(None, name.upper(), style=f"color{(i % 4) + 1}")
@@ -75,7 +75,7 @@ class Panel(ScreenPanel):
logging.info(led)
self.current_led = led
self.set_title(f"{self.current_led}")
- grid = self._gtk.HomogeneousGrid()
+ grid = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
self.color_order = self._printer.get_led_color_order(led)
if self.color_order is None:
logging.error("Error: Color order is None")
@@ -83,7 +83,7 @@ class Panel(ScreenPanel):
return
on = [1 if self.color_available(i) else 0 for i in range(4)]
self.presets["on"] = on
- scale_grid = self._gtk.HomogeneousGrid()
+ scale_grid = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
for idx, col_value in enumerate(self.color_data):
if not self.color_available(idx):
continue
@@ -95,7 +95,7 @@ class Panel(ScreenPanel):
button.set_image(preview)
button.connect("clicked", self.apply_preset, color)
button.set_hexpand(False)
- scale = Gtk.Scale.new_with_range(orientation=Gtk.Orientation.HORIZONTAL, min=0, max=255, step=1)
+ scale = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL, min=0, max=255, step=1)
scale.set_value(round(col_value * 255))
scale.set_digits(0)
scale.set_hexpand(True)
@@ -126,10 +126,9 @@ class Panel(ScreenPanel):
scroll = self._gtk.ScrolledWindow()
scroll.add(self.preset_list)
- preview_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
+ preview_box = Gtk.Box(homogeneous=True)
preview_box.add(self.preview_label)
preview_box.add(self.preview)
- preview_box.set_homogeneous(True)
box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
box.add(preview_box)
box.add(scroll)
diff --git a/panels/limits.py b/panels/limits.py
index 2c81c5b8..bd8ac996 100644
--- a/panels/limits.py
+++ b/panels/limits.py
@@ -69,21 +69,14 @@ class Panel(ScreenPanel):
def add_option(self, option, optname, units, value):
logging.info(f"Adding option: {option}")
- name = Gtk.Label()
+ name = Gtk.Label(hexpand=True, vexpand=True, halign=Gtk.Align.START, valign=Gtk.Align.CENTER,
+ wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
name.set_markup(f"{optname} ({units})")
- name.set_hexpand(True)
- name.set_vexpand(True)
- name.set_halign(Gtk.Align.START)
- name.set_valign(Gtk.Align.CENTER)
- name.set_line_wrap(True)
- name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
# adj (value, lower, upper, step_increment, page_increment, page_size)
adj = Gtk.Adjustment(value, 1, (value * 1.5), 1, 5, 0)
- scale = Gtk.Scale.new(orientation=Gtk.Orientation.HORIZONTAL, adjustment=adj)
- scale.set_digits(0)
- scale.set_hexpand(True)
- scale.set_has_origin(True)
+ scale = Gtk.Scale(adjustment=adj,
+ digits=0, hexpand=True, has_origin=True)
scale.get_style_context().add_class("option_slider")
scale.connect("button-release-event", self.set_opt_value, option)
self.values[option] = value
diff --git a/panels/main_menu.py b/panels/main_menu.py
index 46a1f29b..7f2bab0e 100644
--- a/panels/main_menu.py
+++ b/panels/main_menu.py
@@ -16,9 +16,7 @@ class Panel(MenuPanel):
self.graph_update = None
self.active_heater = None
self.h = self.f = 0
- self.main_menu = self._gtk.HomogeneousGrid()
- self.main_menu.set_hexpand(True)
- self.main_menu.set_vexpand(True)
+ self.main_menu = Gtk.Grid(row_homogeneous=True, column_homogeneous=True, hexpand=True, vexpand=True)
scroll = self._gtk.ScrolledWindow()
self.numpad_visible = False
@@ -215,26 +213,24 @@ class Panel(MenuPanel):
def create_left_panel(self):
- self.labels['devices'] = Gtk.Grid()
+ self.labels['devices'] = Gtk.Grid(vexpand=False)
self.labels['devices'].get_style_context().add_class('heater-grid')
- self.labels['devices'].set_vexpand(False)
name = Gtk.Label()
- temp = Gtk.Label(_("Temp (°C)"))
+ temp = Gtk.Label(label=_("Temp (°C)"))
temp.get_style_context().add_class("heater-grid-temp")
self.labels['devices'].attach(name, 0, 0, 1, 1)
self.labels['devices'].attach(temp, 1, 0, 1, 1)
self.labels['da'] = HeaterGraph(self._printer, self._gtk.font_size)
- self.labels['da'].set_vexpand(True)
scroll = self._gtk.ScrolledWindow(steppers=False)
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
scroll.get_style_context().add_class('heater-list')
scroll.add(self.labels['devices'])
- self.left_panel = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
+ self.left_panel = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.left_panel.add(scroll)
for d in self._printer.get_temp_devices():
diff --git a/panels/menu.py b/panels/menu.py
index 5356cd3a..344d3306 100644
--- a/panels/menu.py
+++ b/panels/menu.py
@@ -15,7 +15,7 @@ class Panel(ScreenPanel):
self.items = items
self.j2_data = self._printer.get_printer_status_data()
self.create_menu_items()
- self.grid = self._gtk.HomogeneousGrid()
+ self.grid = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
self.scroll = self._gtk.ScrolledWindow()
self.scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
diff --git a/panels/move.py b/panels/move.py
index 4ed1e044..8a2e4859 100644
--- a/panels/move.py
+++ b/panels/move.py
@@ -49,7 +49,7 @@ class Panel(ScreenPanel):
adjust = self._gtk.Button("settings", None, "color2", 1, Gtk.PositionType.LEFT, 1)
adjust.connect("clicked", self.load_menu, 'options', _('Settings'))
adjust.set_hexpand(False)
- grid = self._gtk.HomogeneousGrid()
+ grid = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
if self._screen.vertical_mode:
if self._screen.lang_ltr:
grid.attach(self.buttons['x+'], 2, 1, 1, 1)
@@ -98,9 +98,9 @@ class Panel(ScreenPanel):
for p in ('pos_x', 'pos_y', 'pos_z'):
self.labels[p] = Gtk.Label()
- self.labels['move_dist'] = Gtk.Label(_("Move Distance (mm)"))
+ self.labels['move_dist'] = Gtk.Label(label=_("Move Distance (mm)"))
- bottomgrid = self._gtk.HomogeneousGrid()
+ bottomgrid = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
bottomgrid.set_direction(Gtk.TextDirection.LTR)
bottomgrid.attach(self.labels['pos_x'], 0, 0, 1, 1)
bottomgrid.attach(self.labels['pos_y'], 1, 0, 1, 1)
@@ -109,7 +109,7 @@ class Panel(ScreenPanel):
if not self._screen.vertical_mode:
bottomgrid.attach(adjust, 3, 0, 1, 2)
- self.labels['move_menu'] = self._gtk.HomogeneousGrid()
+ self.labels['move_menu'] = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
self.labels['move_menu'].attach(grid, 0, 0, 1, 3)
self.labels['move_menu'].attach(bottomgrid, 0, 3, 1, 1)
self.labels['move_menu'].attach(distgrid, 0, 4, 1, 1)
@@ -194,37 +194,27 @@ class Panel(ScreenPanel):
self._screen._ws.klippy.gcode_script("G90")
def add_option(self, boxname, opt_array, opt_name, option):
- name = Gtk.Label()
+ name = Gtk.Label(hexpand=True, vexpand=True, halign=Gtk.Align.START, valign=Gtk.Align.CENTER, wrap=True)
name.set_markup(f"{option['name']}")
- name.set_hexpand(True)
- name.set_vexpand(True)
- name.set_halign(Gtk.Align.START)
- name.set_valign(Gtk.Align.CENTER)
- name.set_line_wrap(True)
name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
- dev = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
+ dev = Gtk.Box(spacing=5,
+ hexpand=True, vexpand=False, valign=Gtk.Align.CENTER)
dev.get_style_context().add_class("frame-item")
- dev.set_hexpand(True)
- dev.set_vexpand(False)
- dev.set_valign(Gtk.Align.CENTER)
dev.add(name)
if option['type'] == "binary":
- box = Gtk.Box()
- box.set_vexpand(False)
- switch = Gtk.Switch()
- switch.set_hexpand(False)
- switch.set_vexpand(False)
- switch.set_active(self._config.get_config().getboolean(option['section'], opt_name))
+ box = Gtk.Box(hexpand=False)
+ switch = Gtk.Switch(hexpand=False, vexpand=False,
+ width_request=round(self._gtk.font_size * 7),
+ height_request=round(self._gtk.font_size * 3.5),
+ active=self._config.get_config().getboolean(option['section'], opt_name))
switch.connect("notify::active", self.switch_config_option, option['section'], opt_name)
- switch.set_property("width-request", round(self._gtk.font_size * 7))
- switch.set_property("height-request", round(self._gtk.font_size * 3.5))
box.add(switch)
dev.add(box)
elif option['type'] == "scale":
dev.set_orientation(Gtk.Orientation.VERTICAL)
- scale = Gtk.Scale.new_with_range(orientation=Gtk.Orientation.HORIZONTAL,
+ scale = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL,
min=option['range'][0], max=option['range'][1], step=option['step'])
scale.set_hexpand(True)
scale.set_value(int(self._config.get_config().get(option['section'], opt_name, fallback=option['value'])))
diff --git a/panels/network.py b/panels/network.py
index 399548c2..6a7f7a9c 100644
--- a/panels/network.py
+++ b/panels/network.py
@@ -56,18 +56,14 @@ class Panel(ScreenPanel):
self.labels['networks'] = {}
- self.labels['interface'] = Gtk.Label()
+ self.labels['interface'] = Gtk.Label(hexpand=True)
self.labels['interface'].set_text(" %s: %s " % (_("Interface"), self.interface))
- self.labels['interface'].set_hexpand(True)
- self.labels['ip'] = Gtk.Label()
- self.labels['ip'].set_hexpand(True)
+ self.labels['ip'] = Gtk.Label(hexpand=True)
reload_networks = self._gtk.Button("refresh", None, "color1", .66)
reload_networks.connect("clicked", self.reload_networks)
reload_networks.set_hexpand(False)
- sbox = Gtk.Box()
- sbox.set_hexpand(True)
- sbox.set_vexpand(False)
+ sbox = Gtk.Box(hexpand=True, vexpand=False)
sbox.add(self.labels['interface'])
if ip is not None:
self.labels['ip'].set_text(f"IP: {ip} ")
@@ -76,8 +72,7 @@ class Panel(ScreenPanel):
scroll = self._gtk.ScrolledWindow()
- box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
- box.set_vexpand(True)
+ box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, vexpand=True)
self.labels['networklist'] = Gtk.Grid()
@@ -142,21 +137,14 @@ class Panel(ScreenPanel):
if connected_ssid == ssid:
display_name += " (" + _("Connected") + ")"
- name = Gtk.Label()
+ name = Gtk.Label(hexpand=True, halign=Gtk.Align.START, wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
name.set_markup(f"{display_name}")
- name.set_hexpand(True)
- name.set_halign(Gtk.Align.START)
- name.set_line_wrap(True)
- name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
- info = Gtk.Label()
- info.set_halign(Gtk.Align.START)
- labels = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
+ info = Gtk.Label(halign=Gtk.Align.START)
+ labels = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, vexpand=True,
+ halign=Gtk.Align.START, valign=Gtk.Align.CENTER)
labels.add(name)
labels.add(info)
- labels.set_vexpand(True)
- labels.set_valign(Gtk.Align.CENTER)
- labels.set_halign(Gtk.Align.START)
connect = self._gtk.Button("load", None, "color3", .66)
connect.connect("clicked", self.connect_network, ssid)
@@ -168,14 +156,12 @@ class Panel(ScreenPanel):
delete.set_hexpand(False)
delete.set_halign(Gtk.Align.END)
- network = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
+ network = Gtk.Box(spacing=5, hexpand=True, vexpand=False)
network.get_style_context().add_class("frame-item")
- network.set_hexpand(True)
- network.set_vexpand(False)
network.add(labels)
- buttons = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
+ buttons = Gtk.Box(spacing=5)
if network_id != -1 or netinfo['connected']:
buttons.pack_end(connect, False, False, 0)
buttons.pack_end(delete, False, False, 0)
@@ -281,9 +267,8 @@ class Panel(ScreenPanel):
]
scroll = self._gtk.ScrolledWindow()
- self.labels['connecting_info'] = Gtk.Label(_("Starting WiFi Association"))
- self.labels['connecting_info'].set_halign(Gtk.Align.START)
- self.labels['connecting_info'].set_valign(Gtk.Align.START)
+ self.labels['connecting_info'] = Gtk.Label(
+ label=_("Starting WiFi Association"), halign=Gtk.Align.START, valign=Gtk.Align.START)
scroll.add(self.labels['connecting_info'])
self._gtk.Dialog(_("Starting WiFi Association"), buttons, scroll, self._gtk.remove_dialog)
self._screen.show_all()
@@ -333,11 +318,8 @@ class Panel(ScreenPanel):
if "add_network" in self.labels:
del self.labels['add_network']
- label = self._gtk.Label(_("PSK for") + ' ssid')
- label.set_hexpand(False)
- self.labels['network_psk'] = Gtk.Entry()
- self.labels['network_psk'].set_text('')
- self.labels['network_psk'].set_hexpand(True)
+ label = Gtk.Label(label=_("PSK for") + ' ssid', hexpand=False)
+ self.labels['network_psk'] = Gtk.Entry(hexpand=True)
self.labels['network_psk'].connect("activate", self.add_new_network, ssid, True)
self.labels['network_psk'].connect("focus-in-event", self._screen.show_keyboard)
@@ -349,10 +331,8 @@ class Panel(ScreenPanel):
box.pack_start(self.labels['network_psk'], True, True, 5)
box.pack_start(save, False, False, 5)
- self.labels['add_network'] = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5)
- self.labels['add_network'].set_valign(Gtk.Align.CENTER)
- self.labels['add_network'].set_hexpand(True)
- self.labels['add_network'].set_vexpand(True)
+ self.labels['add_network'] = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5, valign=Gtk.Align.CENTER,
+ hexpand=True, vexpand=True)
self.labels['add_network'].pack_start(label, True, True, 5)
self.labels['add_network'].pack_start(box, True, True, 5)
diff --git a/panels/notifications.py b/panels/notifications.py
index 5be1c30f..38a40e0c 100644
--- a/panels/notifications.py
+++ b/panels/notifications.py
@@ -26,9 +26,7 @@ class Panel(ScreenPanel):
tv.set_buffer(self.tb)
tv.connect("size-allocate", self._autoscroll)
- scroll = Gtk.ScrolledWindow()
- scroll.set_hexpand(True)
- scroll.set_vexpand(True)
+ scroll = Gtk.ScrolledWindow(hexpand=True, vexpand=True)
scroll.add(tv)
self.content.add(scroll)
diff --git a/panels/pins.py b/panels/pins.py
index 35aa7cc6..87c7524b 100644
--- a/panels/pins.py
+++ b/panels/pins.py
@@ -12,8 +12,7 @@ class Panel(ScreenPanel):
super().__init__(screen, title)
self.devices = {}
# Create a grid for all devices
- self.labels['devices'] = Gtk.Grid()
- self.labels['devices'].set_valign(Gtk.Align.CENTER)
+ self.labels['devices'] = Gtk.Grid(valign=Gtk.Align.CENTER)
self.load_pins()
@@ -34,16 +33,11 @@ class Panel(ScreenPanel):
def add_pin(self, pin):
logging.info(f"Adding pin: {pin}")
- name = Gtk.Label()
+ name = Gtk.Label(
+ hexpand=True, vexpand=True, halign=Gtk.Align.START, valign=Gtk.Align.CENTER,
+ wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
name.set_markup(f'\n{" ".join(pin.split(" ")[1:])}\n')
- name.set_hexpand(True)
- name.set_vexpand(True)
- name.set_halign(Gtk.Align.START)
- name.set_valign(Gtk.Align.CENTER)
- name.set_line_wrap(True)
- name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
-
- scale = Gtk.Scale.new_with_range(orientation=Gtk.Orientation.HORIZONTAL, min=0, max=100, step=1)
+ scale = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL, min=0, max=100, step=1)
scale.set_value(self.check_pin_value(pin))
scale.set_digits(0)
scale.set_hexpand(True)
@@ -55,7 +49,7 @@ class Panel(ScreenPanel):
min_btn.set_hexpand(False)
min_btn.connect("clicked", self.update_pin_value, pin, 0)
- pin_col = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
+ pin_col = Gtk.Box(spacing=5)
pin_col.add(min_btn)
pin_col.add(scale)
diff --git a/panels/power.py b/panels/power.py
index feeb8b36..d550c06c 100644
--- a/panels/power.py
+++ b/panels/power.py
@@ -12,8 +12,7 @@ class Panel(ScreenPanel):
self.devices = {}
# Create a grid for all devices
- self.labels['devices'] = Gtk.Grid()
- self.labels['devices'].set_valign(Gtk.Align.CENTER)
+ self.labels['devices'] = Gtk.Grid(valign=Gtk.Align.CENTER)
self.load_power_devices()
@@ -32,29 +31,20 @@ class Panel(ScreenPanel):
self.devices[x]['switch'].connect("notify::active", self.on_switch, x)
def add_device(self, device):
- name = Gtk.Label()
+ name = Gtk.Label(
+ hexpand=True, vexpand=True, halign=Gtk.Align.START, valign=Gtk.Align.CENTER,
+ wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
name.set_markup(f"{device}")
- name.set_hexpand(True)
- name.set_vexpand(True)
- name.set_halign(Gtk.Align.START)
- name.set_valign(Gtk.Align.CENTER)
- name.set_line_wrap(True)
- name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
-
- switch = Gtk.Switch()
- switch.set_hexpand(False)
- switch.set_active(self._printer.get_power_device_status(device) == "on")
+ switch = Gtk.Switch(hexpand=False, active=(self._printer.get_power_device_status(device) == "on"),
+ width_request=round(self._gtk.font_size * 7),
+ height_request=round(self._gtk.font_size * 3.5))
switch.connect("notify::active", self.on_switch, device)
- switch.set_property("width-request", round(self._gtk.font_size * 7))
- switch.set_property("height-request", round(self._gtk.font_size * 3.5))
labels = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
labels.add(name)
- dev = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
- dev.set_hexpand(True)
- dev.set_vexpand(False)
- dev.set_valign(Gtk.Align.CENTER)
+ dev = Gtk.Box(
+ spacing=5, hexpand=True, vexpand=False, valign=Gtk.Align.CENTER)
dev.add(labels)
dev.add(switch)
diff --git a/panels/print.py b/panels/print.py
index e02020b1..719a804b 100644
--- a/panels/print.py
+++ b/panels/print.py
@@ -36,8 +36,7 @@ class Panel(ScreenPanel):
self.space = ' ' if self._screen.width > 480 else '\n'
logging.info(f"24h time is {self.time_24}")
- sbox = Gtk.Box(spacing=0)
- sbox.set_vexpand(False)
+ sbox = Gtk.Box(hexpand=True, vexpand=False)
for i, (name, val) in enumerate(self.sort_items.items(), start=1):
s = self._gtk.Button(None, val, f"color{i % 4}", .5, Gtk.PositionType.RIGHT, 1)
s.get_style_context().add_class("buttons_slim")
@@ -50,18 +49,13 @@ class Panel(ScreenPanel):
refresh.get_style_context().add_class("buttons_slim")
refresh.connect('clicked', self._refresh_files)
sbox.add(refresh)
- sbox.set_hexpand(True)
- sbox.set_vexpand(False)
- pbox = Gtk.Box(spacing=0)
- pbox.set_hexpand(True)
- pbox.set_vexpand(False)
+ pbox = Gtk.Box(hexpand=True, vexpand=False)
self.labels['path'] = Gtk.Label()
pbox.add(self.labels['path'])
self.labels['path_box'] = pbox
- self.main = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
- self.main.set_vexpand(True)
+ self.main = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, vexpand=True)
self.main.pack_start(sbox, False, False, 0)
self.main.pack_start(pbox, False, False, 0)
self.main.pack_start(self.scroll, True, True, 0)
@@ -156,22 +150,14 @@ class Panel(ScreenPanel):
return False
def _create_row(self, fullpath, filename=None):
- name = Gtk.Label()
+ name = Gtk.Label(hexpand=True, halign=Gtk.Align.START, wrap=True, wrap_mode=Pango.WrapMode.CHAR)
name.get_style_context().add_class("print-filename")
if filename:
name.set_markup(f'{os.path.splitext(filename)[0].replace("_", " ")}')
else:
name.set_markup(f"{os.path.split(fullpath)[-1]}")
- name.set_hexpand(True)
- name.set_halign(Gtk.Align.START)
- name.set_line_wrap(True)
- name.set_line_wrap_mode(Pango.WrapMode.CHAR)
- info = Gtk.Label()
- name.set_line_wrap(True)
- info.set_line_wrap_mode(Pango.WrapMode.CHAR)
- info.set_hexpand(True)
- info.set_halign(Gtk.Align.START)
+ info = Gtk.Label(hexpand=True, halign=Gtk.Align.START, wrap=True, wrap_mode=Pango.WrapMode.CHAR)
info.get_style_context().add_class("print-info")
delete = self._gtk.Button("delete", style="color1", scale=self.bts)
@@ -201,10 +187,8 @@ class Panel(ScreenPanel):
delete.connect("clicked", self.confirm_delete_file, f"gcodes/{fullpath}")
- row = Gtk.Grid()
+ row = Gtk.Grid(hexpand=True, vexpand=False)
row.get_style_context().add_class("frame-item")
- row.set_hexpand(True)
- row.set_vexpand(False)
row.attach(icon, 0, 0, 1, 2)
row.attach(name, 1, 0, 3, 1)
row.attach(info, 1, 1, 1, 1)
@@ -303,28 +287,19 @@ class Panel(ScreenPanel):
{"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL, "style": 'dialog-error'}
]
- label = Gtk.Label()
+ label = Gtk.Label(hexpand=True, vexpand=True, wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
label.set_markup(f"{filename}\n")
- label.set_hexpand(True)
- label.set_halign(Gtk.Align.CENTER)
- label.set_vexpand(True)
- label.set_valign(Gtk.Align.CENTER)
- label.set_line_wrap(True)
- label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
- grid = Gtk.Grid()
- grid.set_vexpand(True)
- grid.set_halign(Gtk.Align.CENTER)
- grid.set_valign(Gtk.Align.CENTER)
- grid.add(label)
+ box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
+ box.add(label)
height = self._screen.height * .9 - self._gtk.font_size * 10
pixbuf = self.get_file_image(filename, self._screen.width * .9, height)
if pixbuf is not None:
image = Gtk.Image.new_from_pixbuf(pixbuf)
- grid.attach_next_to(image, label, Gtk.PositionType.BOTTOM, 1, 1)
+ box.add(image)
- self._gtk.Dialog(_("Print") + f' {filename}', buttons, grid, self.confirm_print_response, filename)
+ self._gtk.Dialog(_("Print") + f' {filename}', buttons, box, self.confirm_print_response, filename)
def confirm_print_response(self, dialog, response_id, filename):
self._gtk.remove_dialog(dialog)
@@ -433,12 +408,8 @@ class Panel(ScreenPanel):
self.showing_rename = True
def _create_rename_box(self, fullpath):
- lbl = self._gtk.Label(_("Rename/Move:"))
- lbl.set_halign(Gtk.Align.START)
- lbl.set_hexpand(False)
- self.labels['new_name'] = Gtk.Entry()
- self.labels['new_name'].set_text(fullpath)
- self.labels['new_name'].set_hexpand(True)
+ lbl = Gtk.Label(label=_("Rename/Move:"), halign=Gtk.Align.START, hexpand=False)
+ self.labels['new_name'] = Gtk.Entry(text=fullpath, hexpand=True)
self.labels['new_name'].connect("activate", self.rename)
self.labels['new_name'].connect("focus-in-event", self._screen.show_keyboard)
@@ -450,10 +421,8 @@ class Panel(ScreenPanel):
box.pack_start(self.labels['new_name'], True, True, 5)
box.pack_start(save, False, False, 5)
- self.labels['rename_file'] = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5)
- self.labels['rename_file'].set_valign(Gtk.Align.CENTER)
- self.labels['rename_file'].set_hexpand(True)
- self.labels['rename_file'].set_vexpand(True)
+ self.labels['rename_file'] = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5,
+ hexpand=True, vexpand=True, valign=Gtk.Align.CENTER)
self.labels['rename_file'].pack_start(lbl, True, True, 5)
self.labels['rename_file'].pack_start(box, True, True, 5)
diff --git a/panels/printer_select.py b/panels/printer_select.py
index 25647c34..90556162 100644
--- a/panels/printer_select.py
+++ b/panels/printer_select.py
@@ -10,7 +10,7 @@ class Panel(ScreenPanel):
super().__init__(screen, title)
printers = self._config.get_printers()
- grid = self._gtk.HomogeneousGrid()
+ grid = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
scroll = self._gtk.ScrolledWindow()
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
scroll.add(grid)
diff --git a/panels/retraction.py b/panels/retraction.py
index c0259102..e03961a3 100644
--- a/panels/retraction.py
+++ b/panels/retraction.py
@@ -106,22 +106,16 @@ class Panel(ScreenPanel):
def add_option(self, option, optname, units, value, digits, maxval):
logging.info(f"Adding option: {option}")
- name = Gtk.Label()
+ name = Gtk.Label(
+ hexpand=True, vexpand=True, halign=Gtk.Align.START, valign=Gtk.Align.CENTER,
+ wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
name.set_markup(f"{optname} ({units})")
- name.set_hexpand(True)
- name.set_vexpand(True)
- name.set_halign(Gtk.Align.START)
- name.set_valign(Gtk.Align.CENTER)
- name.set_line_wrap(True)
- name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
minimum = 1 if option in ["retract_speed", "unretract_speed"] else 0
self.values[option] = value
# adj (value, lower, upper, step_increment, page_increment, page_size)
adj = Gtk.Adjustment(value, minimum, maxval, 1, 5, 0)
- scale = Gtk.Scale.new(orientation=Gtk.Orientation.HORIZONTAL, adjustment=adj)
- scale.set_digits(digits)
- scale.set_hexpand(True)
- scale.set_has_origin(True)
+ scale = Gtk.Scale(adjustment=adj, digits=digits, hexpand=True,
+ has_origin=True)
scale.get_style_context().add_class("option_slider")
scale.connect("button-release-event", self.set_opt_value, option)
diff --git a/panels/settings.py b/panels/settings.py
index c9f4107a..5b8fcc8a 100644
--- a/panels/settings.py
+++ b/panels/settings.py
@@ -68,28 +68,21 @@ class Panel(ScreenPanel):
def add_option(self, boxname, opt_array, opt_name, option):
if option['type'] is None:
return
- name = Gtk.Label()
+ name = Gtk.Label(
+ hexpand=True, vexpand=True, halign=Gtk.Align.START, valign=Gtk.Align.CENTER,
+ wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
name.set_markup(f"{option['name']}")
- name.set_hexpand(True)
- name.set_vexpand(True)
- name.set_halign(Gtk.Align.START)
- name.set_valign(Gtk.Align.CENTER)
- name.set_line_wrap(True)
- name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
labels = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
labels.add(name)
- dev = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
+ dev = Gtk.Box(spacing=5,
+ valign=Gtk.Align.CENTER, hexpand=True, vexpand=False)
dev.get_style_context().add_class("frame-item")
- dev.set_hexpand(True)
- dev.set_vexpand(False)
- dev.set_valign(Gtk.Align.CENTER)
dev.add(labels)
if option['type'] == "binary":
- switch = Gtk.Switch()
- switch.set_active(self._config.get_config().getboolean(option['section'], opt_name))
+ switch = Gtk.Switch(active=self._config.get_config().getboolean(option['section'], opt_name))
switch.connect("notify::active", self.switch_config_option, option['section'], opt_name,
option['callback'] if "callback" in option else None)
dev.add(switch)
@@ -105,7 +98,7 @@ class Panel(ScreenPanel):
dev.add(dropdown)
elif option['type'] == "scale":
dev.set_orientation(Gtk.Orientation.VERTICAL)
- scale = Gtk.Scale.new_with_range(orientation=Gtk.Orientation.HORIZONTAL,
+ scale = Gtk.Scale.new_with_range(Gtk.Orientation.HORIZONTAL,
min=option['range'][0], max=option['range'][1], step=option['step'])
scale.set_hexpand(True)
scale.set_value(int(self._config.get_config().get(option['section'], opt_name, fallback=option['value'])))
@@ -113,8 +106,7 @@ class Panel(ScreenPanel):
scale.connect("button-release-event", self.scale_moved, option['section'], opt_name)
dev.add(scale)
elif option['type'] == "printer":
- box = Gtk.Box()
- box.set_vexpand(False)
+ box = Gtk.Box(vexpand=False)
label = Gtk.Label(f"{option['moonraker_host']}:{option['moonraker_port']}")
box.add(label)
dev.add(box)
diff --git a/panels/splash_screen.py b/panels/splash_screen.py
index fbf5d459..863a5f0a 100644
--- a/panels/splash_screen.py
+++ b/panels/splash_screen.py
@@ -12,11 +12,9 @@ class Panel(ScreenPanel):
def __init__(self, screen, title):
super().__init__(screen, title)
image = self._gtk.Image("klipper", self._gtk.content_width * .2, self._gtk.content_height * .5)
- self.labels['text'] = Gtk.Label(_("Initializing printer..."))
- self.labels['text'].set_line_wrap(True)
- self.labels['text'].set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
- self.labels['text'].set_halign(Gtk.Align.CENTER)
- self.labels['text'].set_valign(Gtk.Align.CENTER)
+ self.labels['text'] = Gtk.Label(
+ label=_("Initializing printer..."), wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR,
+ halign=Gtk.Align.CENTER, valign=Gtk.Align.CENTER)
self.labels['menu'] = self._gtk.Button("settings", _("Menu"), "color4")
self.labels['menu'].connect("clicked", self._screen._go_to_submenu, "")
@@ -31,23 +29,17 @@ class Panel(ScreenPanel):
self.labels['retry'] = self._gtk.Button("load", _('Retry'), "color3")
self.labels['retry'].connect("clicked", self.retry)
- self.labels['actions'] = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
- self.labels['actions'].set_hexpand(True)
- self.labels['actions'].set_vexpand(False)
- self.labels['actions'].set_halign(Gtk.Align.CENTER)
- self.labels['actions'].set_homogeneous(True)
- self.labels['actions'].set_size_request(self._gtk.content_width - 30, -1)
+ self.labels['actions'] = Gtk.Box(hexpand=True, vexpand=False, homogeneous=True)
scroll = self._gtk.ScrolledWindow()
- scroll.set_hexpand(True)
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
scroll.add(self.labels['text'])
- info = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=0)
+ info = Gtk.Box()
info.pack_start(image, False, True, 8)
info.pack_end(scroll, True, True, 8)
- main = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
+ main = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
main.pack_start(info, True, True, 8)
main.pack_end(self.labels['actions'], False, False, 0)
diff --git a/panels/spoolman.py b/panels/spoolman.py
index a727cdd6..ba885e1f 100644
--- a/panels/spoolman.py
+++ b/panels/spoolman.py
@@ -174,9 +174,6 @@ class Panel(ScreenPanel):
else:
self.scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
- sbox = Gtk.Box(spacing=0)
- sbox.set_vexpand(False)
-
clear_active_spool = self._gtk.Button("cancel", _("Clear"), "color2", self.bts, Gtk.PositionType.LEFT, 1)
clear_active_spool.get_style_context().add_class("buttons_slim")
clear_active_spool.connect('clicked', self.clear_active_spool)
@@ -193,48 +190,38 @@ class Panel(ScreenPanel):
sort_btn_used.connect("clicked", self.change_sort, "last_used")
sort_btn_used.get_style_context().add_class("buttons_slim")
- switch = Gtk.Switch()
- switch.set_hexpand(False)
- switch.set_vexpand(False)
+ switch = Gtk.Switch(hexpand=False, vexpand=False)
switch.set_active(self._config.get_config().getboolean("spoolman", "hide_archived", fallback=True))
switch.connect("notify::active", self.switch_config_option, "spoolman", "hide_archived", self.load_spools)
- name = Gtk.Label()
+ name = Gtk.Label(halign=Gtk.Align.START, valign=Gtk.Align.CENTER, wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
name.set_markup(_("Archived"))
- name.set_halign(Gtk.Align.START)
- name.set_valign(Gtk.Align.CENTER)
- name.set_line_wrap(True)
- name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
- archived = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
- archived.set_valign(Gtk.Align.CENTER)
+ archived = Gtk.Box(valign=Gtk.Align.CENTER)
archived.add(name)
archived.add(switch)
+ sbox = Gtk.Box(hexpand=True, vexpand=False)
sbox.pack_start(sort_btn_id, True, True, 0)
sbox.pack_start(sort_btn_used, True, True, 0)
sbox.pack_start(clear_active_spool, True, True, 0)
sbox.pack_start(refresh, True, True, 0)
sbox.pack_start(archived, False, False, 5)
- sbox.set_hexpand(True)
- sbox.set_vexpand(False)
- filter_box = Gtk.ListBox()
- filter_box.set_selection_mode(Gtk.SelectionMode.NONE)
+ filter_box = Gtk.ListBox(selection_mode=Gtk.SelectionMode.NONE)
self._filter_expander = Gtk.Expander(label=_("Filter"))
self._filter_expander.add(filter_box)
row = Gtk.ListBoxRow()
- hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
+ hbox = Gtk.Box(spacing=5)
row.add(hbox)
label = Gtk.Label(_("Material"))
- _material_filter = Gtk.ComboBox.new_with_model(self._materials)
+ _material_filter = Gtk.ComboBox(model=self._materials, hexpand=True)
_material_filter.connect("changed", self._on_material_filter_changed)
cellrenderertext = Gtk.CellRendererText()
_material_filter.pack_start(cellrenderertext, True)
_material_filter.add_attribute(cellrenderertext, "text", 1)
- _material_filter.set_hexpand(True)
_material_reset_filter = self._gtk.Button("cancel", _("Clear"), "color2", self.bts, Gtk.PositionType.LEFT, 1)
_material_reset_filter.get_style_context().add_class("buttons_slim")
@@ -246,21 +233,17 @@ class Panel(ScreenPanel):
filter_box.add(row)
- self.main = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
- self.main.set_vexpand(True)
+ self.main = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, vexpand=True)
self.main.pack_start(sbox, False, False, 0)
self.main.pack_start(self._filter_expander, False, True, 0)
self.main.pack_start(self.scroll, True, True, 0)
self.load_spools()
self.get_active_spool()
- self._treeview = Gtk.TreeView(model=sortable)
- self._treeview.set_headers_visible(False)
- self._treeview.set_show_expanders(False)
+ self._treeview = Gtk.TreeView(model=sortable, headers_visible=False, show_expanders=False)
text_renderer = Gtk.CellRendererText()
- pixbuf_renderer = Gtk.CellRendererPixbuf()
- pixbuf_renderer.set_padding(5, 5)
+ pixbuf_renderer = Gtk.CellRendererPixbuf(xpad=5, ypad=5)
checkbox_renderer = Gtk.CellRendererToggle()
column_id = Gtk.TreeViewColumn(cell_renderer=text_renderer)
column_id.set_cell_data_func(
diff --git a/panels/system.py b/panels/system.py
index 2bb4e052..375d0450 100644
--- a/panels/system.py
+++ b/panels/system.py
@@ -30,8 +30,7 @@ class Panel(ScreenPanel):
super().__init__(screen, title)
self.refresh = None
self.update_dialog = None
- grid = self._gtk.HomogeneousGrid()
- grid.set_row_homogeneous(False)
+ grid = Gtk.Grid(column_homogeneous=True)
update_all = self._gtk.Button('arrow-up', _('Full Update'), 'color1')
update_all.connect("clicked", self.show_update_info, "full")
@@ -123,29 +122,23 @@ class Panel(ScreenPanel):
info = self.update_status['version_info'][program] if program in self.update_status['version_info'] else {}
scroll = self._gtk.ScrolledWindow(steppers=False)
- scroll.set_size_request(self._gtk.width - 30, self._gtk.height * .6)
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
- vbox.set_halign(Gtk.Align.CENTER)
- vbox.set_valign(Gtk.Align.CENTER)
- label = Gtk.Label()
- label.set_line_wrap(True)
+ label = Gtk.Label(wrap=True, vexpand=True)
if program == "full":
label.set_markup('' + _("Perform a full upgrade?") + '')
vbox.add(label)
elif 'configured_type' in info and info['configured_type'] == 'git_repo':
if not info['is_valid'] or info['is_dirty']:
label.set_markup(_("Do you want to recover %s?") % program)
- vbox.add(label)
- scroll.add(vbox)
recoverybuttons = [
{"name": _("Recover Hard"), "response": Gtk.ResponseType.OK, "style": 'dialog-warning'},
{"name": _("Recover Soft"), "response": Gtk.ResponseType.APPLY, "style": 'dialog-info'},
{"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL, "style": 'dialog-error'}
]
- self._gtk.Dialog(_("Recover"), recoverybuttons, scroll, self.reset_confirm, program)
+ self._gtk.Dialog(_("Recover"), recoverybuttons, label, self.reset_confirm, program)
return
else:
if info['version'] == info['remote_version']:
@@ -156,19 +149,14 @@ class Panel(ScreenPanel):
" " + ngettext("commit", "commits", ncommits) +
":\n")
vbox.add(label)
-
+ label.set_vexpand(False)
for c in info['commits_behind']:
commit_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
- title = Gtk.Label()
- title.set_line_wrap(True)
- title.set_line_wrap_mode(Pango.WrapMode.CHAR)
+ title = Gtk.Label(wrap=True, hexpand=True)
title.set_markup(f"\n{c['subject']}\n{c['author']}\n")
- title.set_halign(Gtk.Align.START)
commit_box.add(title)
- details = Gtk.Label(label=f"{c['message']}")
- details.set_line_wrap(True)
- details.set_halign(Gtk.Align.START)
+ details = Gtk.Label(label=f"{c['message']}", wrap=True, hexpand=True)
commit_box.add(details)
commit_box.add(Gtk.Separator())
vbox.add(commit_box)
@@ -179,18 +167,13 @@ class Panel(ScreenPanel):
+ ngettext("Package will be updated", "Packages will be updated", info["package_count"])
+ ':\n'
))
- label.set_halign(Gtk.Align.CENTER)
+ label.set_vexpand(False)
vbox.add(label)
- grid = Gtk.Grid()
- grid.set_column_homogeneous(True)
- grid.set_halign(Gtk.Align.CENTER)
- grid.set_valign(Gtk.Align.CENTER)
+ grid = Gtk.Grid(column_homogeneous=True, halign=Gtk.Align.CENTER, valign=Gtk.Align.CENTER)
i = 0
for j, c in enumerate(info["package_list"]):
- label = Gtk.Label()
+ label = Gtk.Label(halign=Gtk.Align.START, ellipsize=Pango.EllipsizeMode.END)
label.set_markup(f" {c} ")
- label.set_halign(Gtk.Align.START)
- label.set_ellipsize(Pango.EllipsizeMode.END)
pos = (j % 3)
grid.attach(label, pos, i, 1, 1)
if pos == 2:
@@ -309,17 +292,11 @@ class Panel(ScreenPanel):
self.labels[f"{p}_status"].set_sensitive(True)
def reboot_poweroff(self, widget, method):
- scroll = self._gtk.ScrolledWindow()
- scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
- vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
- vbox.set_halign(Gtk.Align.CENTER)
- vbox.set_valign(Gtk.Align.CENTER)
+ label = Gtk.Label(wrap=True, hexpand=True, vexpand=True)
if method == "reboot":
- label = Gtk.Label(label=_("Are you sure you wish to reboot the system?"))
+ label.set_label(_("Are you sure you wish to reboot the system?"))
else:
- label = Gtk.Label(label=_("Are you sure you wish to shutdown the system?"))
- vbox.add(label)
- scroll.add(vbox)
+ label.set_label(_("Are you sure you wish to shutdown the system?"))
buttons = [
{"name": _("Host"), "response": Gtk.ResponseType.OK, "style": 'dialog-info'},
{"name": _("Printer"), "response": Gtk.ResponseType.APPLY, "style": 'dialog-warning'},
@@ -329,7 +306,7 @@ class Panel(ScreenPanel):
title = _("Restart")
else:
title = _("Shutdown")
- self._gtk.Dialog(title, buttons, scroll, self.reboot_poweroff_confirm, method)
+ self._gtk.Dialog(title, buttons, label, self.reboot_poweroff_confirm, method)
def reboot_poweroff_confirm(self, dialog, response_id, method):
self._gtk.remove_dialog(dialog)
diff --git a/panels/temperature.py b/panels/temperature.py
index 559f8e19..c476e01e 100644
--- a/panels/temperature.py
+++ b/panels/temperature.py
@@ -23,7 +23,7 @@ class Panel(ScreenPanel):
self.tempdelta = self.tempdeltas[-2]
self.show_preheat = False
self.preheat_options = self._screen._config.get_preheat_options()
- self.grid = self._gtk.HomogeneousGrid()
+ self.grid = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
self._gtk.reset_temp_color()
self.grid.attach(self.create_left_panel(), 0, 0, 1, 1)
@@ -59,7 +59,7 @@ class Panel(ScreenPanel):
cooldown.connect("clicked", self.set_temperature, "cooldown")
adjust.connect("clicked", self.switch_preheat_adjust)
- right = self._gtk.HomogeneousGrid()
+ right = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
right.attach(cooldown, 0, 0, 2, 1)
right.attach(adjust, 2, 0, 1, 1)
if self.show_preheat:
@@ -79,7 +79,7 @@ class Panel(ScreenPanel):
self.grid.show_all()
def preheat(self):
- self.labels["preheat_grid"] = self._gtk.HomogeneousGrid()
+ self.labels["preheat_grid"] = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
i = 0
for option in self.preheat_options:
if option != "cooldown":
@@ -92,7 +92,7 @@ class Panel(ScreenPanel):
return scroll
def delta_adjust(self):
- deltagrid = self._gtk.HomogeneousGrid()
+ deltagrid = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
self.labels["increase"] = self._gtk.Button("increase", None, "color1")
self.labels["increase"].connect("clicked", self.change_target_temp_incremental, "+")
self.labels["decrease"] = self._gtk.Button("decrease", None, "color3")
@@ -431,9 +431,8 @@ class Panel(ScreenPanel):
def create_left_panel(self):
- self.labels['devices'] = Gtk.Grid()
+ self.labels['devices'] = Gtk.Grid(vexpand=False)
self.labels['devices'].get_style_context().add_class('heater-grid')
- self.labels['devices'].set_vexpand(False)
name = Gtk.Label()
temp = Gtk.Label(_("Temp (°C)"))
@@ -443,14 +442,13 @@ class Panel(ScreenPanel):
self.labels['devices'].attach(temp, 1, 0, 1, 1)
self.labels['da'] = HeaterGraph(self._printer, self._gtk.font_size)
- self.labels['da'].set_vexpand(True)
scroll = self._gtk.ScrolledWindow(steppers=False)
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
scroll.get_style_context().add_class('heater-list')
scroll.add(self.labels['devices'])
- self.left_panel = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0)
+ self.left_panel = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.left_panel.add(scroll)
self.labels['graph_settemp'] = self._gtk.Button(label=_("Set Temp"))
diff --git a/panels/zcalibrate.py b/panels/zcalibrate.py
index ce1d3f48..ad4030c6 100644
--- a/panels/zcalibrate.py
+++ b/panels/zcalibrate.py
@@ -20,7 +20,7 @@ class Panel(ScreenPanel):
logging.info(f"Z offset: {self.z_offset}")
self.widgets['zposition'] = Gtk.Label(label="Z: ?")
- pos = self._gtk.HomogeneousGrid()
+ pos = Gtk.Grid(row_homogeneous=True, column_homogeneous=True)
pos.attach(self.widgets['zposition'], 0, 1, 2, 1)
if self.z_offset is not None:
self.widgets['zoffset'] = Gtk.Label(label="?")
@@ -64,9 +64,8 @@ class Panel(ScreenPanel):
logging.info(f"Available functions for calibration: {functions}")
- self.labels['popover'] = Gtk.Popover()
+ self.labels['popover'] = Gtk.Popover(position=Gtk.PositionType.BOTTOM)
self.labels['popover'].add(pobox)
- self.labels['popover'].set_position(Gtk.PositionType.BOTTOM)
if len(functions) > 1:
self.buttons['start'].connect("clicked", self.on_popover_clicked)
@@ -94,8 +93,7 @@ class Panel(ScreenPanel):
distances.pack_start(self.widgets['move_dist'], True, True, 0)
distances.pack_start(distgrid, True, True, 0)
- grid = Gtk.Grid()
- grid.set_column_homogeneous(True)
+ grid = Gtk.Grid(column_homogeneous=True)
if self._screen.vertical_mode:
grid.attach(self.buttons['zpos'], 0, 1, 1, 1)
grid.attach(self.buttons['zneg'], 0, 2, 1, 1)
diff --git a/screen.py b/screen.py
index c2c3288b..18381cb0 100755
--- a/screen.py
+++ b/screen.py
@@ -334,12 +334,12 @@ class KlipperScreen(Gtk.Window):
self.log_notification(message, level)
- msg = Gtk.Button(label=f"{message}")
- msg.set_hexpand(True)
- msg.set_vexpand(True)
- msg.get_child().set_line_wrap(True)
- msg.get_child().set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
- msg.get_child().set_max_width_chars(40)
+ msg = Gtk.Button(label=f"{message}", hexpand=True, vexpand=True)
+ for widget in msg.get_children():
+ if isinstance(widget, Gtk.Label):
+ widget.set_line_wrap(True)
+ widget.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
+ widget.set_max_width_chars(40)
msg.connect("clicked", self.close_popup_message)
msg.get_style_context().add_class("message_popup")
if level == 1:
@@ -352,10 +352,9 @@ class KlipperScreen(Gtk.Window):
msg.get_style_context().add_class("message_popup_error")
logging.info(f'error: {message}')
- popup = Gtk.Popover.new(self.base_panel.titlebar)
+ popup = Gtk.Popover(relative_to=self.base_panel.titlebar,
+ halign=Gtk.Align.CENTER, width_request=int(self.width * .9))
popup.get_style_context().add_class("message_popup_popover")
- popup.set_size_request(self.width * .9, -1)
- popup.set_halign(Gtk.Align.CENTER)
popup.add(msg)
popup.popup()
@@ -382,24 +381,13 @@ class KlipperScreen(Gtk.Window):
def show_error_modal(self, err, e=""):
logging.error(f"Showing error modal: {err} {e}")
- title = Gtk.Label()
+ title = Gtk.Label(wrap=True, wrap_mode=Pango.WrapMode.CHAR, hexpand=True, halign=Gtk.Align.START)
title.set_markup(f"{err}\n")
- title.set_line_wrap(True)
- title.set_line_wrap_mode(Pango.WrapMode.CHAR)
- title.set_halign(Gtk.Align.START)
- title.set_hexpand(True)
- version = Gtk.Label(label=f"{functions.get_software_version()}")
- version.set_halign(Gtk.Align.END)
+ version = Gtk.Label(label=f"{functions.get_software_version()}", halign=Gtk.Align.END)
help_msg = _("Provide KlipperScreen.log when asking for help.\n")
- message = Gtk.Label(label=f"{help_msg}\n\n{e}")
- message.set_line_wrap(True)
+ message = Gtk.Label(label=f"{help_msg}\n\n{e}", wrap=True)
scroll = self.gtk.ScrolledWindow(steppers=False)
- scroll.set_vexpand(True)
- if self.vertical_mode:
- scroll.set_size_request(self.gtk.width - 30, self.gtk.height * .6)
- else:
- scroll.set_size_request(self.gtk.width - 30, self.gtk.height * .45)
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
scroll.add(message)
@@ -548,10 +536,8 @@ class KlipperScreen(Gtk.Window):
close = Gtk.Button()
close.connect("clicked", self.close_screensaver)
- box = Gtk.Box()
- box.set_size_request(self.width, self.height)
+ box = Gtk.Box(halign=Gtk.Align.CENTER, width_request=self.width, height_request=self.height)
box.pack_start(close, True, True, 0)
- box.set_halign(Gtk.Align.CENTER)
box.get_style_context().add_class("screensaver")
self.remove(self.base_panel.main_grid)
self.add(box)
@@ -810,14 +796,9 @@ class KlipperScreen(Gtk.Window):
except Exception as e:
logging.debug(f"Error parsing jinja for confirm_send_action\n{e}\n\n{traceback.format_exc()}")
- label = Gtk.Label()
+ label = Gtk.Label(hexpand=True, vexpand=True, halign=Gtk.Align.CENTER, valign=Gtk.Align.CENTER,
+ wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
label.set_markup(text)
- label.set_hexpand(True)
- label.set_halign(Gtk.Align.CENTER)
- label.set_vexpand(True)
- label.set_valign(Gtk.Align.CENTER)
- label.set_line_wrap(True)
- label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
if self.confirm is not None:
self.gtk.remove_dialog(self.confirm)