- 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:
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]

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)
- 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

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
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

View File

@ -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)