51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
import gi
|
|
import logging
|
|
|
|
gi.require_version("Gtk", "3.0")
|
|
from gi.repository import Gtk
|
|
from ks_includes.screen_panel import ScreenPanel
|
|
|
|
logger = logging.getLogger("KlipperScreen.PrinterSelect")
|
|
|
|
|
|
def create_panel(*args):
|
|
return PrinterSelect(*args)
|
|
|
|
|
|
class PrinterSelect(ScreenPanel):
|
|
def __init__(self, screen, title, back=True, action_bar=True, printer_name=True):
|
|
super().__init__(screen, title, False, False, False)
|
|
|
|
def initialize(self, panel_name):
|
|
_ = self.lang.gettext
|
|
|
|
printers = self._config.get_printers()
|
|
|
|
grid = self._gtk.HomogeneousGrid()
|
|
scroll = self._gtk.ScrolledWindow()
|
|
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
|
|
scroll.add(grid)
|
|
self.content.add(scroll)
|
|
|
|
length = len(printers)
|
|
if length == 4:
|
|
# Arrange 2 x 2
|
|
columns = 2
|
|
elif 4 < length <= 6:
|
|
# Arrange 3 x 2
|
|
columns = 3
|
|
else:
|
|
columns = 4
|
|
|
|
for i, printer in enumerate(printers):
|
|
name = list(printer)[0]
|
|
self.labels[name] = self._gtk.ButtonImage("extruder", name, "color%s" % (1 + i % 4))
|
|
self.labels[name].connect("clicked", self._screen.connect_printer_widget, name)
|
|
if self._screen.vertical_mode:
|
|
row = i % columns
|
|
col = int(i / columns)
|
|
else:
|
|
col = i % columns
|
|
row = int(i / columns)
|
|
grid.attach(self.labels[name], col, row, 1, 1)
|