فهرست منبع

- more customization for the progress display in case of NCC Tool, Paint Tool and for the Gcode generation

Marius Stanciu 6 سال پیش
والد
کامیت
24e29bda55
5فایلهای تغییر یافته به همراه293 افزوده شده و 232 حذف شده
  1. 1 0
      README.md
  2. 45 35
      camlib.py
  3. 73 51
      flatcamTools/ToolNonCopperClear.py
  4. 41 48
      flatcamTools/ToolPaint.py
  5. 133 98
      locale_template/strings.pot

+ 1 - 0
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

+ 45 - 35
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)

+ 73 - 51
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:

+ 41 - 48
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))
 

+ 133 - 98
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
-msgid "Isolation geometry could not be generated."
+#: 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:1585
-#: flatcamTools/ToolNonCopperClear.py:1592
-#: flatcamTools/ToolNonCopperClear.py:1882
-msgid "[WARNING_NOTCL] Buffering ..."
+#: 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:1597
-#: flatcamTools/ToolNonCopperClear.py:1887
+#: flatcamTools/ToolNonCopperClear.py:1536
+#: flatcamTools/ToolNonCopperClear.py:1835
+msgid "Isolation geometry could not be generated."
+msgstr ""
+
+#: 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:1631
+#: flatcamTools/ToolNonCopperClear.py:1936
+msgid "NCC Tool clearing with tool diameter = "
 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:1634
+#: flatcamTools/ToolNonCopperClear.py:1939
+msgid "started."
 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: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 ""