fan: add max and stop buttons
This commit is contained in:
parent
d3ce521bb0
commit
6051e51f0e
@ -44,23 +44,28 @@ class FanPanel(ScreenPanel):
|
|||||||
|
|
||||||
for fan in self.devices:
|
for fan in self.devices:
|
||||||
if fan in data and "speed" in data[fan]:
|
if fan in data and "speed" in data[fan]:
|
||||||
self.update_fan_speed(fan, self._printer.get_fan_speed(fan, data[fan]["speed"]))
|
self.update_fan_speed(None, fan, self._printer.get_fan_speed(fan, data[fan]["speed"]))
|
||||||
|
|
||||||
def update_fan_speed(self, fan, speed):
|
def update_fan_speed(self, widget, fan, speed):
|
||||||
if fan not in self.devices:
|
if fan not in self.devices:
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.devices[fan]['changeable'] is True:
|
if self.devices[fan]['changeable'] is True:
|
||||||
if self.devices[fan]['scale'].has_grab():
|
if self.devices[fan]['scale'].has_grab():
|
||||||
return
|
return
|
||||||
self.fan_speed[fan] = round(float(speed) * 100)
|
self.devices[fan]["speed"] = round(float(speed) * 100)
|
||||||
self.devices[fan]['scale'].disconnect_by_func(self.set_fan_speed)
|
self.devices[fan]['scale'].disconnect_by_func(self.set_fan_speed)
|
||||||
self.devices[fan]['scale'].set_value(self.fan_speed[fan])
|
self.devices[fan]['scale'].set_value(self.devices[fan]["speed"])
|
||||||
self.devices[fan]['scale'].connect("button-release-event", self.set_fan_speed, fan)
|
self.devices[fan]['scale'].connect("button-release-event", self.set_fan_speed, fan)
|
||||||
else:
|
else:
|
||||||
self.fan_speed[fan] = float(speed)
|
self.devices[fan]["speed"] = float(speed)
|
||||||
self.devices[fan]['scale'].set_fraction(self.fan_speed[fan])
|
self.devices[fan]['scale'].set_fraction(self.devices[fan]["speed"])
|
||||||
|
if widget is not None:
|
||||||
|
self.set_fan_speed(None, None, fan)
|
||||||
|
|
||||||
def add_fan(self, fan):
|
def add_fan(self, fan):
|
||||||
|
_ = self.lang.gettext
|
||||||
|
|
||||||
logging.info("Adding fan: %s" % fan)
|
logging.info("Adding fan: %s" % fan)
|
||||||
changeable = False
|
changeable = False
|
||||||
for x in CHANGEABLE_FANS:
|
for x in CHANGEABLE_FANS:
|
||||||
@ -68,11 +73,6 @@ class FanPanel(ScreenPanel):
|
|||||||
changeable = True
|
changeable = True
|
||||||
break
|
break
|
||||||
|
|
||||||
frame = Gtk.Frame()
|
|
||||||
frame.get_style_context().add_class("frame-item")
|
|
||||||
|
|
||||||
self.fan_speed[fan] = float(self._printer.get_fan_speed(fan))
|
|
||||||
|
|
||||||
name = Gtk.Label()
|
name = Gtk.Label()
|
||||||
if fan == "fan":
|
if fan == "fan":
|
||||||
fan_name = "Part Fan"
|
fan_name = "Part Fan"
|
||||||
@ -87,36 +87,51 @@ class FanPanel(ScreenPanel):
|
|||||||
name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
|
name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
|
||||||
|
|
||||||
adj = Gtk.Adjustment(0, 0, 100, 1, 5, 0)
|
adj = Gtk.Adjustment(0, 0, 100, 1, 5, 0)
|
||||||
|
fan_col = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
|
||||||
|
fan_col.set_hexpand(True)
|
||||||
|
fan_col.set_vexpand(False)
|
||||||
|
stop_btn = self._gtk.ButtonImage("cancel", None, "color1", 1)
|
||||||
|
stop_btn.set_hexpand(False)
|
||||||
|
stop_btn.connect("clicked", self.update_fan_speed, fan, 0)
|
||||||
|
max_btn = self._gtk.ButtonImage("fan-on", _("Max"), "color2", 1)
|
||||||
|
max_btn.set_hexpand(False)
|
||||||
|
max_btn.connect("clicked", self.update_fan_speed, fan, 100)
|
||||||
|
|
||||||
|
speed = float(self._printer.get_fan_speed(fan))
|
||||||
if changeable is True:
|
if changeable is True:
|
||||||
self.fan_speed[fan] = round(self.fan_speed[fan] * 100)
|
speed = round(speed * 100)
|
||||||
scale = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL, adjustment=adj)
|
scale = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL, adjustment=adj)
|
||||||
scale.set_value(self.fan_speed[fan])
|
scale.set_value(speed)
|
||||||
scale.set_digits(0)
|
scale.set_digits(0)
|
||||||
scale.set_hexpand(True)
|
scale.set_hexpand(True)
|
||||||
scale.set_has_origin(True)
|
scale.set_has_origin(True)
|
||||||
scale.get_style_context().add_class("fan_slider")
|
scale.get_style_context().add_class("fan_slider")
|
||||||
scale.connect("button-release-event", self.set_fan_speed, fan)
|
scale.connect("button-release-event", self.set_fan_speed, fan)
|
||||||
|
fan_col.add(stop_btn)
|
||||||
|
fan_col.add(scale)
|
||||||
|
fan_col.add(max_btn)
|
||||||
else:
|
else:
|
||||||
scale = Gtk.ProgressBar()
|
scale = Gtk.ProgressBar()
|
||||||
scale.set_fraction(self.fan_speed[fan])
|
scale.set_fraction(speed)
|
||||||
scale.set_show_text(True)
|
scale.set_show_text(True)
|
||||||
scale.set_hexpand(True)
|
scale.set_hexpand(True)
|
||||||
# scale.get_style_context().add_class("fan_slider")
|
fan_col.pack_start(scale, True, True, 10)
|
||||||
|
|
||||||
labels = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
fan_row = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5)
|
||||||
labels.add(name)
|
fan_row.set_hexpand(True)
|
||||||
labels.add(scale)
|
fan_row.set_vexpand(False)
|
||||||
|
fan_row.add(name)
|
||||||
|
fan_row.add(fan_col)
|
||||||
|
|
||||||
dev = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
|
frame = Gtk.Frame()
|
||||||
dev.set_hexpand(True)
|
frame.get_style_context().add_class("frame-item")
|
||||||
dev.set_vexpand(False)
|
frame.add(fan_row)
|
||||||
dev.add(labels)
|
|
||||||
frame.add(dev)
|
|
||||||
|
|
||||||
self.devices[fan] = {
|
self.devices[fan] = {
|
||||||
"changeable": changeable,
|
"changeable": changeable,
|
||||||
"row": frame,
|
"row": frame,
|
||||||
"scale": scale,
|
"scale": scale,
|
||||||
|
"speed": speed,
|
||||||
}
|
}
|
||||||
|
|
||||||
devices = sorted(self.devices)
|
devices = sorted(self.devices)
|
||||||
@ -153,5 +168,5 @@ class FanPanel(ScreenPanel):
|
|||||||
GLib.timeout_add_seconds(1, self.check_fan_speed, fan)
|
GLib.timeout_add_seconds(1, self.check_fan_speed, fan)
|
||||||
|
|
||||||
def check_fan_speed(self, fan):
|
def check_fan_speed(self, fan):
|
||||||
self.update_fan_speed(fan, self._printer.get_fan_speed(fan))
|
self.update_fan_speed(None, fan, self._printer.get_fan_speed(fan))
|
||||||
return False
|
return False
|
||||||
|
Loading…
x
Reference in New Issue
Block a user