- added a Toggle Code Editor Menu and key shortcut
- added the ability to open FlatConfig configuration files in COde Editor, Modify them and then save them. - added ability to double click the FlatConfig files and open them in the FlatCAM Code Editor (to be verified)
This commit is contained in:
parent
6d0ed52308
commit
88c9001784
109
FlatCAMApp.py
109
FlatCAMApp.py
@ -1174,6 +1174,8 @@ class App(QtCore.QObject):
|
||||
self.ui.menufileopenexcellon.triggered.connect(self.on_fileopenexcellon)
|
||||
self.ui.menufileopengcode.triggered.connect(self.on_fileopengcode)
|
||||
self.ui.menufileopenproject.triggered.connect(self.on_file_openproject)
|
||||
self.ui.menufileopenconfig.triggered.connect(self.on_file_openconfig)
|
||||
|
||||
self.ui.menufilerunscript.triggered.connect(self.on_filerunscript)
|
||||
|
||||
self.ui.menufileimportsvg.triggered.connect(lambda: self.on_file_importsvg("geometry"))
|
||||
@ -1238,6 +1240,7 @@ class App(QtCore.QObject):
|
||||
self.ui.menuview_zoom_fit.triggered.connect(self.on_zoom_fit)
|
||||
self.ui.menuview_zoom_in.triggered.connect(lambda: self.plotcanvas.zoom(1 / 1.5))
|
||||
self.ui.menuview_zoom_out.triggered.connect(lambda: self.plotcanvas.zoom(1.5))
|
||||
self.ui.menuview_toggle_code_editor.triggered.connect(self.on_toggle_code_editor)
|
||||
self.ui.menuview_toggle_fscreen.triggered.connect(self.on_fullscreen)
|
||||
self.ui.menuview_toggle_parea.triggered.connect(self.on_toggle_plotarea)
|
||||
self.ui.menuview_toggle_notebook.triggered.connect(self.on_toggle_notebook)
|
||||
@ -1541,6 +1544,9 @@ class App(QtCore.QObject):
|
||||
# Variable to store the status of the fullscreen event
|
||||
self.toggle_fscreen = False
|
||||
|
||||
# Variable to store the status of the code editor
|
||||
self.toggle_codeeditor = False
|
||||
|
||||
self.cursor = None
|
||||
|
||||
# Variable to store the GCODE that was edited
|
||||
@ -1602,6 +1608,19 @@ class App(QtCore.QObject):
|
||||
except Exception as e:
|
||||
log.debug("Could not open FlatCAM project file as App parameter due: %s" % str(e))
|
||||
|
||||
if '.FlatConfig' in argument:
|
||||
try:
|
||||
file_name = str(argument)
|
||||
|
||||
if file_name == "":
|
||||
self.inform.emit("Open Config file failed.")
|
||||
else:
|
||||
run_from_arg = True
|
||||
self.worker_task.emit({'fcn': self.open_config_file,
|
||||
'params': [file_name, run_from_arg]})
|
||||
except Exception as e:
|
||||
log.debug("Could not open FlatCAM Config file as App parameter due: %s" % str(e))
|
||||
|
||||
def defaults_read_form(self):
|
||||
for option in self.defaults_form_fields:
|
||||
try:
|
||||
@ -3141,6 +3160,27 @@ class App(QtCore.QObject):
|
||||
|
||||
self.ui.grid_snap_btn.trigger()
|
||||
|
||||
def on_toggle_code_editor(self):
|
||||
self.report_usage("on_toggle_code_editor()")
|
||||
|
||||
if self.toggle_codeeditor is False:
|
||||
# add the tab if it was closed
|
||||
self.ui.plot_tab_area.addTab(self.ui.cncjob_tab, "Code Editor")
|
||||
self.ui.cncjob_tab.setObjectName('cncjob_tab')
|
||||
# first clear previous text in text editor (if any)
|
||||
self.ui.code_editor.clear()
|
||||
|
||||
# Switch plot_area to CNCJob tab
|
||||
self.ui.plot_tab_area.setCurrentWidget(self.ui.cncjob_tab)
|
||||
|
||||
self.toggle_codeeditor = True
|
||||
else:
|
||||
for idx in range(self.ui.plot_tab_area.count()):
|
||||
if self.ui.plot_tab_area.widget(idx).objectName() == "cncjob_tab":
|
||||
self.ui.plot_tab_area.closeTab(idx)
|
||||
break
|
||||
self.toggle_codeeditor = False
|
||||
|
||||
def on_options_combo_change(self, sel):
|
||||
"""
|
||||
Called when the combo box to choose between application defaults and
|
||||
@ -3619,12 +3659,20 @@ class App(QtCore.QObject):
|
||||
# self.ui.buttonPreview.setEnabled(enable)
|
||||
pass
|
||||
|
||||
def handleSaveGCode(self):
|
||||
def handleSaveGCode(self, signal, name=None, filt=None):
|
||||
self.report_usage("handleSaveGCode()")
|
||||
if name:
|
||||
obj_name = name
|
||||
else:
|
||||
try:
|
||||
obj_name = self.collection.get_active().options['name']
|
||||
except AttributeError:
|
||||
obj_name = 'file'
|
||||
|
||||
obj_name = self.collection.get_active().options['name']
|
||||
|
||||
_filter_ = " G-Code Files (*.nc);; G-Code Files (*.txt);; G-Code Files (*.tap);; G-Code Files (*.cnc);; " \
|
||||
if filt:
|
||||
_filter_ = filt
|
||||
else:
|
||||
_filter_ = " G-Code Files (*.nc);; G-Code Files (*.txt);; G-Code Files (*.tap);; G-Code Files (*.cnc);; " \
|
||||
"All Files (*.*)"
|
||||
try:
|
||||
filename = str(QtWidgets.QFileDialog.getSaveFileName(
|
||||
@ -4884,6 +4932,7 @@ class App(QtCore.QObject):
|
||||
obj.on_exportgcode_button_click()
|
||||
elif type(obj) == FlatCAMGerber:
|
||||
self.on_file_exportgerber()
|
||||
|
||||
def on_view_source(self):
|
||||
|
||||
try:
|
||||
@ -5049,6 +5098,27 @@ class App(QtCore.QObject):
|
||||
# thread safe. The new_project()
|
||||
self.open_project(filename)
|
||||
|
||||
def on_file_openconfig(self):
|
||||
"""
|
||||
File menu callback for opening a config file.
|
||||
|
||||
:return: None
|
||||
"""
|
||||
|
||||
self.report_usage("on_file_openconfig")
|
||||
App.log.debug("on_file_openconfig()")
|
||||
_filter_ = "FlatCAM Config (*.FlatConfig);;FlatCAM Config (*.json);;All Files (*.*)"
|
||||
try:
|
||||
filename, _ = QtWidgets.QFileDialog.getOpenFileName(caption="Open Configuration File",
|
||||
directory=self.data_path, filter=_filter_)
|
||||
except TypeError:
|
||||
filename, _ = QtWidgets.QFileDialog.getOpenFileName(caption="Open Configuration File", filter = _filter_)
|
||||
|
||||
if filename == "":
|
||||
self.inform.emit("[WARNING_NOTCL]Open COnfig cancelled.")
|
||||
else:
|
||||
self.open_config_file(filename)
|
||||
|
||||
def on_file_exportsvg(self):
|
||||
"""
|
||||
Callback for menu item File->Export SVG.
|
||||
@ -6265,6 +6335,37 @@ class App(QtCore.QObject):
|
||||
self.inform.emit("[success] Opened: " + filename)
|
||||
self.progress.emit(100)
|
||||
|
||||
def open_config_file(self, filename, run_from_arg=None):
|
||||
"""
|
||||
Loads a config file from the specified file.
|
||||
|
||||
:param filename: Name of the file from which to load.
|
||||
:type filename: str
|
||||
:return: None
|
||||
"""
|
||||
App.log.debug("Opening config file: " + filename)
|
||||
|
||||
# add the tab if it was closed
|
||||
self.ui.plot_tab_area.addTab(self.ui.cncjob_tab, "Code Editor")
|
||||
# first clear previous text in text editor (if any)
|
||||
self.ui.code_editor.clear()
|
||||
|
||||
# Switch plot_area to CNCJob tab
|
||||
self.ui.plot_tab_area.setCurrentWidget(self.ui.cncjob_tab)
|
||||
|
||||
try:
|
||||
if filename:
|
||||
f = QtCore.QFile(filename)
|
||||
if f.open(QtCore.QIODevice.ReadOnly):
|
||||
stream = QtCore.QTextStream(f)
|
||||
gcode_edited = stream.readAll()
|
||||
self.ui.code_editor.setPlainText(gcode_edited)
|
||||
f.close()
|
||||
except IOError:
|
||||
App.log.error("Failed to open config file: %s" % filename)
|
||||
self.inform.emit("[ERROR_NOTCL] Failed to open config file: %s" % filename)
|
||||
return
|
||||
|
||||
def open_project(self, filename, run_from_arg=None):
|
||||
"""
|
||||
Loads a project from the specified file.
|
||||
|
@ -83,6 +83,12 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
|
||||
self.menufileopenproject = QtWidgets.QAction(QtGui.QIcon('share/folder16.png'), 'Open &Project ...', self)
|
||||
self.menufile_open.addAction(self.menufileopenproject)
|
||||
|
||||
self.menufile_open.addSeparator()
|
||||
|
||||
# Open Config File...
|
||||
self.menufileopenconfig = QtWidgets.QAction(QtGui.QIcon('share/folder16.png'), 'Open Config ...', self)
|
||||
self.menufile_open.addAction(self.menufileopenconfig)
|
||||
|
||||
# Recent
|
||||
self.recent = self.menufile.addMenu(QtGui.QIcon('share/recent_files.png'), "Recent files")
|
||||
|
||||
@ -299,7 +305,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
|
||||
self.menuview_zoom_fit = self.menuview.addAction(QtGui.QIcon('share/zoom_fit32.png'), "&Zoom Fit\tV")
|
||||
self.menuview_zoom_in = self.menuview.addAction(QtGui.QIcon('share/zoom_in32.png'), "&Zoom In\t-")
|
||||
self.menuview_zoom_out = self.menuview.addAction(QtGui.QIcon('share/zoom_out32.png'), "&Zoom Out\t=")
|
||||
self.menuview.addSeparator()
|
||||
|
||||
self.menuview_toggle_code_editor = self.menuview.addAction(QtGui.QIcon('share/code_editor32.png'),
|
||||
'Toggle Code Editor\tCTRL+E')
|
||||
self.menuview.addSeparator()
|
||||
self.menuview_toggle_fscreen = self.menuview.addAction(
|
||||
QtGui.QIcon('share/fscreen32.png'), "&Toggle FullScreen\tALT+F10")
|
||||
@ -715,6 +724,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
|
||||
self.geometry_tab_lay.addWidget(self.geometry_scroll_area)
|
||||
|
||||
self.cncjob_tab = QtWidgets.QWidget()
|
||||
self.cncjob_tab.setObjectName("cncjob_tab")
|
||||
self.pref_tab_area.addTab(self.cncjob_tab, "CNC-JOB")
|
||||
self.cncjob_tab_lay = QtWidgets.QVBoxLayout()
|
||||
self.cncjob_tab_lay.setContentsMargins(2, 2, 2, 2)
|
||||
@ -941,6 +951,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
|
||||
<td height="20"><strong>SHIFT+C</strong></td>
|
||||
<td> Copy Obj_Name</td>
|
||||
</tr>
|
||||
<tr height="20">
|
||||
<td height="20"><strong>SHIFT+E</strong></td>
|
||||
<td> Toggle Code Editor</td>
|
||||
</tr>
|
||||
<tr height="20">
|
||||
<td height="20"><strong>SHIFT+G</strong></td>
|
||||
<td> Toggle the axis</td>
|
||||
@ -1692,11 +1706,14 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
|
||||
return
|
||||
elif modifiers == QtCore.Qt.ShiftModifier:
|
||||
|
||||
# Copy Object Name
|
||||
# Copy Object Name
|
||||
if key == QtCore.Qt.Key_C:
|
||||
self.app.on_copy_name()
|
||||
|
||||
# Toggle Code Editor
|
||||
if key == QtCore.Qt.Key_E:
|
||||
self.app.on_toggle_code_editor()
|
||||
|
||||
# Toggle axis
|
||||
if key == QtCore.Qt.Key_G:
|
||||
if self.app.toggle_axis is False:
|
||||
|
@ -13,6 +13,9 @@ CAD program, and create G-Code for Isolation routing.
|
||||
|
||||
- fixed a small bug in the Tool Solder Paste: the App don't take into consideration pads already filled with solder paste.
|
||||
- prettified the defaults files and the recent file. Now they are ordered and human readable
|
||||
- added a Toggle Code Editor Menu and key shortcut
|
||||
- added the ability to open FlatConfig configuration files in COde Editor, Modify them and then save them.
|
||||
- added ability to double click the FlatConfig files and open them in the FlatCAM Code Editor (to be verified)
|
||||
|
||||
23.02.2019
|
||||
|
||||
|
BIN
share/code_editor32.png
Normal file
BIN
share/code_editor32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 258 B |
Loading…
Reference in New Issue
Block a user