增加机型设置并添加隐藏的入口
This commit is contained in:
parent
2d71e1a069
commit
2d762b1a33
107
panels/system.py
107
panels/system.py
@ -1,10 +1,13 @@
|
||||
import logging
|
||||
|
||||
import gi
|
||||
import time
|
||||
import os.path
|
||||
import pathlib
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk
|
||||
from ks_includes.screen_panel import ScreenPanel
|
||||
from ks_includes.ModelConfig import ModelConfig
|
||||
|
||||
|
||||
class Panel(ScreenPanel):
|
||||
@ -13,30 +16,20 @@ class Panel(ScreenPanel):
|
||||
super().__init__(screen, title)
|
||||
self.current_row = 0
|
||||
self.mem_multiplier = None
|
||||
self.model_config = None
|
||||
self.scales = {}
|
||||
self.labels = {}
|
||||
self.models = {}
|
||||
self.click_count = 0
|
||||
self.last_click_time = 0
|
||||
self.click_threshold = 0.2
|
||||
self.target_clicks = 10
|
||||
self.grid = Gtk.Grid(column_spacing=10, row_spacing=5)
|
||||
|
||||
self.sysinfo = screen.printer.system_info
|
||||
if not self.sysinfo:
|
||||
logging.debug("Asking for info")
|
||||
self.sysinfo = screen.apiclient.send_request("machine/system_info")
|
||||
if 'system_info' in self.sysinfo:
|
||||
screen.printer.system_info = self.sysinfo['system_info']
|
||||
self.sysinfo = self.sysinfo['system_info']
|
||||
logging.debug(self.sysinfo)
|
||||
if self.sysinfo:
|
||||
self.content.add(self.create_layout())
|
||||
else:
|
||||
self.content.add(Gtk.Label(label=_("No info available"), vexpand=True))
|
||||
sysinfo = screen.printer.system_info
|
||||
logging.info(sysinfo)
|
||||
|
||||
def back(self):
|
||||
if not self.sysinfo:
|
||||
self._screen.panels_reinit.append("system")
|
||||
return False
|
||||
|
||||
def create_layout(self):
|
||||
self.cpu_count = int(self.sysinfo["cpu_info"]["cpu_count"])
|
||||
self.cpu_count = int(sysinfo["cpu_info"]["cpu_count"])
|
||||
self.labels["cpu_usage"] = Gtk.Label(label="", xalign=0)
|
||||
self.grid.attach(self.labels["cpu_usage"], 0, self.current_row, 1, 1)
|
||||
self.scales["cpu_usage"] = Gtk.ProgressBar(
|
||||
@ -45,14 +38,6 @@ class Panel(ScreenPanel):
|
||||
self.grid.attach(self.scales["cpu_usage"], 1, self.current_row, 1, 1)
|
||||
self.current_row += 1
|
||||
|
||||
for i in range(self.cpu_count):
|
||||
self.labels[f"cpu_usage_{i}"] = Gtk.Label(label="", xalign=0)
|
||||
self.grid.attach(self.labels[f"cpu_usage_{i}"], 0, self.current_row, 1, 1)
|
||||
self.scales[f"cpu_usage_{i}"] = Gtk.ProgressBar(
|
||||
hexpand=True, show_text=False, fraction=0
|
||||
)
|
||||
self.grid.attach(self.scales[f"cpu_usage_{i}"], 1, self.current_row, 1, 1)
|
||||
self.current_row += 1
|
||||
|
||||
self.labels["memory_usage"] = Gtk.Label(label="", xalign=0)
|
||||
self.grid.attach(self.labels["memory_usage"], 0, self.current_row, 1, 1)
|
||||
@ -64,11 +49,46 @@ class Panel(ScreenPanel):
|
||||
|
||||
self.grid.attach(Gtk.Separator(), 0, self.current_row, 2, 1)
|
||||
self.current_row += 1
|
||||
self.populate_info()
|
||||
self.machine_info(sysinfo)
|
||||
self.current_row += 1
|
||||
self.populate_info(sysinfo)
|
||||
|
||||
scroll = self._gtk.ScrolledWindow()
|
||||
scroll.add(self.grid)
|
||||
return scroll
|
||||
self.content.add(scroll)
|
||||
if self.model_config is None:
|
||||
self.model_config = ModelConfig()
|
||||
self.labels["model_menu"] = self._gtk.ScrolledWindow()
|
||||
self.labels["model"] = Gtk.Grid()
|
||||
self.labels["model_menu"].add(self.labels["model"])
|
||||
klipperscreendir = pathlib.Path(__file__).parent.resolve().parent
|
||||
self.model_list_path = os.path.join(
|
||||
klipperscreendir, "config", "model_menu.conf"
|
||||
)
|
||||
self.model_list = pathlib.Path(self.model_list_path).read_text()
|
||||
with open(self.model_list_path) as file:
|
||||
for line in file:
|
||||
model_name = line.strip()
|
||||
self.models[model_name] = {
|
||||
"name": model_name,
|
||||
"type": "button",
|
||||
"callback": self.change_model,
|
||||
}
|
||||
self.add_option(
|
||||
"model", self.models, model_name, self.models[model_name]
|
||||
)
|
||||
def change_model(self, widget, event):
|
||||
self.model_config.generate_config(event)
|
||||
def on_model_click(self, widget, event):
|
||||
current_time = time.time()
|
||||
if (current_time - self.last_click_time) <= self.click_threshold:
|
||||
self.click_count += 1
|
||||
else:
|
||||
self.click_count = 0
|
||||
self.last_click_time = current_time
|
||||
if self.click_count == self.target_clicks:
|
||||
self.click_count = 0
|
||||
self.load_menu("system", _("model"))
|
||||
|
||||
def set_mem_multiplier(self, data):
|
||||
memory_units = data.get("memory_units", "kB").lower()
|
||||
@ -87,9 +107,21 @@ class Panel(ScreenPanel):
|
||||
label = Gtk.Label(label=text, use_markup=True, xalign=0, wrap=True)
|
||||
self.grid.attach(label, column, self.current_row, 1, 1)
|
||||
self.current_row += 1
|
||||
def machine_info(self, sysinfo):
|
||||
self.add_label_to_grid(self.prettify("device"), 0, bold=True)
|
||||
self.current_row -= 1
|
||||
self.add_label_to_grid("Maker: CreatBot", 1)
|
||||
event_box = Gtk.EventBox()
|
||||
event_box.connect("button-press-event", self.on_model_click)
|
||||
mode = self._screen.connecting_to_printer.split("-")[0]
|
||||
label = Gtk.Label(label=f"Model: {mode}", use_markup=True, xalign=0, wrap=True)
|
||||
self.grid.attach(event_box, 1, self.current_row, 1, 1)
|
||||
self.current_row += 1
|
||||
event_box.add(label)
|
||||
self.add_label_to_grid(f"Name: {self._screen.connecting_to_printer}", 1)
|
||||
|
||||
def populate_info(self):
|
||||
for category, data in self.sysinfo.items():
|
||||
def populate_info(self, sysinfo):
|
||||
for category, data in sysinfo.items():
|
||||
if category == "python":
|
||||
self.add_label_to_grid(self.prettify(category), 0, bold=True)
|
||||
self.current_row -= 1
|
||||
@ -107,7 +139,7 @@ class Panel(ScreenPanel):
|
||||
"service_state",
|
||||
"instance_ids",
|
||||
)
|
||||
or not self.sysinfo[category]
|
||||
or not sysinfo[category]
|
||||
):
|
||||
continue
|
||||
|
||||
@ -143,8 +175,6 @@ class Panel(ScreenPanel):
|
||||
self.add_label_to_grid(f"{self.prettify(key)}: {value}", 1)
|
||||
|
||||
def process_update(self, action, data):
|
||||
if not self.sysinfo:
|
||||
return
|
||||
if action == "notify_proc_stat_update":
|
||||
self.labels["cpu_usage"].set_label(
|
||||
f'CPU: {data["system_cpu_usage"]["cpu"]:.0f}%'
|
||||
@ -152,13 +182,6 @@ class Panel(ScreenPanel):
|
||||
self.scales["cpu_usage"].set_fraction(
|
||||
float(data["system_cpu_usage"]["cpu"]) / 100
|
||||
)
|
||||
for i in range(self.cpu_count):
|
||||
self.labels[f"cpu_usage_{i}"].set_label(
|
||||
f'CPU {i}: {data["system_cpu_usage"][f"cpu{i}"]:.0f}%'
|
||||
)
|
||||
self.scales[f"cpu_usage_{i}"].set_fraction(
|
||||
float(data["system_cpu_usage"][f"cpu{i}"]) / 100
|
||||
)
|
||||
|
||||
self.labels["memory_usage"].set_label(
|
||||
_("Memory")
|
||||
|
Loading…
x
Reference in New Issue
Block a user