printrun-src/printrun/pronterface.py

Wed, 20 Jan 2021 11:37:03 +0100

author
mdd
date
Wed, 20 Jan 2021 11:37:03 +0100
changeset 48
3c27b4ee6fec
parent 47
dcc64b767b64
permissions
-rw-r--r--

reimplemented lasercutter changes

48
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1 # FILE MODIFIED BY NEOSOFT - MALTE DI DONATO
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
2 # Embed Lasercut functions from laser.py
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
3 from . import laser
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
4 try:
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
5 from . import module_watcher
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
6 mw = module_watcher.ModuleWatcher()
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
7 mw.watch_module('laser')
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
8 mw.start_watching()
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
9 except Exception, e:
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
10 print e
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
11 print "ModuleWatcher not loaded, skipping autoreloading of changed modules"
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
12
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
13 # This file is part of the Printrun suite.
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
14 #
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
15 # Printrun is free software: you can redistribute it and/or modify
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
16 # it under the terms of the GNU General Public License as published by
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
17 # the Free Software Foundation, either version 3 of the License, or
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
18 # (at your option) any later version.
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
19 #
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
20 # Printrun is distributed in the hope that it will be useful,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
21 # but WITHOUT ANY WARRANTY; without even the implied warranty of
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
22 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
23 # GNU General Public License for more details.
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
24 #
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
25 # You should have received a copy of the GNU General Public License
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
26 # along with Printrun. If not, see <http://www.gnu.org/licenses/>.
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
27
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
28 import os
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
29 import platform
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
30 import queue
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
31 import sys
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
32 import time
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
33 import threading
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
34 import traceback
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
35 import io as StringIO
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
36 import subprocess
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
37 import glob
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
38 import logging
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
39 import re
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
40
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
41 try: import simplejson as json
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
42 except ImportError: import json
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
43
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
44 from . import pronsole
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
45 from . import printcore
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
46 from printrun.spoolmanager import spoolmanager_gui
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
47
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
48 from .utils import install_locale, setup_logging, dosify, \
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
49 iconfile, configfile, format_time, format_duration, \
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
50 hexcolor_to_float, parse_temperature_report, \
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
51 prepare_command, check_rgb_color, check_rgba_color, compile_file, \
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
52 write_history_to, read_history_from
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
53 install_locale('pronterface')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
54
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
55 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
56 import wx
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
57 import wx.adv
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
58 if wx.VERSION < (4,):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
59 raise ImportError()
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
60 except:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
61 logging.error(_("WX >= 4 is not installed. This program requires WX >= 4 to run."))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
62 raise
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
63
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
64 from .gui.widgets import SpecialButton, MacroEditor, PronterOptions, ButtonEdit
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
65
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
66 winsize = (800, 500)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
67 layerindex = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
68 if os.name == "nt":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
69 winsize = (800, 530)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
70
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
71 pronterface_quitting = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
72
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
73 class PronterfaceQuitException(Exception):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
74 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
75
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
76 from .gui import MainWindow
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
77 from .settings import wxSetting, HiddenSetting, StringSetting, SpinSetting, \
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
78 FloatSpinSetting, BooleanSetting, StaticTextSetting, ColorSetting, ComboSetting
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
79 from printrun import gcoder
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
80 from .pronsole import REPORT_NONE, REPORT_POS, REPORT_TEMP, REPORT_MANUAL
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
81
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
82 def format_length(mm, fractional=2):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
83 if mm <= 10:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
84 units = mm
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
85 suffix = 'mm'
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
86 elif mm < 1000:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
87 units = mm / 10
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
88 suffix = 'cm'
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
89 else:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
90 units = mm / 1000
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
91 suffix = 'm'
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
92 return '%%.%df' % fractional % units + suffix
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
93
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
94 class ConsoleOutputHandler:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
95 """Handle console output. All messages go through the logging submodule. We setup a logging handler to get logged messages and write them to both stdout (unless a log file path is specified, in which case we add another logging handler to write to this file) and the log panel.
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
96 We also redirect stdout and stderr to ourself to catch print messages and al."""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
97
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
98 def __init__(self, target, log_path):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
99 self.stdout = sys.stdout
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
100 self.stderr = sys.stderr
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
101 sys.stdout = self
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
102 sys.stderr = self
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
103 self.print_on_stdout = not log_path
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
104 if log_path:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
105 setup_logging(self, log_path, reset_handlers = True)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
106 else:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
107 setup_logging(sys.stdout, reset_handlers = True)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
108 self.target = target
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
109
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
110 def __del__(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
111 sys.stdout = self.stdout
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
112 sys.stderr = self.stderr
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
113
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
114 def write(self, data):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
115 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
116 self.target(data)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
117 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
118 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
119 if self.print_on_stdout:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
120 self.stdout.write(data)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
121
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
122 def flush(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
123 if self.stdout:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
124 self.stdout.flush()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
125
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
126 class PronterWindow(MainWindow, pronsole.pronsole):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
127
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
128 _fgcode = None
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
129 printer_progress_time = time.time()
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
130
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
131 def _get_fgcode(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
132 return self._fgcode
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
133
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
134 def _set_fgcode(self, value):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
135 self._fgcode = value
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
136 self.excluder = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
137 self.excluder_e = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
138 self.excluder_z_abs = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
139 self.excluder_z_rel = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
140 fgcode = property(_get_fgcode, _set_fgcode)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
141
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
142 def _get_display_graph(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
143 return self.settings.tempgraph
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
144 display_graph = property(_get_display_graph)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
145
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
146 def _get_display_gauges(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
147 return self.settings.tempgauges
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
148 display_gauges = property(_get_display_gauges)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
149
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
150 def __init__(self, app, filename = None, size = winsize):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
151 pronsole.pronsole.__init__(self)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
152 self.app = app
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
153 self.window_ready = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
154 self.ui_ready = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
155 self._add_settings(size)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
156
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
157 self.pauseScript = None #"pause.gcode"
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
158 self.endScript = None #"end.gcode"
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
159
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
160 self.filename = filename
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
161
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
162 self.capture_skip = {}
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
163 self.capture_skip_newline = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
164 self.fgcode = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
165 self.excluder = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
166 self.slicep = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
167 self.current_pos = [0, 0, 0]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
168 self.paused = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
169 self.uploading = False
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
170 self.sentglines = queue.Queue(0)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
171 self.cpbuttons = {
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
172 "motorsoff": SpecialButton(_("Motors off"), ("M84"), (250, 250, 250), _("Switch all motors off")),
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
173 "extrude": SpecialButton(_("Extrude"), ("pront_extrude"), (225, 200, 200), _("Advance extruder by set length")),
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
174 "reverse": SpecialButton(_("Reverse"), ("pront_reverse"), (225, 200, 200), _("Reverse extruder by set length")),
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
175 }
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
176 self.custombuttons = []
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
177 self.btndict = {}
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
178 self.filehistory = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
179 self.autoconnect = False
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
180 self.autoscrolldisable = False
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
181
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
182 self.parse_cmdline(sys.argv[1:])
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
183 for field in dir(self.settings):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
184 if field.startswith("_gcview_color_"):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
185 cleanname = field[1:]
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
186 color = hexcolor_to_float(getattr(self.settings, cleanname), 4)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
187 setattr(self, cleanname, list(color))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
188
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
189 # FIXME: We need to initialize the main window after loading the
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
190 # configs to restore the size, but this might have some unforeseen
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
191 # consequences.
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
192 # -- Okai, it seems it breaks things like update_gviz_params ><
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
193 os.putenv("UBUNTU_MENUPROXY", "0")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
194 size = (self.settings.last_window_width, self.settings.last_window_height)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
195 MainWindow.__init__(self, None, title = _("Pronterface"), size = size)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
196 if self.settings.last_window_maximized:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
197 self.Maximize()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
198 self.SetIcon(wx.Icon(iconfile("pronterface.png"), wx.BITMAP_TYPE_PNG))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
199 self.Bind(wx.EVT_SIZE, self.on_resize)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
200 self.Bind(wx.EVT_MAXIMIZE, self.on_maximize)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
201 self.window_ready = True
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
202 self.Bind(wx.EVT_CLOSE, self.closewin)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
203 self.Bind(wx.EVT_CHAR_HOOK, self.on_key)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
204 # set feedrates in printcore for pause/resume
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
205 self.p.xy_feedrate = self.settings.xy_feedrate
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
206 self.p.z_feedrate = self.settings.z_feedrate
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
207
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
208 self.panel.SetBackgroundColour(self.bgcolor)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
209 customdict = {}
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
210 try:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
211 exec(compile_file(configfile("custombtn.txt")), customdict)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
212 if len(customdict["btns"]):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
213 if not len(self.custombuttons):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
214 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
215 self.custombuttons = customdict["btns"]
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
216 for n in range(len(self.custombuttons)):
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
217 self.cbutton_save(n, self.custombuttons[n])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
218 os.rename("custombtn.txt", "custombtn.old")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
219 rco = open("custombtn.txt", "w")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
220 rco.write(_("# I moved all your custom buttons into .pronsolerc.\n# Please don't add them here any more.\n# Backup of your old buttons is in custombtn.old\n"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
221 rco.close()
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
222 except IOError as x:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
223 logging.error(str(x))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
224 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
225 logging.warning(_("Note!!! You have specified custom buttons in both custombtn.txt and .pronsolerc"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
226 logging.warning(_("Ignoring custombtn.txt. Remove all current buttons to revert to custombtn.txt"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
227
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
228 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
229 pass
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
230 self.menustrip = wx.MenuBar()
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
231 self.reload_ui()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
232 # disable all printer controls until we connect to a printer
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
233 self.gui_set_disconnected()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
234 self.statusbar = self.CreateStatusBar()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
235 self.statusbar.SetStatusText(_("Not connected to printer."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
236
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
237 self.t = ConsoleOutputHandler(self.catchprint, self.settings.log_path)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
238 self.stdout = sys.stdout
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
239 self.slicing = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
240 self.loading_gcode = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
241 self.loading_gcode_message = ""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
242 self.mini = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
243 self.p.sendcb = self.sentcb
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
244 self.p.preprintsendcb = self.preprintsendcb
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
245 self.p.printsendcb = self.printsentcb
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
246 self.p.startcb = self.startcb
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
247 self.p.endcb = self.endcb
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
248 self.cur_button = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
249 self.predisconnect_mainqueue = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
250 self.predisconnect_queueindex = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
251 self.predisconnect_layer = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
252 self.hsetpoint = 0.0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
253 self.bsetpoint = 0.0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
254 if self.autoconnect:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
255 self.connect()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
256 if self.filename is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
257 self.do_load(self.filename)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
258 if self.settings.monitor:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
259 self.update_monitor()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
260
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
261 # --------------------------------------------------------------
48
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
262 # Lasercutter methods
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
263 # --------------------------------------------------------------
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
264
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
265 def on_lc_printfile(self, event):
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
266 # lc print button
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
267 self.log("Priming Z axis to initial focus")
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
268 line = self.precmd("G1 Z%.2f" % (self.settings.lc_z_focus + self.lc_material_thickness.GetValue()))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
269 wx.CallAfter(self.onecmd, line)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
270 self.lc_printing = True
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
271 wx.CallAfter(self.printfile, None)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
272
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
273 def endcb_lasercut(self):
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
274 # LASERCUT: Now check if we should do another print pass?
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
275 self.log("event: endcb_lasercut")
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
276 if self.lc_printing:
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
277 self.log(" -> checking if something to do...")
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
278 pass_count = self.lc_pass_count.GetValue()
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
279 if pass_count > 1:
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
280 time.sleep(0.5)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
281 if self.pass_current < pass_count:
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
282 self.pass_current += 1
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
283 self.log("Starting lasercut pass # %i of %i" % (self.pass_current, pass_count))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
284 if self.lc_pass_zdiff.GetValue() != 0:
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
285 # move Z focus
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
286 new_z = self.settings.lc_z_focus + self.lc_material_thickness.GetValue() + (
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
287 self.lc_pass_zdiff.GetValue() * (self.pass_current - 1))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
288 self.log("Re-Positioning laser focus by %.1f mm to %.1f" % (self.lc_pass_zdiff.GetValue(), new_z))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
289 line = self.precmd("G1 Z%.2f" % (new_z))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
290 self.onecmd(line)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
291 time.sleep(0.5)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
292
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
293 # "click" print button again
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
294 tmp = self.pass_current
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
295 self.printfile(None)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
296 self.pass_current = tmp
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
297 else:
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
298 self.lc_printing = False
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
299 wx.CallAfter(self.lc_printbtn.Enable)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
300 wx.CallAfter(self.lc_printbtn.SetLabel, _("Start cutting"))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
301
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
302 self.log("Resetting Z axis to initial focus")
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
303 line = self.precmd("G1 Z%.2f" % (self.settings.lc_z_focus + self.lc_material_thickness.GetValue()))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
304 self.onecmd(line)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
305 else:
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
306 self.lc_printing = False
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
307 wx.CallAfter(self.lc_printbtn.Enable)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
308 wx.CallAfter(self.lc_printbtn.SetLabel, _("Start cutting"))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
309
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
310
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
311 def update_lc_settings(self, key, value):
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
312 return True
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
313
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
314 def _lc_add_settings(self, size):
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
315 # first add the lasercutter options
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
316 self.settings._add(StaticTextSetting("separator_lc_general", "General laser settings", "", group = "Laser"))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
317 self.settings._add(BooleanSetting("lc_melzi_hack", False, "Use Melzi M571 Hack instead M3/M5", "no description :)", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
318 self.settings._add(SpinSetting("lc_travel_speed", 120, 1, 300, "Travel speed in mm/s", "", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
319 self.settings._add(SpinSetting("lc_engrave_speed", 10, 1, 300, "Engrave speed in mm/s", "", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
320 self.settings._add(SpinSetting("lc_z_focus", 16, -80, 80, "Laser Z focus position", "", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
321 self.settings._add(SpinSetting("lc_pass_count", 1, 0, 20, "Default Number of cutting passes", "", "Laser"), self.reload_ui)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
322 self.settings._add(FloatSpinSetting("lc_pass_zdiff", -0.25, -2.0, 2.0, "Default Z movement after each cut", "", "Laser"), self.reload_ui)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
323 self.settings._add(FloatSpinSetting("lc_material_thickness", 4.0, 0.0, 80.0, "Default Material Thickness", "", "Laser"), self.reload_ui)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
324
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
325 self.settings._add(StaticTextSetting("separator_lc_bitmap", "PNG Bitmap processing", "", group = "Laser"))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
326 self.settings._add(FloatSpinSetting("lc_bitmap_speed_factor", 1.0, 0.1, 2.0, "Engrave speed factor", "", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
327 self.settings._add(SpinSetting("lc_dpi", 300, 25, 600, "Image DPI", "Image resolution for scaling", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
328 self.settings._add(SpinSetting("lc_grey_threshold", 0, 0, 255, "Grey threshold value for RGB", "", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
329 self.settings._add(BooleanSetting("lc_invert_cut", True, "PNG: Invert grey threshold", "Invert laser on/off logic", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
330 self.settings._add(BooleanSetting("lc_change_dir", True, "PNG: Change direction", "Engrave in both directions on Y Axis", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
331
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
332 self.settings._add(StaticTextSetting("separator_lc_hpgl", "HPGL processing", "", group = "Laser"))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
333 self.settings._add(FloatSpinSetting("lc_hpgl_speed_factor", 1.0, 0.1, 2.0, "Engrave speed factor", "", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
334
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
335 self.settings._add(StaticTextSetting("separator_lc_svg", "SVG processing", "", group = "Laser"))
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
336 self.settings._add(FloatSpinSetting("lc_svg_speed_factor", 1.0, 0.1, 2.0, "Engrave speed factor", "", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
337 self.settings._add(FloatSpinSetting("lc_svg_smoothness", 0.2, 0.1, 10.0, "Smoothness", "Smoothness of curves (smaller value = smoother curve)", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
338 self.settings._add(SpinSetting("lc_svg_width", 50, 1, 9999, "Width (mm)", "Image width", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
339 self.settings._add(SpinSetting("lc_svg_height", 50, 1, 9999, "Height (mm)", "Image height", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
340 self.settings._add(ComboSetting("lc_svg_scalemode", "original", ["original", "scale", "stretch"], "Scaling mode", "scale/stretch to above dimensions", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
341 self.settings._add(BooleanSetting("lc_svg_offset", True, "Calculate offset to X=0, Y=0", "If enabled, move image to origin position", "Laser"), self.update_lc_settings)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
342
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
343
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
344 # --------------------------------------------------------------
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
345 # Main interface handling
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
346 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
347
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
348 def reset_ui(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
349 MainWindow.reset_ui(self)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
350 self.custombuttons_widgets = []
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
351
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
352 def reload_ui(self, *args):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
353 if not self.window_ready: return
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
354 temp_monitor = self.settings.monitor
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
355 self.settings.monitor = False
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
356 self.update_monitor()
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
357 self.Freeze()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
358
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
359 # If UI is being recreated, delete current one
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
360 if self.ui_ready:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
361 # Store log console content
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
362 logcontent = self.logbox.GetValue()
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
363 self.menustrip.SetMenus([])
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
364 if len(self.commandbox.history):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
365 #save current command box history
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
366 if not os.path.exists(self.history_file):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
367 if not os.path.exists(self.cache_dir):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
368 os.makedirs(self.cache_dir)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
369 write_history_to(self.history_file, self.commandbox.history)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
370 # Create a temporary panel to reparent widgets with state we want
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
371 # to retain across UI changes
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
372 temppanel = wx.Panel(self)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
373 # TODO: add viz widgets to statefulControls
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
374 for control in self.statefulControls:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
375 control.GetContainingSizer().Detach(control)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
376 control.Reparent(temppanel)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
377 self.panel.DestroyChildren()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
378 self.gwindow.Destroy()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
379 self.reset_ui()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
380
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
381 # Create UI
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
382 self.create_menu()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
383 self.update_recent_files("recentfiles", self.settings.recentfiles)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
384 self.splitterwindow = None
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
385 if self.settings.uimode in (_("Tabbed"), _("Tabbed with platers")):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
386 self.createTabbedGui()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
387 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
388 self.createGui(self.settings.uimode == _("Compact"),
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
389 self.settings.controlsmode == "Mini")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
390
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
391 if self.splitterwindow:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
392 self.splitterwindow.SetSashPosition(self.settings.last_sash_position)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
393
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
394 def splitter_resize(event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
395 self.splitterwindow.UpdateSize()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
396 self.splitterwindow.Bind(wx.EVT_SIZE, splitter_resize)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
397
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
398 def sash_position_changed(event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
399 self.set("last_sash_position", self.splitterwindow.GetSashPosition())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
400 self.splitterwindow.Bind(wx.EVT_SPLITTER_SASH_POS_CHANGED, sash_position_changed)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
401
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
402 # Set gcview parameters here as they don't get set when viewers are
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
403 # created
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
404 self.update_gcview_params()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
405
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
406 # Finalize
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
407 if self.p.online:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
408 self.gui_set_connected()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
409 if self.ui_ready:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
410 self.logbox.SetValue(logcontent)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
411 temppanel.Destroy()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
412 self.panel.Layout()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
413 if self.fgcode:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
414 self.start_viz_thread()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
415 self.ui_ready = True
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
416 self.settings.monitor = temp_monitor
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
417 self.commandbox.history = read_history_from(self.history_file)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
418 self.commandbox.histindex = len(self.commandbox.history)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
419 self.Thaw()
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
420 if self.settings.monitor:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
421 self.update_monitor()
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
422
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
423 def on_resize(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
424 wx.CallAfter(self.on_resize_real)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
425 event.Skip()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
426
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
427 def on_resize_real(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
428 maximized = self.IsMaximized()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
429 self.set("last_window_maximized", maximized)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
430 if not maximized and not self.IsIconized():
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
431 size = self.GetSize()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
432 self.set("last_window_width", size[0])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
433 self.set("last_window_height", size[1])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
434
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
435 def on_maximize(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
436 self.set("last_window_maximized", self.IsMaximized())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
437 event.Skip()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
438
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
439 def on_exit(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
440 self.Close()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
441
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
442 def on_settings_change(self, changed_settings):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
443 if self.gviz:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
444 self.gviz.on_settings_change(changed_settings)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
445
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
446 def on_key(self, event):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
447 if not isinstance(event.EventObject, (wx.TextCtrl, wx.ComboBox)) \
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
448 or event.HasModifiers():
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
449 ch = chr(event.KeyCode)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
450 keys = {'B': self.btemp, 'H': self.htemp, 'J': self.xyb, 'S': self.commandbox,
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
451 'V': self.gviz}
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
452 widget = keys.get(ch)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
453 #ignore Alt+(S, H), so it can open Settings, Help menu
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
454 if widget and (ch not in 'SH' or not event.AltDown()) \
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
455 and not (event.ControlDown() and ch == 'V'
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
456 and event.EventObject is self.commandbox):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
457 widget.SetFocus()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
458 return
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
459 # On MSWindows button mnemonics are processed only if the
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
460 # focus is in the parent panel
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
461 if event.AltDown() and ch < 'Z':
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
462 in_toolbar = self.toolbarsizer.GetItem(event.EventObject)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
463 candidates = (self.connectbtn, self.connectbtn_cb_var), \
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
464 (self.pausebtn, self.pause), \
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
465 (self.printbtn, self.printfile)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
466 for ctl, cb in candidates:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
467 match = ('&' + ch) in ctl.Label.upper()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
468 handled = in_toolbar and match
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
469 if handled:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
470 break
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
471 # react to 'P' even for 'Restart', 'Resume'
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
472 # print('match', match, 'handled', handled, ctl.Label, ctl.Enabled)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
473 if (match or ch == 'P' and ctl != self.connectbtn) and ctl.Enabled:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
474 # print('call', ch, cb)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
475 cb()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
476 # react to only 1 of 'P' buttons, prefer Resume
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
477 return
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
478
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
479 event.Skip()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
480
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
481 def closewin(self, e):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
482 e.StopPropagation()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
483 self.do_exit("force")
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
484
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
485 def kill(self, e=None):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
486 if len(self.commandbox.history):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
487 #save current command box history
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
488 history = (self.history_file)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
489 if not os.path.exists(history):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
490 if not os.path.exists(self.cache_dir):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
491 os.makedirs(self.cache_dir)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
492 write_history_to(history,self.commandbox.history)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
493 if self.p.printing or self.p.paused:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
494 dlg = wx.MessageDialog(self, _("Print in progress ! Are you really sure you want to quit ?"), _("Exit"), wx.YES_NO | wx.ICON_WARNING)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
495 if dlg.ShowModal() == wx.ID_NO:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
496 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
497 pronsole.pronsole.kill(self)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
498 global pronterface_quitting
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
499 pronterface_quitting = True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
500 self.p.recvcb = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
501 self.p.disconnect()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
502 if hasattr(self, "feedrates_changed"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
503 self.save_in_rc("set xy_feedrate", "set xy_feedrate %d" % self.settings.xy_feedrate)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
504 self.save_in_rc("set z_feedrate", "set z_feedrate %d" % self.settings.z_feedrate)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
505 self.save_in_rc("set e_feedrate", "set e_feedrate %d" % self.settings.e_feedrate)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
506 if self.settings.last_extrusion != self.settings.default_extrusion:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
507 self.save_in_rc("set last_extrusion", "set last_extrusion %d" % self.settings.last_extrusion)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
508 if self.excluder:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
509 self.excluder.close_window()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
510 wx.CallAfter(self.gwindow.Destroy)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
511 wx.CallAfter(self.Destroy)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
512
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
513 @property
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
514 def bgcolor(self):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
515 return (wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWFRAME)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
516 if self.settings.bgcolor == 'auto'
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
517 else self.settings.bgcolor)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
518
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
519 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
520 # Main interface actions
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
521 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
522
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
523 def do_monitor(self, l = ""):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
524 if l.strip() == "":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
525 self.set("monitor", not self.settings.monitor)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
526 elif l.strip() == "off":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
527 self.set("monitor", False)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
528 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
529 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
530 self.monitor_interval = float(l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
531 self.set("monitor", self.monitor_interval > 0)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
532 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
533 self.log(_("Invalid period given."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
534 if self.settings.monitor:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
535 self.log(_("Monitoring printer."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
536 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
537 self.log(_("Done monitoring."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
538
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
539 def do_pront_extrude(self, l = ""):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
540 if self.p.printing and not self.paused:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
541 self.log(_("Please pause or stop print before extruding."))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
542 return
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
543 feed = self.settings.e_feedrate
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
544 self.do_extrude_final(self.edist.GetValue(), feed)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
545
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
546 def do_pront_reverse(self, l = ""):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
547 if self.p.printing and not self.paused:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
548 self.log(_("Please pause or stop print before reversing."))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
549 return
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
550 feed = self.settings.e_feedrate
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
551 self.do_extrude_final(- self.edist.GetValue(), feed)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
552
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
553 def do_settemp(self, l = ""):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
554 try:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
555 if not isinstance(l, str) or not len(l):
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
556 l = str(self.htemp.GetValue().split()[0])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
557 l = l.lower().replace(", ", ".")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
558 for i in self.temps.keys():
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
559 l = l.replace(i, self.temps[i])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
560 f = float(l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
561 if f >= 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
562 if self.p.online:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
563 self.p.send_now("M104 S" + l)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
564 self.log(_("Setting hotend temperature to %g degrees Celsius.") % f)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
565 self.sethotendgui(f)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
566 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
567 self.logError(_("Printer is not online."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
568 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
569 self.logError(_("You cannot set negative temperatures. To turn the hotend off entirely, set its temperature to 0."))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
570 except Exception as x:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
571 self.logError(_("You must enter a temperature. (%s)") % (repr(x),))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
572
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
573 def do_bedtemp(self, l = ""):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
574 try:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
575 if not isinstance(l, str) or not len(l):
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
576 l = str(self.btemp.GetValue().split()[0])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
577 l = l.lower().replace(", ", ".")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
578 for i in self.bedtemps.keys():
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
579 l = l.replace(i, self.bedtemps[i])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
580 f = float(l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
581 if f >= 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
582 if self.p.online:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
583 self.p.send_now("M140 S" + l)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
584 self.log(_("Setting bed temperature to %g degrees Celsius.") % f)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
585 self.setbedgui(f)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
586 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
587 self.logError(_("Printer is not online."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
588 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
589 self.logError(_("You cannot set negative temperatures. To turn the bed off entirely, set its temperature to 0."))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
590 except Exception as x:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
591 self.logError(_("You must enter a temperature. (%s)") % (repr(x),))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
592
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
593 def do_setspeed(self, l = ""):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
594 try:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
595 if not isinstance(l, str) or not len(l):
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
596 l = str(self.speed_slider.GetValue())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
597 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
598 l = l.lower()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
599 speed = int(l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
600 if self.p.online:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
601 self.p.send_now("M220 S" + l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
602 self.log(_("Setting print speed factor to %d%%.") % speed)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
603 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
604 self.logError(_("Printer is not online."))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
605 except Exception as x:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
606 self.logError(_("You must enter a speed. (%s)") % (repr(x),))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
607
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
608 def do_setflow(self, l = ""):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
609 try:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
610 if not isinstance(l, str) or not len(l):
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
611 l = str(self.flow_slider.GetValue())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
612 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
613 l = l.lower()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
614 flow = int(l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
615 if self.p.online:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
616 self.p.send_now("M221 S" + l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
617 self.log(_("Setting print flow factor to %d%%.") % flow)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
618 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
619 self.logError(_("Printer is not online."))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
620 except Exception as x:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
621 self.logError(_("You must enter a flow. (%s)") % (repr(x),))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
622
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
623 def setbedgui(self, f):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
624 self.bsetpoint = f
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
625 if self.display_gauges: self.bedtgauge.SetTarget(int(f))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
626 if self.display_graph: wx.CallAfter(self.graph.SetBedTargetTemperature, int(f))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
627 if f > 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
628 wx.CallAfter(self.btemp.SetValue, str(f))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
629 self.set("last_bed_temperature", str(f))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
630 wx.CallAfter(self.setboff.SetBackgroundColour, None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
631 wx.CallAfter(self.setboff.SetForegroundColour, None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
632 wx.CallAfter(self.setbbtn.SetBackgroundColour, "#FFAA66")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
633 wx.CallAfter(self.setbbtn.SetForegroundColour, "#660000")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
634 wx.CallAfter(self.btemp.SetBackgroundColour, "#FFDABB")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
635 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
636 wx.CallAfter(self.setboff.SetBackgroundColour, "#0044CC")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
637 wx.CallAfter(self.setboff.SetForegroundColour, "white")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
638 wx.CallAfter(self.setbbtn.SetBackgroundColour, None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
639 wx.CallAfter(self.setbbtn.SetForegroundColour, None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
640 wx.CallAfter(self.btemp.SetBackgroundColour, "white")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
641 wx.CallAfter(self.btemp.Refresh)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
642
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
643 def sethotendgui(self, f):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
644 self.hsetpoint = f
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
645 if self.display_gauges: self.hottgauge.SetTarget(int(f))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
646 if self.display_graph: wx.CallAfter(self.graph.SetExtruder0TargetTemperature, int(f))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
647 if f > 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
648 wx.CallAfter(self.htemp.SetValue, str(f))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
649 self.set("last_temperature", str(f))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
650 wx.CallAfter(self.settoff.SetBackgroundColour, None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
651 wx.CallAfter(self.settoff.SetForegroundColour, None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
652 wx.CallAfter(self.settbtn.SetBackgroundColour, "#FFAA66")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
653 wx.CallAfter(self.settbtn.SetForegroundColour, "#660000")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
654 wx.CallAfter(self.htemp.SetBackgroundColour, "#FFDABB")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
655 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
656 wx.CallAfter(self.settoff.SetBackgroundColour, "#0044CC")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
657 wx.CallAfter(self.settoff.SetForegroundColour, "white")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
658 wx.CallAfter(self.settbtn.SetBackgroundColour, None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
659 wx.CallAfter(self.settbtn.SetForegroundColour, None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
660 wx.CallAfter(self.htemp.SetBackgroundColour, "white")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
661 wx.CallAfter(self.htemp.Refresh)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
662
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
663 def rescanports(self, event = None):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
664 scanned = self.scanserial()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
665 portslist = list(scanned)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
666 if self.settings.port != "" and self.settings.port not in portslist:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
667 portslist.append(self.settings.port)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
668 self.serialport.Clear()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
669 self.serialport.AppendItems(portslist)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
670 if os.path.exists(self.settings.port) or self.settings.port in scanned:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
671 self.serialport.SetValue(self.settings.port)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
672 elif portslist:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
673 self.serialport.SetValue(portslist[0])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
674
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
675 def appendCommandHistory(self):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
676 cmd = self.commandbox.Value
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
677 hist = self.commandbox.history
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
678 append = cmd and (not hist or hist[-1] != cmd)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
679 if append:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
680 self.commandbox.history.append(cmd)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
681 return append
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
682
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
683 def cbkey(self, e):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
684 dir = {wx.WXK_UP: -1, wx.WXK_DOWN: 1}.get(e.KeyCode)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
685 if dir:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
686 if self.commandbox.histindex == len(self.commandbox.history):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
687 if dir == 1:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
688 # do not cycle top => bottom
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
689 return
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
690 #save unsent command before going back
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
691 self.appendCommandHistory()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
692 self.commandbox.histindex = max(0, min(self.commandbox.histindex + dir, len(self.commandbox.history)))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
693 self.commandbox.Value = (self.commandbox.history[self.commandbox.histindex]
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
694 if self.commandbox.histindex < len(self.commandbox.history)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
695 else '')
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
696 self.commandbox.SetInsertionPointEnd()
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
697 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
698 e.Skip()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
699
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
700 def plate(self, e):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
701 from . import stlplater as plater
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
702 self.log(_("Plate function activated"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
703 plater.StlPlater(size = (800, 580), callback = self.platecb,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
704 parent = self,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
705 build_dimensions = self.build_dimensions_list,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
706 circular_platform = self.settings.circular_bed,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
707 simarrange_path = self.settings.simarrange_path,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
708 antialias_samples = int(self.settings.antialias3dsamples)).Show()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
709
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
710 def plate_gcode(self, e):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
711 from . import gcodeplater as plater
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
712 self.log(_("G-Code plate function activated"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
713 plater.GcodePlater(size = (800, 580), callback = self.platecb,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
714 parent = self,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
715 build_dimensions = self.build_dimensions_list,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
716 circular_platform = self.settings.circular_bed,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
717 antialias_samples = int(self.settings.antialias3dsamples)).Show()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
718
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
719 def platecb(self, name):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
720 self.log(_("Plated %s") % name)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
721 self.loadfile(None, name)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
722 if self.settings.uimode in (_("Tabbed"), _("Tabbed with platers")):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
723 # Switch to page 1 (Status tab)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
724 self.notebook.SetSelection(1)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
725
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
726 def do_editgcode(self, e = None):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
727 if self.filename is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
728 MacroEditor(self.filename, [line.raw for line in self.fgcode], self.doneediting, True)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
729
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
730 def doneediting(self, gcode):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
731 open(self.filename, "w").write("\n".join(gcode))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
732 wx.CallAfter(self.loadfile, None, self.filename)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
733
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
734 def sdmenu(self, e):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
735 obj = e.GetEventObject()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
736 popupmenu = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
737 item = popupmenu.Append(-1, _("SD Upload"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
738 if not self.fgcode:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
739 item.Enable(False)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
740 self.Bind(wx.EVT_MENU, self.upload, id = item.GetId())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
741 item = popupmenu.Append(-1, _("SD Print"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
742 self.Bind(wx.EVT_MENU, self.sdprintfile, id = item.GetId())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
743 self.panel.PopupMenu(popupmenu, obj.GetPosition())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
744
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
745 def htemp_change(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
746 if self.hsetpoint > 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
747 self.do_settemp("")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
748 wx.CallAfter(self.htemp.SetInsertionPoint, 0)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
749
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
750 def btemp_change(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
751 if self.bsetpoint > 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
752 self.do_bedtemp("")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
753 wx.CallAfter(self.btemp.SetInsertionPoint, 0)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
754
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
755 def tool_change(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
756 self.do_tool(self.extrudersel.GetValue())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
757
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
758 def show_viz_window(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
759 if self.fgcode:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
760 self.gwindow.Show(True)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
761 self.gwindow.SetToolTip(wx.ToolTip("Mousewheel zooms the display\nShift / Mousewheel scrolls layers"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
762 self.gwindow.Raise()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
763
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
764 def setfeeds(self, e):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
765 self.feedrates_changed = True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
766 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
767 if self.efeedc is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
768 self.settings._set("e_feedrate", self.efeedc.GetValue())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
769 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
770 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
771 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
772 self.settings._set("z_feedrate", self.zfeedc.GetValue())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
773 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
774 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
775 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
776 self.settings._set("xy_feedrate", self.xyfeedc.GetValue())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
777 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
778 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
779 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
780 self.settings._set("last_extrusion", self.edist.GetValue())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
781 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
782 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
783
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
784 def homeButtonClicked(self, axis):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
785 # When user clicks on the XY control, the Z control no longer gets spacebar/repeat signals
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
786 self.zb.clearRepeat()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
787 if axis == "x":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
788 self.onecmd('home X')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
789 elif axis == "y": # upper-right
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
790 self.onecmd('home Y')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
791 elif axis == "z":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
792 self.onecmd('home Z')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
793 elif axis == "all":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
794 self.onecmd('home')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
795 elif axis == "center":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
796 center_x = self.build_dimensions_list[0] / 2 + self.build_dimensions_list[3]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
797 center_y = self.build_dimensions_list[1] / 2 + self.build_dimensions_list[4]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
798 feed = self.settings.xy_feedrate
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
799 self.onecmd('G0 X%s Y%s F%s' % (center_x, center_y, feed))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
800 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
801 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
802 self.p.send_now('M114')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
803
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
804 def clamped_move_message(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
805 self.log(_("Manual move outside of the build volume prevented (see the \"Clamp manual moves\" option)."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
806
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
807 def moveXY(self, x, y):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
808 # When user clicks on the XY control, the Z control no longer gets spacebar/repeat signals
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
809 self.zb.clearRepeat()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
810 if x != 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
811 if self.settings.clamp_jogging:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
812 new_x = self.current_pos[0] + x
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
813 if new_x < self.build_dimensions_list[3] or new_x > self.build_dimensions_list[0] + self.build_dimensions_list[3]:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
814 self.clamped_move_message()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
815 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
816 self.onecmd('move X %s' % x)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
817 elif y != 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
818 if self.settings.clamp_jogging:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
819 new_y = self.current_pos[1] + y
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
820 if new_y < self.build_dimensions_list[4] or new_y > self.build_dimensions_list[1] + self.build_dimensions_list[4]:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
821 self.clamped_move_message()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
822 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
823 self.onecmd('move Y %s' % y)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
824 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
825 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
826 self.p.send_now('M114')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
827
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
828 def moveZ(self, z):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
829 if z != 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
830 if self.settings.clamp_jogging:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
831 new_z = self.current_pos[2] + z
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
832 if new_z < self.build_dimensions_list[5] or new_z > self.build_dimensions_list[2] + self.build_dimensions_list[5]:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
833 self.clamped_move_message()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
834 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
835 self.onecmd('move Z %s' % z)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
836 self.p.send_now('M114')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
837 # When user clicks on the Z control, the XY control no longer gets spacebar/repeat signals
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
838 self.xyb.clearRepeat()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
839
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
840 def spacebarAction(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
841 self.zb.repeatLast()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
842 self.xyb.repeatLast()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
843
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
844 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
845 # Console handling
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
846 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
847
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
848 def catchprint(self, l):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
849 """Called by the Tee operator to write to the log box"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
850 if not self.IsFrozen():
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
851 wx.CallAfter(self.addtexttolog, l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
852
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
853 def addtexttolog(self, text):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
854 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
855 max_length = 20000
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
856 current_length = self.logbox.GetLastPosition()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
857 if current_length > max_length:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
858 self.logbox.Remove(0, current_length / 10)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
859 currentCaretPosition = self.logbox.GetInsertionPoint()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
860 currentLengthOfText = self.logbox.GetLastPosition()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
861 if self.autoscrolldisable:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
862 self.logbox.Freeze()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
863 currentSelectionStart, currentSelectionEnd = self.logbox.GetSelection()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
864 self.logbox.SetInsertionPointEnd()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
865 self.logbox.AppendText(text)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
866 self.logbox.SetInsertionPoint(currentCaretPosition)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
867 self.logbox.SetSelection(currentSelectionStart, currentSelectionEnd)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
868 self.logbox.Thaw()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
869 else:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
870 self.logbox.SetInsertionPointEnd()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
871 self.logbox.AppendText(text)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
872
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
873 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
874 self.log(_("Attempted to write invalid text to console, which could be due to an invalid baudrate"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
875
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
876 def clear_log(self, e):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
877 self.logbox.Clear()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
878
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
879 def set_verbose_communications(self, e):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
880 self.p.loud = e.IsChecked()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
881
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
882 def set_autoscrolldisable(self,e):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
883 self.autoscrolldisable = e.IsChecked()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
884
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
885 def sendline(self, e):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
886 command = self.commandbox.Value
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
887 if not len(command):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
888 return
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
889 logging.info(">>> " + command)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
890 line = self.precmd(str(command))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
891 self.onecmd(line)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
892 self.appendCommandHistory()
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
893 self.commandbox.histindex = len(self.commandbox.history)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
894 self.commandbox.Value = ''
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
895
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
896 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
897 # Main menu handling & actions
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
898 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
899
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
900 def create_menu(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
901 """Create main menu"""
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
902
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
903 # File menu
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
904 m = wx.Menu()
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
905 self.Bind(wx.EVT_MENU, self.loadfile, m.Append(-1, _("&Open...\tCtrl+O"), _(" Open file")))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
906 self.savebtn = m.Append(-1, _("&Save..."), _(" Save file"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
907 self.savebtn.Enable(False)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
908 self.Bind(wx.EVT_MENU, self.savefile, self.savebtn)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
909
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
910 self.filehistory = wx.FileHistory(maxFiles = 8, idBase = wx.ID_FILE1)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
911 recent = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
912 self.filehistory.UseMenu(recent)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
913 self.Bind(wx.EVT_MENU_RANGE, self.load_recent_file,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
914 id = wx.ID_FILE1, id2 = wx.ID_FILE9)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
915 m.Append(wx.ID_ANY, _("&Recent Files"), recent)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
916 self.Bind(wx.EVT_MENU, self.clear_log, m.Append(-1, _("Clear console\tCtrl+L"), _(" Clear output console")))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
917 self.Bind(wx.EVT_MENU, self.on_exit, m.Append(wx.ID_EXIT, _("E&xit"), _(" Closes the Window")))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
918 self.menustrip.Append(m, _("&File"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
919
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
920 # Tools Menu
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
921 m = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
922 self.Bind(wx.EVT_MENU, self.do_editgcode, m.Append(-1, _("&Edit..."), _(" Edit open file")))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
923 self.Bind(wx.EVT_MENU, self.plate, m.Append(-1, _("Plater"), _(" Compose 3D models into a single plate")))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
924 self.Bind(wx.EVT_MENU, self.plate_gcode, m.Append(-1, _("G-Code Plater"), _(" Compose G-Codes into a single plate")))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
925 self.Bind(wx.EVT_MENU, self.exclude, m.Append(-1, _("Excluder"), _(" Exclude parts of the bed from being printed")))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
926 self.Bind(wx.EVT_MENU, self.project, m.Append(-1, _("Projector"), _(" Project slices")))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
927 self.Bind(wx.EVT_MENU,
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
928 self.show_spool_manager,
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
929 m.Append(-1, _("Spool Manager"),
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
930 _(" Manage different spools of filament")))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
931 self.menustrip.Append(m, _("&Tools"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
932
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
933 # Advanced Menu
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
934 m = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
935 self.recoverbtn = m.Append(-1, _("Recover"), _(" Recover previous print after a disconnect (homes X, Y, restores Z and E status)"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
936 self.recoverbtn.Disable = lambda *a: self.recoverbtn.Enable(False)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
937 self.Bind(wx.EVT_MENU, self.recover, self.recoverbtn)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
938 self.menustrip.Append(m, _("&Advanced"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
939
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
940 if self.settings.slic3rintegration:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
941 m = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
942 print_menu = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
943 filament_menu = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
944 printer_menu = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
945 m.AppendSubMenu(print_menu, _("Print &settings"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
946 m.AppendSubMenu(filament_menu, _("&Filament"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
947 m.AppendSubMenu(printer_menu, _("&Printer"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
948 menus = {"print": print_menu,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
949 "filament": filament_menu,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
950 "printer": printer_menu}
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
951 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
952 self.load_slic3r_configs(menus)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
953 self.menustrip.Append(m, _("&Slic3r"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
954 except IOError:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
955 self.logError(_("Failed to load Slic3r configuration:") +
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
956 "\n" + traceback.format_exc())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
957
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
958 # Settings menu
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
959 m = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
960 self.macros_menu = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
961 m.AppendSubMenu(self.macros_menu, _("&Macros"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
962 self.Bind(wx.EVT_MENU, self.new_macro, self.macros_menu.Append(-1, _("<&New...>")))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
963 self.Bind(wx.EVT_MENU, lambda *e: PronterOptions(self), m.Append(-1, _("&Options"), _(" Options dialog")))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
964
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
965 self.Bind(wx.EVT_MENU, lambda x: threading.Thread(target = lambda: self.do_slice("set")).start(), m.Append(-1, _("Slicing settings"), _(" Adjust slicing settings")))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
966
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
967 mItem = m.AppendCheckItem(-1, _("Debug communications"),
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
968 _("Print all G-code sent to and received from the printer."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
969 m.Check(mItem.GetId(), self.p.loud)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
970 self.Bind(wx.EVT_MENU, self.set_verbose_communications, mItem)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
971
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
972 mItem = m.AppendCheckItem(-1, _("Don't autoscroll"),
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
973 _("Disables automatic scrolling of the console when new text is added"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
974 m.Check(mItem.GetId(), self.autoscrolldisable)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
975 self.Bind(wx.EVT_MENU, self.set_autoscrolldisable, mItem)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
976
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
977 self.menustrip.Append(m, _("&Settings"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
978 self.update_macros_menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
979 self.SetMenuBar(self.menustrip)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
980
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
981 m = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
982 self.Bind(wx.EVT_MENU, self.about,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
983 m.Append(-1, _("&About Printrun"), _("Show about dialog")))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
984 self.menustrip.Append(m, _("&Help"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
985
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
986 def project(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
987 """Start Projector tool"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
988 from printrun import projectlayer
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
989 projectlayer.SettingsFrame(self, self.p).Show()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
990
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
991 def exclude(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
992 """Start part excluder tool"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
993 if not self.fgcode:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
994 wx.CallAfter(self.statusbar.SetStatusText, _("No file loaded. Please use load first."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
995 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
996 if not self.excluder:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
997 from .excluder import Excluder
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
998 self.excluder = Excluder()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
999 self.excluder.pop_window(self.fgcode, bgcolor = self.bgcolor,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1000 build_dimensions = self.build_dimensions_list)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1001
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1002 def show_spool_manager(self, event):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1003 """Show Spool Manager Window"""
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1004 spoolmanager_gui.SpoolManagerMainWindow(self, self.spool_manager).Show()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1005
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1006 def about(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1007 """Show about dialog"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1008
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1009 info = wx.adv.AboutDialogInfo()
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1010
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1011 info.SetIcon(wx.Icon(iconfile("pronterface.png"), wx.BITMAP_TYPE_PNG))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1012 info.SetName('Printrun')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1013 info.SetVersion(printcore.__version__)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1014
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1015 description = _("Printrun is a pure Python 3D printing"
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1016 " (and other types of CNC) host software.")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1017
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1018 description += "\n\n" + \
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1019 _("%.02fmm of filament have been extruded during prints") \
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1020 % self.settings.total_filament_used
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1021
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1022 info.SetDescription(description)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1023 info.SetCopyright('(C) 2011 - 2020')
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1024 info.SetWebSite('https://github.com/kliment/Printrun')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1025
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1026 licence = """\
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1027 Printrun is free software: you can redistribute it and/or modify it under the
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1028 terms of the GNU General Public License as published by the Free Software
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1029 Foundation, either version 3 of the License, or (at your option) any later
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1030 version.
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1031
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1032 Printrun is distributed in the hope that it will be useful, but WITHOUT ANY
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1033 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1034 PARTICULAR PURPOSE. See the GNU General Public License for more details.
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1035
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1036 You should have received a copy of the GNU General Public License along with
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1037 Printrun. If not, see <http://www.gnu.org/licenses/>."""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1038
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1039 info.SetLicence(licence)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1040 info.AddDeveloper('Kliment Yanev')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1041 info.AddDeveloper('Guillaume Seguin')
48
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1042 info.AddDeveloper('Malte Di Donato')
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1043
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1044 wx.adv.AboutBox(info)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1045
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1046 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1047 # Settings & command line handling (including update callbacks)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1048 # --------------------------------------------------------------
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1049
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1050 def _add_settings(self, size):
48
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1051 self._lc_add_settings(size)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1052
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1053 self.settings._add(BooleanSetting("monitor", True, _("Monitor printer status"), _("Regularly monitor printer temperatures (required to have functional temperature graph or gauges)"), "Printer"), self.update_monitor)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1054 self.settings._add(StringSetting("simarrange_path", "", _("Simarrange command"), _("Path to the simarrange binary to use in the STL plater"), "External"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1055 self.settings._add(BooleanSetting("circular_bed", False, _("Circular build platform"), _("Draw a circular (or oval) build platform instead of a rectangular one"), "Printer"), self.update_bed_viz)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1056 self.settings._add(SpinSetting("extruders", 0, 1, 5, _("Extruders count"), _("Number of extruders"), "Printer"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1057 self.settings._add(BooleanSetting("clamp_jogging", False, _("Clamp manual moves"), _("Prevent manual moves from leaving the specified build dimensions"), "Printer"))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1058 self.settings._add(BooleanSetting("display_progress_on_printer", False, _("Display progress on printer"), _("Show progress on printers display (sent via M117, might not be supported by all printers)"), "Printer"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1059 self.settings._add(SpinSetting("printer_progress_update_interval", 10., 0, 120, _("Printer progress update interval"), _("Interval in which pronterface sends the progress to the printer if enabled, in seconds"), "Printer"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1060 self.settings._add(BooleanSetting("cutting_as_extrusion", True, _("Display cutting moves"), _("Show moves where spindle is active as printing moves"), "Printer"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1061 self.settings._add(ComboSetting("uimode", _("Standard"), [_("Standard"), _("Compact"), ], _("Interface mode"), _("Standard interface is a one-page, three columns layout with controls/visualization/log\nCompact mode is a one-page, two columns layout with controls + log/visualization"), "UI"), self.reload_ui)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1062 #self.settings._add(ComboSetting("uimode", _("Standard"), [_("Standard"), _("Compact"), _("Tabbed"), _("Tabbed with platers")], _("Interface mode"), _("Standard interface is a one-page, three columns layout with controls/visualization/log\nCompact mode is a one-page, two columns layout with controls + log/visualization"), "UI"), self.reload_ui)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1063 self.settings._add(ComboSetting("controlsmode", "Standard", ("Standard", "Mini"), _("Controls mode"), _("Standard controls include all controls needed for printer setup and calibration, while Mini controls are limited to the ones needed for daily printing"), "UI"), self.reload_ui)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1064 self.settings._add(BooleanSetting("slic3rintegration", False, _("Enable Slic3r integration"), _("Add a menu to select Slic3r profiles directly from Pronterface"), "UI"), self.reload_ui)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1065 self.settings._add(BooleanSetting("slic3rupdate", False, _("Update Slic3r default presets"), _("When selecting a profile in Slic3r integration menu, also save it as the default Slic3r preset"), "UI"))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1066 self.settings._add(ComboSetting("mainviz", "3D", ("2D", "3D", "None"), _("Main visualization"), _("Select visualization for main window."), "Viewer"), self.reload_ui)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1067 self.settings._add(BooleanSetting("viz3d", False, _("Use 3D in GCode viewer window"), _("Use 3D mode instead of 2D layered mode in the visualization window"), "Viewer"), self.reload_ui)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1068 self.settings._add(StaticTextSetting("separator_3d_viewer", _("3D viewer options"), "", group = "Viewer"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1069 self.settings._add(BooleanSetting("light3d", False, _("Use a lighter 3D visualization"), _("Use a lighter visualization with simple lines instead of extruded paths for 3D viewer"), "Viewer"), self.reload_ui)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1070 self.settings._add(ComboSetting("antialias3dsamples", "0", ["0", "2", "4", "8"], _("Number of anti-aliasing samples"), _("Amount of anti-aliasing samples used in the 3D viewer"), "Viewer"), self.reload_ui)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1071 self.settings._add(BooleanSetting("trackcurrentlayer3d", False, _("Track current layer in main 3D view"), _("Track the currently printing layer in the main 3D visualization"), "Viewer"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1072 self.settings._add(FloatSpinSetting("gcview_path_width", 0.4, 0.01, 2, _("Extrusion width for 3D viewer"), _("Width of printed path in 3D viewer"), "Viewer", increment = 0.05), self.update_gcview_params)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1073 self.settings._add(FloatSpinSetting("gcview_path_height", 0.3, 0.01, 2, _("Layer height for 3D viewer"), _("Height of printed path in 3D viewer"), "Viewer", increment = 0.05), self.update_gcview_params)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1074 self.settings._add(BooleanSetting("tempgraph", True, _("Display temperature graph"), _("Display time-lapse temperature graph"), "UI"), self.reload_ui)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1075 self.settings._add(BooleanSetting("tempgauges", False, _("Display temperature gauges"), _("Display graphical gauges for temperatures visualization"), "UI"), self.reload_ui)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1076 self.settings._add(BooleanSetting("lockbox", False, _("Display interface lock checkbox"), _("Display a checkbox that, when check, locks most of Pronterface"), "UI"), self.reload_ui)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1077 self.settings._add(BooleanSetting("lockonstart", False, _("Lock interface upon print start"), _("If lock checkbox is enabled, lock the interface when starting a print"), "UI"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1078 self.settings._add(BooleanSetting("refreshwhenloading", True, _("Update UI during G-Code load"), _("Regularly update visualization during the load of a G-Code file"), "UI"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1079 self.settings._add(HiddenSetting("last_window_width", size[0]))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1080 self.settings._add(HiddenSetting("last_window_height", size[1]))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1081 self.settings._add(HiddenSetting("last_window_maximized", False))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1082 self.settings._add(HiddenSetting("last_sash_position", -1))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1083 self.settings._add(HiddenSetting("last_bed_temperature", 0.0))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1084 self.settings._add(HiddenSetting("last_file_path", ""))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1085 self.settings._add(HiddenSetting("last_file_filter", 0))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1086 self.settings._add(HiddenSetting("last_temperature", 0.0))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1087 self.settings._add(StaticTextSetting("separator_2d_viewer", _("2D viewer options"), "", group = "Viewer"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1088 self.settings._add(FloatSpinSetting("preview_extrusion_width", 0.5, 0, 10, _("Preview extrusion width"), _("Width of Extrusion in Preview"), "Viewer", increment = 0.1), self.update_gviz_params)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1089 self.settings._add(SpinSetting("preview_grid_step1", 10., 0, 200, _("Fine grid spacing"), _("Fine Grid Spacing"), "Viewer"), self.update_gviz_params)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1090 self.settings._add(SpinSetting("preview_grid_step2", 50., 0, 200, _("Coarse grid spacing"), _("Coarse Grid Spacing"), "Viewer"), self.update_gviz_params)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1091 self.settings._add(ColorSetting("bgcolor", self._preferred_bgcolour_hex(), _("Background color"), _("Pronterface background color"), "Colors", isRGBA=False), self.reload_ui)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1092 self.settings._add(ColorSetting("graph_color_background", "#FAFAC7", _("Graph background color"), _("Color of the temperature graph background"), "Colors", isRGBA=False), self.reload_ui)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1093 self.settings._add(ColorSetting("gcview_color_background", "#FAFAC7FF", _("3D view background color"), _("Color of the 3D view background"), "Colors"), self.update_gcview_colors)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1094 self.settings._add(ColorSetting("gcview_color_travel", "#99999999", _("3D view travel moves color"), _("Color of travel moves in 3D view"), "Colors"), self.update_gcview_colors)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1095 self.settings._add(ColorSetting("gcview_color_tool0", "#FF000099", _("3D view print moves color"), _("Color of print moves with tool 0 in 3D view"), "Colors"), self.update_gcview_colors)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1096 self.settings._add(ColorSetting("gcview_color_tool1", "#AC0DFF99", _("3D view tool 1 moves color"), _("Color of print moves with tool 1 in 3D view"), "Colors"), self.update_gcview_colors)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1097 self.settings._add(ColorSetting("gcview_color_tool2", "#FFCE0099", _("3D view tool 2 moves color"), _("Color of print moves with tool 2 in 3D view"), "Colors"), self.update_gcview_colors)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1098 self.settings._add(ColorSetting("gcview_color_tool3", "#FF009F99", _("3D view tool 3 moves color"), _("Color of print moves with tool 3 in 3D view"), "Colors"), self.update_gcview_colors)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1099 self.settings._add(ColorSetting("gcview_color_tool4", "#00FF8F99", _("3D view tool 4 moves color"), _("Color of print moves with tool 4 in 3D view"), "Colors"), self.update_gcview_colors)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1100 self.settings._add(ColorSetting("gcview_color_printed", "#33BF0099", _("3D view printed moves color"), _("Color of printed moves in 3D view"), "Colors"), self.update_gcview_colors)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1101 self.settings._add(ColorSetting("gcview_color_current", "#00E5FFCC", _("3D view current layer moves color"), _("Color of moves in current layer in 3D view"), "Colors"), self.update_gcview_colors)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1102 self.settings._add(ColorSetting("gcview_color_current_printed", "#196600CC", _("3D view printed current layer moves color"), _("Color of already printed moves from current layer in 3D view"), "Colors"), self.update_gcview_colors)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1103 self.settings._add(StaticTextSetting("note1", _("Note:"), _("Changing some of these settings might require a restart to get effect"), group = "UI"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1104 recentfilessetting = StringSetting("recentfiles", "[]")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1105 recentfilessetting.hidden = True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1106 self.settings._add(recentfilessetting, self.update_recent_files)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1107
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1108 def _preferred_bgcolour_hex(self):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1109 id = wx.SYS_COLOUR_WINDOW \
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1110 if platform.system() == 'Windows' \
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1111 else wx.SYS_COLOUR_BACKGROUND
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1112 sys_bgcolour = wx.SystemSettings.GetColour(id)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1113 return sys_bgcolour.GetAsString(flags=wx.C2S_HTML_SYNTAX)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1114
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1115 def add_cmdline_arguments(self, parser):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1116 pronsole.pronsole.add_cmdline_arguments(self, parser)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1117 parser.add_argument('-a', '--autoconnect', help = _("automatically try to connect to printer on startup"), action = "store_true")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1118
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1119 def process_cmdline_arguments(self, args):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1120 pronsole.pronsole.process_cmdline_arguments(self, args)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1121 self.autoconnect = args.autoconnect
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1122
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1123 def update_recent_files(self, param, value):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1124 if self.filehistory is None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1125 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1126 recent_files = []
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1127 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1128 recent_files = json.loads(value)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1129 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1130 self.logError(_("Failed to load recent files list:") +
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1131 "\n" + traceback.format_exc())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1132 # Clear history
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1133 while self.filehistory.GetCount():
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1134 self.filehistory.RemoveFileFromHistory(0)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1135 recent_files.reverse()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1136 for f in recent_files:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1137 self.filehistory.AddFileToHistory(f)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1138
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1139 def update_gviz_params(self, param, value):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1140 params_map = {"preview_extrusion_width": "extrusion_width",
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1141 "preview_grid_step1": "grid",
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1142 "preview_grid_step2": "grid"}
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1143 if param not in params_map:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1144 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1145 if not hasattr(self, "gviz"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1146 # GUI hasn't been loaded yet, ignore this setting
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1147 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1148 trueparam = params_map[param]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1149 if hasattr(self.gviz, trueparam):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1150 gviz = self.gviz
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1151 elif hasattr(self.gwindow, "p") and hasattr(self.gwindow.p, trueparam):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1152 gviz = self.gwindow.p
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1153 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1154 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1155 if trueparam == "grid":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1156 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1157 item = int(param[-1]) # extract list item position
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1158 grid = list(gviz.grid)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1159 grid[item - 1] = value
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1160 value = tuple(grid)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1161 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1162 self.logError(traceback.format_exc())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1163 if hasattr(self.gviz, trueparam):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1164 self.apply_gviz_params(self.gviz, trueparam, value)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1165 if hasattr(self.gwindow, "p") and hasattr(self.gwindow.p, trueparam):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1166 self.apply_gviz_params(self.gwindow.p, trueparam, value)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1167
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1168 def apply_gviz_params(self, widget, param, value):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1169 setattr(widget, param, value)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1170 widget.dirty = 1
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1171 wx.CallAfter(widget.Refresh)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1172
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1173 def update_gcview_colors(self, param, value):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1174 if not self.window_ready:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1175 return
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1176 color = hexcolor_to_float(value, 4)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1177 # This is sort of a hack: we copy the color values into the preexisting
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1178 # color tuple so that we don't need to update the tuple used by gcview
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1179 target_color = getattr(self, param)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1180 for i, v in enumerate(color):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1181 target_color[i] = v
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1182 wx.CallAfter(self.Refresh)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1183
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1184 def update_build_dimensions(self, param, value):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1185 pronsole.pronsole.update_build_dimensions(self, param, value)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1186 self.update_bed_viz()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1187
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1188 def update_bed_viz(self, *args):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1189 """Update bed visualization when size/type changed"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1190 if hasattr(self, "gviz") and hasattr(self.gviz, "recreate_platform"):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1191 self.gviz.recreate_platform(self.build_dimensions_list, self.settings.circular_bed,
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1192 grid = (self.settings.preview_grid_step1, self.settings.preview_grid_step2))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1193 if hasattr(self, "gwindow") and hasattr(self.gwindow, "recreate_platform"):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1194 self.gwindow.recreate_platform(self.build_dimensions_list, self.settings.circular_bed,
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1195 grid = (self.settings.preview_grid_step1, self.settings.preview_grid_step2))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1196
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1197 def update_gcview_params(self, *args):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1198 need_reload = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1199 if hasattr(self, "gviz") and hasattr(self.gviz, "set_gcview_params"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1200 need_reload |= self.gviz.set_gcview_params(self.settings.gcview_path_width, self.settings.gcview_path_height)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1201 if hasattr(self, "gwindow") and hasattr(self.gwindow, "set_gcview_params"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1202 need_reload |= self.gwindow.set_gcview_params(self.settings.gcview_path_width, self.settings.gcview_path_height)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1203 if need_reload:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1204 self.start_viz_thread()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1205
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1206 def update_monitor(self, *args):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1207 if hasattr(self, "graph") and self.display_graph:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1208 if self.settings.monitor:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1209 wx.CallAfter(self.graph.StartPlotting, 1000)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1210 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1211 wx.CallAfter(self.graph.StopPlotting)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1212
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1213 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1214 # Statusbar handling
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1215 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1216
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1217 def statuschecker_inner(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1218 status_string = ""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1219 if self.sdprinting or self.uploading or self.p.printing:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1220 secondsremain, secondsestimate, progress = self.get_eta()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1221 if self.sdprinting or self.uploading:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1222 if self.uploading:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1223 status_string += _("SD upload: %04.2f%% |") % (100 * progress,)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1224 status_string += _(" Line# %d of %d lines |") % (self.p.queueindex, len(self.p.mainqueue))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1225 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1226 status_string += _("SD printing: %04.2f%% |") % (self.percentdone,)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1227 elif self.p.printing:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1228 status_string += _("Printing: %04.2f%% |") % (100 * float(self.p.queueindex) / len(self.p.mainqueue),)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1229 status_string += _(" Line# %d of %d lines |") % (self.p.queueindex, len(self.p.mainqueue))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1230 if progress > 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1231 status_string += _(" Est: %s of %s remaining | ") % (format_duration(secondsremain),
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1232 format_duration(secondsestimate))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1233 status_string += _(" Z: %.3f mm") % self.curlayer
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1234 if self.settings.display_progress_on_printer and time.time() - self.printer_progress_time >= self.settings.printer_progress_update_interval:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1235 self.printer_progress_time = time.time()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1236 printer_progress_string = "M117 " + str(round(100 * float(self.p.queueindex) / len(self.p.mainqueue), 2)) + "% Est " + format_duration(secondsremain)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1237 #":" seems to be some kind of seperator for G-CODE"
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1238 self.p.send_now(printer_progress_string.replace(":", "."))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1239 if len(printer_progress_string) > 25:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1240 logging.info("Warning: The print progress message might be too long to be displayed properly")
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1241 #13 chars for up to 99h est.
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1242 elif self.loading_gcode:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1243 status_string = self.loading_gcode_message
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1244 wx.CallAfter(self.statusbar.SetStatusText, status_string)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1245 wx.CallAfter(self.gviz.Refresh)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1246 # Call pronsole's statuschecker inner loop function to handle
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1247 # temperature monitoring and status loop sleep
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1248 pronsole.pronsole.statuschecker_inner(self, self.settings.monitor)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1249 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1250 while not self.sentglines.empty():
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1251 gc = self.sentglines.get_nowait()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1252 wx.CallAfter(self.gviz.addgcodehighlight, gc)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1253 self.sentglines.task_done()
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1254 except queue.Empty:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1255 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1256
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1257 def statuschecker(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1258 pronsole.pronsole.statuschecker(self)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1259 wx.CallAfter(self.statusbar.SetStatusText, _("Not connected to printer."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1260
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1261 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1262 # Interface lock handling
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1263 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1264
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1265 def lock(self, event = None, force = None):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1266 if force is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1267 self.locker.SetValue(force)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1268 if self.locker.GetValue():
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1269 self.log(_("Locking interface."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1270 for panel in self.panels:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1271 panel.Disable()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1272 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1273 self.log(_("Unlocking interface."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1274 for panel in self.panels:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1275 panel.Enable()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1276
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1277 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1278 # Printer connection handling
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1279 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1280
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1281 def connectbtn_cb(self, event):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1282 # Implement toggle behavior with a single Bind
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1283 # and switched variable, so we have reference to
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1284 # the actual callback to use in on_key
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1285 self.connectbtn_cb_var()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1286
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1287 def connect(self, event = None):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1288 self.log(_("Connecting..."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1289 port = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1290 if self.serialport.GetValue():
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1291 port = str(self.serialport.GetValue())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1292 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1293 scanned = self.scanserial()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1294 if scanned:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1295 port = scanned[0]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1296 baud = 115200
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1297 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1298 baud = int(self.baud.GetValue())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1299 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1300 self.logError(_("Could not parse baud rate: ")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1301 + "\n" + traceback.format_exc())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1302 if self.paused:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1303 self.p.paused = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1304 self.p.printing = 0
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1305 wx.CallAfter(self.pausebtn.SetLabel, _("&Pause"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1306 wx.CallAfter(self.printbtn.SetLabel, _("&Print"))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1307 wx.CallAfter(self.toolbarsizer.Layout)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1308 self.paused = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1309 if self.sdprinting:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1310 self.p.send_now("M26 S0")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1311 if not self.connect_to_printer(port, baud, self.settings.dtr):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1312 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1313 if port != self.settings.port:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1314 self.set("port", port)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1315 if baud != self.settings.baudrate:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1316 self.set("baudrate", str(baud))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1317 if self.predisconnect_mainqueue:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1318 self.recoverbtn.Enable()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1319
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1320 def store_predisconnect_state(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1321 self.predisconnect_mainqueue = self.p.mainqueue
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1322 self.predisconnect_queueindex = self.p.queueindex
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1323 self.predisconnect_layer = self.curlayer
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1324
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1325 def disconnect(self, event = None):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1326 self.log(_("Disconnected."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1327 if self.p.printing or self.p.paused or self.paused:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1328 self.store_predisconnect_state()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1329 self.p.disconnect()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1330 self.statuscheck = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1331 if self.status_thread:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1332 self.status_thread.join()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1333 self.status_thread = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1334
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1335 def toggle():
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1336 self.connectbtn.SetLabel(_("&Connect"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1337 self.connectbtn.SetToolTip(wx.ToolTip(_("Connect to the printer")))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1338 self.connectbtn_cb_var = self.connect
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1339 self.gui_set_disconnected()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1340 wx.CallAfter(toggle)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1341
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1342 if self.paused:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1343 self.p.paused = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1344 self.p.printing = 0
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1345 wx.CallAfter(self.pausebtn.SetLabel, _("&Pause"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1346 wx.CallAfter(self.printbtn.SetLabel, _("&Print"))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1347 self.paused = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1348 if self.sdprinting:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1349 self.p.send_now("M26 S0")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1350
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1351 # Relayout the toolbar to handle new buttons size
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1352 wx.CallAfter(self.toolbarsizer.Layout)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1353
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1354 def reset(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1355 self.log(_("Reset."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1356 dlg = wx.MessageDialog(self, _("Are you sure you want to reset the printer?"), _("Reset?"), wx.YES | wx.NO)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1357 if dlg.ShowModal() == wx.ID_YES:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1358 self.p.reset()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1359 self.sethotendgui(0)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1360 self.setbedgui(0)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1361 self.p.printing = 0
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1362 wx.CallAfter(self.printbtn.SetLabel, _("&Print"))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1363 if self.paused:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1364 self.p.paused = 0
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1365 wx.CallAfter(self.pausebtn.SetLabel, _("&Pause"))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1366 self.paused = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1367 wx.CallAfter(self.toolbarsizer.Layout)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1368 dlg.Destroy()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1369
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1370 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1371 # Print/upload handling
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1372 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1373
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1374 def on_startprint(self):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1375 wx.CallAfter(self.pausebtn.SetLabel, _("&Pause"))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1376 wx.CallAfter(self.pausebtn.Enable)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1377 wx.CallAfter(self.printbtn.SetLabel, _("Restart"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1378 wx.CallAfter(self.toolbarsizer.Layout)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1379
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1380 def printfile(self, event=None):
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1381 self.extra_print_time = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1382 if self.paused:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1383 self.p.paused = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1384 self.paused = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1385 if self.sdprinting:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1386 self.on_startprint()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1387 self.p.send_now("M26 S0")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1388 self.p.send_now("M24")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1389 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1390
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1391 if not self.fgcode:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1392 wx.CallAfter(self.statusbar.SetStatusText, _("No file loaded. Please use load first."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1393 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1394 if not self.p.online:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1395 wx.CallAfter(self.statusbar.SetStatusText, _("Not connected to printer."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1396 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1397 self.sdprinting = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1398 self.on_startprint()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1399 self.p.startprint(self.fgcode)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1400
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1401 def sdprintfile(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1402 self.extra_print_time = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1403 self.on_startprint()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1404 threading.Thread(target = self.getfiles).start()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1405
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1406 def upload(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1407 if not self.fgcode:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1408 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1409 if not self.p.online:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1410 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1411 dlg = wx.TextEntryDialog(self, ("Enter a target filename in 8.3 format:"), _("Pick SD filename"), dosify(self.filename))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1412 if dlg.ShowModal() == wx.ID_OK:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1413 self.p.send_now("M21")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1414 self.p.send_now("M28 " + str(dlg.GetValue()))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1415 self.recvlisteners.append(self.uploadtrigger)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1416 dlg.Destroy()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1417
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1418 def uploadtrigger(self, l):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1419 if "Writing to file" in l:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1420 self.uploading = True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1421 self.p.startprint(self.fgcode)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1422 self.p.endcb = self.endupload
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1423 self.recvlisteners.remove(self.uploadtrigger)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1424 elif "open failed, File" in l:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1425 self.recvlisteners.remove(self.uploadtrigger)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1426
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1427 def endupload(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1428 self.p.send_now("M29 ")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1429 wx.CallAfter(self.statusbar.SetStatusText, _("File upload complete"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1430 time.sleep(0.5)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1431 self.p.clear = True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1432 self.uploading = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1433
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1434 def pause(self, event = None):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1435 if not self.paused:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1436 self.log(_("Print paused at: %s") % format_time(time.time()))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1437 if self.settings.display_progress_on_printer:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1438 printer_progress_string = "M117 PausedInPronterface"
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1439 self.p.send_now(printer_progress_string)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1440 if self.sdprinting:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1441 self.p.send_now("M25")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1442 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1443 if not self.p.printing:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1444 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1445 self.p.pause()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1446 self.p.runSmallScript(self.pauseScript)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1447 self.paused = True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1448 # self.p.runSmallScript(self.pauseScript)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1449 self.extra_print_time += int(time.time() - self.starttime)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1450 wx.CallAfter(self.pausebtn.SetLabel, _("Resume"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1451 wx.CallAfter(self.toolbarsizer.Layout)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1452 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1453 self.log(_("Resuming."))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1454 if self.settings.display_progress_on_printer:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1455 printer_progress_string = "M117 Resuming"
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1456 self.p.send_now(printer_progress_string)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1457 self.paused = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1458 if self.sdprinting:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1459 self.p.send_now("M24")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1460 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1461 self.p.resume()
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1462 wx.CallAfter(self.pausebtn.SetLabel, _("&Pause"))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1463 wx.CallAfter(self.toolbarsizer.Layout)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1464
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1465 def recover(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1466 self.extra_print_time = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1467 if not self.p.online:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1468 wx.CallAfter(self.statusbar.SetStatusText, _("Not connected to printer."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1469 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1470 # Reset Z
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1471 self.p.send_now("G92 Z%f" % self.predisconnect_layer)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1472 # Home X and Y
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1473 self.p.send_now("G28 X Y")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1474 self.on_startprint()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1475 self.p.startprint(self.predisconnect_mainqueue, self.p.queueindex)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1476
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1477 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1478 # File loading handling
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1479 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1480
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1481 def filesloaded(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1482 dlg = wx.SingleChoiceDialog(self, _("Select the file to print"), _("Pick SD file"), self.sdfiles)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1483 if dlg.ShowModal() == wx.ID_OK:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1484 target = dlg.GetStringSelection()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1485 if len(target):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1486 self.recvlisteners.append(self.waitforsdresponse)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1487 self.p.send_now("M23 " + target.lower())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1488 dlg.Destroy()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1489
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1490 def getfiles(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1491 if not self.p.online:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1492 self.sdfiles = []
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1493 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1494 self.sdlisting = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1495 self.sdfiles = []
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1496 self.recvlisteners.append(self.listfiles)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1497 self.p.send_now("M21")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1498 self.p.send_now("M20")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1499
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1500 def model_to_gcode_filename(self, filename):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1501 suffix = "_export.gcode"
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1502 for ext in [".stl", ".obj"]:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1503 filename = filename.replace(ext, suffix)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1504 filename = filename.replace(ext.upper(), suffix)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1505 return filename
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1506
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1507 def slice_func(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1508 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1509 output_filename = self.model_to_gcode_filename(self.filename)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1510 pararray = prepare_command(self.settings.slicecommandpath+self.settings.slicecommand,
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1511 {"$s": self.filename, "$o": output_filename})
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1512 if self.settings.slic3rintegration:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1513 for cat, config in self.slic3r_configs.items():
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1514 if config:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1515 fpath = os.path.join(self.slic3r_configpath, cat, config)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1516 pararray += ["--load", fpath]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1517 self.log(_("Running ") + " ".join(pararray))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1518 self.slicep = subprocess.Popen(pararray, stdin=subprocess.DEVNULL, stderr = subprocess.STDOUT, stdout = subprocess.PIPE, universal_newlines = True)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1519 while True:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1520 o = self.slicep.stdout.read(1)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1521 if o == '' and self.slicep.poll() is not None: break
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1522 sys.stdout.write(o)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1523 self.slicep.wait()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1524 self.stopsf = 1
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1525 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1526 self.logError(_("Failed to execute slicing software: ")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1527 + "\n" + traceback.format_exc())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1528 self.stopsf = 1
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1529
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1530 def slice_monitor(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1531 while not self.stopsf:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1532 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1533 wx.CallAfter(self.statusbar.SetStatusText, _("Slicing...")) # +self.cout.getvalue().split("\n")[-1])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1534 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1535 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1536 time.sleep(0.1)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1537 fn = self.filename
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1538 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1539 self.load_gcode_async(self.model_to_gcode_filename(self.filename))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1540 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1541 self.filename = fn
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1542 self.slicing = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1543 self.slicep = None
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1544 self.loadbtn.SetLabel, _("Load file")
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1545
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1546 def slice(self, filename):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1547 wx.CallAfter(self.loadbtn.SetLabel, _("Cancel"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1548 wx.CallAfter(self.toolbarsizer.Layout)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1549 self.log(_("Slicing ") + filename)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1550 self.cout = StringIO.StringIO()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1551 self.filename = filename
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1552 self.stopsf = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1553 self.slicing = True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1554 threading.Thread(target = self.slice_func).start()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1555 threading.Thread(target = self.slice_monitor).start()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1556
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1557 def cmdline_filename_callback(self, filename):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1558 # Do nothing when processing a filename from command line, as we'll
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1559 # handle it when everything has been prepared
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1560 self.filename = filename
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1561
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1562 def do_load(self, l):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1563 if hasattr(self, 'slicing'):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1564 self.loadfile(None, l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1565 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1566 self._do_load(l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1567
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1568 def load_recent_file(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1569 fileid = event.GetId() - wx.ID_FILE1
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1570 path = self.filehistory.GetHistoryFile(fileid)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1571 self.loadfile(None, filename = path)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1572
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1573 def loadfile(self, event, filename = None):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1574 if self.slicing and self.slicep is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1575 self.slicep.terminate()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1576 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1577 basedir = self.settings.last_file_path
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1578 if not os.path.exists(basedir):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1579 basedir = "."
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1580 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1581 basedir = os.path.split(self.filename)[0]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1582 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1583 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1584 dlg = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1585 if filename is None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1586 dlg = wx.FileDialog(self, _("Open file to print"), basedir, style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
48
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1587 # add image files to GCODE file list
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1588 dlg.SetWildcard(_("GCODE and Image files|*.gcode;*.gco;*.g;*.png;*.svg;*.hpgl;*.plt|OBJ, STL, and GCODE files (*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ)|*.gcode;*.gco;*.g;*.stl;*.STL;*.obj;*.OBJ|GCODE files (*.gcode;*.gco;*.g)|*.gcode;*.gco;*.g|OBJ, STL files (*.stl;*.STL;*.obj;*.OBJ)|*.stl;*.STL;*.obj;*.OBJ|All Files (*.*)|*.*"))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1589 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1590 dlg.SetFilterIndex(self.settings.last_file_filter)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1591 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1592 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1593 if filename or dlg.ShowModal() == wx.ID_OK:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1594 if filename:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1595 name = filename
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1596 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1597 name = dlg.GetPath()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1598 self.set("last_file_filter", dlg.GetFilterIndex())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1599 dlg.Destroy()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1600 if not os.path.exists(name):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1601 self.statusbar.SetStatusText(_("File not found!"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1602 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1603 path = os.path.split(name)[0]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1604 if path != self.settings.last_file_path:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1605 self.set("last_file_path", path)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1606 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1607 abspath = os.path.abspath(name)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1608 recent_files = []
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1609 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1610 recent_files = json.loads(self.settings.recentfiles)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1611 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1612 self.logError(_("Failed to load recent files list:") +
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1613 "\n" + traceback.format_exc())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1614 if abspath in recent_files:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1615 recent_files.remove(abspath)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1616 recent_files.insert(0, abspath)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1617 if len(recent_files) > 5:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1618 recent_files = recent_files[:5]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1619 self.set("recentfiles", json.dumps(recent_files))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1620 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1621 self.logError(_("Could not update recent files list:") +
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1622 "\n" + traceback.format_exc())
48
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1623
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1624 # reload the library local so we dont have to restart the whole app when making code changes
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1625 reload(laser)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1626
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1627 if name.lower().endswith(".stl") or name.lower().endswith(".obj"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1628 self.slice(name)
48
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1629 elif name.lower().endswith(".png") or name.lower().endswith(".jpg") or name.lower().endswith(".gif"):
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1630 # Generate GCODE from IMAGE
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1631 lc = laser.Lasercutter(pronterwindow = self)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1632 lc.image2gcode(name)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1633 wx.CallAfter(self.endcb_lasercut)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1634 elif name.lower().endswith(".svg"):
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1635 # Generate GCODE from SVG
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1636 lc = laser.Lasercutter(pronterwindow = self)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1637 lc.svg2gcode(name)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1638 wx.CallAfter(self.endcb_lasercut)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1639 elif name.lower().endswith(".hpgl") or name.lower().endswith(".plt"):
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1640 # Generate GCODE from HPGL
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1641 lc = laser.Lasercutter(pronterwindow = self)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1642 lc.hpgl2gcode(name)
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1643 wx.CallAfter(self.endcb_lasercut)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1644 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1645 self.load_gcode_async(name)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1646 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1647 dlg.Destroy()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1648
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1649 def load_gcode_async(self, filename):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1650 self.filename = filename
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1651 gcode = self.pre_gcode_load()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1652 self.log(_("Loading file: %s") % filename)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1653 threading.Thread(target = self.load_gcode_async_thread, args = (gcode,)).start()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1654
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1655 def load_gcode_async_thread(self, gcode):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1656 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1657 self.load_gcode(self.filename,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1658 layer_callback = self.layer_ready_cb,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1659 gcode = gcode)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1660 except PronterfaceQuitException:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1661 return
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1662 except Exception as e:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1663 self.log(str(e))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1664 wx.CallAfter(self.post_gcode_load,False,True)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1665 return
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1666 wx.CallAfter(self.post_gcode_load)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1667
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1668 def layer_ready_cb(self, gcode, layer):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1669 global pronterface_quitting
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1670 if pronterface_quitting:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1671 raise PronterfaceQuitException
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1672 if not self.settings.refreshwhenloading:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1673 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1674 self.viz_last_layer = layer
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1675 if time.time() - self.viz_last_yield > 1.0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1676 time.sleep(0.2)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1677 self.loading_gcode_message = _("Loading %s: %d layers loaded (%d lines)") % (self.filename, layer + 1, len(gcode))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1678 self.viz_last_yield = time.time()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1679 wx.CallAfter(self.statusbar.SetStatusText, self.loading_gcode_message)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1680
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1681 def start_viz_thread(self, gcode = None):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1682 threading.Thread(target = self.loadviz, args = (gcode,)).start()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1683
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1684 def pre_gcode_load(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1685 self.loading_gcode = True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1686 self.loading_gcode_message = _("Loading %s...") % self.filename
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1687 if self.settings.mainviz == "None":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1688 gcode = gcoder.LightGCode(deferred = True)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1689 else:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1690 gcode = gcoder.GCode(deferred = True, cutting_as_extrusion = self.settings.cutting_as_extrusion)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1691 self.viz_last_yield = 0
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1692 self.viz_last_layer = -1
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1693 self.start_viz_thread(gcode)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1694 return gcode
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1695
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1696 def post_gcode_load(self, print_stats = True, failed=False):
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1697 # Must be called in wx.CallAfter for safety
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1698 self.loading_gcode = False
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1699 if not failed:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1700 self.SetTitle(_("Pronterface - %s") % self.filename)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1701 message = _("Loaded %s, %d lines") % (self.filename, len(self.fgcode),)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1702 self.log(message)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1703 self.statusbar.SetStatusText(message)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1704 self.savebtn.Enable(True)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1705 self.loadbtn.SetLabel(_("Load File"))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1706 self.printbtn.SetLabel(_("&Print"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1707 self.pausebtn.SetLabel(_("&Pause"))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1708 self.pausebtn.Disable()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1709 self.recoverbtn.Disable()
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1710 if not failed and self.p.online:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1711 self.printbtn.Enable()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1712 self.toolbarsizer.Layout()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1713 self.viz_last_layer = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1714 if print_stats:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1715 self.output_gcode_stats()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1716
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1717 def calculate_remaining_filament(self, length, extruder = 0):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1718 """
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1719 float calculate_remaining_filament( float length, int extruder )
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1720
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1721 Calculate the remaining length of filament for the given extruder if
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1722 the given length were to be extruded.
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1723 """
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1724
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1725 remainder = self.spool_manager.getRemainingFilament(extruder) - length
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1726 minimum_warning_length = 1000.0
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1727 if remainder < minimum_warning_length:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1728 self.log(_("\nWARNING: Currently loaded spool for extruder " +
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1729 "%d will likely run out of filament during the print.\n" %
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1730 extruder))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1731 return remainder
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1732
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1733 def output_gcode_stats(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1734 gcode = self.fgcode
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1735 self.spool_manager.refresh()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1736
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1737 self.log(_("%s of filament used in this print") % format_length(gcode.filament_length))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1738
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1739 if len(gcode.filament_length_multi) > 1:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1740 for i in enumerate(gcode.filament_length_multi):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1741 if self.spool_manager.getSpoolName(i[0]) == None:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1742 logging.info("- Extruder %d: %0.02fmm" % (i[0], i[1]))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1743 else:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1744 logging.info(("- Extruder %d: %0.02fmm" % (i[0], i[1]) +
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1745 " from spool '%s' (%.2fmm will remain)" %
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1746 (self.spool_manager.getSpoolName(i[0]),
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1747 self.calculate_remaining_filament(i[1], i[0]))))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1748 elif self.spool_manager.getSpoolName(0) != None:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1749 self.log(
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1750 _("Using spool '%s' (%s of filament will remain)") %
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1751 (self.spool_manager.getSpoolName(0),
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1752 format_length(self.calculate_remaining_filament(
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1753 gcode.filament_length, 0))))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1754
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1755 self.log(_("The print goes:"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1756 self.log(_("- from %.2f mm to %.2f mm in X and is %.2f mm wide") % (gcode.xmin, gcode.xmax, gcode.width))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1757 self.log(_("- from %.2f mm to %.2f mm in Y and is %.2f mm deep") % (gcode.ymin, gcode.ymax, gcode.depth))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1758 self.log(_("- from %.2f mm to %.2f mm in Z and is %.2f mm high") % (gcode.zmin, gcode.zmax, gcode.height))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1759 self.log(_("Estimated duration: %d layers, %s") % gcode.estimate_duration())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1760
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1761 def loadviz(self, gcode = None):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1762 try:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1763 self.gviz.clear()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1764 self.gwindow.p.clear()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1765 if gcode is not None:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1766 generator = self.gviz.addfile_perlayer(gcode, True)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1767 next_layer = 0
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1768 # Progressive loading of visualization
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1769 # We load layers up to the last one which has been processed in GCoder
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1770 # (self.viz_last_layer)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1771 # Once the GCode has been entirely loaded, this variable becomes None,
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1772 # indicating that we can do the last generator call to finish the
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1773 # loading of the visualization, which will itself return None.
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1774 # During preloading we verify that the layer we added is the one we
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1775 # expected through the assert call.
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1776 while True:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1777 global pronterface_quitting
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1778 if pronterface_quitting:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1779 return
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1780 max_layer = self.viz_last_layer
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1781 if max_layer is None:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1782 break
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1783 start_layer = next_layer
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1784 while next_layer <= max_layer:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1785 assert next(generator) == next_layer
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1786 next_layer += 1
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1787 if next_layer != start_layer:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1788 wx.CallAfter(self.gviz.Refresh)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1789 time.sleep(0.1)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1790 generator_output = next(generator)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1791 while generator_output is not None:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1792 assert generator_output == next_layer
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1793 next_layer += 1
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1794 generator_output = next(generator)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1795 else:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1796 # If GCode is not being loaded asynchroneously, it is already
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1797 # loaded, so let's make visualization sequentially
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1798 gcode = self.fgcode
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1799 self.gviz.addfile(gcode)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1800 wx.CallAfter(self.gviz.Refresh)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1801 # Load external window sequentially now that everything is ready.
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1802 # We can't really do any better as the 3D viewer might clone the
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1803 # finalized model from the main visualization
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1804 self.gwindow.p.addfile(gcode)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1805 except:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1806 logging.error(traceback.format_exc())
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1807 wx.CallAfter(self.gviz.Refresh)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1808
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1809 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1810 # File saving handling
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1811 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1812
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1813 def savefile(self, event):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1814 basedir = self.settings.last_file_path
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1815 if not os.path.exists(basedir):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1816 basedir = "."
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1817 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1818 basedir = os.path.split(self.filename)[0]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1819 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1820 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1821 dlg = wx.FileDialog(self, _("Save as"), basedir, style = wx.FD_SAVE)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1822 dlg.SetWildcard(_("GCODE files (*.gcode;*.gco;*.g)|*.gcode;*.gco;*.g|All Files (*.*)|*.*"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1823 if dlg.ShowModal() == wx.ID_OK:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1824 name = dlg.GetPath()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1825 open(name, "w").write("\n".join((line.raw for line in self.fgcode)))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1826 self.log(_("G-Code succesfully saved to %s") % name)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1827 dlg.Destroy()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1828
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1829 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1830 # Printcore callbacks
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1831 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1832
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1833 def process_host_command(self, command):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1834 """Override host command handling"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1835 command = command.lstrip()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1836 if command.startswith(";@pause"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1837 self.pause(None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1838 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1839 pronsole.pronsole.process_host_command(self, command)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1840
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1841 def startcb(self, resuming = False):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1842 """Callback on print start"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1843 pronsole.pronsole.startcb(self, resuming)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1844 if self.settings.lockbox and self.settings.lockonstart:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1845 wx.CallAfter(self.lock, force = True)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1846
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1847 def endcb(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1848 """Callback on print end/pause"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1849 pronsole.pronsole.endcb(self)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1850 if self.p.queueindex == 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1851 self.p.runSmallScript(self.endScript)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1852 if self.settings.display_progress_on_printer:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1853 printer_progress_string = "M117 Finished Print"
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1854 self.p.send_now(printer_progress_string)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1855 wx.CallAfter(self.pausebtn.Disable)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1856 wx.CallAfter(self.printbtn.SetLabel, _("&Print"))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1857 wx.CallAfter(self.toolbarsizer.Layout)
48
3c27b4ee6fec reimplemented lasercutter changes
mdd
parents: 47
diff changeset
1858 wx.CallAfter(self.endcb_lasercut)
33
eee51ca7cbe7 Added support for multiple cutting passes with automatic Z refocusing
mdd
parents: 31
diff changeset
1859
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1860 def online(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1861 """Callback when printer goes online"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1862 self.log(_("Printer is now online."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1863 wx.CallAfter(self.online_gui)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1864
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1865 def online_gui(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1866 """Callback when printer goes online (graphical bits)"""
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1867 self.connectbtn.SetLabel(_("Dis&connect"))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1868 self.connectbtn.SetToolTip(wx.ToolTip("Disconnect from the printer"))
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
1869 self.connectbtn_cb_var = self.disconnect
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1870
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1871 if hasattr(self, "extrudersel"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1872 self.do_tool(self.extrudersel.GetValue())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1873
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1874 self.gui_set_connected()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1875
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1876 if self.filename:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1877 self.printbtn.Enable()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1878
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1879 wx.CallAfter(self.toolbarsizer.Layout)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1880
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1881 def sentcb(self, line, gline):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1882 """Callback when a printer gcode has been sent"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1883 if not gline:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1884 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1885 elif gline.command in ["M104", "M109"]:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1886 gline_s = gcoder.S(gline)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1887 if gline_s is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1888 temp = gline_s
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1889 if self.display_gauges: wx.CallAfter(self.hottgauge.SetTarget, temp)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1890 if self.display_graph: wx.CallAfter(self.graph.SetExtruder0TargetTemperature, temp)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1891 elif gline.command in ["M140", "M190"]:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1892 gline_s = gcoder.S(gline)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1893 if gline_s is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1894 temp = gline_s
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1895 if self.display_gauges: wx.CallAfter(self.bedtgauge.SetTarget, temp)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1896 if self.display_graph: wx.CallAfter(self.graph.SetBedTargetTemperature, temp)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1897 elif gline.command in ["M106"]:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1898 gline_s=gcoder.S(gline)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1899 fanpow=255
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1900 if gline_s is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1901 fanpow=gline_s
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1902 if self.display_graph: wx.CallAfter(self.graph.SetFanPower, fanpow)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1903 elif gline.command in ["M107"]:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1904 if self.display_graph: wx.CallAfter(self.graph.SetFanPower, 0)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1905 elif gline.command.startswith("T"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1906 tool = gline.command[1:]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1907 if hasattr(self, "extrudersel"): wx.CallAfter(self.extrudersel.SetValue, tool)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1908 if gline.is_move:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1909 self.sentglines.put_nowait(gline)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1910
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1911 def is_excluded_move(self, gline):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1912 """Check whether the given moves ends at a position specified as
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1913 excluded in the part excluder"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1914 if not gline.is_move or not self.excluder or not self.excluder.rectangles:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1915 return False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1916 for (x0, y0, x1, y1) in self.excluder.rectangles:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1917 if x0 <= gline.current_x <= x1 and y0 <= gline.current_y <= y1:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1918 return True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1919 return False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1920
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1921 def preprintsendcb(self, gline, next_gline):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1922 """Callback when a printer gcode is about to be sent. We use it to
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1923 exclude moves defined by the part excluder tool"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1924 if not self.is_excluded_move(gline):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1925 return gline
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1926 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1927 if gline.z is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1928 if gline.relative:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1929 if self.excluder_z_abs is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1930 self.excluder_z_abs += gline.z
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1931 elif self.excluder_z_rel is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1932 self.excluder_z_rel += gline.z
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1933 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1934 self.excluder_z_rel = gline.z
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1935 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1936 self.excluder_z_rel = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1937 self.excluder_z_abs = gline.z
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1938 if gline.e is not None and not gline.relative_e:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1939 self.excluder_e = gline.e
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1940 # If next move won't be excluded, push the changes we have to do
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1941 if next_gline is not None and not self.is_excluded_move(next_gline):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1942 if self.excluder_e is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1943 self.p.send_now("G92 E%.5f" % self.excluder_e)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1944 self.excluder_e = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1945 if self.excluder_z_abs is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1946 if gline.relative:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1947 self.p.send_now("G90")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1948 self.p.send_now("G1 Z%.5f" % self.excluder_z_abs)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1949 self.excluder_z_abs = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1950 if gline.relative:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1951 self.p.send_now("G91")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1952 if self.excluder_z_rel is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1953 if not gline.relative:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1954 self.p.send_now("G91")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1955 self.p.send_now("G1 Z%.5f" % self.excluder_z_rel)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1956 self.excluder_z_rel = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1957 if not gline.relative:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1958 self.p.send_now("G90")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1959 return None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1960
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1961 def printsentcb(self, gline):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1962 """Callback when a print gcode has been sent"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1963 if gline.is_move:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1964 if hasattr(self.gwindow, "set_current_gline"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1965 wx.CallAfter(self.gwindow.set_current_gline, gline)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1966 if hasattr(self.gviz, "set_current_gline"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1967 wx.CallAfter(self.gviz.set_current_gline, gline)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1968
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1969 def layer_change_cb(self, newlayer):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1970 """Callback when the printed layer changed"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1971 pronsole.pronsole.layer_change_cb(self, newlayer)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1972 if self.settings.mainviz != "3D" or self.settings.trackcurrentlayer3d:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1973 wx.CallAfter(self.gviz.setlayer, newlayer)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1974
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1975 def update_tempdisplay(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1976 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1977 temps = parse_temperature_report(self.tempreadings)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1978 if "T0" in temps and temps["T0"][0]:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1979 hotend_temp = float(temps["T0"][0])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1980 elif "T" in temps and temps["T"][0]:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1981 hotend_temp = float(temps["T"][0])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1982 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1983 hotend_temp = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1984 if hotend_temp is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1985 if self.display_graph: wx.CallAfter(self.graph.SetExtruder0Temperature, hotend_temp)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1986 if self.display_gauges: wx.CallAfter(self.hottgauge.SetValue, hotend_temp)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1987 setpoint = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1988 if "T0" in temps and temps["T0"][1]: setpoint = float(temps["T0"][1])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1989 elif temps["T"][1]: setpoint = float(temps["T"][1])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1990 if setpoint is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1991 if self.display_graph: wx.CallAfter(self.graph.SetExtruder0TargetTemperature, setpoint)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1992 if self.display_gauges: wx.CallAfter(self.hottgauge.SetTarget, setpoint)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1993 if "T1" in temps:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1994 hotend_temp = float(temps["T1"][0])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1995 if self.display_graph: wx.CallAfter(self.graph.SetExtruder1Temperature, hotend_temp)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1996 setpoint = temps["T1"][1]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1997 if setpoint and self.display_graph:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1998 wx.CallAfter(self.graph.SetExtruder1TargetTemperature, float(setpoint))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
1999 bed_temp = float(temps["B"][0]) if "B" in temps and temps["B"][0] else None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2000 if bed_temp is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2001 if self.display_graph: wx.CallAfter(self.graph.SetBedTemperature, bed_temp)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2002 if self.display_gauges: wx.CallAfter(self.bedtgauge.SetValue, bed_temp)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2003 setpoint = temps["B"][1]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2004 if setpoint:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2005 setpoint = float(setpoint)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2006 if self.display_graph: wx.CallAfter(self.graph.SetBedTargetTemperature, setpoint)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2007 if self.display_gauges: wx.CallAfter(self.bedtgauge.SetTarget, setpoint)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2008 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2009 self.logError(traceback.format_exc())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2010
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2011 def update_pos(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2012 bits = gcoder.m114_exp.findall(self.posreport)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2013 x = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2014 y = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2015 z = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2016 for bit in bits:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2017 if not bit[0]: continue
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2018 if x is None and bit[0] == "X":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2019 x = float(bit[1])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2020 elif y is None and bit[0] == "Y":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2021 y = float(bit[1])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2022 elif z is None and bit[0] == "Z":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2023 z = float(bit[1])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2024 if x is not None: self.current_pos[0] = x
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2025 if y is not None: self.current_pos[1] = y
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2026 if z is not None: self.current_pos[2] = z
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2027
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2028 def recvcb_actions(self, l):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2029 if l.startswith("!!"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2030 if not self.paused:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2031 wx.CallAfter(self.pause)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2032 msg = l.split(" ", 1)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2033 if len(msg) > 1 and not self.p.loud:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2034 self.log(msg[1] + "\n")
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2035 return True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2036 elif l.startswith("//"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2037 command = l.split(" ", 1)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2038 if len(command) > 1:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2039 command = command[1]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2040 command = command.split(":")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2041 if len(command) == 2 and command[0] == "action":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2042 command = command[1]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2043 self.log(_("Received command %s") % command)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2044 if command == "pause":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2045 if not self.paused:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2046 wx.CallAfter(self.pause)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2047 return True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2048 elif command == "resume":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2049 if self.paused:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2050 wx.CallAfter(self.pause)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2051 return True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2052 elif command == "disconnect":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2053 wx.CallAfter(self.disconnect)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2054 return True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2055 return False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2056
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2057 def recvcb(self, l):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2058 l = l.rstrip()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2059 if not self.recvcb_actions(l):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2060 report_type = self.recvcb_report(l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2061 isreport = report_type != REPORT_NONE
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2062 if report_type & REPORT_POS:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2063 self.update_pos()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2064 elif report_type & REPORT_TEMP:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2065 wx.CallAfter(self.tempdisp.SetLabel, self.tempreadings.strip().replace("ok ", ""))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2066 self.update_tempdisplay()
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2067 if not self.lineignorepattern.match(l) and not self.p.loud and (l not in ["ok", "wait"] and (not isreport or report_type & REPORT_MANUAL)):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2068 self.log(l)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2069 for listener in self.recvlisteners:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2070 listener(l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2071
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2072 def listfiles(self, line, ignored = False):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2073 if "Begin file list" in line:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2074 self.sdlisting = True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2075 elif "End file list" in line:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2076 self.sdlisting = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2077 self.recvlisteners.remove(self.listfiles)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2078 wx.CallAfter(self.filesloaded)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2079 elif self.sdlisting:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2080 self.sdfiles.append(re.sub(" \d+$","",line.strip().lower()))
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2081
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2082 def waitforsdresponse(self, l):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2083 if "file.open failed" in l:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2084 wx.CallAfter(self.statusbar.SetStatusText, _("Opening file failed."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2085 self.recvlisteners.remove(self.waitforsdresponse)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2086 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2087 if "File opened" in l:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2088 wx.CallAfter(self.statusbar.SetStatusText, l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2089 if "File selected" in l:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2090 wx.CallAfter(self.statusbar.SetStatusText, _("Starting print"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2091 self.sdprinting = True
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2092 self.p.send_now("M24")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2093 self.startcb()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2094 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2095 if "Done printing file" in l:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2096 wx.CallAfter(self.statusbar.SetStatusText, l)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2097 self.sdprinting = False
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2098 self.recvlisteners.remove(self.waitforsdresponse)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2099 self.endcb()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2100 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2101 if "SD printing byte" in l:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2102 # M27 handler
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2103 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2104 resp = l.split()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2105 vals = resp[-1].split("/")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2106 self.percentdone = 100.0 * int(vals[0]) / int(vals[1])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2107 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2108 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2109
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2110 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2111 # Custom buttons handling
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2112 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2113
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2114 def cbuttons_reload(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2115 allcbs = getattr(self, "custombuttons_widgets", [])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2116 for button in allcbs:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2117 self.cbuttonssizer.Detach(button)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2118 button.Destroy()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2119 self.custombuttons_widgets = []
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2120 custombuttons = self.custombuttons[:] + [None]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2121 for i, btndef in enumerate(custombuttons):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2122 if btndef is None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2123 if i == len(custombuttons) - 1:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2124 self.newbuttonbutton = b = wx.Button(self.centerpanel, -1, "+", size = (35, 18), style = wx.BU_EXACTFIT)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2125 b.SetForegroundColour("#4444ff")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2126 b.SetToolTip(wx.ToolTip(_("click to add new custom button")))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2127 b.Bind(wx.EVT_BUTTON, self.cbutton_edit)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2128 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2129 b = wx.StaticText(self.panel, -1, "")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2130 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2131 b = wx.Button(self.centerpanel, -1, btndef.label, style = wx.BU_EXACTFIT)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2132 b.SetToolTip(wx.ToolTip(_("Execute command: ") + btndef.command))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2133 if btndef.background:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2134 b.SetBackgroundColour(btndef.background)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2135 rr, gg, bb, aa = b.GetBackgroundColour().Get() #last item is alpha
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2136 if 0.3 * rr + 0.59 * gg + 0.11 * bb < 60:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2137 b.SetForegroundColour("#ffffff")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2138 b.custombutton = i
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2139 b.properties = btndef
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2140 if btndef is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2141 b.Bind(wx.EVT_BUTTON, self.process_button)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2142 b.Bind(wx.EVT_MOUSE_EVENTS, self.editbutton)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2143 self.custombuttons_widgets.append(b)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2144 if isinstance(self.cbuttonssizer, wx.GridBagSizer):
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2145 self.cbuttonssizer.Add(b, pos = (i // 4, i % 4), flag = wx.EXPAND)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2146 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2147 self.cbuttonssizer.Add(b, flag = wx.EXPAND)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2148 self.centerpanel.Layout()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2149 self.centerpanel.GetContainingSizer().Layout()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2150
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2151 def help_button(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2152 self.log(_('Defines custom button. Usage: button <num> "title" [/c "colour"] command'))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2153
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2154 def do_button(self, argstr):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2155 def nextarg(rest):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2156 rest = rest.lstrip()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2157 if rest.startswith('"'):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2158 return rest[1:].split('"', 1)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2159 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2160 return rest.split(None, 1)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2161 # try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2162 num, argstr = nextarg(argstr)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2163 num = int(num)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2164 title, argstr = nextarg(argstr)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2165 colour = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2166 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2167 c1, c2 = nextarg(argstr)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2168 if c1 == "/c":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2169 colour, argstr = nextarg(c2)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2170 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2171 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2172 command = argstr.strip()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2173 if num < 0 or num >= 64:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2174 self.log(_("Custom button number should be between 0 and 63"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2175 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2176 while num >= len(self.custombuttons):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2177 self.custombuttons.append(None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2178 self.custombuttons[num] = SpecialButton(title, command)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2179 if colour is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2180 self.custombuttons[num].background = colour
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2181 if not self.processing_rc:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2182 self.cbuttons_reload()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2183
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2184 def cbutton_save(self, n, bdef, new_n = None):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2185 if new_n is None: new_n = n
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2186 if bdef is None or bdef == "":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2187 self.save_in_rc(("button %d" % n), '')
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2188 elif bdef.background:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2189 colour = bdef.background
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2190 if not isinstance(colour, str):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2191 if isinstance(colour, tuple) and tuple(map(type, colour)) == (int, int, int):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2192 colour = (x % 256 for x in colour)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2193 colour = wx.Colour(*colour).GetAsString(wx.C2S_NAME | wx.C2S_HTML_SYNTAX)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2194 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2195 colour = wx.Colour(colour).GetAsString(wx.C2S_NAME | wx.C2S_HTML_SYNTAX)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2196 self.save_in_rc(("button %d" % n), 'button %d "%s" /c "%s" %s' % (new_n, bdef.label, colour, bdef.command))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2197 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2198 self.save_in_rc(("button %d" % n), 'button %d "%s" %s' % (new_n, bdef.label, bdef.command))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2199
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2200 def cbutton_edit(self, e, button = None):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2201 bedit = ButtonEdit(self)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2202 if button is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2203 n = button.custombutton
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2204 bedit.name.SetValue(button.properties.label)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2205 bedit.command.SetValue(button.properties.command)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2206 if button.properties.background:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2207 colour = button.properties.background
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2208 if not isinstance(colour, str):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2209 if isinstance(colour, tuple) and tuple(map(type, colour)) == (int, int, int):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2210 colour = (x % 256 for x in colour)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2211 colour = wx.Colour(*colour).GetAsString(wx.C2S_NAME | wx.C2S_HTML_SYNTAX)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2212 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2213 colour = wx.Colour(colour).GetAsString(wx.C2S_NAME | wx.C2S_HTML_SYNTAX)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2214 bedit.color.SetValue(colour)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2215 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2216 n = len(self.custombuttons)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2217 while n > 0 and self.custombuttons[n - 1] is None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2218 n -= 1
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2219 if bedit.ShowModal() == wx.ID_OK:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2220 if n == len(self.custombuttons):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2221 self.custombuttons.append(None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2222 self.custombuttons[n] = SpecialButton(bedit.name.GetValue().strip(), bedit.command.GetValue().strip(), custom = True)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2223 if bedit.color.GetValue().strip() != "":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2224 self.custombuttons[n].background = bedit.color.GetValue()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2225 self.cbutton_save(n, self.custombuttons[n])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2226 wx.CallAfter(bedit.Destroy)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2227 wx.CallAfter(self.cbuttons_reload)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2228
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2229 def cbutton_remove(self, e, button):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2230 n = button.custombutton
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2231 self.cbutton_save(n, None)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2232 del self.custombuttons[n]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2233 for i in range(n, len(self.custombuttons)):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2234 self.cbutton_save(i, self.custombuttons[i])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2235 wx.CallAfter(self.cbuttons_reload)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2236
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2237 def cbutton_order(self, e, button, dir):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2238 n = button.custombutton
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2239 if dir < 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2240 n = n - 1
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2241 if n + 1 >= len(self.custombuttons):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2242 self.custombuttons.append(None) # pad
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2243 # swap
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2244 self.custombuttons[n], self.custombuttons[n + 1] = self.custombuttons[n + 1], self.custombuttons[n]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2245 self.cbutton_save(n, self.custombuttons[n])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2246 self.cbutton_save(n + 1, self.custombuttons[n + 1])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2247 wx.CallAfter(self.cbuttons_reload)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2248
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2249 def editbutton(self, e):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2250 if e.IsCommandEvent() or e.ButtonUp(wx.MOUSE_BTN_RIGHT):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2251 if e.IsCommandEvent():
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2252 pos = (0, 0)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2253 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2254 pos = e.GetPosition()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2255 popupmenu = wx.Menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2256 obj = e.GetEventObject()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2257 if hasattr(obj, "custombutton"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2258 item = popupmenu.Append(-1, _("Edit custom button '%s'") % e.GetEventObject().GetLabelText())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2259 self.Bind(wx.EVT_MENU, lambda e, button = e.GetEventObject(): self.cbutton_edit(e, button), item)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2260 item = popupmenu.Append(-1, _("Move left <<"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2261 self.Bind(wx.EVT_MENU, lambda e, button = e.GetEventObject(): self.cbutton_order(e, button, -1), item)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2262 if obj.custombutton == 0: item.Enable(False)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2263 item = popupmenu.Append(-1, _("Move right >>"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2264 self.Bind(wx.EVT_MENU, lambda e, button = e.GetEventObject(): self.cbutton_order(e, button, 1), item)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2265 if obj.custombutton == 63: item.Enable(False)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2266 pos = self.panel.ScreenToClient(e.GetEventObject().ClientToScreen(pos))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2267 item = popupmenu.Append(-1, _("Remove custom button '%s'") % e.GetEventObject().GetLabelText())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2268 self.Bind(wx.EVT_MENU, lambda e, button = e.GetEventObject(): self.cbutton_remove(e, button), item)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2269 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2270 item = popupmenu.Append(-1, _("Add custom button"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2271 self.Bind(wx.EVT_MENU, self.cbutton_edit, item)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2272 self.panel.PopupMenu(popupmenu, pos)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2273 elif e.Dragging() and e.LeftIsDown():
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2274 obj = e.GetEventObject()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2275 scrpos = obj.ClientToScreen(e.GetPosition())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2276 if not hasattr(self, "dragpos"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2277 self.dragpos = scrpos
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2278 e.Skip()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2279 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2280 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2281 dx, dy = self.dragpos[0] - scrpos[0], self.dragpos[1] - scrpos[1]
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2282 if dx * dx + dy * dy < 30 * 30: # threshold to detect dragging for jittery mice
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2283 e.Skip()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2284 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2285 if not hasattr(self, "dragging"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2286 # init dragging of the custom button
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2287 if hasattr(obj, "custombutton") and (not hasattr(obj,"properties") or obj.properties is not None):
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2288 for b in self.custombuttons_widgets:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2289 if not hasattr(b,"properties") or b.properties is None:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2290 b.Enable()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2291 b.SetLabel("")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2292 b.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2293 b.SetForegroundColour("black")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2294 b.SetSize(obj.GetSize())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2295 if self.toolbarsizer.GetItem(b) is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2296 self.toolbarsizer.SetItemMinSize(b, obj.GetSize())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2297 self.mainsizer.Layout()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2298 self.dragging = wx.Button(self.panel, -1, obj.GetLabel(), style = wx.BU_EXACTFIT)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2299 self.dragging.SetBackgroundColour(obj.GetBackgroundColour())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2300 self.dragging.SetForegroundColour(obj.GetForegroundColour())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2301 self.dragging.sourcebutton = obj
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2302 self.dragging.Raise()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2303 self.dragging.Disable()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2304 self.dragging.SetPosition(self.panel.ScreenToClient(scrpos))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2305 self.last_drag_dest = obj
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2306 self.dragging.label = obj.s_label = obj.GetLabel()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2307 self.dragging.bgc = obj.s_bgc = obj.GetBackgroundColour()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2308 self.dragging.fgc = obj.s_fgc = obj.GetForegroundColour()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2309 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2310 # dragging in progress
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2311 self.dragging.SetPosition(self.panel.ScreenToClient(scrpos))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2312 wx.CallAfter(self.dragging.Refresh)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2313 dst = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2314 src = self.dragging.sourcebutton
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2315 drg = self.dragging
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2316 for b in self.custombuttons_widgets:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2317 if b.GetScreenRect().Contains(scrpos):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2318 dst = b
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2319 break
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2320 if dst is not self.last_drag_dest:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2321 if self.last_drag_dest is not None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2322 self.last_drag_dest.SetBackgroundColour(self.last_drag_dest.s_bgc)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2323 self.last_drag_dest.SetForegroundColour(self.last_drag_dest.s_fgc)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2324 self.last_drag_dest.SetLabel(self.last_drag_dest.s_label)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2325 if dst is not None and dst is not src:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2326 dst.s_bgc = dst.GetBackgroundColour()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2327 dst.s_fgc = dst.GetForegroundColour()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2328 dst.s_label = dst.GetLabel()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2329 src.SetBackgroundColour(dst.GetBackgroundColour())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2330 src.SetForegroundColour(dst.GetForegroundColour())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2331 src.SetLabel(dst.GetLabel())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2332 dst.SetBackgroundColour(drg.bgc)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2333 dst.SetForegroundColour(drg.fgc)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2334 dst.SetLabel(drg.label)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2335 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2336 src.SetBackgroundColour(drg.bgc)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2337 src.SetForegroundColour(drg.fgc)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2338 src.SetLabel(drg.label)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2339 self.last_drag_dest = dst
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2340 elif hasattr(self, "dragging") and not e.LeftIsDown():
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2341 # dragging finished
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2342 obj = e.GetEventObject()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2343 scrpos = obj.ClientToScreen(e.GetPosition())
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2344 dst = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2345 src = self.dragging.sourcebutton
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2346 drg = self.dragging
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2347 for b in self.custombuttons_widgets:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2348 if b.GetScreenRect().Contains(scrpos):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2349 dst = b
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2350 break
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2351 if dst is not None and hasattr(dst,"custombutton"):
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2352 src_i = src.custombutton
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2353 dst_i = dst.custombutton
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2354 self.custombuttons[src_i], self.custombuttons[dst_i] = self.custombuttons[dst_i], self.custombuttons[src_i]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2355 self.cbutton_save(src_i, self.custombuttons[src_i])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2356 self.cbutton_save(dst_i, self.custombuttons[dst_i])
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2357 while self.custombuttons[-1] is None:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2358 del self.custombuttons[-1]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2359 wx.CallAfter(self.dragging.Destroy)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2360 del self.dragging
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2361 wx.CallAfter(self.cbuttons_reload)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2362 del self.last_drag_dest
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2363 del self.dragpos
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2364 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2365 e.Skip()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2366
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2367 def process_button(self, e):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2368 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2369 if hasattr(e.GetEventObject(), "custombutton"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2370 if wx.GetKeyState(wx.WXK_CONTROL) or wx.GetKeyState(wx.WXK_ALT):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2371 return self.editbutton(e)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2372 self.cur_button = e.GetEventObject().custombutton
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2373 command = e.GetEventObject().properties.command
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2374 command = self.precmd(command)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2375 self.onecmd(command)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2376 self.cur_button = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2377 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2378 self.log(_("Failed to handle button"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2379 self.cur_button = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2380 raise
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2381
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2382 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2383 # Macros handling
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2384 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2385
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2386 def start_macro(self, macro_name, old_macro_definition = ""):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2387 if not self.processing_rc:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2388 def cb(definition):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2389 if len(definition.strip()) == 0:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2390 if old_macro_definition != "":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2391 dialog = wx.MessageDialog(self, _("Do you want to erase the macro?"), style = wx.YES_NO | wx.YES_DEFAULT | wx.ICON_QUESTION)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2392 if dialog.ShowModal() == wx.ID_YES:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2393 self.delete_macro(macro_name)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2394 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2395 self.log(_("Cancelled."))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2396 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2397 self.cur_macro_name = macro_name
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2398 self.cur_macro_def = definition
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2399 self.end_macro()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2400 MacroEditor(macro_name, old_macro_definition, cb)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2401 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2402 pronsole.pronsole.start_macro(self, macro_name, old_macro_definition)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2403
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2404 def end_macro(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2405 pronsole.pronsole.end_macro(self)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2406 self.update_macros_menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2407
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2408 def delete_macro(self, macro_name):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2409 pronsole.pronsole.delete_macro(self, macro_name)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2410 self.update_macros_menu()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2411
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2412 def new_macro(self, e = None):
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2413 dialog = wx.Dialog(self, -1, _("Enter macro name"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2414 text = wx.StaticText(dialog, -1, _("Macro name:"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2415 namectrl = wx.TextCtrl(dialog, -1, style = wx.TE_PROCESS_ENTER)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2416 okb = wx.Button(dialog, wx.ID_OK, _("Ok"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2417 dialog.Bind(wx.EVT_TEXT_ENTER,
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2418 lambda e: dialog.EndModal(wx.ID_OK), namectrl)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2419 cancel_button = wx.Button(dialog, wx.ID_CANCEL, _("Cancel"))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2420
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2421 # Layout
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2422 ## Group the buttons horizontally
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2423 buttons_sizer = wx.BoxSizer(wx.HORIZONTAL)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2424 buttons_sizer.Add(okb, 0)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2425 buttons_sizer.Add(cancel_button, 0)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2426 ## Set a minimum size for the name control box
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2427 min_size = namectrl.GetTextExtent('Default Long Macro Name')
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2428 namectrl.SetMinSize(wx.Size(min_size.width, -1))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2429 ## Group the text and the name control box horizontally
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2430 name_sizer = wx.BoxSizer(wx.HORIZONTAL)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2431 name_sizer.Add(text, 0, flag = wx.ALIGN_CENTER)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2432 name_sizer.AddSpacer(10)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2433 name_sizer.Add(namectrl, 1, wx.EXPAND)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2434 ## Group everything vertically
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2435 dialog_sizer = wx.BoxSizer(wx.VERTICAL)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2436 dialog_sizer.Add(name_sizer, 0, border = 10,
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2437 flag = wx.LEFT | wx.TOP | wx.RIGHT)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2438 dialog_sizer.Add(buttons_sizer, 0, border = 10,
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2439 flag = wx.ALIGN_CENTER | wx.ALL)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2440 dialog.SetSizerAndFit(dialog_sizer)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2441 dialog.Centre()
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2442
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2443 macro = ""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2444 if dialog.ShowModal() == wx.ID_OK:
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2445 macro = namectrl.GetValue()
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2446 if macro != "":
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2447 wx.CallAfter(self.edit_macro, macro)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2448 dialog.Destroy()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2449 return macro
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2450
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2451 def edit_macro(self, macro):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2452 if macro == "": return self.new_macro()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2453 if macro in self.macros:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2454 old_def = self.macros[macro]
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2455 elif len([chr(c) for c in macro.encode("ascii", "replace") if not chr(c).isalnum() and chr(c) != "_"]):
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2456 self.log(_("Macro name may contain only ASCII alphanumeric symbols and underscores"))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2457 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2458 elif hasattr(self.__class__, "do_" + macro):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2459 self.log(_("Name '%s' is being used by built-in command") % macro)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2460 return
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2461 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2462 old_def = ""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2463 self.start_macro(macro, old_def)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2464 return macro
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2465
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2466 def update_macros_menu(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2467 if not hasattr(self, "macros_menu"):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2468 return # too early, menu not yet built
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2469 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2470 while True:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2471 item = self.macros_menu.FindItemByPosition(1)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2472 if item is None: break
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2473 self.macros_menu.DestroyItem(item)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2474 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2475 pass
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2476 for macro in self.macros.keys():
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2477 self.Bind(wx.EVT_MENU, lambda x, m = macro: self.start_macro(m, self.macros[m]), self.macros_menu.Append(-1, macro))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2478
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2479 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2480 # Slic3r integration
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2481 # --------------------------------------------------------------
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2482
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2483 def load_slic3r_configs(self, menus):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2484 """List Slic3r configurations and create menu"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2485 # Hack to get correct path for Slic3r config
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2486 orig_appname = self.app.GetAppName()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2487 self.app.SetAppName("Slic3r")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2488 configpath = wx.StandardPaths.Get().GetUserDataDir()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2489 self.slic3r_configpath = configpath
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2490 configfile = os.path.join(configpath, "slic3r.ini")
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2491 if not os.path.exists(configfile):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2492 self.app.SetAppName("Slic3rPE")
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2493 configpath = wx.StandardPaths.Get().GetUserDataDir()
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2494 self.slic3r_configpath = configpath
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2495 configfile = os.path.join(configpath, "slic3r.ini")
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2496 if not os.path.exists(configfile):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2497 self.settings.slic3rintegration=False;
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2498 return
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2499 self.app.SetAppName(orig_appname)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2500 config = self.read_slic3r_config(configfile)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2501 version = config.get("dummy", "version") # Slic3r version
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2502 self.slic3r_configs = {}
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2503 for cat in menus:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2504 menu = menus[cat]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2505 pattern = os.path.join(configpath, cat, "*.ini")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2506 files = sorted(glob.glob(pattern))
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2507 try:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2508 preset = config.get("presets", cat)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2509 # Starting from Slic3r 1.3.0, preset names have no extension
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2510 if version.split(".") >= ["1","3","0"]: preset += ".ini"
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2511 self.slic3r_configs[cat] = preset
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2512 except:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2513 preset = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2514 self.slic3r_configs[cat] = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2515 for f in files:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2516 name = os.path.splitext(os.path.basename(f))[0]
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2517 item = menu.Append(-1, name, f, wx.ITEM_RADIO)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2518 item.Check(os.path.basename(f) == preset)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2519 self.Bind(wx.EVT_MENU,
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2520 lambda event, cat = cat, f = f:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2521 self.set_slic3r_config(configfile, cat, f), item)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2522
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2523 def read_slic3r_config(self, configfile, parser = None):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2524 """Helper to read a Slic3r configuration file"""
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2525 import configparser
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2526 parser = configparser.RawConfigParser()
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2527
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2528 class add_header:
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2529 def __init__(self, f):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2530 self.f = f
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2531 self.header = '[dummy]'
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2532
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2533 def readline(self):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2534 if self.header:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2535 try: return self.header
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2536 finally: self.header = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2537 else:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2538 return self.f.readline()
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2539
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2540 def __iter__(self):
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2541 import itertools
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2542 return itertools.chain([self.header], iter(self.f))
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2543
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2544 parser.readfp(add_header(open(configfile)), configfile)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2545 return parser
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2546
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2547 def set_slic3r_config(self, configfile, cat, file):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2548 """Set new preset for a given category"""
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2549 self.slic3r_configs[cat] = file
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2550 if self.settings.slic3rupdate:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2551 config = self.read_slic3r_config(configfile)
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2552 version = config.get("dummy", "version") # Slic3r version
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2553 preset = os.path.basename(file)
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2554 # Starting from Slic3r 1.3.0, preset names have no extension
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2555 if version.split(".") >= ["1","3","0"]:
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2556 preset = os.path.splitext(preset)[0]
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2557 config.set("presets", cat, preset)
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2558 f = StringIO.StringIO()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2559 config.write(f)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2560 data = f.getvalue()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2561 f.close()
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2562 data = data.replace("[dummy]\n", "")
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2563 with open(configfile, "w") as f:
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2564 f.write(data)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2565
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2566 class PronterApp(wx.App):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2567
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2568 mainwindow = None
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2569
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2570 def __init__(self, *args, **kwargs):
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2571 super(PronterApp, self).__init__(*args, **kwargs)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2572 self.SetAppName("Pronterface")
47
dcc64b767b64 updated pronterface.py losing my own changes
mdd
parents: 43
diff changeset
2573 self.locale = wx.Locale(wx.Locale.GetSystemLanguage())
15
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2574 self.mainwindow = PronterWindow(self)
0bbb006204fc Added printrun sourcecode from
mbayer
parents:
diff changeset
2575 self.mainwindow.Show()

mercurial