52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
import logging
|
|
import gi
|
|
|
|
gi.require_version("Gtk", "3.0")
|
|
from gi.repository import Gtk, GLib
|
|
from ks_includes.screen_panel import ScreenPanel
|
|
from ks_includes.widgets.autogrid import AutoGrid
|
|
from ks_includes.KlippyGtk import find_widget
|
|
|
|
|
|
class Panel(ScreenPanel):
|
|
def __init__(self, screen, title):
|
|
super().__init__(screen, title)
|
|
printers = self._config.get_printers()
|
|
|
|
self.printer_buttons = []
|
|
for i, printer in enumerate(printers):
|
|
name = list(printer)[0]
|
|
scale = 3
|
|
self.labels[name] = self._gtk.Button("printer", name, f"color{1 + i % 4}", scale=scale)
|
|
scale *= self._gtk.img_scale
|
|
pixbuf = self._gtk.PixbufFromIcon(f"../../printers/{name}", scale, scale)
|
|
if pixbuf is not None:
|
|
image = find_widget(self.labels[name], Gtk.Image)
|
|
image.set_from_pixbuf(pixbuf)
|
|
self.labels[name].connect("clicked", self.connect_printer, name)
|
|
self.printer_buttons.append(self.labels[name])
|
|
grid = AutoGrid(self.printer_buttons, vertical=self._screen.vertical_mode)
|
|
|
|
scroll = self._gtk.ScrolledWindow()
|
|
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
|
|
scroll.add(grid)
|
|
self.content.add(scroll)
|
|
|
|
def connect_printer(self, widget, name):
|
|
self._screen.connect_printer(name)
|
|
|
|
def activate(self):
|
|
if self._screen._ws and self._screen._ws.connected:
|
|
self._screen.close_websocket()
|
|
logging.debug("Waiting for disconnect")
|
|
self._screen.base_panel.set_title(_("Please wait"))
|
|
b: Gtk.Button
|
|
for b in self.printer_buttons:
|
|
b.set_sensitive(False)
|
|
|
|
def disconnected_callback(self):
|
|
logging.debug("Disconnected. Enabling buttons")
|
|
self._screen.base_panel.set_title(_("Printer Select"))
|
|
for b in self.printer_buttons:
|
|
b.set_sensitive(True)
|