- 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
This commit is contained in:
Marius Stanciu 2020-04-13 20:04:44 +03:00 committed by Marius
parent 8a299e8fc8
commit 1b14e9d451
4 changed files with 28 additions and 13 deletions

View File

@ -11888,11 +11888,13 @@ class App(QtCore.QObject):
if silent is False: if silent is False:
self.log.debug(" " + param + " OK!") 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. 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.log.debug("Plot_all()")
self.inform.emit('[success] %s...' % _("Redrawing all objects")) self.inform.emit('[success] %s...' % _("Redrawing all objects"))
@ -11901,11 +11903,14 @@ class App(QtCore.QObject):
def worker_task(obj): def worker_task(obj):
with self.proc_container.new("Plotting"): with self.proc_container.new("Plotting"):
obj.plot(kind=self.defaults["cncjob_plot_kind"]) obj.plot(kind=self.defaults["cncjob_plot_kind"])
if zoom: if fit_view is True:
self.object_plotted.emit(obj) self.object_plotted.emit(obj)
# Send to worker if use_thread is True:
self.worker_task.emit({'fcn': worker_task, 'params': [obj]}) # Send to worker
self.worker_task.emit({'fcn': worker_task, 'params': [obj]})
else:
worker_task(obj)
def register_folder(self, filename): def register_folder(self, filename):
self.defaults["global_last_folder"] = os.path.split(str(filename))[0] self.defaults["global_last_folder"] = os.path.split(str(filename))[0]

View File

@ -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) - multiple fixes in the Tcl commands (especially regarding the interchange between True/false and 1/0 values)
- updated the help for all Tcl Commands - 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 - 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 11.04.2020

View File

@ -23,7 +23,7 @@ class TclCommandDelete(TclCommand):
# Dictionary of types from Tcl command, needs to be ordered , this is for options like -optionname value # Dictionary of types from Tcl command, needs to be ordered , this is for options like -optionname value
option_types = collections.OrderedDict([ option_types = collections.OrderedDict([
('f', bool) ('f', str)
]) ])
# array of mandatory options for current Tcl command: required = {'name','outname'} # 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.', 'main': 'Deletes the given object. If no name is given will delete all objects.',
'args': collections.OrderedDict([ 'args': collections.OrderedDict([
('name', 'Name of the Object.'), ('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' 'examples': ['del new_geo -f True\n'
'delete new_geo -f 1\n' 'delete new_geo -f 1\n'
@ -63,7 +65,7 @@ class TclCommandDelete(TclCommand):
if args['f'] is None: if args['f'] is None:
is_forced = True is_forced = True
else: else:
is_forced = True if eval(str(args['f'])) else False is_forced = True if bool(eval(str(args['f']))) else False
except KeyError: except KeyError:
is_forced = True is_forced = True

View File

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