From 24e29bda55b2067c601218bf26114c6bada3af0c Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 6 Sep 2019 22:25:38 +0300 Subject: [PATCH] - more customization for the progress display in case of NCC Tool, Paint Tool and for the Gcode generation --- README.md | 1 + camlib.py | 80 +++++----- flatcamTools/ToolNonCopperClear.py | 124 ++++++++------- flatcamTools/ToolPaint.py | 89 +++++------ locale_template/strings.pot | 233 +++++++++++++++++------------ 5 files changed, 294 insertions(+), 233 deletions(-) diff --git a/README.md b/README.md index 128e3348..66c2aed5 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ CAD program, and create G-Code for Isolation routing. - added progress display in status bar for generating CNCJob from Excellon objects - added progress display in status bar for generating CNCJob from Geometry objects - modified all the FlatCAM tools strings to the new format in which the status is no longer included in the translated strings to make it easier for the future translations +- more customization for the progress display in case of NCC Tool, Paint Tool and for the Gcode generation - updated POT file with the new strings 5.09.2019 diff --git a/camlib.py b/camlib.py index 8d739342..6af88ca3 100644 --- a/camlib.py +++ b/camlib.py @@ -5438,6 +5438,12 @@ class CNCjob(Geometry): else: current_tooldia = float('%.4f' % float(exobj.tools[tool]["C"])) + self.app.inform.emit( + '%s: %s%s.' % (_("Starting G-Code for tool with diameter"), + str(current_tooldia), + str(self.units)) + ) + # TODO apply offset only when using the GUI, for TclCommand this will create an error # because the values for Z offset are created in build_ui() try: @@ -5481,13 +5487,7 @@ class CNCjob(Geometry): disp_number = int(np.interp(loc_nr, [0, geo_len], [0, 99])) if old_disp_number < disp_number <= 100: - self.app.inform.emit( - '%s: %s%s. %s: %d%%' % (_("Starting G-Code for tool with diameter"), - str(current_tooldia), - str(self.units), - _("Progress"), - disp_number) - ) + self.app.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number else: @@ -5570,6 +5570,12 @@ class CNCjob(Geometry): else: current_tooldia = float('%.4f' % float(exobj.tools[tool]["C"])) + self.app.inform.emit( + '%s: %s%s.' % (_("Starting G-Code for tool with diameter"), + str(current_tooldia), + str(self.units)) + ) + # TODO apply offset only when using the GUI, for TclCommand this will create an error # because the values for Z offset are created in build_ui() try: @@ -5613,13 +5619,7 @@ class CNCjob(Geometry): disp_number = int(np.interp(loc_nr, [0, geo_len], [0, 99])) if old_disp_number < disp_number <= 100: - self.app.inform.emit( - '%s: %s%s. %s: %d%%' % (_("Starting G-Code for tool with diameter"), - str(current_tooldia), - str(self.units), - _("Progress"), - disp_number) - ) + self.app.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number else: @@ -5661,6 +5661,12 @@ class CNCjob(Geometry): else: current_tooldia = float('%.4f' % float(exobj.tools[tool]["C"])) + self.app.inform.emit( + '%s: %s%s.' % (_("Starting G-Code for tool with diameter"), + str(current_tooldia), + str(self.units)) + ) + # TODO apply offset only when using the GUI, for TclCommand this will create an error # because the values for Z offset are created in build_ui() try: @@ -5706,13 +5712,7 @@ class CNCjob(Geometry): disp_number = int(np.interp(loc_nr, [0, geo_len], [0, 99])) if old_disp_number < disp_number <= 100: - self.app.inform.emit( - '%s: %s%s. %s: %d%%' % (_("Starting G-Code for tool with diameter"), - str(current_tooldia), - str(self.units), - _("Progress"), - disp_number) - ) + self.app.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number else: self.app.inform.emit(_('[ERROR_NOTCL] G91 coordinates not implemented ...')) @@ -5944,6 +5944,12 @@ class CNCjob(Geometry): else: current_tooldia = float('%.4f' % float(self.tooldia)) + self.app.inform.emit( + '%s: %s%s.' % (_("Starting G-Code for tool with diameter"), + str(current_tooldia), + str(self.units)) + ) + pt, geo = storage.nearest(current_pt) try: @@ -5988,13 +5994,7 @@ class CNCjob(Geometry): disp_number = int(np.interp(path_count, [0, geo_len], [0, 99])) if old_disp_number < disp_number <= 100: - self.app.inform.emit( - '%s: %s%s. %s: %d%%' % (_("Starting G-Code for tool with diameter"), - str(current_tooldia), - str(self.units), - _("Progress"), - disp_number) - ) + self.app.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number except StopIteration: # Nothing found in storage. pass @@ -6263,6 +6263,12 @@ class CNCjob(Geometry): else: current_tooldia = float('%.4f' % float(self.tooldia)) + self.app.inform.emit( + '%s: %s%s.' % (_("Starting G-Code for tool with diameter"), + str(current_tooldia), + str(self.units)) + ) + path_count = 0 current_pt = (0, 0) pt, geo = storage.nearest(current_pt) @@ -6307,13 +6313,7 @@ class CNCjob(Geometry): disp_number = int(np.interp(path_count, [0, geo_len], [0, 99])) if old_disp_number < disp_number <= 100: - self.app.inform.emit( - '%s: %s%s. %s: %d%%' % (_("Starting G-Code for tool with diameter"), - str(current_tooldia), - str(self.units), - _("Progress"), - disp_number) - ) + self.app.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number except StopIteration: # Nothing found in storage. pass @@ -6406,6 +6406,11 @@ class CNCjob(Geometry): path_count = 0 current_pt = (0, 0) + # variables to display the percentage of work done + geo_len = len(flat_geometry) + disp_number = 0 + old_disp_number = 0 + pt, geo = storage.nearest(current_pt) try: @@ -6424,10 +6429,15 @@ class CNCjob(Geometry): current_pt = geo.coords[-1] pt, geo = storage.nearest(current_pt) # Next + disp_number = int(np.interp(path_count, [0, geo_len], [0, 99])) + if old_disp_number < disp_number <= 100: + self.app.proc_container.update_view_text(' %d%%' % disp_number) + old_disp_number = disp_number except StopIteration: # Nothing found in storage. pass log.debug("Finishing SolderPste G-Code... %s paths traced." % path_count) + self.app.inform.emit(_("Finished SolderPste G-Code generation... %s paths traced.") % str(path_count)) # Finish self.gcode += self.doformat(p.lift_code) diff --git a/flatcamTools/ToolNonCopperClear.py b/flatcamTools/ToolNonCopperClear.py index f423e679..2f83dc91 100644 --- a/flatcamTools/ToolNonCopperClear.py +++ b/flatcamTools/ToolNonCopperClear.py @@ -1323,7 +1323,9 @@ class NonCopperClear(FlatCAMTool, Gerber): units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value() - log.debug("Copper clearing started. Reading parameters.") + log.debug("NCC Tool started. Reading parameters.") + self.app.inform.emit(_("NCC Tool started. Reading parameters.")) + ncc_method = method if method else self.ncc_method_radio.get_value() if margin is not None: @@ -1385,7 +1387,9 @@ class NonCopperClear(FlatCAMTool, Gerber): # ############################################################################################################## # Prepare non-copper polygons. Create the bounding box area from which the copper features will be subtracted ## # ############################################################################################################## - log.debug("Copper clearing. Preparing non-copper polygons.") + log.debug("NCC Tool. Preparing non-copper polygons.") + self.app.inform.emit(_("NCC Tool. Preparing non-copper polygons.")) + try: if sel_obj is None or sel_obj == 'itself': ncc_sel_obj = ncc_obj @@ -1414,6 +1418,7 @@ class NonCopperClear(FlatCAMTool, Gerber): log.debug("NonCopperClear.clear_copper() 'itself' --> %s" % str(e)) self.app.inform.emit('[ERROR_NOTCL] %s' % _("No object available.")) return 'fail' + elif ncc_select == 'area': geo_n = cascaded_union(self.sel_rect) try: @@ -1427,6 +1432,7 @@ class NonCopperClear(FlatCAMTool, Gerber): geo_buff_list.append(poly.buffer(distance=ncc_margin, join_style=base.JOIN_STYLE.mitre)) bounding_box = cascaded_union(geo_buff_list) + elif ncc_select == 'box': geo_n = ncc_sel_obj.solid_geometry if isinstance(ncc_sel_obj, FlatCAMGeometry): @@ -1449,7 +1455,7 @@ class NonCopperClear(FlatCAMTool, Gerber): self.app.inform.emit('[ERROR_NOTCL] %s' % _("The reference object type is not supported.")) return 'fail' - log.debug("Copper clearing. Finished non-copper polygons.") + log.debug("NCC Tool. Finished non-copper polygons.") # ######################################################################################################## # set the name for the future Geometry object # I do it here because it is also stored inside the gen_clear_area() and gen_clear_area_rest() methods @@ -1467,7 +1473,8 @@ class NonCopperClear(FlatCAMTool, Gerber): assert isinstance(geo_obj, FlatCAMGeometry), \ "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) - log.debug("Copper clearing. Normal copper clearing task started.") + log.debug("NCC Tool. Normal copper clearing task started.") + self.app.inform.emit(_("NCC Tool. Finished non-copper polygons. Normal copper clearing task started.")) # a flag to signal that the isolation is broken by the bounding box in 'area' and 'box' cases # will store the number of tools for which the isolation is broken @@ -1498,13 +1505,17 @@ class NonCopperClear(FlatCAMTool, Gerber): # ################################################################################################### # Calculate the empty area by subtracting the solid_geometry from the object bounding box geometry ## # ################################################################################################### - log.debug("Copper clearing. Calculate 'empty' area.") + log.debug("NCC Tool. Calculate 'empty' area.") + self.app.inform.emit(_("NCC Tool. Calculate 'empty' area.")) + if isinstance(ncc_obj, FlatCAMGerber) and not isotooldia: sol_geo = ncc_obj.solid_geometry if has_offset is True: - app_obj.inform.emit('[WARNING_NOTCL] %s' % _("Buffering ...")) + app_obj.inform.emit('[WARNING_NOTCL] %s ...' % + _("Buffering")) sol_geo = sol_geo.buffer(distance=ncc_offset) - app_obj.inform.emit('[success] %s' % _("Buffering finished ...")) + app_obj.inform.emit('[success] %s ...' % + _("Buffering finished")) empty = self.get_ncc_empty_area(target=sol_geo, boundary=bounding_box) elif isinstance(ncc_obj, FlatCAMGerber) and isotooldia: isolated_geo = [] @@ -1582,19 +1593,24 @@ class NonCopperClear(FlatCAMTool, Gerber): sol_geo = cascaded_union(isolated_geo) if has_offset is True: - app_obj.inform.emit(_("[WARNING_NOTCL] Buffering ...")) + app_obj.inform.emit('[WARNING_NOTCL] %s ...' % + _("Buffering")) sol_geo = sol_geo.buffer(distance=ncc_offset) - app_obj.inform.emit('[success] %s' % _("Buffering finished ...")) + app_obj.inform.emit('[success] %s ...' % + _("Buffering finished")) empty = self.get_ncc_empty_area(target=sol_geo, boundary=bounding_box) elif isinstance(ncc_obj, FlatCAMGeometry): sol_geo = cascaded_union(ncc_obj.solid_geometry) if has_offset is True: - app_obj.inform.emit(_("[WARNING_NOTCL] Buffering ...")) + app_obj.inform.emit('[WARNING_NOTCL] %s ...' % + _("Buffering")) sol_geo = sol_geo.buffer(distance=ncc_offset) - app_obj.inform.emit('[success] %' % _("Buffering finished ...")) + app_obj.inform.emit('[success] %s ...' % + _("Buffering finished")) empty = self.get_ncc_empty_area(target=sol_geo, boundary=bounding_box) else: - app_obj.inform.emit('[ERROR_NOTCL] %' % _('The selected object is not suitable for copper clearing.')) + app_obj.inform.emit('[ERROR_NOTCL] %s' % + _('The selected object is not suitable for copper clearing.')) return if empty.is_empty: @@ -1605,17 +1621,20 @@ class NonCopperClear(FlatCAMTool, Gerber): if type(empty) is Polygon: empty = MultiPolygon([empty]) - log.debug("Copper clearing. Finished calculation of 'empty' area.") + log.debug("NCC Tool. Finished calculation of 'empty' area.") + self.app.inform.emit(_("NCC Tool. Finished calculation of 'empty' area.")) + cp = None for tool in sorted_tools: log.debug("Starting geometry processing for tool: %s" % str(tool)) app_obj.inform.emit( - '[success] %s %s%s %s: %d%%' % (_('Non-Copper Clearing with tool diameter = '), - str(tool), - units.lower(), - _('started. Progress'), - 0) + '[success] %s %s%s %s' % (_('NCC Tool clearing with tool diameter = '), + str(tool), + units.lower(), + _('started.')) ) + app_obj.proc_container.update_view_text(' %d%%' % 0) + cleared_geo[:] = [] # Get remaining tools offset @@ -1686,13 +1705,7 @@ class NonCopperClear(FlatCAMTool, Gerber): # log.debug("Polygons cleared: %d" % pol_nr) if old_disp_number < disp_number <= 100: - app_obj.inform.emit( - '[success] %s %s%s %s: %d%%' % (_('Non-Copper Clearing with tool diameter = '), - str(tool), - units.lower(), - _('started. Progress'), - disp_number) - ) + self.app.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number # log.debug("Polygons cleared: %d. Percentage done: %d%%" % (pol_nr, disp_number)) @@ -1753,9 +1766,9 @@ class NonCopperClear(FlatCAMTool, Gerber): # print("Indexing...", end=' ') # geo_obj.make_index() if warning_flag == 0: - self.app.inform.emit('[success] %s' % _("Non-Copper clear all done.")) + self.app.inform.emit('[success] %s' % _("NCC Tool clear all done.")) else: - self.app.inform.emit('[WARNING] %s: %s %s.' % (_("Non-Copper clear all done but the copper features " + self.app.inform.emit('[WARNING] %s: %s %s.' % (_("NCC Tool clear all done but the copper features " "isolation is broken for"), str(warning_flag), _("tools"))) @@ -1767,7 +1780,9 @@ class NonCopperClear(FlatCAMTool, Gerber): assert isinstance(geo_obj, FlatCAMGeometry), \ "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) - log.debug("Copper clearing. Rest machining copper clearing task started.") + log.debug("NCC Tool. Rest machining copper clearing task started.") + app_obj.inform.emit('_(NCC Tool. Rest machining copper clearing task started.') + # a flag to signal that the isolation is broken by the bounding box in 'area' and 'box' cases # will store the number of tools for which the isolation is broken warning_flag = 0 @@ -1785,17 +1800,22 @@ class NonCopperClear(FlatCAMTool, Gerber): # repurposed flag for final object, geo_obj. True if it has any solid_geometry, False if not. app_obj.poly_not_cleared = True - log.debug("Copper clearing. Calculate 'empty' area.") + log.debug("NCC Tool. Calculate 'empty' area.") + app_obj.inform.emit("NCC Tool. Calculate 'empty' area.") + # ################################################################################################### # Calculate the empty area by subtracting the solid_geometry from the object bounding box geometry ## # ################################################################################################### if isinstance(ncc_obj, FlatCAMGerber) and not isotooldia: sol_geo = ncc_obj.solid_geometry if has_offset is True: - app_obj.inform.emit('[WARNING_NOTCL] %s' % _("Buffering ...")) + app_obj.inform.emit('[WARNING_NOTCL] %s ...' % + _("Buffering")) sol_geo = sol_geo.buffer(distance=ncc_offset) - app_obj.inform.emit('[success] %s' % _("Buffering finished ...")) + app_obj.inform.emit('[success] %s ...' % + _("Buffering finished")) empty = self.get_ncc_empty_area(target=sol_geo, boundary=bounding_box) + elif isinstance(ncc_obj, FlatCAMGerber) and isotooldia: isolated_geo = [] self.solid_geometry = ncc_obj.solid_geometry @@ -1872,19 +1892,26 @@ class NonCopperClear(FlatCAMTool, Gerber): sol_geo = cascaded_union(isolated_geo) if has_offset is True: - app_obj.inform.emit('[WARNING_NOTCL] %s' % _("Buffering ...")) + app_obj.inform.emit('[WARNING_NOTCL] %s ...' % + _("Buffering")) sol_geo = sol_geo.buffer(distance=ncc_offset) - app_obj.inform.emit('[success] %s' % _("Buffering finished ...")) + app_obj.inform.emit('[success] %s ...' % + _("Buffering finished")) empty = self.get_ncc_empty_area(target=sol_geo, boundary=bounding_box) + elif isinstance(ncc_obj, FlatCAMGeometry): sol_geo = cascaded_union(ncc_obj.solid_geometry) if has_offset is True: - app_obj.inform.emit(_("[WARNING_NOTCL] Buffering ...")) + app_obj.inform.emit('[WARNING_NOTCL] %s ...' % + _("Buffering")) sol_geo = sol_geo.buffer(distance=ncc_offset) - app_obj.inform.emit('[success] %s' % _("Buffering finished ...")) + app_obj.inform.emit('[success] %s ...' % + _("Buffering finished")) empty = self.get_ncc_empty_area(target=sol_geo, boundary=bounding_box) + else: - app_obj.inform.emit('[ERROR_NOTCL] %s' % _('The selected object is not suitable for copper clearing.')) + app_obj.inform.emit('[ERROR_NOTCL] %s' % + _('The selected object is not suitable for copper clearing.')) return if empty.is_empty: @@ -1897,7 +1924,8 @@ class NonCopperClear(FlatCAMTool, Gerber): area = empty.buffer(0) - log.debug("Copper clearing. Finished calculation of 'empty' area.") + log.debug("NCC Tool. Finished calculation of 'empty' area.") + app_obj.inform.emit("NCC Tool. Finished calculation of 'empty' area.") # Generate area for each tool while sorted_tools: @@ -1905,12 +1933,12 @@ class NonCopperClear(FlatCAMTool, Gerber): log.debug("Starting geometry processing for tool: %s" % str(tool)) app_obj.inform.emit( - '[success] %s %s%s %s: %d%%' % (_('Non-Copper Rest Clearing with tool diameter = '), - str(tool), - units.lower(), - _('started. Progress'), - 0) + '[success] %s %s%s %s' % (_('NCC Tool clearing with tool diameter = '), + str(tool), + units.lower(), + _('started.')) ) + app_obj.proc_container.update_view_text(' %d%%' % 0) tool_used = tool - 1e-12 cleared_geo[:] = [] @@ -1997,13 +2025,7 @@ class NonCopperClear(FlatCAMTool, Gerber): # log.debug("Polygons cleared: %d" % pol_nr) if disp_number > old_disp_number and disp_number <= 100: - app_obj.inform.emit( - '[success] %s %s%s %s: %d%%' % (_('Non-Copper Clearing with tool diameter = '), - str(tool), - units.lower(), - _('started. Progress'), - disp_number) - ) + self.app.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number # log.debug("Polygons cleared: %d. Percentage done: %d%%" % (pol_nr, disp_number)) @@ -2048,10 +2070,10 @@ class NonCopperClear(FlatCAMTool, Gerber): # it will be updated only if there is a solid_geometry for tools if geo_obj.tools: if warning_flag == 0: - self.app.inform.emit('[success] %s' % _("Non-Copper Rest Machining clear all done.")) + self.app.inform.emit('[success] %s' % _("NCC Tool Rest Machining clear all done.")) else: self.app.inform.emit( - '[WARNING] %s: %s %s.' % (_("Non-Copper Rest Machining clear all done but the copper features " + '[WARNING] %s: %s %s.' % (_("NCC Tool Rest Machining clear all done but the copper features " "isolation is broken for"), str(warning_flag), _("tools"))) return else: diff --git a/flatcamTools/ToolPaint.py b/flatcamTools/ToolPaint.py index 1f7dd032..ba35b973 100644 --- a/flatcamTools/ToolPaint.py +++ b/flatcamTools/ToolPaint.py @@ -903,6 +903,11 @@ class ToolPaint(FlatCAMTool, Gerber): self.app.report_usage(_("on_paint_button_click")) # self.app.call_source = 'paint' + # ##################################################### + # ######### Reading Parameters ######################## + # ##################################################### + self.app.inform.emit(_("Paint Tool. Reading parameters.")) + try: overlap = float(self.paintoverlap_entry.get_value()) except ValueError: @@ -1206,7 +1211,8 @@ class ToolPaint(FlatCAMTool, Gerber): self.app.inform.emit(_('[WARNING] No polygon found.')) return - proc = self.app.proc_container.new(_("Painting polygon.")) + proc = self.app.proc_container.new(_("Painting polygon...")) + self.app.inform.emit(_("Paint Tool. Painting polygon at location: %s") % str(inside_pt)) name = outname if outname is not None else self.obj_name + "_paint" @@ -1445,7 +1451,7 @@ class ToolPaint(FlatCAMTool, Gerber): _("Wrong value format entered, use a number.")) return - proc = self.app.proc_container.new(_("Painting polygon...")) + proc = self.app.proc_container.new(_("Painting polygons...")) name = outname if outname is not None else self.obj_name + "_paint" over = overlap if overlap is not None else float(self.app.defaults["tools_paintoverlap"]) @@ -1521,6 +1527,7 @@ class ToolPaint(FlatCAMTool, Gerber): # "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) log.debug("Paint Tool. Normal painting all task started.") + app_obj.inform.emit(_("Paint Tool. Normal painting all task started.")) tool_dia = None if order == 'fwd': @@ -1547,12 +1554,12 @@ class ToolPaint(FlatCAMTool, Gerber): for tool_dia in sorted_tools: log.debug("Starting geometry processing for tool: %s" % str(tool_dia)) app_obj.inform.emit( - '[success] %s %s%s %s: %d%%' % (_('Painting with tool diameter = '), - str(tool_dia), - self.units.lower(), - _('started. Progress'), - 0) + '[success] %s %s%s %s' % (_('Painting with tool diameter = '), + str(tool_dia), + self.units.lower(), + _('started')) ) + app_obj.proc_container.update_view_text(' %d%%' % 0) # find the tooluid associated with the current tool_dia so we know where to add the tool solid_geometry for k, v in tools_storage.items(): @@ -1617,13 +1624,7 @@ class ToolPaint(FlatCAMTool, Gerber): # log.debug("Polygons cleared: %d" % pol_nr) if old_disp_number < disp_number <= 100: - app_obj.inform.emit( - '[success] %s %s%s %s: %d%%' % (_('Painting with tool diameter = '), - str(tool_dia), - self.units.lower(), - _('started. Progress'), - disp_number) - ) + app_obj.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number # log.debug("Polygons cleared: %d. Percentage done: %d%%" % (pol_nr, disp_number)) @@ -1677,6 +1678,7 @@ class ToolPaint(FlatCAMTool, Gerber): "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) log.debug("Paint Tool. Rest machining painting all task started.") + app_obj.inform.emit(_("Paint Tool. Rest machining painting all task started.")) tool_dia = None sorted_tools.sort(reverse=True) @@ -1697,6 +1699,13 @@ class ToolPaint(FlatCAMTool, Gerber): for tool_dia in sorted_tools: log.debug("Starting geometry processing for tool: %s" % str(tool_dia)) + app_obj.inform.emit( + '[success] %s %s%s %s' % (_('Painting with tool diameter = '), + str(tool_dia), + self.units.lower(), + _('started')) + ) + app_obj.proc_container.update_view_text(' %d%%' % 0) painted_area = recurse(obj.solid_geometry) # variables to display the percentage of work done @@ -1746,13 +1755,7 @@ class ToolPaint(FlatCAMTool, Gerber): # log.debug("Polygons cleared: %d" % pol_nr) if old_disp_number < disp_number <= 100: - app_obj.inform.emit( - '[success] %s %s%s %s: %d%%' % (_('Painting with tool diameter = '), - str(tool_dia), - self.units.lower(), - _('started. Progress'), - disp_number) - ) + app_obj.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number # log.debug("Polygons cleared: %d. Percentage done: %d%%" % (pol_nr, disp_number)) @@ -1859,7 +1862,7 @@ class ToolPaint(FlatCAMTool, Gerber): _("Wrong value format entered, use a number.")) return - proc = self.app.proc_container.new(_("Painting polygon...")) + proc = self.app.proc_container.new(_("Painting polygons...")) name = outname if outname is not None else self.obj_name + "_paint" over = overlap if overlap is not None else float(self.app.defaults["tools_paintoverlap"]) @@ -1922,6 +1925,7 @@ class ToolPaint(FlatCAMTool, Gerber): # "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) log.debug("Paint Tool. Normal painting area task started.") + app_obj.inform.emit(_("Paint Tool. Normal painting area task started.")) tool_dia = None if order == 'fwd': @@ -1959,12 +1963,12 @@ class ToolPaint(FlatCAMTool, Gerber): for tool_dia in sorted_tools: log.debug("Starting geometry processing for tool: %s" % str(tool_dia)) app_obj.inform.emit( - '[success] %s %s%s %s: %d%%' % (_('Painting with tool diameter = '), - str(tool_dia), - self.units.lower(), - _('started. Progress'), - 0) + '[success] %s %s%s %s' % (_('Painting with tool diameter = '), + str(tool_dia), + self.units.lower(), + _('started')) ) + app_obj.proc_container.update_view_text(' %d%%' % 0) # find the tooluid associated with the current tool_dia so we know where to add the tool solid_geometry for k, v in tools_storage.items(): @@ -2027,14 +2031,8 @@ class ToolPaint(FlatCAMTool, Gerber): disp_number = int(np.interp(pol_nr, [0, geo_len], [0, 99])) # log.debug("Polygons cleared: %d" % pol_nr) - if disp_number > old_disp_number and disp_number <= 100: - app_obj.inform.emit( - '[success] %s %s%s %s: %d%%' % (_('Painting with tool diameter = '), - str(tool_dia), - self.units.lower(), - _('started. Progress'), - disp_number) - ) + if old_disp_number < disp_number <= 100: + app_obj.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number # log.debug("Polygons cleared: %d. Percentage done: %d%%" % (pol_nr, disp_number)) @@ -2088,6 +2086,7 @@ class ToolPaint(FlatCAMTool, Gerber): "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) log.debug("Paint Tool. Rest machining painting area task started.") + app_obj.inform.emit(_("Paint Tool. Rest machining painting area task started.")) tool_dia = None sorted_tools.sort(reverse=True) @@ -2109,12 +2108,12 @@ class ToolPaint(FlatCAMTool, Gerber): for tool_dia in sorted_tools: log.debug("Starting geometry processing for tool: %s" % str(tool_dia)) app_obj.inform.emit( - '[success] %s %s%s %s: %d%%' % (_('Painting with tool diameter = '), - str(tool_dia), - self.units.lower(), - _('started. Progress'), - 0) + '[success] %s %s%s %s' % (_('Painting with tool diameter = '), + str(tool_dia), + self.units.lower(), + _('started')) ) + app_obj.proc_container.update_view_text(' %d%%' % 0) painted_area = recurse(obj.solid_geometry) # variables to display the percentage of work done @@ -2162,14 +2161,8 @@ class ToolPaint(FlatCAMTool, Gerber): disp_number = int(np.interp(pol_nr, [0, geo_len], [0, 99])) # log.debug("Polygons cleared: %d" % pol_nr) - if disp_number > old_disp_number and disp_number <= 100: - app_obj.inform.emit( - '[success] %s %s%s %s: %d%%' % (_('Painting with tool diameter = '), - str(tool_dia), - self.units.lower(), - _('started. Progress'), - disp_number) - ) + if old_disp_number < disp_number <= 100: + app_obj.proc_container.update_view_text(' %d%%' % disp_number) old_disp_number = disp_number # log.debug("Polygons cleared: %d. Percentage done: %d%%" % (pol_nr, disp_number)) diff --git a/locale_template/strings.pot b/locale_template/strings.pot index 2dcd0111..28de3dba 100644 --- a/locale_template/strings.pot +++ b/locale_template/strings.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2019-09-06 21:00+0300\n" +"POT-Creation-Date: 2019-09-06 22:24+0300\n" "PO-Revision-Date: 2019-03-25 15:08+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -1641,16 +1641,12 @@ msgstr "" msgid "Starting G-Code" msgstr "" -#: camlib.py:5485 camlib.py:5617 camlib.py:5710 camlib.py:5992 camlib.py:6311 +#: camlib.py:5442 camlib.py:5574 camlib.py:5665 camlib.py:5948 camlib.py:6267 msgid "Starting G-Code for tool with diameter" msgstr "" -#: camlib.py:5488 camlib.py:5620 camlib.py:5713 camlib.py:5995 camlib.py:6314 -msgid "Progress" -msgstr "" - -#: camlib.py:5494 camlib.py:5626 camlib.py:5718 camlib.py:6899 camlib.py:7172 -#: camlib.py:7270 camlib.py:7312 +#: camlib.py:5494 camlib.py:5626 camlib.py:5718 camlib.py:6909 camlib.py:7182 +#: camlib.py:7280 camlib.py:7322 msgid "[ERROR_NOTCL] G91 coordinates not implemented ..." msgstr "" @@ -1742,6 +1738,11 @@ msgstr "" msgid "[ERROR_NOTCL] There is no tool data in the SolderPaste geometry." msgstr "" +#: camlib.py:6440 +#, python-format +msgid "Finished SolderPste G-Code generation... %s paths traced." +msgstr "" + #: flatcamEditors/FlatCAMExcEditor.py:45 flatcamEditors/FlatCAMExcEditor.py:69 #: flatcamEditors/FlatCAMExcEditor.py:150 #: flatcamEditors/FlatCAMExcEditor.py:350 @@ -8922,11 +8923,11 @@ msgstr "" #: flatcamTools/ToolNonCopperClear.py:901 #: flatcamTools/ToolNonCopperClear.py:980 #: flatcamTools/ToolNonCopperClear.py:1062 -#: flatcamTools/ToolNonCopperClear.py:1339 -#: flatcamTools/ToolNonCopperClear.py:1365 flatcamTools/ToolPaint.py:695 -#: flatcamTools/ToolPaint.py:770 flatcamTools/ToolPaint.py:914 -#: flatcamTools/ToolPaint.py:968 flatcamTools/ToolPaint.py:1200 -#: flatcamTools/ToolPaint.py:1445 flatcamTools/ToolPaint.py:1859 +#: flatcamTools/ToolNonCopperClear.py:1341 +#: flatcamTools/ToolNonCopperClear.py:1367 flatcamTools/ToolPaint.py:695 +#: flatcamTools/ToolPaint.py:770 flatcamTools/ToolPaint.py:919 +#: flatcamTools/ToolPaint.py:973 flatcamTools/ToolPaint.py:1205 +#: flatcamTools/ToolPaint.py:1451 flatcamTools/ToolPaint.py:1862 #: flatcamTools/ToolPanelize.py:397 flatcamTools/ToolPanelize.py:409 #: flatcamTools/ToolPanelize.py:422 flatcamTools/ToolPanelize.py:435 #: flatcamTools/ToolPanelize.py:447 flatcamTools/ToolPanelize.py:458 @@ -9088,7 +9089,7 @@ msgstr "" #: flatcamTools/ToolCutOut.py:371 flatcamTools/ToolCutOut.py:571 #: flatcamTools/ToolNonCopperClear.py:1124 -#: flatcamTools/ToolNonCopperClear.py:1265 flatcamTools/ToolPaint.py:1141 +#: flatcamTools/ToolNonCopperClear.py:1265 flatcamTools/ToolPaint.py:1146 #: flatcamTools/ToolPanelize.py:359 flatcamTools/ToolPanelize.py:376 #: flatcamTools/ToolSub.py:254 flatcamTools/ToolSub.py:269 #: flatcamTools/ToolSub.py:456 flatcamTools/ToolSub.py:471 @@ -9848,7 +9849,7 @@ msgstr "" msgid "Overlap value must be between 0 (inclusive) and 1 (exclusive), " msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1083 flatcamTools/ToolPaint.py:937 +#: flatcamTools/ToolNonCopperClear.py:1083 flatcamTools/ToolPaint.py:942 #, python-format msgid "Could not retrieve object: %s" msgstr "" @@ -9857,7 +9858,7 @@ msgstr "" msgid "Wrong Tool Dia value format entered, use a number." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1112 flatcamTools/ToolPaint.py:973 +#: flatcamTools/ToolNonCopperClear.py:1112 flatcamTools/ToolPaint.py:978 msgid "No selected tools in Tool Table." msgstr "" @@ -9865,11 +9866,11 @@ msgstr "" msgid "Click the start point of the area." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1148 flatcamTools/ToolPaint.py:1029 +#: flatcamTools/ToolNonCopperClear.py:1148 flatcamTools/ToolPaint.py:1034 msgid "Click the end point of the paint area." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1154 flatcamTools/ToolPaint.py:1035 +#: flatcamTools/ToolNonCopperClear.py:1154 flatcamTools/ToolPaint.py:1040 msgid "Zone added. Click to start adding next zone or right click to finish." msgstr "" @@ -9877,69 +9878,81 @@ msgstr "" msgid "Non-Copper clearing ..." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1415 flatcamTools/ToolPaint.py:2276 +#: flatcamTools/ToolNonCopperClear.py:1327 +msgid "NCC Tool started. Reading parameters." +msgstr "" + +#: flatcamTools/ToolNonCopperClear.py:1391 +msgid "NCC Tool. Preparing non-copper polygons." +msgstr "" + +#: flatcamTools/ToolNonCopperClear.py:1419 flatcamTools/ToolPaint.py:2269 msgid "No object available." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1449 +#: flatcamTools/ToolNonCopperClear.py:1455 msgid "The reference object type is not supported." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1505 -#: flatcamTools/ToolNonCopperClear.py:1795 -#: flatcamTools/ToolNonCopperClear.py:1875 -msgid "Buffering ..." +#: flatcamTools/ToolNonCopperClear.py:1477 +msgid "" +"NCC Tool. Finished non-copper polygons. Normal copper clearing task started." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1507 -#: flatcamTools/ToolNonCopperClear.py:1587 -#: flatcamTools/ToolNonCopperClear.py:1594 -#: flatcamTools/ToolNonCopperClear.py:1797 -#: flatcamTools/ToolNonCopperClear.py:1877 -#: flatcamTools/ToolNonCopperClear.py:1884 -msgid "Buffering finished ..." +#: flatcamTools/ToolNonCopperClear.py:1509 +msgid "NCC Tool. Calculate 'empty' area." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1525 -#: flatcamTools/ToolNonCopperClear.py:1815 +#: flatcamTools/ToolNonCopperClear.py:1515 +#: flatcamTools/ToolNonCopperClear.py:1597 +#: flatcamTools/ToolNonCopperClear.py:1606 +#: flatcamTools/ToolNonCopperClear.py:1813 +#: flatcamTools/ToolNonCopperClear.py:1896 +#: flatcamTools/ToolNonCopperClear.py:1906 +msgid "Buffering" +msgstr "" + +#: flatcamTools/ToolNonCopperClear.py:1518 +#: flatcamTools/ToolNonCopperClear.py:1600 +#: flatcamTools/ToolNonCopperClear.py:1609 +#: flatcamTools/ToolNonCopperClear.py:1816 +#: flatcamTools/ToolNonCopperClear.py:1899 +#: flatcamTools/ToolNonCopperClear.py:1909 +msgid "Buffering finished" +msgstr "" + +#: flatcamTools/ToolNonCopperClear.py:1536 +#: flatcamTools/ToolNonCopperClear.py:1835 msgid "Isolation geometry could not be generated." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1585 -#: flatcamTools/ToolNonCopperClear.py:1592 -#: flatcamTools/ToolNonCopperClear.py:1882 -msgid "[WARNING_NOTCL] Buffering ..." -msgstr "" - -#: flatcamTools/ToolNonCopperClear.py:1597 -#: flatcamTools/ToolNonCopperClear.py:1887 +#: flatcamTools/ToolNonCopperClear.py:1613 +#: flatcamTools/ToolNonCopperClear.py:1914 msgid "The selected object is not suitable for copper clearing." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1602 -#: flatcamTools/ToolNonCopperClear.py:1892 +#: flatcamTools/ToolNonCopperClear.py:1618 +#: flatcamTools/ToolNonCopperClear.py:1919 msgid "Could not get the extent of the area to be non copper cleared." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1613 -#: flatcamTools/ToolNonCopperClear.py:1690 -#: flatcamTools/ToolNonCopperClear.py:2001 -msgid "Non-Copper Clearing with tool diameter = " +#: flatcamTools/ToolNonCopperClear.py:1625 +msgid "NCC Tool. Finished calculation of 'empty' area." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1616 -#: flatcamTools/ToolNonCopperClear.py:1693 -#: flatcamTools/ToolNonCopperClear.py:1911 -#: flatcamTools/ToolNonCopperClear.py:2004 flatcamTools/ToolPaint.py:1553 -#: flatcamTools/ToolPaint.py:1624 flatcamTools/ToolPaint.py:1753 -#: flatcamTools/ToolPaint.py:1965 flatcamTools/ToolPaint.py:2035 -#: flatcamTools/ToolPaint.py:2115 flatcamTools/ToolPaint.py:2170 -msgid "started. Progress" +#: flatcamTools/ToolNonCopperClear.py:1631 +#: flatcamTools/ToolNonCopperClear.py:1936 +msgid "NCC Tool clearing with tool diameter = " msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1746 flatcamTools/ToolPaint.py:1364 -#: flatcamTools/ToolPaint.py:1663 flatcamTools/ToolPaint.py:1786 -#: flatcamTools/ToolPaint.py:2074 flatcamTools/ToolPaint.py:2203 +#: flatcamTools/ToolNonCopperClear.py:1634 +#: flatcamTools/ToolNonCopperClear.py:1939 +msgid "started." +msgstr "" + +#: flatcamTools/ToolNonCopperClear.py:1759 flatcamTools/ToolPaint.py:1370 +#: flatcamTools/ToolPaint.py:1664 flatcamTools/ToolPaint.py:1789 +#: flatcamTools/ToolPaint.py:2072 flatcamTools/ToolPaint.py:2196 msgid "" "There is no Painting Geometry in the file.\n" "Usually it means that the tool diameter is too big for the painted " @@ -9947,32 +9960,27 @@ msgid "" "Change the painting parameters and try again." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1756 -msgid "Non-Copper clear all done." +#: flatcamTools/ToolNonCopperClear.py:1769 +msgid "NCC Tool clear all done." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1758 -msgid "" -"Non-Copper clear all done but the copper features isolation is broken for" +#: flatcamTools/ToolNonCopperClear.py:1771 +msgid "NCC Tool clear all done but the copper features isolation is broken for" msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1761 -#: flatcamTools/ToolNonCopperClear.py:2055 +#: flatcamTools/ToolNonCopperClear.py:1774 +#: flatcamTools/ToolNonCopperClear.py:2077 msgid "tools" msgstr "" -#: flatcamTools/ToolNonCopperClear.py:1908 -msgid "Non-Copper Rest Clearing with tool diameter = " +#: flatcamTools/ToolNonCopperClear.py:2073 +msgid "NCC Tool Rest Machining clear all done." msgstr "" -#: flatcamTools/ToolNonCopperClear.py:2051 -msgid "Non-Copper Rest Machining clear all done." -msgstr "" - -#: flatcamTools/ToolNonCopperClear.py:2054 +#: flatcamTools/ToolNonCopperClear.py:2076 msgid "" -"Non-Copper Rest Machining clear all done but the copper features isolation " -"is broken for" +"NCC Tool Rest Machining clear all done but the copper features isolation is " +"broken for" msgstr "" #: flatcamTools/ToolPDF.py:38 @@ -10103,85 +10111,108 @@ msgid "" "specified by another object." msgstr "" -#: flatcamTools/ToolPaint.py:919 +#: flatcamTools/ToolPaint.py:909 +msgid "Paint Tool. Reading parameters." +msgstr "" + +#: flatcamTools/ToolPaint.py:924 msgid "Overlap value must be between 0 (inclusive) and 1 (exclusive)" msgstr "" -#: flatcamTools/ToolPaint.py:923 flatcamTools/ToolPaint.py:986 +#: flatcamTools/ToolPaint.py:928 flatcamTools/ToolPaint.py:991 msgid "Click inside the desired polygon." msgstr "" -#: flatcamTools/ToolPaint.py:943 flatcamTools/ToolPanelize.py:366 +#: flatcamTools/ToolPaint.py:948 flatcamTools/ToolPanelize.py:366 #: tclCommands/TclCommandBbox.py:66 tclCommands/TclCommandNregions.py:65 msgid "Object not found" msgstr "" -#: flatcamTools/ToolPaint.py:951 +#: flatcamTools/ToolPaint.py:956 msgid "Can't do Paint on MultiGeo geometries" msgstr "" -#: flatcamTools/ToolPaint.py:995 flatcamTools/ToolPaint.py:1448 -#: flatcamTools/ToolPaint.py:1862 +#: flatcamTools/ToolPaint.py:1000 flatcamTools/ToolPaint.py:1214 msgid "Painting polygon..." msgstr "" -#: flatcamTools/ToolPaint.py:1017 +#: flatcamTools/ToolPaint.py:1022 msgid "Click the start point of the paint area." msgstr "" -#: flatcamTools/ToolPaint.py:1206 +#: flatcamTools/ToolPaint.py:1211 msgid "[WARNING] No polygon found." msgstr "" -#: flatcamTools/ToolPaint.py:1209 -msgid "Painting polygon." +#: flatcamTools/ToolPaint.py:1215 +#, python-format +msgid "Paint Tool. Painting polygon at location: %s" msgstr "" -#: flatcamTools/ToolPaint.py:1283 +#: flatcamTools/ToolPaint.py:1289 msgid "Geometry could not be painted completely" msgstr "" -#: flatcamTools/ToolPaint.py:1326 +#: flatcamTools/ToolPaint.py:1332 msgid "" "Could not do Paint. Try a different combination of parameters. Or a " "different strategy of paint" msgstr "" -#: flatcamTools/ToolPaint.py:1369 +#: flatcamTools/ToolPaint.py:1375 msgid "Paint Single Done." msgstr "" -#: flatcamTools/ToolPaint.py:1391 +#: flatcamTools/ToolPaint.py:1397 msgid "PaintTool.paint_poly()" msgstr "" -#: flatcamTools/ToolPaint.py:1398 flatcamTools/ToolPaint.py:1811 -#: flatcamTools/ToolPaint.py:2228 +#: flatcamTools/ToolPaint.py:1404 flatcamTools/ToolPaint.py:1814 +#: flatcamTools/ToolPaint.py:2221 msgid "Polygon Paint started ..." msgstr "" -#: flatcamTools/ToolPaint.py:1550 flatcamTools/ToolPaint.py:1621 -#: flatcamTools/ToolPaint.py:1750 flatcamTools/ToolPaint.py:1962 -#: flatcamTools/ToolPaint.py:2032 flatcamTools/ToolPaint.py:2112 -#: flatcamTools/ToolPaint.py:2167 +#: flatcamTools/ToolPaint.py:1454 flatcamTools/ToolPaint.py:1865 +msgid "Painting polygons..." +msgstr "" + +#: flatcamTools/ToolPaint.py:1530 +msgid "Paint Tool. Normal painting all task started." +msgstr "" + +#: flatcamTools/ToolPaint.py:1557 flatcamTools/ToolPaint.py:1703 +#: flatcamTools/ToolPaint.py:1966 flatcamTools/ToolPaint.py:2111 msgid "Painting with tool diameter = " msgstr "" -#: flatcamTools/ToolPaint.py:1610 flatcamTools/ToolPaint.py:1739 +#: flatcamTools/ToolPaint.py:1560 flatcamTools/ToolPaint.py:1706 +#: flatcamTools/ToolPaint.py:1969 flatcamTools/ToolPaint.py:2114 +msgid "started" +msgstr "" + +#: flatcamTools/ToolPaint.py:1617 flatcamTools/ToolPaint.py:1748 msgid "" "Could not do Paint All. Try a different combination of parameters. Or a " "different Method of paint" msgstr "" -#: flatcamTools/ToolPaint.py:1672 +#: flatcamTools/ToolPaint.py:1673 msgid "[success] Paint All Done." msgstr "" -#: flatcamTools/ToolPaint.py:1795 flatcamTools/ToolPaint.py:2212 +#: flatcamTools/ToolPaint.py:1681 +msgid "Paint Tool. Rest machining painting all task started." +msgstr "" + +#: flatcamTools/ToolPaint.py:1798 flatcamTools/ToolPaint.py:2205 msgid "Paint All with Rest-Machining done." msgstr "" -#: flatcamTools/ToolPaint.py:2022 flatcamTools/ToolPaint.py:2157 +#: flatcamTools/ToolPaint.py:1928 +msgid "Paint Tool. Normal painting area task started." +msgstr "" + +#: flatcamTools/ToolPaint.py:2026 flatcamTools/ToolPaint.py:2156 #, python-format msgid "" "Could not do Paint All. Try a different combination of parameters. Or a " @@ -10189,10 +10220,14 @@ msgid "" "%s" msgstr "" -#: flatcamTools/ToolPaint.py:2083 +#: flatcamTools/ToolPaint.py:2081 msgid "[success] Paint Area Done." msgstr "" +#: flatcamTools/ToolPaint.py:2089 +msgid "Paint Tool. Rest machining painting area task started." +msgstr "" + #: flatcamTools/ToolPanelize.py:25 msgid "Panelize PCB" msgstr ""