- PEP8 correction in flatcamTools

- merged the Brazilian-portuguese language from a pull request made by Carlos Stein
This commit is contained in:
Marius Stanciu 2019-07-16 16:22:20 +03:00 committed by Marius
parent d34a17a81d
commit e6153298bc
9 changed files with 283 additions and 261 deletions

View File

@ -9,6 +9,11 @@ CAD program, and create G-Code for Isolation routing.
=================================================
16.07.2019
- PEP8 correction in flatcamTools
- merged the Brazilian-portuguese language from a pull request made by Carlos Stein
15.07.2019
- some PEP8 corrections

View File

@ -207,8 +207,8 @@ class ToolPDF(FlatCAMTool):
while True:
self.parsing_promises.remove(short_name)
time.sleep(0.1)
except:
pass
except Exception as e:
log.debug("ToolPDF.open_pdf() --> %s" % str(e))
self.app.inform.emit(_("[success] Opened: %s") % filename)
def layer_rendering_as_excellon(self, filename, ap_dict, layer_nr):
@ -264,8 +264,8 @@ class ToolPDF(FlatCAMTool):
with self.app.proc_container.new(_("Rendering PDF layer #%d ...") % int(layer_nr)):
ret = self.app.new_object("excellon", outname, obj_init, autoselected=False)
if ret == 'fail':
ret_val = self.app.new_object("excellon", outname, obj_init, autoselected=False)
if ret_val == 'fail':
self.app.inform.emit(_('[ERROR_NOTCL] Open PDF file failed.'))
return
# Register recent file
@ -300,7 +300,7 @@ class ToolPDF(FlatCAMTool):
global_clear_geo.append(geo_el['clear'])
if global_clear_geo:
solid= []
solid = []
for apid in grb_obj.apertures:
if 'geometry' in grb_obj.apertures[apid]:
for elem in grb_obj.apertures[apid]['geometry']:
@ -360,7 +360,7 @@ class ToolPDF(FlatCAMTool):
try:
self.check_thread.stop()
except:
except Exception as e:
pass
self.check_thread.setInterval(check_period)
@ -458,7 +458,7 @@ class ToolPDF(FlatCAMTool):
# on stroke color change we create a new apertures dictionary and store the old one in a storage from where
# it will be transformed into Gerber object
old_color = [None, None ,None]
old_color = [None, None, None]
# signal that we have clear geometry and the geometry will be added to a special layer_nr = 0
flag_clear_geo = False
@ -681,10 +681,8 @@ class ToolPDF(FlatCAMTool):
current_subpath = 'rectangle'
x = (float(match.group(1)) + offset_geo[0]) * self.point_to_unit_factor * scale_geo[0]
y = (float(match.group(2)) + offset_geo[1]) * self.point_to_unit_factor * scale_geo[1]
width = (float(match.group(3)) + offset_geo[0]) * \
self.point_to_unit_factor * scale_geo[0]
height = (float(match.group(4)) + offset_geo[1]) * \
self.point_to_unit_factor * scale_geo[1]
width = (float(match.group(3)) + offset_geo[0]) * self.point_to_unit_factor * scale_geo[0]
height = (float(match.group(4)) + offset_geo[1]) * self.point_to_unit_factor * scale_geo[1]
pt1 = (x, y)
pt2 = (x+width, y)
pt3 = (x+width, y+height)
@ -758,7 +756,8 @@ class ToolPDF(FlatCAMTool):
for subp in path['lines']:
geo = copy(subp)
try:
geo = LineString(geo).buffer((float(applied_size) / 2), resolution=self.step_per_circles)
geo = LineString(geo).buffer((float(applied_size) / 2),
resolution=self.step_per_circles)
path_geo.append(geo)
except ValueError:
pass

View File

@ -7,14 +7,14 @@
# ########################################################## ##
from FlatCAMTool import FlatCAMTool
from copy import copy,deepcopy
from copy import copy, deepcopy
from ObjectCollection import *
import gettext
import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings')
import builtins
if '_' not in builtins.__dict__:
_ = gettext.gettext
@ -65,11 +65,11 @@ class ToolPaint(FlatCAMTool, Gerber):
form_layout.addRow(self.object_label, self.object_combo)
form_layout.addRow(e_lab_0)
#### Tools ## ##
# ### Tools ## ##
self.tools_table_label = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table'))
self.tools_table_label.setToolTip(
_("Tools pool from which the algorithm\n"
"will pick the ones used for painting.")
"will pick the ones used for painting.")
)
self.tools_box.addWidget(self.tools_table_label)
@ -84,33 +84,33 @@ class ToolPaint(FlatCAMTool, Gerber):
self.tools_table.horizontalHeaderItem(0).setToolTip(
_("This is the Tool Number.\n"
"Painting will start with the tool with the biggest diameter,\n"
"continuing until there are no more tools.\n"
"Only tools that create painting geometry will still be present\n"
"in the resulting geometry. This is because with some tools\n"
"this function will not be able to create painting geometry.")
"Painting will start with the tool with the biggest diameter,\n"
"continuing until there are no more tools.\n"
"Only tools that create painting geometry will still be present\n"
"in the resulting geometry. This is because with some tools\n"
"this function will not be able to create painting geometry.")
)
self.tools_table.horizontalHeaderItem(1).setToolTip(
_("Tool Diameter. It's value (in current FlatCAM units) \n"
"is the cut width into the material."))
"is the cut width into the material."))
self.tools_table.horizontalHeaderItem(2).setToolTip(
_("The Tool Type (TT) can be:<BR>"
"- <B>Circular</B> with 1 ... 4 teeth -> it is informative only. Being circular, <BR>"
"the cut width in material is exactly the tool diameter.<BR>"
"- <B>Ball</B> -> informative only and make reference to the Ball type endmill.<BR>"
"- <B>V-Shape</B> -> it will disable de Z-Cut parameter in the resulting geometry UI form "
"and enable two additional UI form fields in the resulting geometry: V-Tip Dia and "
"V-Tip Angle. Adjusting those two values will adjust the Z-Cut parameter such "
"as the cut width into material will be equal with the value in the Tool Diameter "
"column of this table.<BR>"
"Choosing the <B>V-Shape</B> Tool Type automatically will select the Operation Type "
"in the resulting geometry as Isolation."))
"- <B>Circular</B> with 1 ... 4 teeth -> it is informative only. Being circular, <BR>"
"the cut width in material is exactly the tool diameter.<BR>"
"- <B>Ball</B> -> informative only and make reference to the Ball type endmill.<BR>"
"- <B>V-Shape</B> -> it will disable de Z-Cut parameter in the resulting geometry UI form "
"and enable two additional UI form fields in the resulting geometry: V-Tip Dia and "
"V-Tip Angle. Adjusting those two values will adjust the Z-Cut parameter such "
"as the cut width into material will be equal with the value in the Tool Diameter "
"column of this table.<BR>"
"Choosing the <B>V-Shape</B> Tool Type automatically will select the Operation Type "
"in the resulting geometry as Isolation."))
self.empty_label = QtWidgets.QLabel('')
self.tools_box.addWidget(self.empty_label)
#### Add a new Tool ## ##
# ### Add a new Tool ## ##
hlay = QtWidgets.QHBoxLayout()
self.tools_box.addLayout(hlay)
@ -131,7 +131,7 @@ class ToolPaint(FlatCAMTool, Gerber):
self.addtool_btn = QtWidgets.QPushButton(_('Add'))
self.addtool_btn.setToolTip(
_("Add a new tool to the Tool Table\n"
"with the diameter specified above.")
"with the diameter specified above.")
)
# self.copytool_btn = QtWidgets.QPushButton('Copy')
@ -143,12 +143,12 @@ class ToolPaint(FlatCAMTool, Gerber):
self.deltool_btn = QtWidgets.QPushButton(_('Delete'))
self.deltool_btn.setToolTip(
_("Delete a selection of tools in the Tool Table\n"
"by first selecting a row(s) in the Tool Table.")
"by first selecting a row(s) in the Tool Table.")
)
grid2.addWidget(self.addtool_btn, 0, 0)
# grid2.addWidget(self.copytool_btn, 0, 1)
grid2.addWidget(self.deltool_btn, 0,2)
grid2.addWidget(self.deltool_btn, 0, 2)
self.empty_label_0 = QtWidgets.QLabel('')
self.tools_box.addWidget(self.empty_label_0)
@ -177,8 +177,8 @@ class ToolPaint(FlatCAMTool, Gerber):
marginlabel = QtWidgets.QLabel(_('Margin:'))
marginlabel.setToolTip(
_("Distance by which to avoid\n"
"the edges of the polygon to\n"
"be painted.")
"the edges of the polygon to\n"
"be painted.")
)
grid3.addWidget(marginlabel, 2, 0)
self.paintmargin_entry = FCEntry()
@ -188,9 +188,9 @@ class ToolPaint(FlatCAMTool, Gerber):
methodlabel = QtWidgets.QLabel(_('Method:'))
methodlabel.setToolTip(
_("Algorithm for non-copper clearing:<BR>"
"<B>Standard</B>: Fixed step inwards.<BR>"
"<B>Seed-based</B>: Outwards from seed.<BR>"
"<B>Line-based</B>: Parallel lines.")
"<B>Standard</B>: Fixed step inwards.<BR>"
"<B>Seed-based</B>: Outwards from seed.<BR>"
"<B>Line-based</B>: Parallel lines.")
)
grid3.addWidget(methodlabel, 3, 0)
self.paintmethod_combo = RadioSet([
@ -204,7 +204,7 @@ class ToolPaint(FlatCAMTool, Gerber):
pathconnectlabel = QtWidgets.QLabel(_("Connect:"))
pathconnectlabel.setToolTip(
_("Draw lines between resulting\n"
"segments to minimize tool lifts.")
"segments to minimize tool lifts.")
)
grid3.addWidget(pathconnectlabel, 4, 0)
self.pathconnect_cb = FCCheckBox()
@ -213,7 +213,7 @@ class ToolPaint(FlatCAMTool, Gerber):
contourlabel = QtWidgets.QLabel(_("Contour:"))
contourlabel.setToolTip(
_("Cut around the perimeter of the polygon\n"
"to trim rough edges.")
"to trim rough edges.")
)
grid3.addWidget(contourlabel, 5, 0)
self.paintcontour_cb = FCCheckBox()
@ -222,12 +222,12 @@ class ToolPaint(FlatCAMTool, Gerber):
restlabel = QtWidgets.QLabel(_("Rest M.:"))
restlabel.setToolTip(
_("If checked, use 'rest machining'.\n"
"Basically it will clear copper outside PCB features,\n"
"using the biggest tool and continue with the next tools,\n"
"from bigger to smaller, to clear areas of copper that\n"
"could not be cleared by previous tool, until there is\n"
"no more copper to clear or there are no more tools.\n\n"
"If not checked, use the standard algorithm.")
"Basically it will clear copper outside PCB features,\n"
"using the biggest tool and continue with the next tools,\n"
"from bigger to smaller, to clear areas of copper that\n"
"could not be cleared by previous tool, until there is\n"
"no more copper to clear or there are no more tools.\n\n"
"If not checked, use the standard algorithm.")
)
grid3.addWidget(restlabel, 6, 0)
self.rest_cb = FCCheckBox()
@ -237,9 +237,9 @@ class ToolPaint(FlatCAMTool, Gerber):
selectlabel = QtWidgets.QLabel(_('Selection:'))
selectlabel.setToolTip(
_("How to select the polygons to paint.<BR>"
"Options:<BR>"
"- <B>Single</B>: left mouse click on the polygon to be painted.<BR>"
"- <B>All</B>: paint all polygons.")
"Options:<BR>"
"- <B>Single</B>: left mouse click on the polygon to be painted.<BR>"
"- <B>All</B>: paint all polygons.")
)
grid3.addWidget(selectlabel, 7, 0)
# grid3 = QtWidgets.QGridLayout()
@ -254,10 +254,10 @@ class ToolPaint(FlatCAMTool, Gerber):
self.generate_paint_button = QtWidgets.QPushButton(_('Create Paint Geometry'))
self.generate_paint_button.setToolTip(
_("After clicking here, click inside<BR>"
"the polygon you wish to be painted if <B>Single</B> is selected.<BR>"
"If <B>All</B> is selected then the Paint will start after click.<BR>"
"A new Geometry object with the tool<BR>"
"paths will be created.")
"the polygon you wish to be painted if <B>Single</B> is selected.<BR>"
"If <B>All</B> is selected then the Paint will start after click.<BR>"
"A new Geometry object with the tool<BR>"
"paths will be created.")
)
self.tools_box.addWidget(self.generate_paint_button)
@ -314,7 +314,6 @@ class ToolPaint(FlatCAMTool, Gerber):
self.generate_paint_button.clicked.connect(self.on_paint_button_click)
self.selectmethod_combo.activated_custom.connect(self.on_radio_selection)
def install(self, icon=None, separator=None, **kwargs):
FlatCAMTool.install(self, icon, separator, shortcut='ALT+P', **kwargs)
@ -430,7 +429,7 @@ class ToolPaint(FlatCAMTool, Gerber):
self.on_tool_add(self.app.defaults["tools_painttooldia"], muted=True)
# if the Paint Method is "Single" disable the tool table context menu
if self.default_data["selectmethod"] == "single":
if self.default_data["selectmethod"] == "single":
self.tools_table.setContextMenuPolicy(Qt.NoContextMenu)
def build_ui(self):
@ -522,8 +521,8 @@ class ToolPaint(FlatCAMTool, Gerber):
try:
self.tools_table.itemChanged.disconnect()
except:
pass
except Exception as e:
log.debug("ToolPaint.on_tool_add() --> %s" % str(e))
if dia:
tool_dia = dia
@ -586,10 +585,12 @@ class ToolPaint(FlatCAMTool, Gerber):
self.build_ui()
def on_tool_edit(self):
old_tool_dia = ''
try:
self.tools_table.itemChanged.disconnect()
except:
pass
except Exception as e:
log.debug("ToolPaint.on_tool_edit() --> %s" % str(e))
tool_dias = []
for k, v in self.paint_tools.items():
@ -624,7 +625,8 @@ class ToolPaint(FlatCAMTool, Gerber):
break
restore_dia_item = self.tools_table.item(row, 1)
restore_dia_item.setText(str(old_tool_dia))
self.app.inform.emit(_("[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool Table."))
self.app.inform.emit(_("[WARNING_NOTCL] Edit cancelled. "
"New diameter value is already in the Tool Table."))
self.build_ui()
# def on_tool_copy(self, all=None):
@ -685,7 +687,8 @@ class ToolPaint(FlatCAMTool, Gerber):
def on_tool_delete(self, rows_to_delete=None, all=None):
try:
self.tools_table.itemChanged.disconnect()
except:
except Exception as e:
log.debug("ToolPaint.on_tool_delete() --> %s" % str(e))
pass
deleted_tools_list = []
@ -741,12 +744,12 @@ class ToolPaint(FlatCAMTool, Gerber):
overlap = float(self.paintoverlap_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered, "
"use a number."))
"use a number."))
return
if overlap >= 1 or overlap < 0:
self.app.inform.emit(_("[ERROR_NOTCL] Overlap value must be between "
"0 (inclusive) and 1 (exclusive), "))
"0 (inclusive) and 1 (exclusive), "))
return
self.app.inform.emit(_("[WARNING_NOTCL] Click inside the desired polygon."))
@ -760,7 +763,8 @@ class ToolPaint(FlatCAMTool, Gerber):
# Get source object.
try:
self.paint_obj = self.app.collection.get_by_name(str(self.obj_name))
except:
except Exception as e:
log.debug("ToolPaint.on_paint_button_click() --> %s" % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % self.obj_name)
return
@ -774,7 +778,7 @@ class ToolPaint(FlatCAMTool, Gerber):
self.app.inform.emit(_("[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..."))
return 'Fail'
o_name = '%s_multitool_paint' % (self.obj_name)
o_name = '%s_multitool_paint' % self.obj_name
if select_method == "all":
self.paint_poly_all(self.paint_obj,
@ -811,15 +815,13 @@ class ToolPaint(FlatCAMTool, Gerber):
self.app.plotcanvas.vis_disconnect('mouse_press', self.app.on_mouse_click_over_plot)
self.app.plotcanvas.vis_connect('mouse_press', doit)
def paint_poly(self, obj, inside_pt, tooldia, overlap,
outname=None, connect=True,
contour=True):
def paint_poly(self, obj, inside_pt, tooldia, overlap, outname=None, connect=True, contour=True):
"""
Paints a polygon selected by clicking on its interior.
Note:
* The margin is taken directly from the form.
:param obj: painted object
:param inside_pt: [x, y]
:param tooldia: Diameter of the painting tool
:param overlap: Overlap of the tool between passes.
@ -864,34 +866,34 @@ class ToolPaint(FlatCAMTool, Gerber):
def paint_p(polyg):
if paint_method == "seed":
# Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon2(polyg,
tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap,
contour=contour,
connect=connect)
cpoly = self.clear_polygon2(polyg,
tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap,
contour=contour,
connect=connect)
elif paint_method == "lines":
# Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon3(polyg,
tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap,
contour=contour,
connect=connect)
cpoly = self.clear_polygon3(polyg,
tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap,
contour=contour,
connect=connect)
else:
# Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon(polyg,
tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap,
contour=contour,
connect=connect)
cpoly = self.clear_polygon(polyg,
tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap,
contour=contour,
connect=connect)
if cp is not None:
geo_obj.solid_geometry += list(cp.get_objects())
return cp
if cpoly is not None:
geo_obj.solid_geometry += list(cpoly.get_objects())
return cpoly
else:
self.app.inform.emit(_('[ERROR_NOTCL] Geometry could not be painted completely'))
return None
@ -975,12 +977,11 @@ class ToolPaint(FlatCAMTool, Gerber):
# Background
self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]})
def paint_poly_all(self, obj, overlap, outname=None,
connect=True, contour=True):
def paint_poly_all(self, obj, overlap, outname=None, connect=True, contour=True):
"""
Paints all polygons in this object.
:param tooldia:
:param obj: painted object
:param overlap:
:param outname:
:param connect: Connect lines to avoid tool lifts.
@ -1055,6 +1056,7 @@ class ToolPaint(FlatCAMTool, Gerber):
def gen_paintarea(geo_obj, app_obj):
assert isinstance(geo_obj, FlatCAMGeometry), \
"Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj)
tool_dia = None
sorted_tools = []
for row in range(self.tools_table.rowCount()):
@ -1083,7 +1085,7 @@ class ToolPaint(FlatCAMTool, Gerber):
for geo in recurse(obj.solid_geometry):
try:
#Polygons are the only really paintable geometries, lines in theory have no area to be painted
# Polygons are the only really paintable geometries, lines in theory have no area to be painted
if not isinstance(geo, Polygon):
continue
poly_buf = geo.buffer(-paint_margin)
@ -1109,11 +1111,11 @@ class ToolPaint(FlatCAMTool, Gerber):
else:
# Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon(poly_buf,
tooldia=tool_dia,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=over,
contour=cont,
connect=conn)
tooldia=tool_dia,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=over,
contour=cont,
connect=conn)
if cp is not None:
total_geometry += list(cp.get_objects())
@ -1121,7 +1123,7 @@ class ToolPaint(FlatCAMTool, Gerber):
log.debug("Could not Paint the polygons. %s" % str(e))
self.app.inform.emit(
_("[ERROR] Could not do Paint All. Try a different combination of parameters. "
"Or a different Method of paint\n%s") % str(e))
"Or a different Method of paint\n%s") % str(e))
return
# add the solid_geometry to the current too in self.paint_tools dictionary and then reset the
@ -1160,6 +1162,7 @@ class ToolPaint(FlatCAMTool, Gerber):
assert isinstance(geo_obj, FlatCAMGeometry), \
"Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj)
tool_dia = None
sorted_tools = []
for row in range(self.tools_table.rowCount()):
sorted_tools.append(float(self.tools_table.item(row, 1).text()))
@ -1184,12 +1187,13 @@ class ToolPaint(FlatCAMTool, Gerber):
try:
geo = Polygon(geo) if not isinstance(geo, Polygon) else geo
poly_buf = geo.buffer(-paint_margin)
cp = None
if paint_method == "standard":
# Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon(poly_buf, tooldia=tool_dia,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=over, contour=cont, connect=conn)
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=over, contour=cont, connect=conn)
elif paint_method == "seed":
# Type(cp) == FlatCAMRTreeStorage | None
@ -1200,8 +1204,8 @@ class ToolPaint(FlatCAMTool, Gerber):
elif paint_method == "lines":
# Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon3(poly_buf, tooldia=tool_dia,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=over, contour=cont, connect=conn)
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=over, contour=cont, connect=conn)
if cp is not None:
cleared_geo += list(cp.get_objects())
@ -1210,7 +1214,7 @@ class ToolPaint(FlatCAMTool, Gerber):
log.debug("Could not Paint the polygons. %s" % str(e))
self.app.inform.emit(
_("[ERROR] Could not do Paint All. Try a different combination of parameters. "
"Or a different Method of paint\n%s") % str(e))
"Or a different Method of paint\n%s") % str(e))
return
# find the tooluid associated with the current tool_dia so we know where to add the tool solid_geometry
@ -1240,8 +1244,8 @@ class ToolPaint(FlatCAMTool, Gerber):
has_solid_geo += 1
if has_solid_geo == 0:
self.app.inform.emit(_("[ERROR_NOTCL] There is no Painting Geometry in the file.\n"
"Usually it means that the tool diameter is too big for the painted geometry.\n"
"Change the painting parameters and try again."))
"Usually it means that the tool diameter is too big for the painted geometry.\n"
"Change the painting parameters and try again."))
return
# Experimental...

View File

@ -18,9 +18,9 @@ from io import StringIO
import gettext
import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings')
import builtins
if '_' not in builtins.__dict__:
_ = gettext.gettext
@ -56,9 +56,8 @@ class PcbWizard(FlatCAMTool):
self.excellon_label = QtWidgets.QLabel(_("Excellon file:"))
self.excellon_label.setToolTip(
_( "Load the Excellon file.\n"
"Usually it has a .DRL extension")
_("Load the Excellon file.\n"
"Usually it has a .DRL extension")
)
self.excellon_brn = FCButton(_("Open"))
form_layout.addRow(self.excellon_label, self.excellon_brn)
@ -66,7 +65,6 @@ class PcbWizard(FlatCAMTool):
self.inf_label = QtWidgets.QLabel(_("INF file:"))
self.inf_label.setToolTip(
_("Load the INF file.")
)
self.inf_btn = FCButton(_("Open"))
form_layout.addRow(self.inf_label, self.inf_btn)
@ -96,7 +94,7 @@ class PcbWizard(FlatCAMTool):
self.int_entry.set_range(1, 10)
self.int_label = QtWidgets.QLabel(_("Int. digits:"))
self.int_label.setToolTip(
_( "The number of digits for the integral part of the coordinates.")
_("The number of digits for the integral part of the coordinates.")
)
form_layout1.addRow(self.int_label, self.int_entry)
@ -283,18 +281,17 @@ class PcbWizard(FlatCAMTool):
"""
self.app.log.debug("on_load_excellon_click()")
filter = "Excellon Files(*.DRL *.DRD *.TXT);;All Files (*.*)"
_filter = "Excellon Files(*.DRL *.DRD *.TXT);;All Files (*.*)"
try:
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard Excellon file"),
directory=self.app.get_last_folder(),
filter=filter)
filter=_filter)
except TypeError:
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard Excellon file"),
filter=filter)
filter=_filter)
filename = str(filename)
if filename == "":
self.app.inform.emit(_("Open cancelled."))
else:
@ -307,14 +304,14 @@ class PcbWizard(FlatCAMTool):
"""
self.app.log.debug("on_load_inf_click()")
filter = "INF Files(*.INF);;All Files (*.*)"
_filter = "INF Files(*.INF);;All Files (*.*)"
try:
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard INF file"),
directory=self.app.get_last_folder(),
filter=filter)
filter=_filter)
except TypeError:
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard INF file"),
filter=filter)
filter=_filter)
filename = str(filename)
@ -338,7 +335,7 @@ class PcbWizard(FlatCAMTool):
match = tool_re.search(eline)
if match:
tool =int( match.group(1))
tool = int(match.group(1))
dia = float(match.group(2))
# if dia < 0.1:
# # most likely the file is in INCH
@ -396,7 +393,7 @@ class PcbWizard(FlatCAMTool):
(str(self.app.version), str(self.app.version_date))
header += ';Created on : %s' % time_str + '\n'
header += ';FILE_FORMAT={integral}:{fractional}\n'.format(integral=self.integral,
fractional=self.fractional)
fractional=self.fractional)
header += '{units},{zeros}\n'.format(units=self.units, zeros=self.zeros)
for k, v in self.tools_from_inf.items():
header += 'T{tool}C{dia}\n'.format(tool=int(k), dia=float(v))
@ -425,7 +422,8 @@ class PcbWizard(FlatCAMTool):
app_obj.log.debug("Could not import Excellon object.")
app_obj.progress.emit(0)
return "fail"
except:
except Exception as e:
app_obj.log.debug("PcbWizard.on_import_excellon().obj_init() %s" % str(e))
msg = _("[ERROR_NOTCL] An internal error has occurred. See shell.\n")
msg += app_obj.traceback.format_exc()
app_obj.inform.emit(msg)
@ -449,8 +447,8 @@ class PcbWizard(FlatCAMTool):
# Object name
name = self.outname
ret = self.app.new_object("excellon", name, obj_init, autoselected=False)
if ret == 'fail':
ret_val = self.app.new_object("excellon", name, obj_init, autoselected=False)
if ret_val == 'fail':
self.app.inform.emit(_('[ERROR_NOTCL] Import Excellon file failed.'))
return

View File

@ -13,9 +13,9 @@ from FlatCAMObj import *
import gettext
import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings')
import builtins
if '_' not in builtins.__dict__:
_ = gettext.gettext
@ -49,7 +49,7 @@ class Properties(FlatCAMTool):
self.properties_box.addWidget(title_label)
# self.layout.setMargin(0) # PyQt4
self.properties_box.setContentsMargins(0, 0, 0, 0) # PyQt5
self.properties_box.setContentsMargins(0, 0, 0, 0) # PyQt5
self.vlay = QtWidgets.QVBoxLayout()
@ -62,7 +62,7 @@ class Properties(FlatCAMTool):
self.treeWidget.setSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Expanding)
self.vlay.addWidget(self.treeWidget)
self.vlay.setStretch(0,0)
self.vlay.setStretch(0, 0)
def run(self, toggle=True):
self.app.report_usage("ToolProperties()")
@ -130,9 +130,14 @@ class Properties(FlatCAMTool):
self.addChild(obj_type, ['Object Type:', ('%s' % (obj.kind.capitalize()))], True)
try:
self.addChild(obj_type, ['Geo Type:', ('%s' % ({False: "Single-Geo", True: "Multi-Geo"}[obj.multigeo]))], True)
self.addChild(obj_type,
['Geo Type:',
('%s' % ({False: "Single-Geo", True: "Multi-Geo"}[obj.multigeo]))
],
True
)
except Exception as e:
pass
log.debug("Properties.addItems() --> %s" % str(e))
self.addChild(obj_name, [obj.options['name']])
@ -163,7 +168,10 @@ class Properties(FlatCAMTool):
'in': 'Inch',
'mm': 'Metric'
}
[str(self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().lower())]], True)
[str(self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().lower())]
],
True
)
for option in obj.options:
if option is 'name':

View File

@ -15,9 +15,9 @@ import html
import gettext
import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings')
import builtins
if '_' not in builtins.__dict__:
_ = gettext.gettext

View File

@ -26,9 +26,9 @@ from io import StringIO
import gettext
import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings')
import builtins
if '_' not in builtins.__dict__:
_ = gettext.gettext
@ -66,11 +66,11 @@ class SolderPaste(FlatCAMTool):
)
obj_form_layout.addRow(self.object_label, self.obj_combo)
#### Tools ## ##
# ### Tools ## ##
self.tools_table_label = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table'))
self.tools_table_label.setToolTip(
_("Tools pool from which the algorithm\n"
"will pick the ones used for dispensing solder paste.")
"will pick the ones used for dispensing solder paste.")
)
self.layout.addWidget(self.tools_table_label)
@ -85,16 +85,16 @@ class SolderPaste(FlatCAMTool):
self.tools_table.horizontalHeaderItem(0).setToolTip(
_("This is the Tool Number.\n"
"The solder dispensing will start with the tool with the biggest \n"
"diameter, continuing until there are no more Nozzle tools.\n"
"If there are no longer tools but there are still pads not covered\n "
"with solder paste, the app will issue a warning message box.")
"The solder dispensing will start with the tool with the biggest \n"
"diameter, continuing until there are no more Nozzle tools.\n"
"If there are no longer tools but there are still pads not covered\n "
"with solder paste, the app will issue a warning message box.")
)
self.tools_table.horizontalHeaderItem(1).setToolTip(
_( "Nozzle tool Diameter. It's value (in current FlatCAM units)\n"
"is the width of the solder paste dispensed."))
_("Nozzle tool Diameter. It's value (in current FlatCAM units)\n"
"is the width of the solder paste dispensed."))
#### Add a new Tool ## ##
# ### Add a new Tool ## ##
hlay_tools = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay_tools)
@ -115,13 +115,13 @@ class SolderPaste(FlatCAMTool):
self.addtool_btn = QtWidgets.QPushButton(_('Add'))
self.addtool_btn.setToolTip(
_("Add a new nozzle tool to the Tool Table\n"
"with the diameter specified above.")
"with the diameter specified above.")
)
self.deltool_btn = QtWidgets.QPushButton(_('Delete'))
self.deltool_btn.setToolTip(
_( "Delete a selection of tools in the Tool Table\n"
"by first selecting a row(s) in the Tool Table.")
_("Delete a selection of tools in the Tool Table\n"
"by first selecting a row(s) in the Tool Table.")
)
self.soldergeo_btn = QtWidgets.QPushButton(_("Generate Geo"))
@ -142,10 +142,10 @@ class SolderPaste(FlatCAMTool):
step1_lbl = QtWidgets.QLabel("<b>%s:</b>" % _('STEP 1:'))
step1_lbl.setToolTip(
_("First step is to select a number of nozzle tools for usage\n"
"and then optionally modify the GCode parameters bellow.")
"and then optionally modify the GCode parameters bellow.")
)
step1_description_lbl = QtWidgets.QLabel(_("Select tools.\n"
"Modify parameters."))
"Modify parameters."))
grid0_1.addWidget(step1_lbl, 0, 0, alignment=Qt.AlignTop)
grid0_1.addWidget(step1_description_lbl, 0, 2, alignment=Qt.AlignBottom)
@ -174,7 +174,6 @@ class SolderPaste(FlatCAMTool):
self.z_dispense_label = QtWidgets.QLabel(_("Z Dispense:"))
self.z_dispense_label.setToolTip(
_("The height (Z) when doing solder paste dispensing.")
)
self.gcode_form_layout.addRow(self.z_dispense_label, self.z_dispense_entry)
@ -190,8 +189,8 @@ class SolderPaste(FlatCAMTool):
self.z_travel_entry = FCEntry()
self.z_travel_label = QtWidgets.QLabel(_("Z Travel:"))
self.z_travel_label.setToolTip(
_( "The height (Z) for travel between pads\n"
"(without dispensing solder paste).")
_("The height (Z) for travel between pads\n"
"(without dispensing solder paste).")
)
self.gcode_form_layout.addRow(self.z_travel_label, self.z_travel_entry)
@ -199,7 +198,7 @@ class SolderPaste(FlatCAMTool):
self.z_toolchange_entry = FCEntry()
self.z_toolchange_label = QtWidgets.QLabel(_("Z Toolchange:"))
self.z_toolchange_label.setToolTip(
_( "The height (Z) for tool (nozzle) change.")
_("The height (Z) for tool (nozzle) change.")
)
self.gcode_form_layout.addRow(self.z_toolchange_label, self.z_toolchange_entry)
@ -208,7 +207,7 @@ class SolderPaste(FlatCAMTool):
self.xy_toolchange_label = QtWidgets.QLabel(_("XY Toolchange:"))
self.xy_toolchange_label.setToolTip(
_("The X,Y location for tool (nozzle) change.\n"
"The format is (x, y) where x and y are real numbers.")
"The format is (x, y) where x and y are real numbers.")
)
self.gcode_form_layout.addRow(self.xy_toolchange_label, self.xy_toolchange_entry)
@ -216,7 +215,7 @@ class SolderPaste(FlatCAMTool):
self.frxy_entry = FCEntry()
self.frxy_label = QtWidgets.QLabel(_("Feedrate X-Y:"))
self.frxy_label.setToolTip(
_( "Feedrate (speed) while moving on the X-Y plane.")
_("Feedrate (speed) while moving on the X-Y plane.")
)
self.gcode_form_layout.addRow(self.frxy_label, self.frxy_entry)
@ -225,7 +224,7 @@ class SolderPaste(FlatCAMTool):
self.frz_label = QtWidgets.QLabel(_("Feedrate Z:"))
self.frz_label.setToolTip(
_("Feedrate (speed) while moving vertically\n"
"(on Z plane).")
"(on Z plane).")
)
self.gcode_form_layout.addRow(self.frz_label, self.frz_entry)
@ -233,8 +232,8 @@ class SolderPaste(FlatCAMTool):
self.frz_dispense_entry = FCEntry()
self.frz_dispense_label = QtWidgets.QLabel(_("Feedrate Z Dispense:"))
self.frz_dispense_label.setToolTip(
_( "Feedrate (speed) while moving up vertically\n"
" to Dispense position (on Z plane).")
_("Feedrate (speed) while moving up vertically\n"
" to Dispense position (on Z plane).")
)
self.gcode_form_layout.addRow(self.frz_dispense_label, self.frz_dispense_entry)
@ -242,8 +241,8 @@ class SolderPaste(FlatCAMTool):
self.speedfwd_entry = FCEntry()
self.speedfwd_label = QtWidgets.QLabel(_("Spindle Speed FWD:"))
self.speedfwd_label.setToolTip(
_( "The dispenser speed while pushing solder paste\n"
"through the dispenser nozzle.")
_("The dispenser speed while pushing solder paste\n"
"through the dispenser nozzle.")
)
self.gcode_form_layout.addRow(self.speedfwd_label, self.speedfwd_entry)
@ -259,8 +258,8 @@ class SolderPaste(FlatCAMTool):
self.speedrev_entry = FCEntry()
self.speedrev_label = QtWidgets.QLabel(_("Spindle Speed REV:"))
self.speedrev_label.setToolTip(
_( "The dispenser speed while retracting solder paste\n"
"through the dispenser nozzle.")
_("The dispenser speed while retracting solder paste\n"
"through the dispenser nozzle.")
)
self.gcode_form_layout.addRow(self.speedrev_label, self.speedrev_entry)
@ -269,7 +268,7 @@ class SolderPaste(FlatCAMTool):
self.dwellrev_label = QtWidgets.QLabel(_("Dwell REV:"))
self.dwellrev_label.setToolTip(
_("Pause after solder paste dispenser retracted,\n"
"to allow pressure equilibrium.")
"to allow pressure equilibrium.")
)
self.gcode_form_layout.addRow(self.dwellrev_label, self.dwellrev_entry)
@ -289,8 +288,8 @@ class SolderPaste(FlatCAMTool):
self.solder_gcode_btn = QtWidgets.QPushButton(_("Generate GCode"))
self.solder_gcode_btn.setToolTip(
_( "Generate GCode for Solder Paste dispensing\n"
"on PCB pads.")
_("Generate GCode for Solder Paste dispensing\n"
"on PCB pads.")
)
self.generation_frame = QtWidgets.QFrame()
@ -300,7 +299,6 @@ class SolderPaste(FlatCAMTool):
self.generation_box.setContentsMargins(0, 0, 0, 0)
self.generation_frame.setLayout(self.generation_box)
# ## Buttons
grid2 = QtWidgets.QGridLayout()
self.generation_box.addLayout(grid2)
@ -308,7 +306,7 @@ class SolderPaste(FlatCAMTool):
step2_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 2:'))
step2_lbl.setToolTip(
_("Second step is to create a solder paste dispensing\n"
"geometry out of an Solder Paste Mask Gerber file.")
"geometry out of an Solder Paste Mask Gerber file.")
)
grid2.addWidget(step2_lbl, 0, 0)
grid2.addWidget(self.soldergeo_btn, 0, 2)
@ -325,9 +323,9 @@ class SolderPaste(FlatCAMTool):
self.geo_object_label = QtWidgets.QLabel(_("Geo Result:"))
self.geo_object_label.setToolTip(
_( "Geometry Solder Paste object.\n"
"The name of the object has to end in:\n"
"'_solderpaste' as a protection.")
_("Geometry Solder Paste object.\n"
"The name of the object has to end in:\n"
"'_solderpaste' as a protection.")
)
geo_form_layout.addRow(self.geo_object_label, self.geo_obj_combo)
@ -336,11 +334,11 @@ class SolderPaste(FlatCAMTool):
step3_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 3:'))
step3_lbl.setToolTip(
_( "Third step is to select a solder paste dispensing geometry,\n"
"and then generate a CNCJob object.\n\n"
"REMEMBER: if you want to create a CNCJob with new parameters,\n"
"first you need to generate a geometry with those new params,\n"
"and only after that you can generate an updated CNCJob.")
_("Third step is to select a solder paste dispensing geometry,\n"
"and then generate a CNCJob object.\n\n"
"REMEMBER: if you want to create a CNCJob with new parameters,\n"
"first you need to generate a geometry with those new params,\n"
"and only after that you can generate an updated CNCJob.")
)
grid3.addWidget(step3_lbl, 0, 0)
@ -358,10 +356,10 @@ class SolderPaste(FlatCAMTool):
self.cnc_object_label = QtWidgets.QLabel(_("CNC Result:"))
self.cnc_object_label.setToolTip(
_( "CNCJob Solder paste object.\n"
"In order to enable the GCode save section,\n"
"the name of the object has to end in:\n"
"'_solderpaste' as a protection.")
_("CNCJob Solder paste object.\n"
"In order to enable the GCode save section,\n"
"the name of the object has to end in:\n"
"'_solderpaste' as a protection.")
)
cnc_form_layout.addRow(self.cnc_object_label, self.cnc_obj_combo)
@ -371,19 +369,19 @@ class SolderPaste(FlatCAMTool):
self.solder_gcode_view_btn = QtWidgets.QPushButton(_("View GCode"))
self.solder_gcode_view_btn.setToolTip(
_("View the generated GCode for Solder Paste dispensing\n"
"on PCB pads.")
"on PCB pads.")
)
self.solder_gcode_save_btn = QtWidgets.QPushButton(_("Save GCode"))
self.solder_gcode_save_btn.setToolTip(
_( "Save the generated GCode for Solder Paste dispensing\n"
"on PCB pads, to a file.")
_("Save the generated GCode for Solder Paste dispensing\n"
"on PCB pads, to a file.")
)
step4_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 4:'))
step4_lbl.setToolTip(
_( "Fourth step (and last) is to select a CNCJob made from \n"
"a solder paste dispensing geometry, and then view/save it's GCode.")
_("Fourth step (and last) is to select a CNCJob made from \n"
"a solder paste dispensing geometry, and then view/save it's GCode.")
)
grid4.addWidget(step4_lbl, 0, 0)
@ -402,6 +400,7 @@ class SolderPaste(FlatCAMTool):
self.form_fields = {}
self.units = ''
self.name = ""
# this will be used in the combobox context menu, for delete entry
self.obj_to_be_deleted_name = ''
@ -607,7 +606,6 @@ class SolderPaste(FlatCAMTool):
if current_row < 0:
current_row = 0
# populate the form with the data from the tool associated with the row parameter
try:
tooluid = int(self.tools_table.item(current_row, 2).text())
@ -754,7 +752,7 @@ class SolderPaste(FlatCAMTool):
tool_dia = float(self.addtool_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered, "
"use a number."))
"use a number."))
return
if tool_dia is None:
self.build_ui()
@ -762,7 +760,8 @@ class SolderPaste(FlatCAMTool):
return
if tool_dia == 0:
self.app.inform.emit(_("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format."))
self.app.inform.emit(_("[WARNING_NOTCL] Please enter a tool diameter with non-zero value, "
"in Float format."))
return
# construct a list of all 'tooluid' in the self.tooltable_tools
@ -825,7 +824,7 @@ class SolderPaste(FlatCAMTool):
new_tool_dia = float(self.tools_table.item(row, 1).text().replace(',', '.'))
except ValueError:
self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered, "
"use a number."))
"use a number."))
return
tooluid = int(self.tools_table.item(row, 2).text())
@ -844,7 +843,8 @@ class SolderPaste(FlatCAMTool):
break
restore_dia_item = self.tools_table.item(row, 1)
restore_dia_item.setText(str(old_tool_dia))
self.app.inform.emit(_("[WARNING_NOTCL] Edit cancelled. New diameter value is already in the Tool Table."))
self.app.inform.emit(_("[WARNING_NOTCL] Edit cancelled. "
"New diameter value is already in the Tool Table."))
self.build_ui()
def on_tool_delete(self, rows_to_delete=None, all=None):
@ -964,6 +964,7 @@ class SolderPaste(FlatCAMTool):
:param name: the outname for the resulting geometry object
:param work_object: the source Gerber object from which the geometry is created
:param use_thread: use thread, True or False
:return: a Geometry type object
"""
proc = self.app.proc_container.new(_("Creating Solder Paste dispensing geometry."))
@ -1030,8 +1031,8 @@ class SolderPaste(FlatCAMTool):
for tool in sorted_tools:
offset = tool / 2
for uid, v in self.tooltable_tools.items():
if float('%.4f' % float(v['tooldia'])) == tool:
for uid, vl in self.tooltable_tools.items():
if float('%.4f' % float(vl['tooldia'])) == tool:
tooluid = int(uid)
break
@ -1064,19 +1065,19 @@ class SolderPaste(FlatCAMTool):
round_diag_2 = round(diag_2_intersect.length, 2)
if round_diag_1 == round_diag_2:
l = distance((x_min, y_min), (x_max, y_min))
length = distance((x_min, y_min), (x_max, y_min))
h = distance((x_min, y_min), (x_min, y_max))
if offset >= l / 2 or offset >= h / 2:
if offset >= length / 2 or offset >= h / 2:
pass
else:
if l > h:
if length > h:
h_half = h / 2
start = [x_min, (y_min + h_half)]
stop = [(x_min + l), (y_min + h_half)]
stop = [(x_min + length), (y_min + h_half)]
geo = LineString([start, stop])
else:
l_half = l / 2
l_half = length / 2
start = [(x_min + l_half), y_min]
stop = [(x_min + l_half), (y_min + h)]
geo = LineString([start, stop])
@ -1151,7 +1152,8 @@ class SolderPaste(FlatCAMTool):
return 'fail'
if obj.special_group != 'solder_paste_tool':
self.app.inform.emit(_("[WARNING_NOTCL] This Geometry can't be processed. NOT a solder_paste_tool geometry."))
self.app.inform.emit(_("[WARNING_NOTCL] This Geometry can't be processed. "
"NOT a solder_paste_tool geometry."))
return 'fail'
a = 0
@ -1314,7 +1316,8 @@ class SolderPaste(FlatCAMTool):
# then append the text from GCode to the text editor
try:
lines = StringIO(gcode)
except:
except Exception as e:
log.debug("ToolSolderpaste.on_view_gcode() --> %s" % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] No Gcode in the object..."))
return

View File

@ -155,7 +155,6 @@ class ToolSub(FlatCAMTool):
self.sub_follow_union = None
self.sub_clear_union = None
self.sub_grb_obj = None
self.sub_grb_obj_name = None
self.target_grb_obj = None
@ -172,16 +171,18 @@ class ToolSub(FlatCAMTool):
# store here the options from target_obj
self.target_options = {}
self.sub_union = []
try:
self.intersect_btn.clicked.disconnect(self.on_grb_intersection_click)
except:
pass
except Exception as e:
log.debug("ToolSub.__init__() --> %s" % str(e))
self.intersect_btn.clicked.connect(self.on_grb_intersection_click)
try:
self.intersect_geo_btn.clicked.disconnect()
except:
pass
except Exception as e:
log.debug("ToolSub.__init__() --> %s" % str(e))
self.intersect_geo_btn.clicked.connect(self.on_geo_intersection_click)
def install(self, icon=None, separator=None, **kwargs):
@ -233,7 +234,8 @@ class ToolSub(FlatCAMTool):
# Get source object.
try:
self.target_grb_obj = self.app.collection.get_by_name(self.target_grb_obj_name)
except:
except Exception as e:
log.debug("ToolSub.on_grb_intersection_click() --> %s" % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % self.obj_name)
return "Could not retrieve object: %s" % self.target_grb_obj_name
@ -245,7 +247,8 @@ class ToolSub(FlatCAMTool):
# Get source object.
try:
self.sub_grb_obj = self.app.collection.get_by_name(self.sub_grb_obj_name)
except:
except Exception as e:
log.debug("ToolSub.on_grb_intersection_click() --> %s" % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % self.obj_name)
return "Could not retrieve object: %s" % self.sub_grb_obj_name
@ -424,7 +427,8 @@ class ToolSub(FlatCAMTool):
# Get source object.
try:
self.target_geo_obj = self.app.collection.get_by_name(self.target_geo_obj_name)
except:
except Exception as e:
log.debug("ToolSub.on_geo_intersection_click() --> %s" % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % self.target_geo_obj_name)
return "Could not retrieve object: %s" % self.target_grb_obj_name
@ -436,7 +440,8 @@ class ToolSub(FlatCAMTool):
# Get source object.
try:
self.sub_geo_obj = self.app.collection.get_by_name(self.sub_geo_obj_name)
except:
except Exception as e:
log.debug("ToolSub.on_geo_intersection_click() --> %s" % str(e))
self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % self.sub_geo_obj_name)
return "Could not retrieve object: %s" % self.sub_geo_obj_name
@ -533,8 +538,8 @@ class ToolSub(FlatCAMTool):
geo_obj.tools = deepcopy(self.new_tools)
for tool in geo_obj.tools:
geo_obj.tools[tool]['solid_geometry'] = deepcopy(self.new_solid_geometry)
except:
pass
except Exception as e:
log.debug("ToolSub.new_geo_object() --> %s" % str(e))
with self.app.proc_container.new(_("Generating new object ...")):
ret = self.app.new_object('geometry', outname, obj_init, autoselected=False)
@ -584,7 +589,6 @@ class ToolSub(FlatCAMTool):
"""
# log.debug("checking parsing --> %s" % str(self.parsing_promises))
try:
if not self.promises:
self.check_thread.stop()
@ -614,4 +618,6 @@ class ToolSub(FlatCAMTool):
self.sub_gerber_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex()))
self.target_geo_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex()))
self.sub_geo_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex()))
self.sub_geo_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex()))
# end of file

View File

@ -11,9 +11,9 @@ from FlatCAMObj import *
import gettext
import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings')
import builtins
if '_' not in builtins.__dict__:
_ = gettext.gettext
@ -68,9 +68,9 @@ class ToolTransform(FlatCAMTool):
self.rotate_label = QtWidgets.QLabel(_("Angle:"))
self.rotate_label.setToolTip(
_("Angle for Rotation action, in degrees.\n"
"Float number between -360 and 359.\n"
"Positive numbers for CW motion.\n"
"Negative numbers for CCW motion.")
"Float number between -360 and 359.\n"
"Positive numbers for CW motion.\n"
"Negative numbers for CCW motion.")
)
self.rotate_label.setFixedWidth(70)
@ -82,8 +82,8 @@ class ToolTransform(FlatCAMTool):
self.rotate_button.set_value(_("Rotate"))
self.rotate_button.setToolTip(
_("Rotate the selected object(s).\n"
"The point of reference is the middle of\n"
"the bounding box for all selected objects.")
"The point of reference is the middle of\n"
"the bounding box for all selected objects.")
)
self.rotate_button.setFixedWidth(90)
@ -107,7 +107,7 @@ class ToolTransform(FlatCAMTool):
self.skewx_label = QtWidgets.QLabel(_("Angle X:"))
self.skewx_label.setToolTip(
_("Angle for Skew action, in degrees.\n"
"Float number between -360 and 359.")
"Float number between -360 and 359.")
)
self.skewx_label.setFixedWidth(70)
self.skewx_entry = FCEntry()
@ -118,14 +118,14 @@ class ToolTransform(FlatCAMTool):
self.skewx_button.set_value(_("Skew X"))
self.skewx_button.setToolTip(
_("Skew/shear the selected object(s).\n"
"The point of reference is the middle of\n"
"the bounding box for all selected objects."))
"The point of reference is the middle of\n"
"the bounding box for all selected objects."))
self.skewx_button.setFixedWidth(90)
self.skewy_label = QtWidgets.QLabel(_("Angle Y:"))
self.skewy_label.setToolTip(
_("Angle for Skew action, in degrees.\n"
"Float number between -360 and 359.")
"Float number between -360 and 359.")
)
self.skewy_label.setFixedWidth(70)
self.skewy_entry = FCEntry()
@ -136,8 +136,8 @@ class ToolTransform(FlatCAMTool):
self.skewy_button.set_value(_("Skew Y"))
self.skewy_button.setToolTip(
_("Skew/shear the selected object(s).\n"
"The point of reference is the middle of\n"
"the bounding box for all selected objects."))
"The point of reference is the middle of\n"
"the bounding box for all selected objects."))
self.skewy_button.setFixedWidth(90)
form1_child_1.addWidget(self.skewx_entry)
@ -174,8 +174,8 @@ class ToolTransform(FlatCAMTool):
self.scalex_button.set_value(_("Scale X"))
self.scalex_button.setToolTip(
_("Scale the selected object(s).\n"
"The point of reference depends on \n"
"the Scale reference checkbox state."))
"The point of reference depends on \n"
"the Scale reference checkbox state."))
self.scalex_button.setFixedWidth(90)
self.scaley_label = QtWidgets.QLabel(_("Factor Y:"))
@ -191,8 +191,8 @@ class ToolTransform(FlatCAMTool):
self.scaley_button.set_value(_("Scale Y"))
self.scaley_button.setToolTip(
_("Scale the selected object(s).\n"
"The point of reference depends on \n"
"the Scale reference checkbox state."))
"The point of reference depends on \n"
"the Scale reference checkbox state."))
self.scaley_button.setFixedWidth(90)
self.scale_link_cb = FCCheckBox()
@ -200,7 +200,7 @@ class ToolTransform(FlatCAMTool):
self.scale_link_cb.setText(_("Link"))
self.scale_link_cb.setToolTip(
_("Scale the selected object(s)\n"
"using the Scale Factor X for both axis."))
"using the Scale Factor X for both axis."))
self.scale_link_cb.setFixedWidth(70)
self.scale_zero_ref_cb = FCCheckBox()
@ -208,9 +208,9 @@ class ToolTransform(FlatCAMTool):
self.scale_zero_ref_cb.setText(_("Scale Reference"))
self.scale_zero_ref_cb.setToolTip(
_("Scale the selected object(s)\n"
"using the origin reference when checked,\n"
"and the center of the biggest bounding box\n"
"of the selected objects when unchecked."))
"using the origin reference when checked,\n"
"and the center of the biggest bounding box\n"
"of the selected objects when unchecked."))
form2_child_1.addWidget(self.scalex_entry)
form2_child_1.addWidget(self.scalex_button)
@ -248,8 +248,8 @@ class ToolTransform(FlatCAMTool):
self.offx_button.set_value(_("Offset X"))
self.offx_button.setToolTip(
_("Offset the selected object(s).\n"
"The point of reference is the middle of\n"
"the bounding box for all selected objects.\n"))
"The point of reference is the middle of\n"
"the bounding box for all selected objects.\n"))
self.offx_button.setFixedWidth(90)
self.offy_label = QtWidgets.QLabel(_("Value Y:"))
@ -265,8 +265,8 @@ class ToolTransform(FlatCAMTool):
self.offy_button.set_value(_("Offset Y"))
self.offy_button.setToolTip(
_("Offset the selected object(s).\n"
"The point of reference is the middle of\n"
"the bounding box for all selected objects.\n"))
"The point of reference is the middle of\n"
"the bounding box for all selected objects.\n"))
self.offy_button.setFixedWidth(90)
form3_child_1.addWidget(self.offx_entry)
@ -295,7 +295,7 @@ class ToolTransform(FlatCAMTool):
self.flipx_button.set_value(_("Flip on X"))
self.flipx_button.setToolTip(
_("Flip the selected object(s) over the X axis.\n"
"Does not create a new object.\n ")
"Does not create a new object.\n ")
)
self.flipx_button.setFixedWidth(100)
@ -303,7 +303,7 @@ class ToolTransform(FlatCAMTool):
self.flipy_button.set_value(_("Flip on Y"))
self.flipy_button.setToolTip(
_("Flip the selected object(s) over the X axis.\n"
"Does not create a new object.\n ")
"Does not create a new object.\n ")
)
self.flipy_button.setFixedWidth(90)
@ -312,21 +312,21 @@ class ToolTransform(FlatCAMTool):
self.flip_ref_cb.setText(_("Ref Pt"))
self.flip_ref_cb.setToolTip(
_("Flip the selected object(s)\n"
"around the point in Point Entry Field.\n"
"\n"
"The point coordinates can be captured by\n"
"left click on canvas together with pressing\n"
"SHIFT key. \n"
"Then click Add button to insert coordinates.\n"
"Or enter the coords in format (x, y) in the\n"
"Point Entry field and click Flip on X(Y)"))
"around the point in Point Entry Field.\n"
"\n"
"The point coordinates can be captured by\n"
"left click on canvas together with pressing\n"
"SHIFT key. \n"
"Then click Add button to insert coordinates.\n"
"Or enter the coords in format (x, y) in the\n"
"Point Entry field and click Flip on X(Y)"))
self.flip_ref_cb.setFixedWidth(70)
self.flip_ref_label = QtWidgets.QLabel(_("Point:"))
self.flip_ref_label.setToolTip(
_("Coordinates in format (x, y) used as reference for mirroring.\n"
"The 'x' in (x, y) will be used when using Flip on X and\n"
"the 'y' in (x, y) will be used when using Flip on Y and")
"The 'x' in (x, y) will be used when using Flip on X and\n"
"the 'y' in (x, y) will be used when using Flip on Y and")
)
self.flip_ref_label.setFixedWidth(70)
self.flip_ref_entry = EvalEntry2("(0, 0)")
@ -337,8 +337,8 @@ class ToolTransform(FlatCAMTool):
self.flip_ref_button.set_value(_("Add"))
self.flip_ref_button.setToolTip(
_("The point coordinates can be captured by\n"
"left click on canvas together with pressing\n"
"SHIFT key. Then click Add button to insert."))
"left click on canvas together with pressing\n"
"SHIFT key. Then click Add button to insert."))
self.flip_ref_button.setFixedWidth(90)
form4_child_hlay.addStretch()
@ -350,8 +350,7 @@ class ToolTransform(FlatCAMTool):
form4_layout.addRow(self.flip_ref_cb)
form4_layout.addRow(self.flip_ref_label, form4_child_1)
self.ois_flip = OptionalInputSection(self.flip_ref_cb,
[self.flip_ref_entry, self.flip_ref_button], logic=True)
self.ois_flip = OptionalInputSection(self.flip_ref_cb, [self.flip_ref_entry, self.flip_ref_button], logic=True)
self.transform_lay.addStretch()
@ -455,7 +454,7 @@ class ToolTransform(FlatCAMTool):
if self.app.defaults["tools_transform_mirror_point"]:
self.flip_ref_entry.set_value(self.app.defaults["tools_transform_mirror_point"])
else:
self.flip_ref_entry.set_value((0,0))
self.flip_ref_entry.set_value((0, 0))
def on_rotate(self):
try:
@ -466,10 +465,10 @@ class ToolTransform(FlatCAMTool):
value = float(self.rotate_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Rotate, "
"use a number."))
"use a number."))
return
self.app.worker_task.emit({'fcn': self.on_rotate_action,
'params': [value]})
'params': [value]})
# self.on_rotate_action(value)
return
@ -500,7 +499,7 @@ class ToolTransform(FlatCAMTool):
value = float(self.skewx_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Skew X, "
"use a number."))
"use a number."))
return
# self.on_skew("X", value)
@ -518,7 +517,7 @@ class ToolTransform(FlatCAMTool):
value = float(self.skewy_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Skew Y, "
"use a number."))
"use a number."))
return
# self.on_skew("Y", value)
@ -536,7 +535,7 @@ class ToolTransform(FlatCAMTool):
xvalue = float(self.scalex_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Scale X, "
"use a number."))
"use a number."))
return
# scaling to zero has no sense so we remove it, because scaling with 1 does nothing
@ -570,7 +569,7 @@ class ToolTransform(FlatCAMTool):
yvalue = float(self.scaley_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Scale Y, "
"use a number."))
"use a number."))
return
# scaling to zero has no sense so we remove it, because scaling with 1 does nothing
@ -599,7 +598,7 @@ class ToolTransform(FlatCAMTool):
value = float(self.offx_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Offset X, "
"use a number."))
"use a number."))
return
# self.on_offset("X", value)
@ -617,7 +616,7 @@ class ToolTransform(FlatCAMTool):
value = float(self.offy_entry.get_value().replace(',', '.'))
except ValueError:
self.app.inform.emit(_("[ERROR_NOTCL] Wrong value format entered for Offset Y, "
"use a number."))
"use a number."))
return
# self.on_offset("Y", value)