- more PEP8 cleanup in FlatCAMApp.py
This commit is contained in:
parent
4c49348aef
commit
e28e109e90
178
FlatCAMApp.py
178
FlatCAMApp.py
@ -2714,14 +2714,14 @@ class App(QtCore.QObject):
|
||||
self.report_usage("on_import_preferences")
|
||||
App.log.debug("on_import_preferences()")
|
||||
|
||||
filter = "Config File (*.FlatConfig);;All Files (*.*)"
|
||||
filter_ = "Config File (*.FlatConfig);;All Files (*.*)"
|
||||
try:
|
||||
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Import FlatCAM Preferences"),
|
||||
directory=self.data_path,
|
||||
filter=filter)
|
||||
filter=filter_)
|
||||
except TypeError:
|
||||
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Import FlatCAM Preferences"),
|
||||
filter=filter)
|
||||
filter=filter_)
|
||||
|
||||
filename = str(filename)
|
||||
|
||||
@ -2739,7 +2739,7 @@ class App(QtCore.QObject):
|
||||
|
||||
try:
|
||||
defaults_from_file = json.loads(options)
|
||||
except:
|
||||
except Exception as e:
|
||||
e = sys.exc_info()[0]
|
||||
App.log.error(str(e))
|
||||
self.inform.emit(_("[ERROR_NOTCL] Failed to parse defaults file."))
|
||||
@ -2748,7 +2748,6 @@ class App(QtCore.QObject):
|
||||
self.inform.emit(_("[success] Imported Defaults from %s") %filename)
|
||||
|
||||
def on_export_preferences(self):
|
||||
|
||||
self.report_usage("on_export_preferences")
|
||||
App.log.debug("on_export_preferences()")
|
||||
|
||||
@ -3057,15 +3056,15 @@ class App(QtCore.QObject):
|
||||
self.collection.set_active(obj.options["name"])
|
||||
|
||||
# here it is done the object plotting
|
||||
def worker_task(obj):
|
||||
def worker_task(t_obj):
|
||||
with self.proc_container.new("Plotting"):
|
||||
if isinstance(obj, FlatCAMCNCjob):
|
||||
obj.plot(kind=self.defaults["cncjob_plot_kind"])
|
||||
if isinstance(t_obj, FlatCAMCNCjob):
|
||||
t_obj.plot(kind=self.defaults["cncjob_plot_kind"])
|
||||
else:
|
||||
obj.plot()
|
||||
t_obj.plot()
|
||||
t1 = time.time() # DEBUG
|
||||
self.log.debug("%f seconds adding object and plotting." % (t1 - t0))
|
||||
self.object_plotted.emit(obj)
|
||||
self.object_plotted.emit(t_obj)
|
||||
|
||||
# Send to worker
|
||||
# self.worker.add_task(worker_task, [self])
|
||||
@ -3554,7 +3553,7 @@ class App(QtCore.QObject):
|
||||
self.set_screen_units(self.defaults['units'])
|
||||
|
||||
def set_screen_units(self, units):
|
||||
self.ui.units_label.setText("[" + self.defaults["units"].lower() + "]")
|
||||
self.ui.units_label.setText("[" + units.lower() + "]")
|
||||
|
||||
def on_toggle_units(self, no_pref=False):
|
||||
"""
|
||||
@ -4064,8 +4063,9 @@ class App(QtCore.QObject):
|
||||
self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_spinner.setValue(slider_value)
|
||||
|
||||
def on_alt_sl_color_entry(self):
|
||||
self.defaults['global_alt_sel_line'] = self.ui.general_defaults_form.general_gui_group \
|
||||
.alt_sl_color_entry.get_value()[:7] + self.defaults['global_alt_sel_line'][7:9]
|
||||
self.defaults['global_alt_sel_line'] = \
|
||||
self.ui.general_defaults_form.general_gui_group.alt_sl_color_entry.get_value()[:7] + \
|
||||
self.defaults['global_alt_sel_line'][7:9]
|
||||
self.ui.general_defaults_form.general_gui_group.alt_sl_color_button.setStyleSheet(
|
||||
"background-color:%s" % str(self.defaults['global_alt_sel_line'])[:7])
|
||||
|
||||
@ -4623,8 +4623,8 @@ class App(QtCore.QObject):
|
||||
:return: None
|
||||
"""
|
||||
|
||||
#display the message for the user
|
||||
#and ask him to click on the desired position
|
||||
# display the message for the user
|
||||
# and ask him to click on the desired position
|
||||
self.report_usage("on_set_origin()")
|
||||
|
||||
self.inform.emit(_('Click to set the origin ...'))
|
||||
@ -4674,18 +4674,18 @@ class App(QtCore.QObject):
|
||||
obj_init.solid_geometry = obj.solid_geometry
|
||||
try:
|
||||
obj_init.follow_geometry = obj.follow_geometry
|
||||
except:
|
||||
except AttributeError:
|
||||
pass
|
||||
try:
|
||||
obj_init.apertures = obj.apertures
|
||||
except:
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
try:
|
||||
if obj.tools:
|
||||
obj_init.tools = obj.tools
|
||||
except Exception as e:
|
||||
log.debug("on_copy_object() --> %s" % str(e))
|
||||
log.debug("App.on_copy_object() --> %s" % str(e))
|
||||
|
||||
def initialize_excellon(obj_init, app):
|
||||
obj_init.tools = obj.tools
|
||||
@ -4697,7 +4697,6 @@ class App(QtCore.QObject):
|
||||
obj_init.create_geometry()
|
||||
|
||||
for obj in self.collection.get_selected():
|
||||
|
||||
obj_name = obj.options["name"]
|
||||
|
||||
try:
|
||||
@ -4716,11 +4715,11 @@ class App(QtCore.QObject):
|
||||
obj_init.solid_geometry = obj.solid_geometry
|
||||
try:
|
||||
obj_init.follow_geometry = obj.follow_geometry
|
||||
except:
|
||||
except AttributeError:
|
||||
pass
|
||||
try:
|
||||
obj_init.apertures = obj.apertures
|
||||
except:
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
try:
|
||||
@ -4764,8 +4763,8 @@ class App(QtCore.QObject):
|
||||
else:
|
||||
try:
|
||||
obj.options['name'] = text
|
||||
except:
|
||||
log.warning("Could not rename the object in the list")
|
||||
except Exception as e:
|
||||
log.warning("App.on_rename_object() --> Could not rename the object in the list. --> %s" % str(e))
|
||||
|
||||
def convert_any2geo(self):
|
||||
self.report_usage("convert_any2geo()")
|
||||
@ -4774,11 +4773,11 @@ class App(QtCore.QObject):
|
||||
obj_init.solid_geometry = obj.solid_geometry
|
||||
try:
|
||||
obj_init.follow_geometry = obj.follow_geometry
|
||||
except:
|
||||
except AttributeError:
|
||||
pass
|
||||
try:
|
||||
obj_init.apertures = obj.apertures
|
||||
except:
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
try:
|
||||
@ -4802,7 +4801,6 @@ class App(QtCore.QObject):
|
||||
return
|
||||
|
||||
for obj in self.collection.get_selected():
|
||||
|
||||
obj_name = obj.options["name"]
|
||||
|
||||
try:
|
||||
@ -4810,7 +4808,6 @@ class App(QtCore.QObject):
|
||||
self.new_object("geometry", str(obj_name) + "_conv", initialize_excellon)
|
||||
else:
|
||||
self.new_object("geometry", str(obj_name) + "_conv", initialize)
|
||||
|
||||
except Exception as e:
|
||||
return "Operation failed: %s" % str(e)
|
||||
|
||||
@ -5496,17 +5493,17 @@ class App(QtCore.QObject):
|
||||
else:
|
||||
modifiers = QtWidgets.QApplication.keyboardModifiers()
|
||||
|
||||
# If the CTRL key is pressed when the LMB is clicked then if the object is selected it will deselect,
|
||||
# and if it's not selected then it will be selected
|
||||
# If the CTRL key is pressed when the LMB is clicked then if the object is selected it will
|
||||
# deselect, and if it's not selected then it will be selected
|
||||
if modifiers == QtCore.Qt.ControlModifier:
|
||||
# If there is no active command (self.command_active is None) then we check if we clicked on
|
||||
# a object by checking the bounding limits against mouse click position
|
||||
# If there is no active command (self.command_active is None) then we check if we clicked
|
||||
# on a object by checking the bounding limits against mouse click position
|
||||
if self.command_active is None:
|
||||
self.select_objects(key='CTRL')
|
||||
self.delete_hover_shape()
|
||||
else:
|
||||
# If there is no active command (self.command_active is None) then we check if we clicked on a object by
|
||||
# checking the bounding limits against mouse click position
|
||||
# If there is no active command (self.command_active is None) then we check if we clicked
|
||||
# on a object by checking the bounding limits against mouse click position
|
||||
if self.command_active is None:
|
||||
self.select_objects()
|
||||
self.delete_hover_shape()
|
||||
@ -5545,11 +5542,11 @@ class App(QtCore.QObject):
|
||||
if self.defaults['global_selection_shape'] is True:
|
||||
self.draw_selection_shape(obj)
|
||||
self.collection.set_active(obj.options['name'])
|
||||
except:
|
||||
except Exception as e:
|
||||
# the Exception here will happen if we try to select on screen and we have an newly (and empty)
|
||||
# just created Geometry or Excellon object that do not have the xmin, xmax, ymin, ymax options.
|
||||
# In this case poly_obj creation (see above) will fail
|
||||
pass
|
||||
log.debug("App.selection_area_handler() --> %s" % str(e))
|
||||
|
||||
def select_objects(self, key=None):
|
||||
# list where we store the overlapped objects under our mouse left click position
|
||||
@ -6281,14 +6278,14 @@ class App(QtCore.QObject):
|
||||
|
||||
name = self.collection.get_active().options["name"]
|
||||
|
||||
filter = "Gerber File (*.GBR);;All Files (*.*)"
|
||||
_filter_ = "Gerber File (*.GBR);;All Files (*.*)"
|
||||
try:
|
||||
filename, _f = QtWidgets.QFileDialog.getSaveFileName(
|
||||
caption=_("Export Gerber"),
|
||||
directory=self.get_last_save_folder() + '/' + name,
|
||||
filter=filter)
|
||||
filter=_filter_)
|
||||
except TypeError:
|
||||
filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export Gerber"), filter=filter)
|
||||
filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export Gerber"), filter=_filter_)
|
||||
|
||||
filename = str(filename)
|
||||
|
||||
@ -6334,14 +6331,15 @@ class App(QtCore.QObject):
|
||||
|
||||
name = self.collection.get_active().options["name"]
|
||||
|
||||
filter = "DXF File (*.DXF);;All Files (*.*)"
|
||||
_filter_ = "DXF File (*.DXF);;All Files (*.*)"
|
||||
try:
|
||||
filename, _f = QtWidgets.QFileDialog.getSaveFileName(
|
||||
caption=_("Export DXF"),
|
||||
directory=self.get_last_save_folder() + '/' + name,
|
||||
filter=filter)
|
||||
filter=_filter_)
|
||||
except TypeError:
|
||||
filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export DXF"), filter=filter)
|
||||
filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export DXF"),
|
||||
filter=_filter_)
|
||||
|
||||
filename = str(filename)
|
||||
|
||||
@ -6364,12 +6362,13 @@ class App(QtCore.QObject):
|
||||
self.report_usage("on_file_importsvg")
|
||||
App.log.debug("on_file_importsvg()")
|
||||
|
||||
filter = "SVG File (*.svg);;All Files (*.*)"
|
||||
_filter_ = "SVG File (*.svg);;All Files (*.*)"
|
||||
try:
|
||||
filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import SVG"),
|
||||
directory=self.get_last_folder(), filter=filter)
|
||||
directory=self.get_last_folder(), filter=_filter_)
|
||||
except TypeError:
|
||||
filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import SVG"), filter=filter)
|
||||
filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import SVG"),
|
||||
filter=_filter_)
|
||||
|
||||
if type_of_obj is not "geometry" and type_of_obj is not "gerber":
|
||||
type_of_obj = "geometry"
|
||||
@ -6394,12 +6393,14 @@ class App(QtCore.QObject):
|
||||
self.report_usage("on_file_importdxf")
|
||||
App.log.debug("on_file_importdxf()")
|
||||
|
||||
filter = "DXF File (*.DXF);;All Files (*.*)"
|
||||
_filter_ = "DXF File (*.DXF);;All Files (*.*)"
|
||||
try:
|
||||
filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import DXF"),
|
||||
directory=self.get_last_folder(), filter=filter)
|
||||
directory=self.get_last_folder(),
|
||||
filter=_filter_)
|
||||
except TypeError:
|
||||
filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import DXF"), filter=filter)
|
||||
filenames, _f = QtWidgets.QFileDialog.getOpenFileNames(caption=_("Import DXF"),
|
||||
filter=_filter_)
|
||||
|
||||
if type_of_obj is not "geometry" and type_of_obj is not "gerber":
|
||||
type_of_obj = "geometry"
|
||||
@ -6414,9 +6415,9 @@ class App(QtCore.QObject):
|
||||
self.worker_task.emit({'fcn': self.import_dxf,
|
||||
'params': [filename, type_of_obj]})
|
||||
|
||||
###################################################################################################################
|
||||
### The following section has the functions that are displayed are call the Editoe tab CNCJob Tab #################
|
||||
###################################################################################################################
|
||||
# ##################################################################################################################
|
||||
# ## The following section has the functions that are displayed and call the Editor tab CNCJob Tab #################
|
||||
# ##################################################################################################################
|
||||
|
||||
def init_code_editor(self, name):
|
||||
# Signals section
|
||||
@ -6641,9 +6642,8 @@ class App(QtCore.QObject):
|
||||
try:
|
||||
f = open(filename, 'r')
|
||||
f.close()
|
||||
exists = True
|
||||
except IOError:
|
||||
exists = False
|
||||
pass
|
||||
|
||||
if thread is True:
|
||||
self.worker_task.emit({'fcn': self.save_project,
|
||||
@ -7366,22 +7366,25 @@ class App(QtCore.QObject):
|
||||
self.inform.emit(_("[success] Opened: %s") % filename)
|
||||
self.progress.emit(100)
|
||||
|
||||
def import_image(self, filename, type='gerber', dpi=96, mode='black', mask=[250, 250, 250, 250], outname=None):
|
||||
def import_image(self, filename, o_type='gerber', dpi=96, mode='black', mask=[250, 250, 250, 250], outname=None):
|
||||
"""
|
||||
Adds a new Geometry Object to the projects and populates
|
||||
it with shapes extracted from the SVG file.
|
||||
|
||||
:param filename: Path to the SVG file.
|
||||
:param outname:
|
||||
:param o_type: type of FlatCAM objeect
|
||||
:param dpi: dot per inch
|
||||
:param mode: black or color
|
||||
:param mask: dictate the level of detail
|
||||
:param outname: name for the resulting file
|
||||
:return:
|
||||
"""
|
||||
self.report_usage("import_image()")
|
||||
|
||||
obj_type = ""
|
||||
if type is None or type == "geometry":
|
||||
if o_type is None or o_type == "geometry":
|
||||
obj_type = "geometry"
|
||||
elif type == "gerber":
|
||||
obj_type = type
|
||||
elif o_type == "gerber":
|
||||
obj_type = o_type
|
||||
else:
|
||||
self.inform.emit(_("[ERROR_NOTCL] Not supported type is picked as parameter. "
|
||||
"Only Geometry and Gerber are supported"))
|
||||
@ -7437,7 +7440,8 @@ class App(QtCore.QObject):
|
||||
self.inform.emit(_('[ERROR_NOTCL] Failed to open file: %s') % filename)
|
||||
return "fail"
|
||||
except ParseError as err:
|
||||
app_obj.inform.emit(_("[ERROR_NOTCL] Failed to parse file: {name}. {error}").format(name=filename, error=str(err)))
|
||||
app_obj.inform.emit(_("[ERROR_NOTCL] Failed to parse file: {name}. {error}").format(name=filename,
|
||||
error=str(err)))
|
||||
app_obj.progress.emit(0)
|
||||
self.log.error(str(err))
|
||||
return "fail"
|
||||
@ -7467,7 +7471,7 @@ class App(QtCore.QObject):
|
||||
# Object name
|
||||
name = outname or filename.split('/')[-1].split('\\')[-1]
|
||||
|
||||
### Object creation ###
|
||||
# ## Object creation ###
|
||||
ret = self.new_object("gerber", name, obj_init, autoselected=False)
|
||||
if ret == 'fail':
|
||||
self.inform.emit(_('[ERROR_NOTCL] Open Gerber failed. Probable not a Gerber file.'))
|
||||
@ -7495,8 +7499,6 @@ class App(QtCore.QObject):
|
||||
|
||||
App.log.debug("open_excellon()")
|
||||
|
||||
#self.progress.emit(10)
|
||||
|
||||
# How the object should be initialized
|
||||
def obj_init(excellon_obj, app_obj):
|
||||
# self.progress.emit(20)
|
||||
@ -7523,9 +7525,6 @@ class App(QtCore.QObject):
|
||||
log.debug("Could not create geometry for Excellon object.")
|
||||
return "fail"
|
||||
|
||||
# if excellon_obj.is_empty():
|
||||
# app_obj.inform.emit("[ERROR_NOTCL] No geometry found in file: " + filename)
|
||||
# return "fail"
|
||||
for tool in excellon_obj.tools:
|
||||
if excellon_obj.tools[tool]['solid_geometry']:
|
||||
return
|
||||
@ -7536,9 +7535,8 @@ class App(QtCore.QObject):
|
||||
|
||||
# Object name
|
||||
name = outname or filename.split('/')[-1].split('\\')[-1]
|
||||
|
||||
ret = self.new_object("excellon", name, obj_init, autoselected=False)
|
||||
if ret == 'fail':
|
||||
ret_val = self.new_object("excellon", name, obj_init, autoselected=False)
|
||||
if ret_val == 'fail':
|
||||
self.inform.emit(_('[ERROR_NOTCL] Open Excellon file failed. Probable not an Excellon file.'))
|
||||
return
|
||||
|
||||
@ -7547,15 +7545,13 @@ class App(QtCore.QObject):
|
||||
|
||||
# GUI feedback
|
||||
self.inform.emit(_("[success] Opened: %s") % filename)
|
||||
# self.progress.emit(100)
|
||||
|
||||
def open_gcode(self, filename, outname=None):
|
||||
"""
|
||||
Opens a G-gcode file, parses it and creates a new object for
|
||||
it in the program. Thread-safe.
|
||||
|
||||
:param outname: Name of the resulting object. None causes the
|
||||
name to be that of the file.
|
||||
:param outname: Name of the resulting object. None causes the name to be that of the file.
|
||||
:param filename: G-code file filename
|
||||
:type filename: str
|
||||
:return: None
|
||||
@ -7565,7 +7561,7 @@ class App(QtCore.QObject):
|
||||
# How the object should be initialized
|
||||
def obj_init(job_obj, app_obj_):
|
||||
"""
|
||||
|
||||
:param job_obj: the resulting object
|
||||
:type app_obj_: App
|
||||
"""
|
||||
assert isinstance(app_obj_, App), \
|
||||
@ -7658,6 +7654,7 @@ class App(QtCore.QObject):
|
||||
|
||||
:param filename: Name of the file from which to load.
|
||||
:type filename: str
|
||||
:param run_from_arg: True if run for arguments
|
||||
:return: None
|
||||
"""
|
||||
App.log.debug("Opening project: " + filename)
|
||||
@ -7689,16 +7686,15 @@ class App(QtCore.QObject):
|
||||
self.file_opened.emit("project", filename)
|
||||
|
||||
# Clear the current project
|
||||
## NOT THREAD SAFE ##
|
||||
# # NOT THREAD SAFE ##
|
||||
if run_from_arg is True:
|
||||
pass
|
||||
else:
|
||||
self.on_file_new()
|
||||
|
||||
#Project options
|
||||
# Project options
|
||||
self.options.update(d['options'])
|
||||
self.project_filename = filename
|
||||
# self.ui.units_label.setText("[" + self.options["units"] + "]")
|
||||
self.set_screen_units(self.options["units"])
|
||||
|
||||
# Re create objects
|
||||
@ -7793,32 +7789,6 @@ class App(QtCore.QObject):
|
||||
# Send to worker
|
||||
self.worker_task.emit({'fcn': worker_task, 'params': [obj]})
|
||||
|
||||
|
||||
# self.progress.emit(10)
|
||||
#
|
||||
# def worker_task(app_obj):
|
||||
# print "worker task"
|
||||
# percentage = 0.1
|
||||
# try:
|
||||
# delta = 0.9 / len(self.collection.get_list())
|
||||
# except ZeroDivisionError:
|
||||
# self.progress.emit(0)
|
||||
# return
|
||||
# for obj in self.collection.get_list():
|
||||
# with self.proc_container.new("Plotting"):
|
||||
# obj.plot()
|
||||
# app_obj.object_plotted.emit(obj)
|
||||
#
|
||||
# percentage += delta
|
||||
# self.progress.emit(int(percentage*100))
|
||||
#
|
||||
# self.progress.emit(0)
|
||||
# self.plots_updated.emit()
|
||||
#
|
||||
# # Send to worker
|
||||
# #self.worker.add_task(worker_task, [self])
|
||||
# self.worker_task.emit({'fcn': worker_task, 'params': [self]})
|
||||
|
||||
def register_folder(self, filename):
|
||||
self.defaults["global_last_folder"] = os.path.split(str(filename))[0]
|
||||
|
||||
@ -7884,6 +7854,7 @@ class App(QtCore.QObject):
|
||||
Block loop until signal emitted, timeout (ms) elapses
|
||||
or unhandled exception happens in a thread.
|
||||
|
||||
:param timeout: time after which the loop is exited
|
||||
:param signal: Signal to wait for.
|
||||
"""
|
||||
loop = QtCore.QEventLoop()
|
||||
@ -7915,7 +7886,7 @@ class App(QtCore.QObject):
|
||||
if timeout is not None:
|
||||
QtCore.QTimer.singleShot(timeout, report_quit)
|
||||
|
||||
#### Block ####
|
||||
# ### Block ####
|
||||
loop.exec_()
|
||||
|
||||
# Restore exception management
|
||||
@ -7980,7 +7951,8 @@ class App(QtCore.QObject):
|
||||
|
||||
This behavior works only within main thread,
|
||||
errors with promissed tasks can be catched and detected only with log.
|
||||
TODO: this problem have to be addressed somehow, maybe rewrite promissing to be blocking somehow for TCL shell.
|
||||
TODO: this problem have to be addressed somehow, maybe rewrite promissing to be blocking somehow for
|
||||
TCL shell.
|
||||
|
||||
Kamil's comment: I will rewrite existing TCL commands from time to time to follow this rules.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user