2021-02-21 12:19:30 -05:00

92 lines
2.7 KiB
Python

import gi
import logging
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk, GLib
from panels.menu import MenuPanel
def create_panel(*args):
return MainPanel(*args)
class MainPanel(MenuPanel):
def __init__(self, screen, title, back=False):
super().__init__(screen, title, False)
def initialize(self, panel_name, items, extrudercount):
print("### Making MainMenu")
grid = self._gtk.HomogeneousGrid()
grid.set_hexpand(True)
grid.set_vexpand(True)
# Create Extruders and bed icons
eq_grid = Gtk.Grid()
eq_grid.set_hexpand(True)
eq_grid.set_vexpand(True)
self.heaters = []
i = 0
for x in self._printer.get_tools():
self.labels[x] = self._gtk.ButtonImage("extruder-"+str(i), self._gtk.formatTemperatureString(0, 0))
self.heaters.append(x)
i += 1
add_heaters = self._printer.get_heaters()
for h in add_heaters:
if h == "heater_bed":
self.labels[h] = self._gtk.ButtonImage("bed", self._gtk.formatTemperatureString(0, 0))
else:
name = " ".join(h.split(" ")[1:])
self.labels[h] = self._gtk.ButtonImage("heat-up", name)
self.heaters.append(h)
i = 0
cols = 3 if len(self.heaters) > 4 else (1 if len(self.heaters) <= 2 else 2)
for h in self.heaters:
eq_grid.attach(self.labels[h], i%cols, int(i/cols), 1, 1)
i += 1
self.items = items
self.create_menu_items()
self.grid = Gtk.Grid()
self.grid.set_row_homogeneous(True)
self.grid.set_column_homogeneous(True)
grid.attach(eq_grid, 0, 0, 1, 1)
grid.attach(self.arrangeMenuItems(items, 2, True), 1, 0, 1, 1)
self.grid = grid
self.target_temps = {
"heater_bed": 0,
"extruder": 0
}
self.content.add(self.grid)
self.layout.show_all()
self._screen.add_subscription(panel_name)
def activate(self):
return
def process_update(self, action, data):
if action != "notify_status_update":
return
for x in self._printer.get_tools():
self.update_temp(x,
self._printer.get_dev_stat(x,"temperature"),
self._printer.get_dev_stat(x,"target")
)
for h in self._printer.get_heaters():
self.update_temp(h,
self._printer.get_dev_stat(h,"temperature"),
self._printer.get_dev_stat(h,"target"),
None if h == "heater_bed" else " ".join(h.split(" ")[1:])
)
return