- 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 15.07.2019
- some PEP8 corrections - some PEP8 corrections

View File

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

View File

@@ -7,14 +7,14 @@
# ########################################################## ## # ########################################################## ##
from FlatCAMTool import FlatCAMTool from FlatCAMTool import FlatCAMTool
from copy import copy,deepcopy from copy import copy, deepcopy
from ObjectCollection import * from ObjectCollection import *
import gettext import gettext
import FlatCAMTranslation as fcTranslate import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings') fcTranslate.apply_language('strings')
import builtins
if '_' not in builtins.__dict__: if '_' not in builtins.__dict__:
_ = gettext.gettext _ = gettext.gettext
@@ -65,7 +65,7 @@ class ToolPaint(FlatCAMTool, Gerber):
form_layout.addRow(self.object_label, self.object_combo) form_layout.addRow(self.object_label, self.object_combo)
form_layout.addRow(e_lab_0) form_layout.addRow(e_lab_0)
#### Tools ## ## # ### Tools ## ##
self.tools_table_label = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table')) self.tools_table_label = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table'))
self.tools_table_label.setToolTip( self.tools_table_label.setToolTip(
_("Tools pool from which the algorithm\n" _("Tools pool from which the algorithm\n"
@@ -110,7 +110,7 @@ class ToolPaint(FlatCAMTool, Gerber):
self.empty_label = QtWidgets.QLabel('') self.empty_label = QtWidgets.QLabel('')
self.tools_box.addWidget(self.empty_label) self.tools_box.addWidget(self.empty_label)
#### Add a new Tool ## ## # ### Add a new Tool ## ##
hlay = QtWidgets.QHBoxLayout() hlay = QtWidgets.QHBoxLayout()
self.tools_box.addLayout(hlay) self.tools_box.addLayout(hlay)
@@ -148,7 +148,7 @@ class ToolPaint(FlatCAMTool, Gerber):
grid2.addWidget(self.addtool_btn, 0, 0) grid2.addWidget(self.addtool_btn, 0, 0)
# grid2.addWidget(self.copytool_btn, 0, 1) # 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.empty_label_0 = QtWidgets.QLabel('')
self.tools_box.addWidget(self.empty_label_0) self.tools_box.addWidget(self.empty_label_0)
@@ -314,7 +314,6 @@ class ToolPaint(FlatCAMTool, Gerber):
self.generate_paint_button.clicked.connect(self.on_paint_button_click) self.generate_paint_button.clicked.connect(self.on_paint_button_click)
self.selectmethod_combo.activated_custom.connect(self.on_radio_selection) self.selectmethod_combo.activated_custom.connect(self.on_radio_selection)
def install(self, icon=None, separator=None, **kwargs): def install(self, icon=None, separator=None, **kwargs):
FlatCAMTool.install(self, icon, separator, shortcut='ALT+P', **kwargs) FlatCAMTool.install(self, icon, separator, shortcut='ALT+P', **kwargs)
@@ -522,8 +521,8 @@ class ToolPaint(FlatCAMTool, Gerber):
try: try:
self.tools_table.itemChanged.disconnect() self.tools_table.itemChanged.disconnect()
except: except Exception as e:
pass log.debug("ToolPaint.on_tool_add() --> %s" % str(e))
if dia: if dia:
tool_dia = dia tool_dia = dia
@@ -586,10 +585,12 @@ class ToolPaint(FlatCAMTool, Gerber):
self.build_ui() self.build_ui()
def on_tool_edit(self): def on_tool_edit(self):
old_tool_dia = ''
try: try:
self.tools_table.itemChanged.disconnect() self.tools_table.itemChanged.disconnect()
except: except Exception as e:
pass log.debug("ToolPaint.on_tool_edit() --> %s" % str(e))
tool_dias = [] tool_dias = []
for k, v in self.paint_tools.items(): for k, v in self.paint_tools.items():
@@ -624,7 +625,8 @@ class ToolPaint(FlatCAMTool, Gerber):
break break
restore_dia_item = self.tools_table.item(row, 1) restore_dia_item = self.tools_table.item(row, 1)
restore_dia_item.setText(str(old_tool_dia)) 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() self.build_ui()
# def on_tool_copy(self, all=None): # 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): def on_tool_delete(self, rows_to_delete=None, all=None):
try: try:
self.tools_table.itemChanged.disconnect() self.tools_table.itemChanged.disconnect()
except: except Exception as e:
log.debug("ToolPaint.on_tool_delete() --> %s" % str(e))
pass pass
deleted_tools_list = [] deleted_tools_list = []
@@ -760,7 +763,8 @@ class ToolPaint(FlatCAMTool, Gerber):
# Get source object. # Get source object.
try: try:
self.paint_obj = self.app.collection.get_by_name(str(self.obj_name)) 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) self.app.inform.emit(_("[ERROR_NOTCL] Could not retrieve object: %s") % self.obj_name)
return return
@@ -774,7 +778,7 @@ class ToolPaint(FlatCAMTool, Gerber):
self.app.inform.emit(_("[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ...")) self.app.inform.emit(_("[ERROR_NOTCL] Can't do Paint on MultiGeo geometries ..."))
return 'Fail' return 'Fail'
o_name = '%s_multitool_paint' % (self.obj_name) o_name = '%s_multitool_paint' % self.obj_name
if select_method == "all": if select_method == "all":
self.paint_poly_all(self.paint_obj, 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_disconnect('mouse_press', self.app.on_mouse_click_over_plot)
self.app.plotcanvas.vis_connect('mouse_press', doit) self.app.plotcanvas.vis_connect('mouse_press', doit)
def paint_poly(self, obj, inside_pt, tooldia, overlap, def paint_poly(self, obj, inside_pt, tooldia, overlap, outname=None, connect=True, contour=True):
outname=None, connect=True,
contour=True):
""" """
Paints a polygon selected by clicking on its interior. Paints a polygon selected by clicking on its interior.
Note: Note:
* The margin is taken directly from the form. * The margin is taken directly from the form.
:param obj: painted object
:param inside_pt: [x, y] :param inside_pt: [x, y]
:param tooldia: Diameter of the painting tool :param tooldia: Diameter of the painting tool
:param overlap: Overlap of the tool between passes. :param overlap: Overlap of the tool between passes.
@@ -864,7 +866,7 @@ class ToolPaint(FlatCAMTool, Gerber):
def paint_p(polyg): def paint_p(polyg):
if paint_method == "seed": if paint_method == "seed":
# Type(cp) == FlatCAMRTreeStorage | None # Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon2(polyg, cpoly = self.clear_polygon2(polyg,
tooldia=tooldia, tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"], steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap, overlap=overlap,
@@ -873,7 +875,7 @@ class ToolPaint(FlatCAMTool, Gerber):
elif paint_method == "lines": elif paint_method == "lines":
# Type(cp) == FlatCAMRTreeStorage | None # Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon3(polyg, cpoly = self.clear_polygon3(polyg,
tooldia=tooldia, tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"], steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap, overlap=overlap,
@@ -882,16 +884,16 @@ class ToolPaint(FlatCAMTool, Gerber):
else: else:
# Type(cp) == FlatCAMRTreeStorage | None # Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon(polyg, cpoly = self.clear_polygon(polyg,
tooldia=tooldia, tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"], steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap, overlap=overlap,
contour=contour, contour=contour,
connect=connect) connect=connect)
if cp is not None: if cpoly is not None:
geo_obj.solid_geometry += list(cp.get_objects()) geo_obj.solid_geometry += list(cpoly.get_objects())
return cp return cpoly
else: else:
self.app.inform.emit(_('[ERROR_NOTCL] Geometry could not be painted completely')) self.app.inform.emit(_('[ERROR_NOTCL] Geometry could not be painted completely'))
return None return None
@@ -975,12 +977,11 @@ class ToolPaint(FlatCAMTool, Gerber):
# Background # Background
self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]}) self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]})
def paint_poly_all(self, obj, overlap, outname=None, def paint_poly_all(self, obj, overlap, outname=None, connect=True, contour=True):
connect=True, contour=True):
""" """
Paints all polygons in this object. Paints all polygons in this object.
:param tooldia: :param obj: painted object
:param overlap: :param overlap:
:param outname: :param outname:
:param connect: Connect lines to avoid tool lifts. :param connect: Connect lines to avoid tool lifts.
@@ -1055,6 +1056,7 @@ class ToolPaint(FlatCAMTool, Gerber):
def gen_paintarea(geo_obj, app_obj): def gen_paintarea(geo_obj, app_obj):
assert isinstance(geo_obj, FlatCAMGeometry), \ assert isinstance(geo_obj, FlatCAMGeometry), \
"Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj)
tool_dia = None
sorted_tools = [] sorted_tools = []
for row in range(self.tools_table.rowCount()): for row in range(self.tools_table.rowCount()):
@@ -1083,7 +1085,7 @@ class ToolPaint(FlatCAMTool, Gerber):
for geo in recurse(obj.solid_geometry): for geo in recurse(obj.solid_geometry):
try: 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): if not isinstance(geo, Polygon):
continue continue
poly_buf = geo.buffer(-paint_margin) poly_buf = geo.buffer(-paint_margin)
@@ -1160,6 +1162,7 @@ class ToolPaint(FlatCAMTool, Gerber):
assert isinstance(geo_obj, FlatCAMGeometry), \ assert isinstance(geo_obj, FlatCAMGeometry), \
"Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj)
tool_dia = None
sorted_tools = [] sorted_tools = []
for row in range(self.tools_table.rowCount()): for row in range(self.tools_table.rowCount()):
sorted_tools.append(float(self.tools_table.item(row, 1).text())) sorted_tools.append(float(self.tools_table.item(row, 1).text()))
@@ -1184,6 +1187,7 @@ class ToolPaint(FlatCAMTool, Gerber):
try: try:
geo = Polygon(geo) if not isinstance(geo, Polygon) else geo geo = Polygon(geo) if not isinstance(geo, Polygon) else geo
poly_buf = geo.buffer(-paint_margin) poly_buf = geo.buffer(-paint_margin)
cp = None
if paint_method == "standard": if paint_method == "standard":
# Type(cp) == FlatCAMRTreeStorage | None # Type(cp) == FlatCAMRTreeStorage | None

View File

@@ -18,9 +18,9 @@ from io import StringIO
import gettext import gettext
import FlatCAMTranslation as fcTranslate import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings') fcTranslate.apply_language('strings')
import builtins
if '_' not in builtins.__dict__: if '_' not in builtins.__dict__:
_ = gettext.gettext _ = gettext.gettext
@@ -56,9 +56,8 @@ class PcbWizard(FlatCAMTool):
self.excellon_label = QtWidgets.QLabel(_("Excellon file:")) self.excellon_label = QtWidgets.QLabel(_("Excellon file:"))
self.excellon_label.setToolTip( self.excellon_label.setToolTip(
_( "Load the Excellon file.\n" _("Load the Excellon file.\n"
"Usually it has a .DRL extension") "Usually it has a .DRL extension")
) )
self.excellon_brn = FCButton(_("Open")) self.excellon_brn = FCButton(_("Open"))
form_layout.addRow(self.excellon_label, self.excellon_brn) 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 = QtWidgets.QLabel(_("INF file:"))
self.inf_label.setToolTip( self.inf_label.setToolTip(
_("Load the INF file.") _("Load the INF file.")
) )
self.inf_btn = FCButton(_("Open")) self.inf_btn = FCButton(_("Open"))
form_layout.addRow(self.inf_label, self.inf_btn) 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_entry.set_range(1, 10)
self.int_label = QtWidgets.QLabel(_("Int. digits:")) self.int_label = QtWidgets.QLabel(_("Int. digits:"))
self.int_label.setToolTip( 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) form_layout1.addRow(self.int_label, self.int_entry)
@@ -283,18 +281,17 @@ class PcbWizard(FlatCAMTool):
""" """
self.app.log.debug("on_load_excellon_click()") 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: try:
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard Excellon file"), filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard Excellon file"),
directory=self.app.get_last_folder(), directory=self.app.get_last_folder(),
filter=filter) filter=_filter)
except TypeError: except TypeError:
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard Excellon file"), filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard Excellon file"),
filter=filter) filter=_filter)
filename = str(filename) filename = str(filename)
if filename == "": if filename == "":
self.app.inform.emit(_("Open cancelled.")) self.app.inform.emit(_("Open cancelled."))
else: else:
@@ -307,14 +304,14 @@ class PcbWizard(FlatCAMTool):
""" """
self.app.log.debug("on_load_inf_click()") self.app.log.debug("on_load_inf_click()")
filter = "INF Files(*.INF);;All Files (*.*)" _filter = "INF Files(*.INF);;All Files (*.*)"
try: try:
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard INF file"), filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard INF file"),
directory=self.app.get_last_folder(), directory=self.app.get_last_folder(),
filter=filter) filter=_filter)
except TypeError: except TypeError:
filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard INF file"), filename, _f = QtWidgets.QFileDialog.getOpenFileName(caption=_("Load PcbWizard INF file"),
filter=filter) filter=_filter)
filename = str(filename) filename = str(filename)
@@ -338,7 +335,7 @@ class PcbWizard(FlatCAMTool):
match = tool_re.search(eline) match = tool_re.search(eline)
if match: if match:
tool =int( match.group(1)) tool = int(match.group(1))
dia = float(match.group(2)) dia = float(match.group(2))
# if dia < 0.1: # if dia < 0.1:
# # most likely the file is in INCH # # most likely the file is in INCH
@@ -425,7 +422,8 @@ class PcbWizard(FlatCAMTool):
app_obj.log.debug("Could not import Excellon object.") app_obj.log.debug("Could not import Excellon object.")
app_obj.progress.emit(0) app_obj.progress.emit(0)
return "fail" 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 = _("[ERROR_NOTCL] An internal error has occurred. See shell.\n")
msg += app_obj.traceback.format_exc() msg += app_obj.traceback.format_exc()
app_obj.inform.emit(msg) app_obj.inform.emit(msg)
@@ -449,8 +447,8 @@ class PcbWizard(FlatCAMTool):
# Object name # Object name
name = self.outname name = self.outname
ret = self.app.new_object("excellon", name, obj_init, autoselected=False) ret_val = self.app.new_object("excellon", name, obj_init, autoselected=False)
if ret == 'fail': if ret_val == 'fail':
self.app.inform.emit(_('[ERROR_NOTCL] Import Excellon file failed.')) self.app.inform.emit(_('[ERROR_NOTCL] Import Excellon file failed.'))
return return

View File

@@ -13,9 +13,9 @@ from FlatCAMObj import *
import gettext import gettext
import FlatCAMTranslation as fcTranslate import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings') fcTranslate.apply_language('strings')
import builtins
if '_' not in builtins.__dict__: if '_' not in builtins.__dict__:
_ = gettext.gettext _ = gettext.gettext
@@ -62,7 +62,7 @@ class Properties(FlatCAMTool):
self.treeWidget.setSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Expanding) self.treeWidget.setSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Expanding)
self.vlay.addWidget(self.treeWidget) self.vlay.addWidget(self.treeWidget)
self.vlay.setStretch(0,0) self.vlay.setStretch(0, 0)
def run(self, toggle=True): def run(self, toggle=True):
self.app.report_usage("ToolProperties()") self.app.report_usage("ToolProperties()")
@@ -130,9 +130,14 @@ class Properties(FlatCAMTool):
self.addChild(obj_type, ['Object Type:', ('%s' % (obj.kind.capitalize()))], True) self.addChild(obj_type, ['Object Type:', ('%s' % (obj.kind.capitalize()))], True)
try: 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: except Exception as e:
pass log.debug("Properties.addItems() --> %s" % str(e))
self.addChild(obj_name, [obj.options['name']]) self.addChild(obj_name, [obj.options['name']])
@@ -163,7 +168,10 @@ class Properties(FlatCAMTool):
'in': 'Inch', 'in': 'Inch',
'mm': 'Metric' '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: for option in obj.options:
if option is 'name': if option is 'name':

View File

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

View File

@@ -26,9 +26,9 @@ from io import StringIO
import gettext import gettext
import FlatCAMTranslation as fcTranslate import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings') fcTranslate.apply_language('strings')
import builtins
if '_' not in builtins.__dict__: if '_' not in builtins.__dict__:
_ = gettext.gettext _ = gettext.gettext
@@ -66,7 +66,7 @@ class SolderPaste(FlatCAMTool):
) )
obj_form_layout.addRow(self.object_label, self.obj_combo) 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 = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table'))
self.tools_table_label.setToolTip( self.tools_table_label.setToolTip(
_("Tools pool from which the algorithm\n" _("Tools pool from which the algorithm\n"
@@ -91,10 +91,10 @@ class SolderPaste(FlatCAMTool):
"with solder paste, the app will issue a warning message box.") "with solder paste, the app will issue a warning message box.")
) )
self.tools_table.horizontalHeaderItem(1).setToolTip( self.tools_table.horizontalHeaderItem(1).setToolTip(
_( "Nozzle tool Diameter. It's value (in current FlatCAM units)\n" _("Nozzle tool Diameter. It's value (in current FlatCAM units)\n"
"is the width of the solder paste dispensed.")) "is the width of the solder paste dispensed."))
#### Add a new Tool ## ## # ### Add a new Tool ## ##
hlay_tools = QtWidgets.QHBoxLayout() hlay_tools = QtWidgets.QHBoxLayout()
self.layout.addLayout(hlay_tools) self.layout.addLayout(hlay_tools)
@@ -120,7 +120,7 @@ class SolderPaste(FlatCAMTool):
self.deltool_btn = QtWidgets.QPushButton(_('Delete')) self.deltool_btn = QtWidgets.QPushButton(_('Delete'))
self.deltool_btn.setToolTip( self.deltool_btn.setToolTip(
_( "Delete a selection of tools in the Tool Table\n" _("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.")
) )
@@ -174,7 +174,6 @@ class SolderPaste(FlatCAMTool):
self.z_dispense_label = QtWidgets.QLabel(_("Z Dispense:")) self.z_dispense_label = QtWidgets.QLabel(_("Z Dispense:"))
self.z_dispense_label.setToolTip( self.z_dispense_label.setToolTip(
_("The height (Z) when doing solder paste dispensing.") _("The height (Z) when doing solder paste dispensing.")
) )
self.gcode_form_layout.addRow(self.z_dispense_label, self.z_dispense_entry) self.gcode_form_layout.addRow(self.z_dispense_label, self.z_dispense_entry)
@@ -190,7 +189,7 @@ class SolderPaste(FlatCAMTool):
self.z_travel_entry = FCEntry() self.z_travel_entry = FCEntry()
self.z_travel_label = QtWidgets.QLabel(_("Z Travel:")) self.z_travel_label = QtWidgets.QLabel(_("Z Travel:"))
self.z_travel_label.setToolTip( self.z_travel_label.setToolTip(
_( "The height (Z) for travel between pads\n" _("The height (Z) for travel between pads\n"
"(without dispensing solder paste).") "(without dispensing solder paste).")
) )
self.gcode_form_layout.addRow(self.z_travel_label, self.z_travel_entry) 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_entry = FCEntry()
self.z_toolchange_label = QtWidgets.QLabel(_("Z Toolchange:")) self.z_toolchange_label = QtWidgets.QLabel(_("Z Toolchange:"))
self.z_toolchange_label.setToolTip( 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) self.gcode_form_layout.addRow(self.z_toolchange_label, self.z_toolchange_entry)
@@ -216,7 +215,7 @@ class SolderPaste(FlatCAMTool):
self.frxy_entry = FCEntry() self.frxy_entry = FCEntry()
self.frxy_label = QtWidgets.QLabel(_("Feedrate X-Y:")) self.frxy_label = QtWidgets.QLabel(_("Feedrate X-Y:"))
self.frxy_label.setToolTip( 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) self.gcode_form_layout.addRow(self.frxy_label, self.frxy_entry)
@@ -233,7 +232,7 @@ class SolderPaste(FlatCAMTool):
self.frz_dispense_entry = FCEntry() self.frz_dispense_entry = FCEntry()
self.frz_dispense_label = QtWidgets.QLabel(_("Feedrate Z Dispense:")) self.frz_dispense_label = QtWidgets.QLabel(_("Feedrate Z Dispense:"))
self.frz_dispense_label.setToolTip( self.frz_dispense_label.setToolTip(
_( "Feedrate (speed) while moving up vertically\n" _("Feedrate (speed) while moving up vertically\n"
" to Dispense position (on Z plane).") " to Dispense position (on Z plane).")
) )
self.gcode_form_layout.addRow(self.frz_dispense_label, self.frz_dispense_entry) self.gcode_form_layout.addRow(self.frz_dispense_label, self.frz_dispense_entry)
@@ -242,7 +241,7 @@ class SolderPaste(FlatCAMTool):
self.speedfwd_entry = FCEntry() self.speedfwd_entry = FCEntry()
self.speedfwd_label = QtWidgets.QLabel(_("Spindle Speed FWD:")) self.speedfwd_label = QtWidgets.QLabel(_("Spindle Speed FWD:"))
self.speedfwd_label.setToolTip( self.speedfwd_label.setToolTip(
_( "The dispenser speed while pushing solder paste\n" _("The dispenser speed while pushing solder paste\n"
"through the dispenser nozzle.") "through the dispenser nozzle.")
) )
self.gcode_form_layout.addRow(self.speedfwd_label, self.speedfwd_entry) self.gcode_form_layout.addRow(self.speedfwd_label, self.speedfwd_entry)
@@ -259,7 +258,7 @@ class SolderPaste(FlatCAMTool):
self.speedrev_entry = FCEntry() self.speedrev_entry = FCEntry()
self.speedrev_label = QtWidgets.QLabel(_("Spindle Speed REV:")) self.speedrev_label = QtWidgets.QLabel(_("Spindle Speed REV:"))
self.speedrev_label.setToolTip( self.speedrev_label.setToolTip(
_( "The dispenser speed while retracting solder paste\n" _("The dispenser speed while retracting solder paste\n"
"through the dispenser nozzle.") "through the dispenser nozzle.")
) )
self.gcode_form_layout.addRow(self.speedrev_label, self.speedrev_entry) self.gcode_form_layout.addRow(self.speedrev_label, self.speedrev_entry)
@@ -289,7 +288,7 @@ class SolderPaste(FlatCAMTool):
self.solder_gcode_btn = QtWidgets.QPushButton(_("Generate GCode")) self.solder_gcode_btn = QtWidgets.QPushButton(_("Generate GCode"))
self.solder_gcode_btn.setToolTip( self.solder_gcode_btn.setToolTip(
_( "Generate GCode for Solder Paste dispensing\n" _("Generate GCode for Solder Paste dispensing\n"
"on PCB pads.") "on PCB pads.")
) )
@@ -300,7 +299,6 @@ class SolderPaste(FlatCAMTool):
self.generation_box.setContentsMargins(0, 0, 0, 0) self.generation_box.setContentsMargins(0, 0, 0, 0)
self.generation_frame.setLayout(self.generation_box) self.generation_frame.setLayout(self.generation_box)
# ## Buttons # ## Buttons
grid2 = QtWidgets.QGridLayout() grid2 = QtWidgets.QGridLayout()
self.generation_box.addLayout(grid2) self.generation_box.addLayout(grid2)
@@ -325,7 +323,7 @@ class SolderPaste(FlatCAMTool):
self.geo_object_label = QtWidgets.QLabel(_("Geo Result:")) self.geo_object_label = QtWidgets.QLabel(_("Geo Result:"))
self.geo_object_label.setToolTip( self.geo_object_label.setToolTip(
_( "Geometry Solder Paste object.\n" _("Geometry Solder Paste object.\n"
"The name of the object has to end in:\n" "The name of the object has to end in:\n"
"'_solderpaste' as a protection.") "'_solderpaste' as a protection.")
) )
@@ -336,7 +334,7 @@ class SolderPaste(FlatCAMTool):
step3_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 3:')) step3_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 3:'))
step3_lbl.setToolTip( step3_lbl.setToolTip(
_( "Third step is to select a solder paste dispensing geometry,\n" _("Third step is to select a solder paste dispensing geometry,\n"
"and then generate a CNCJob object.\n\n" "and then generate a CNCJob object.\n\n"
"REMEMBER: if you want to create a CNCJob with new parameters,\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" "first you need to generate a geometry with those new params,\n"
@@ -358,7 +356,7 @@ class SolderPaste(FlatCAMTool):
self.cnc_object_label = QtWidgets.QLabel(_("CNC Result:")) self.cnc_object_label = QtWidgets.QLabel(_("CNC Result:"))
self.cnc_object_label.setToolTip( self.cnc_object_label.setToolTip(
_( "CNCJob Solder paste object.\n" _("CNCJob Solder paste object.\n"
"In order to enable the GCode save section,\n" "In order to enable the GCode save section,\n"
"the name of the object has to end in:\n" "the name of the object has to end in:\n"
"'_solderpaste' as a protection.") "'_solderpaste' as a protection.")
@@ -376,13 +374,13 @@ class SolderPaste(FlatCAMTool):
self.solder_gcode_save_btn = QtWidgets.QPushButton(_("Save GCode")) self.solder_gcode_save_btn = QtWidgets.QPushButton(_("Save GCode"))
self.solder_gcode_save_btn.setToolTip( self.solder_gcode_save_btn.setToolTip(
_( "Save the generated GCode for Solder Paste dispensing\n" _("Save the generated GCode for Solder Paste dispensing\n"
"on PCB pads, to a file.") "on PCB pads, to a file.")
) )
step4_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 4:')) step4_lbl = QtWidgets.QLabel("<b>%s</b>" % _('STEP 4:'))
step4_lbl.setToolTip( step4_lbl.setToolTip(
_( "Fourth step (and last) is to select a CNCJob made from \n" _("Fourth step (and last) is to select a CNCJob made from \n"
"a solder paste dispensing geometry, and then view/save it's GCode.") "a solder paste dispensing geometry, and then view/save it's GCode.")
) )
@@ -402,6 +400,7 @@ class SolderPaste(FlatCAMTool):
self.form_fields = {} self.form_fields = {}
self.units = '' self.units = ''
self.name = ""
# this will be used in the combobox context menu, for delete entry # this will be used in the combobox context menu, for delete entry
self.obj_to_be_deleted_name = '' self.obj_to_be_deleted_name = ''
@@ -607,7 +606,6 @@ class SolderPaste(FlatCAMTool):
if current_row < 0: if current_row < 0:
current_row = 0 current_row = 0
# populate the form with the data from the tool associated with the row parameter # populate the form with the data from the tool associated with the row parameter
try: try:
tooluid = int(self.tools_table.item(current_row, 2).text()) tooluid = int(self.tools_table.item(current_row, 2).text())
@@ -762,7 +760,8 @@ class SolderPaste(FlatCAMTool):
return return
if tool_dia == 0: 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 return
# construct a list of all 'tooluid' in the self.tooltable_tools # construct a list of all 'tooluid' in the self.tooltable_tools
@@ -844,7 +843,8 @@ class SolderPaste(FlatCAMTool):
break break
restore_dia_item = self.tools_table.item(row, 1) restore_dia_item = self.tools_table.item(row, 1)
restore_dia_item.setText(str(old_tool_dia)) 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() self.build_ui()
def on_tool_delete(self, rows_to_delete=None, all=None): 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 name: the outname for the resulting geometry object
:param work_object: the source Gerber object from which the geometry is created :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 :return: a Geometry type object
""" """
proc = self.app.proc_container.new(_("Creating Solder Paste dispensing geometry.")) proc = self.app.proc_container.new(_("Creating Solder Paste dispensing geometry."))
@@ -1030,8 +1031,8 @@ class SolderPaste(FlatCAMTool):
for tool in sorted_tools: for tool in sorted_tools:
offset = tool / 2 offset = tool / 2
for uid, v in self.tooltable_tools.items(): for uid, vl in self.tooltable_tools.items():
if float('%.4f' % float(v['tooldia'])) == tool: if float('%.4f' % float(vl['tooldia'])) == tool:
tooluid = int(uid) tooluid = int(uid)
break break
@@ -1064,19 +1065,19 @@ class SolderPaste(FlatCAMTool):
round_diag_2 = round(diag_2_intersect.length, 2) round_diag_2 = round(diag_2_intersect.length, 2)
if round_diag_1 == round_diag_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)) 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 pass
else: else:
if l > h: if length > h:
h_half = h / 2 h_half = h / 2
start = [x_min, (y_min + h_half)] 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]) geo = LineString([start, stop])
else: else:
l_half = l / 2 l_half = length / 2
start = [(x_min + l_half), y_min] start = [(x_min + l_half), y_min]
stop = [(x_min + l_half), (y_min + h)] stop = [(x_min + l_half), (y_min + h)]
geo = LineString([start, stop]) geo = LineString([start, stop])
@@ -1151,7 +1152,8 @@ class SolderPaste(FlatCAMTool):
return 'fail' return 'fail'
if obj.special_group != 'solder_paste_tool': 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' return 'fail'
a = 0 a = 0
@@ -1314,7 +1316,8 @@ class SolderPaste(FlatCAMTool):
# then append the text from GCode to the text editor # then append the text from GCode to the text editor
try: try:
lines = StringIO(gcode) 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...")) self.app.inform.emit(_("[ERROR_NOTCL] No Gcode in the object..."))
return return

View File

@@ -155,7 +155,6 @@ class ToolSub(FlatCAMTool):
self.sub_follow_union = None self.sub_follow_union = None
self.sub_clear_union = None self.sub_clear_union = None
self.sub_grb_obj = None self.sub_grb_obj = None
self.sub_grb_obj_name = None self.sub_grb_obj_name = None
self.target_grb_obj = None self.target_grb_obj = None
@@ -172,16 +171,18 @@ class ToolSub(FlatCAMTool):
# store here the options from target_obj # store here the options from target_obj
self.target_options = {} self.target_options = {}
self.sub_union = []
try: try:
self.intersect_btn.clicked.disconnect(self.on_grb_intersection_click) self.intersect_btn.clicked.disconnect(self.on_grb_intersection_click)
except: except Exception as e:
pass log.debug("ToolSub.__init__() --> %s" % str(e))
self.intersect_btn.clicked.connect(self.on_grb_intersection_click) self.intersect_btn.clicked.connect(self.on_grb_intersection_click)
try: try:
self.intersect_geo_btn.clicked.disconnect() self.intersect_geo_btn.clicked.disconnect()
except: except Exception as e:
pass log.debug("ToolSub.__init__() --> %s" % str(e))
self.intersect_geo_btn.clicked.connect(self.on_geo_intersection_click) self.intersect_geo_btn.clicked.connect(self.on_geo_intersection_click)
def install(self, icon=None, separator=None, **kwargs): def install(self, icon=None, separator=None, **kwargs):
@@ -233,7 +234,8 @@ class ToolSub(FlatCAMTool):
# Get source object. # Get source object.
try: try:
self.target_grb_obj = self.app.collection.get_by_name(self.target_grb_obj_name) 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) 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 return "Could not retrieve object: %s" % self.target_grb_obj_name
@@ -245,7 +247,8 @@ class ToolSub(FlatCAMTool):
# Get source object. # Get source object.
try: try:
self.sub_grb_obj = self.app.collection.get_by_name(self.sub_grb_obj_name) 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) 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 return "Could not retrieve object: %s" % self.sub_grb_obj_name
@@ -424,7 +427,8 @@ class ToolSub(FlatCAMTool):
# Get source object. # Get source object.
try: try:
self.target_geo_obj = self.app.collection.get_by_name(self.target_geo_obj_name) 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) 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 return "Could not retrieve object: %s" % self.target_grb_obj_name
@@ -436,7 +440,8 @@ class ToolSub(FlatCAMTool):
# Get source object. # Get source object.
try: try:
self.sub_geo_obj = self.app.collection.get_by_name(self.sub_geo_obj_name) 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) 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 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) geo_obj.tools = deepcopy(self.new_tools)
for tool in geo_obj.tools: for tool in geo_obj.tools:
geo_obj.tools[tool]['solid_geometry'] = deepcopy(self.new_solid_geometry) geo_obj.tools[tool]['solid_geometry'] = deepcopy(self.new_solid_geometry)
except: except Exception as e:
pass log.debug("ToolSub.new_geo_object() --> %s" % str(e))
with self.app.proc_container.new(_("Generating new object ...")): with self.app.proc_container.new(_("Generating new object ...")):
ret = self.app.new_object('geometry', outname, obj_init, autoselected=False) 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)) # log.debug("checking parsing --> %s" % str(self.parsing_promises))
try: try:
if not self.promises: if not self.promises:
self.check_thread.stop() self.check_thread.stop()
@@ -615,3 +619,5 @@ class ToolSub(FlatCAMTool):
self.target_geo_combo.setRootModelIndex(self.app.collection.index(2, 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 gettext
import FlatCAMTranslation as fcTranslate import FlatCAMTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings') fcTranslate.apply_language('strings')
import builtins
if '_' not in builtins.__dict__: if '_' not in builtins.__dict__:
_ = gettext.gettext _ = gettext.gettext
@@ -350,8 +350,7 @@ class ToolTransform(FlatCAMTool):
form4_layout.addRow(self.flip_ref_cb) form4_layout.addRow(self.flip_ref_cb)
form4_layout.addRow(self.flip_ref_label, form4_child_1) form4_layout.addRow(self.flip_ref_label, form4_child_1)
self.ois_flip = OptionalInputSection(self.flip_ref_cb, self.ois_flip = OptionalInputSection(self.flip_ref_cb, [self.flip_ref_entry, self.flip_ref_button], logic=True)
[self.flip_ref_entry, self.flip_ref_button], logic=True)
self.transform_lay.addStretch() self.transform_lay.addStretch()
@@ -455,7 +454,7 @@ class ToolTransform(FlatCAMTool):
if self.app.defaults["tools_transform_mirror_point"]: if self.app.defaults["tools_transform_mirror_point"]:
self.flip_ref_entry.set_value(self.app.defaults["tools_transform_mirror_point"]) self.flip_ref_entry.set_value(self.app.defaults["tools_transform_mirror_point"])
else: else:
self.flip_ref_entry.set_value((0,0)) self.flip_ref_entry.set_value((0, 0))
def on_rotate(self): def on_rotate(self):
try: try: