forked from CreatBot/CreatBotKlipperScreen
Moving development into master
This commit is contained in:
145
panels/extrude.py
Normal file
145
panels/extrude.py
Normal file
@@ -0,0 +1,145 @@
|
||||
import gi
|
||||
import logging
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gdk, GLib
|
||||
|
||||
from KlippyGtk import KlippyGtk
|
||||
from KlippyGcodes import KlippyGcodes
|
||||
from panels.screen_panel import ScreenPanel
|
||||
|
||||
class ExtrudePanel(ScreenPanel):
|
||||
distance = 1
|
||||
distances = ['1','5','10','25']
|
||||
speed = "Medium"
|
||||
speeds = ["Slow", "Medium", "Fast"]
|
||||
speed_trans = {
|
||||
"Slow": "300",
|
||||
"Medium": "800",
|
||||
"Fast": "1400"
|
||||
}
|
||||
|
||||
|
||||
def initialize(self, panel_name):
|
||||
|
||||
grid = KlippyGtk.HomogeneousGrid()
|
||||
|
||||
|
||||
|
||||
|
||||
self.labels['tool0'] = KlippyGtk.ButtonImage("extruder-1","Tool 1","color1")
|
||||
self.labels['tool0'].get_style_context().add_class("button_active")
|
||||
self.labels['extrude'] = KlippyGtk.ButtonImage("extrude","Extrude","color3")
|
||||
self.labels['extrude'].connect("clicked", self.extrude, "+")
|
||||
self.labels['retract'] = KlippyGtk.ButtonImage("extrude","Retract","color2")
|
||||
self.labels['retract'].connect("clicked", self.extrude, "-")
|
||||
self.labels['temperature'] = KlippyGtk.ButtonImage("heat-up","Temperature","color4")
|
||||
self.labels['temperature'].connect("clicked", self.menu_item_clicked, "temperature", {
|
||||
"name": "Temperature",
|
||||
"panel": "temperature"
|
||||
})
|
||||
|
||||
|
||||
grid.attach(self.labels['tool0'], 0, 0, 1, 1)
|
||||
grid.attach(self.labels['extrude'], 0, 1, 1, 1)
|
||||
grid.attach(self.labels['retract'], 3, 1, 1, 1)
|
||||
grid.attach(self.labels['temperature'], 0, 2, 1, 1)
|
||||
|
||||
|
||||
distgrid = Gtk.Grid()
|
||||
j = 0;
|
||||
for i in self.distances:
|
||||
self.labels["dist"+str(i)] = KlippyGtk.ToggleButton(i)
|
||||
self.labels["dist"+str(i)].connect("clicked", self.change_distance, i)
|
||||
ctx = self.labels["dist"+str(i)].get_style_context()
|
||||
if j == 0:
|
||||
ctx.add_class("distbutton_top")
|
||||
elif j == len(self.distances)-1:
|
||||
ctx.add_class("distbutton_bottom")
|
||||
else:
|
||||
ctx.add_class("distbutton")
|
||||
if i == "1":
|
||||
ctx.add_class("distbutton_active")
|
||||
distgrid.attach(self.labels["dist"+str(i)], j, 0, 1, 1)
|
||||
j += 1
|
||||
self.labels["dist1"].set_active(True)
|
||||
|
||||
speedgrid = Gtk.Grid()
|
||||
j = 0;
|
||||
for i in self.speeds:
|
||||
self.labels["speed"+str(i)] = KlippyGtk.ToggleButton(i)
|
||||
self.labels["speed"+str(i)].connect("clicked", self.change_speed, i)
|
||||
ctx = self.labels["speed"+str(i)].get_style_context()
|
||||
if j == 0:
|
||||
ctx.add_class("distbutton_top")
|
||||
elif j == len(self.speeds)-1:
|
||||
ctx.add_class("distbutton_bottom")
|
||||
else:
|
||||
ctx.add_class("distbutton")
|
||||
if i == "Medium":
|
||||
ctx.add_class("distbutton_active")
|
||||
speedgrid.attach(self.labels["speed"+str(i)], j, 0, 1, 1)
|
||||
j += 1
|
||||
self.labels["speedMedium"].set_active(True)
|
||||
|
||||
box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||
box.add(distgrid)
|
||||
box.add(speedgrid)
|
||||
|
||||
grid.attach(box, 1, 2, 2, 1)
|
||||
|
||||
|
||||
b = KlippyGtk.ButtonImage("back", "Back")
|
||||
b.connect("clicked", self._screen._menu_go_back)
|
||||
grid.attach(b, 3, 2, 1, 1)
|
||||
|
||||
|
||||
|
||||
self.panel = grid
|
||||
self._screen.add_subscription(panel_name)
|
||||
|
||||
def process_update(self, data):
|
||||
if "extruder" in data and data['extruder'] != "extruder":
|
||||
self.update_temp(
|
||||
"tool0",
|
||||
round(data['extruder']['temperature'],1),
|
||||
round(data['extruder']['temperature'],1)
|
||||
)
|
||||
|
||||
def change_distance(self, widget, distance):
|
||||
if self.distance == distance:
|
||||
return
|
||||
logging.info("### Distance " + str(distance))
|
||||
|
||||
ctx = self.labels["dist"+str(self.distance)].get_style_context()
|
||||
ctx.remove_class("distbutton_active")
|
||||
|
||||
self.distance = distance
|
||||
ctx = self.labels["dist"+self.distance].get_style_context()
|
||||
ctx.add_class("distbutton_active")
|
||||
for i in self.distances:
|
||||
if i == self.distance:
|
||||
continue
|
||||
self.labels["dist"+str(i)].set_active(False)
|
||||
|
||||
def change_speed(self, widget, speed):
|
||||
if self.speed == speed:
|
||||
return
|
||||
logging.info("### Speed " + str(speed))
|
||||
|
||||
self.labels["speed" + str(self.speed)].get_style_context().remove_class("distbutton_active")
|
||||
|
||||
self.speed = speed
|
||||
self.labels["speed" + self.speed].get_style_context().add_class("distbutton_active")
|
||||
for i in self.speeds:
|
||||
if i == self.speed:
|
||||
continue
|
||||
self.labels["speed" + str(i)].set_active(False)
|
||||
|
||||
def extrude(self, widget, dir):
|
||||
dist = str(self.distance) if dir == "+" else "-" + str(self.distance)
|
||||
speed = self.speed_trans[self.speed]
|
||||
print(KlippyGcodes.extrude(dist, speed))
|
||||
|
||||
self._screen._ws.send_method("post_printer_gcode_script", {"script": KlippyGcodes.EXTRUDE_REL})
|
||||
self._screen._ws.send_method("post_printer_gcode_script", {"script": KlippyGcodes.extrude(dist, speed)})
|
Reference in New Issue
Block a user