- made Set Origin feature, threaded

This commit is contained in:
Marius Stanciu 2019-09-07 19:23:11 +03:00 committed by Marius
parent 97024ed643
commit 65ac58ae83
2 changed files with 56 additions and 29 deletions

View File

@ -192,6 +192,10 @@ class App(QtCore.QObject):
# used to signal that there are arguments for the app
args_at_startup = QtCore.pyqtSignal(list)
# a reusable signal to replot a list of objects
# should be disconnected after use so it can be reused
replot_signal = pyqtSignal(list)
def __init__(self, user_defaults=True, post_gui=None):
"""
Starts the application.
@ -5456,8 +5460,58 @@ class App(QtCore.QObject):
# and ask him to click on the desired position
self.report_usage("on_set_origin()")
def origin_replot():
def worker_task():
with self.proc_container.new(_("Plotting...")):
for obj in self.collection.get_list():
obj.plot()
self.plotcanvas.fit_view()
self.worker_task.emit({'fcn': worker_task, 'params': []})
def on_set_zero_click(event):
# this function will be available only for mouse left click
pos_canvas = self.plotcanvas.translate_coords(event.pos)
if event.button == 1:
if self.grid_status() == True:
pos = self.geo_editor.snap(pos_canvas[0], pos_canvas[1])
else:
pos = pos_canvas
x = 0 - pos[0]
y = 0 - pos[1]
def worker_task():
with self.proc_container.new(_("Setting Origin...")):
for obj in self.collection.get_list():
obj.offset((x, y))
self.object_changed.emit(obj)
# Update the object bounding box options
a, b, c, d = obj.bounds()
obj.options['xmin'] = a
obj.options['ymin'] = b
obj.options['xmax'] = c
obj.options['ymax'] = d
self.inform.emit(_('[success] Origin set ...'))
self.replot_signal.emit([])
self.worker_task.emit({'fcn': worker_task, 'params': []})
self.plotcanvas.vis_disconnect('mouse_press', on_set_zero_click)
self.should_we_save = True
self.inform.emit(_('Click to set the origin ...'))
self.plotcanvas.vis_connect('mouse_press', self.on_set_zero_click)
self.plotcanvas.vis_connect('mouse_press', on_set_zero_click)
# first disconnect it as it may have been used by something else
try:
self.replot_signal.disconnect()
except TypeError:
pass
self.replot_signal[list].connect(origin_replot)
def on_jump_to(self, custom_location=None, fit_center=True):
"""
@ -5723,34 +5777,6 @@ class App(QtCore.QObject):
_("The current task was gracefully closed on user request..."))
self.abort_flag = False
def on_set_zero_click(self, event):
# this function will be available only for mouse left click
pos = []
pos_canvas = self.plotcanvas.translate_coords(event.pos)
if event.button == 1:
if self.grid_status() == True:
pos = self.geo_editor.snap(pos_canvas[0], pos_canvas[1])
else:
pos = pos_canvas
x = 0 - pos[0]
y = 0 - pos[1]
for obj in self.collection.get_list():
obj.offset((x, y))
self.object_changed.emit(obj)
obj.plot()
# Update the object bounding box options
a, b, c, d = obj.bounds()
obj.options['xmin'] = a
obj.options['ymin'] = b
obj.options['xmax'] = c
obj.options['ymax'] = d
# self.plot_all(zoom=False)
self.inform.emit(_('[success] Origin set ...'))
self.plotcanvas.fit_view()
self.plotcanvas.vis_disconnect('mouse_press', self.on_set_zero_click)
self.should_we_save = True
def on_selectall(self):
self.report_usage("on_selectall()")

View File

@ -19,6 +19,7 @@ CAD program, and create G-Code for Isolation routing.
- all transformation functions show now the progress (rotate, mirror, scale, offset, skew)
- made threaded the Offset and Scale operations found in the Selected tab of the object
- corrected some issues and made Move Tool to show correctly when it is moving and when it is offsetting the objects position
- made Set Origin feature, threaded
6.09.2019