增加工厂设置页面,并添加机型设置选项
This commit is contained in:
86
panels/factory_settings.py
Normal file
86
panels/factory_settings.py
Normal file
@@ -0,0 +1,86 @@
|
||||
import logging
|
||||
import os.path
|
||||
import pathlib
|
||||
|
||||
import gi
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import GLib, Gtk
|
||||
|
||||
from ks_includes.ModelConfig import ModelConfig
|
||||
from ks_includes.screen_panel import ScreenPanel
|
||||
|
||||
|
||||
class Panel(ScreenPanel):
|
||||
def __init__(self, screen, title):
|
||||
title = title or "factory settings"
|
||||
super().__init__(screen, title)
|
||||
self.factory_settings_list = [
|
||||
{
|
||||
"Select Model": {
|
||||
"section": "main",
|
||||
"name": _("Select Model"),
|
||||
"type": "button",
|
||||
"callback": self.show_select_model,
|
||||
}
|
||||
}
|
||||
]
|
||||
self.settings = {}
|
||||
self.select_model = False
|
||||
self.labels["setting_menu"] = self._gtk.ScrolledWindow()
|
||||
self.labels["settings"] = Gtk.Grid()
|
||||
self.labels["setting_menu"].add(self.labels["settings"])
|
||||
|
||||
for option in self.factory_settings_list:
|
||||
name = list(option)[0]
|
||||
self.add_option("settings", self.settings, name, option[name])
|
||||
|
||||
self.content.add(self.labels["setting_menu"])
|
||||
self.content.show_all()
|
||||
|
||||
def back(self):
|
||||
if self.select_model:
|
||||
self.hide_select_model()
|
||||
return True
|
||||
return False
|
||||
|
||||
def show_select_model(self, widget, option):
|
||||
self.create_select_model()
|
||||
for child in self.content.get_children():
|
||||
self.content.remove(child)
|
||||
self.content.add(self.labels["model_menu"])
|
||||
self.content.show_all()
|
||||
self.select_model = True
|
||||
|
||||
def create_select_model(self):
|
||||
if "model_menu" in self.labels:
|
||||
return
|
||||
if not hasattr(self, "model_config") or 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:
|
||||
self.models = {}
|
||||
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 hide_select_model(self):
|
||||
for child in self.content.get_children():
|
||||
self.content.remove(child)
|
||||
if "setting_menu" in self.labels:
|
||||
self.content.add(self.labels["setting_menu"])
|
||||
self.content.show_all()
|
||||
self.select_model = False
|
Reference in New Issue
Block a user