소스 검색

- updated the App.plot_all() method giving it the possibility to be run as threaded or not
- updated the Tcl command PlotAll to be able to run threaded or not

Marius Stanciu 5 년 전
부모
커밋
1b14e9d451
4개의 변경된 파일28개의 추가작업 그리고 13개의 파일을 삭제
  1. 10 5
      FlatCAMApp.py
  2. 2 0
      README.md
  3. 5 3
      tclCommands/TclCommandDelete.py
  4. 11 5
      tclCommands/TclCommandPlotAll.py

+ 10 - 5
FlatCAMApp.py

@@ -11888,11 +11888,13 @@ class App(QtCore.QObject):
                         if silent is False:
                             self.log.debug("  " + param + " OK!")
 
-    def plot_all(self, zoom=True):
+    def plot_all(self, fit_view=True, use_thread=True):
         """
         Re-generates all plots from all objects.
 
-        :return: None
+        :param fit_view:    if True will plot the objects and will adjust the zoom to fit all plotted objects into view
+        :param use_thread:  if True will use threading for plotting the objects
+        :return:
         """
         self.log.debug("Plot_all()")
         self.inform.emit('[success] %s...' % _("Redrawing all objects"))
@@ -11901,11 +11903,14 @@ class App(QtCore.QObject):
             def worker_task(obj):
                 with self.proc_container.new("Plotting"):
                     obj.plot(kind=self.defaults["cncjob_plot_kind"])
-                    if zoom:
+                    if fit_view is True:
                         self.object_plotted.emit(obj)
 
-            # Send to worker
-            self.worker_task.emit({'fcn': worker_task, 'params': [obj]})
+            if use_thread is True:
+                # Send to worker
+                self.worker_task.emit({'fcn': worker_task, 'params': [obj]})
+            else:
+                worker_task(obj)
 
     def register_folder(self, filename):
         self.defaults["global_last_folder"] = os.path.split(str(filename))[0]

+ 2 - 0
README.md

@@ -15,6 +15,8 @@ CAD program, and create G-Code for Isolation routing.
 - multiple fixes in the Tcl commands (especially regarding the interchange between True/false and 1/0 values)
 - updated the help for all Tcl Commands
 - in Tcl Shell, the 'help' command will add also a brief description for each command in the list
+- updated the App.plot_all() method giving it the possibility to be run as threaded or not
+- updated the Tcl command PlotAll to be able to run threaded or not
 
 11.04.2020 
 

+ 5 - 3
tclCommands/TclCommandDelete.py

@@ -23,7 +23,7 @@ class TclCommandDelete(TclCommand):
 
     # Dictionary of types from Tcl command, needs to be ordered , this  is  for options  like -optionname value
     option_types = collections.OrderedDict([
-        ('f', bool)
+        ('f', str)
     ])
 
     # array of mandatory options for current Tcl command: required = {'name','outname'}
@@ -34,7 +34,9 @@ class TclCommandDelete(TclCommand):
         'main': 'Deletes the given object. If no name is given will delete all objects.',
         'args': collections.OrderedDict([
             ('name', 'Name of the Object.'),
-            ('f', 'Use this parameter to force deletion.')
+            ('f', 'Use this parameter to force deletion.\n'
+                  'Can be used without value which will be auto assumed to be True.\n'
+                  'Or it can have a value: True (1) or False (0).')
         ]),
         'examples': ['del new_geo -f True\n'
                      'delete new_geo -f 1\n'
@@ -63,7 +65,7 @@ class TclCommandDelete(TclCommand):
                 if args['f'] is None:
                     is_forced = True
                 else:
-                    is_forced = True if eval(str(args['f'])) else False
+                    is_forced = True if bool(eval(str(args['f']))) else False
             except KeyError:
                 is_forced = True
 

+ 11 - 5
tclCommands/TclCommandPlotAll.py

@@ -1,9 +1,9 @@
-from tclCommands.TclCommand import TclCommand
+from tclCommands.TclCommand import TclCommandSignaled
 
 import collections
 
 
-class TclCommandPlotAll(TclCommand):
+class TclCommandPlotAll(TclCommandSignaled):
     """
     Tcl shell command to update the plot on the user interface.
 
@@ -23,7 +23,7 @@ class TclCommandPlotAll(TclCommand):
 
     # Dictionary of types from Tcl command, needs to be ordered , this  is  for options  like -optionname value
     option_types = collections.OrderedDict([
-
+        ('use_thread', str)
     ])
 
     # array of mandatory options for current Tcl command: required = {'name','outname'}
@@ -33,7 +33,7 @@ class TclCommandPlotAll(TclCommand):
     help = {
         'main': "Plots all objects on GUI.",
         'args': collections.OrderedDict([
-
+            ('use_thread', 'If to use multithreading: True (1) or False (0).')
         ]),
         'examples': ['plot_all']
     }
@@ -45,5 +45,11 @@ class TclCommandPlotAll(TclCommand):
         :param unnamed_args:
         :return:
         """
+
+        if 'use_thread' in args:
+            threaded = bool(eval(args['use_thread']))
+        else:
+            threaded = False
+
         if self.app.cmd_line_headless != 1:
-            self.app.plot_all()
+            self.app.plot_all(use_thread=threaded)