printrun-src/printrun/pronterface.py

Wed, 20 Jan 2021 10:17:01 +0100

author
mdd
date
Wed, 20 Jan 2021 10:17:01 +0100
changeset 47
dcc64b767b64
parent 43
f7e9bd735ce1
child 48
3c27b4ee6fec
permissions
-rw-r--r--

updated pronterface.py losing my own changes

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

mercurial