- in Paint Tool added ability to add multiple zones to paint when Area option is checked and the modifier key is pressed (either CTRL or SHIFT as set in Preferences). Right click of the mouse is an additional way to finish the job.

- in Paint Tool and NCC Tool, for the Area option, now mouse panning is allowed while adding areas to process
This commit is contained in:
Marius Stanciu 2019-08-23 16:44:41 +03:00
parent 2fbb480f86
commit 23f85b71e9
3 changed files with 66 additions and 13 deletions

View File

@ -15,6 +15,8 @@ CAD program, and create G-Code for Isolation routing.
- in Tool Cutout tool I've added the possibility to create a cutout without bridge gaps; added the 'None' option in the Gaps combobox
- in NCC Tool added ability to add multiple zones to clear when Area option is checked and the modifier key is pressed (either CTRL or SHIFT as set in Preferences). Right click of the mouse is an additional way to finish the job.
- fixed a bug in Excellon Editor that made that the selection of drills is always cumulative
- in Paint Tool added ability to add multiple zones to paint when Area option is checked and the modifier key is pressed (either CTRL or SHIFT as set in Preferences). Right click of the mouse is an additional way to finish the job.
- in Paint Tool and NCC Tool, for the Area option, now mouse panning is allowed while adding areas to process
22.08.2019

View File

@ -378,6 +378,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
self.first_click = False
self.cursor_pos = None
self.mouse_is_dragging = False
self.addtool_btn.clicked.connect(self.on_tool_add)
self.addtool_entry.returnPressed.connect(self.on_tool_add)
@ -845,7 +846,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
tooldia = float('%.4f' % float(self.tools_table.item(0, 1).text()))
# To be called after clicking on the plot.
def on_mouse_press(event):
def on_mouse_release(event):
# do paint single only for left mouse clicks
if event.button == 1:
if self.first_click is False:
@ -884,7 +885,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
self.first_click = False
return
self.app.plotcanvas.vis_disconnect('mouse_press', on_mouse_press)
self.app.plotcanvas.vis_disconnect('mouse_release', on_mouse_release)
self.app.plotcanvas.vis_disconnect('mouse_move', on_mouse_move)
self.app.plotcanvas.vis_connect('mouse_press', self.app.on_mouse_click_over_plot)
@ -892,9 +893,9 @@ class NonCopperClear(FlatCAMTool, Gerber):
self.app.plotcanvas.vis_connect('mouse_release', self.app.on_mouse_click_release_over_plot)
self.on_ncc()
elif event.button == 2:
elif event.button == 2 and self.first_click is False and self.mouse_is_dragging is False:
self.first_click = False
self.app.plotcanvas.vis_disconnect('mouse_press', on_mouse_press)
self.app.plotcanvas.vis_disconnect('mouse_release', on_mouse_release)
self.app.plotcanvas.vis_disconnect('mouse_move', on_mouse_move)
self.app.plotcanvas.vis_connect('mouse_press', self.app.on_mouse_click_over_plot)
@ -908,6 +909,12 @@ class NonCopperClear(FlatCAMTool, Gerber):
curr_pos = self.app.plotcanvas.vispy_canvas.translate_coords(event.pos)
self.app.app_cursor.enabled = False
if event.button == 2:
if event.is_dragging is True:
self.mouse_is_dragging = True
else:
self.mouse_is_dragging = False
if self.app.grid_status() == True:
self.app.app_cursor.enabled = True
# Update cursor
@ -925,7 +932,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
self.app.plotcanvas.vis_disconnect('mouse_move', self.app.on_mouse_move_over_plot)
self.app.plotcanvas.vis_disconnect('mouse_release', self.app.on_mouse_click_release_over_plot)
self.app.plotcanvas.vis_connect('mouse_press', on_mouse_press)
self.app.plotcanvas.vis_connect('mouse_release', on_mouse_release)
self.app.plotcanvas.vis_connect('mouse_move', on_mouse_move)
def on_ncc(self):

View File

@ -360,6 +360,9 @@ class ToolPaint(FlatCAMTool, Gerber):
self.tooluid = 0
self.first_click = False
self.cursor_pos = None
self.mouse_is_dragging = False
self.sel_rect = []
# store here the default data for Geometry Data
self.default_data = {}
@ -964,7 +967,7 @@ class ToolPaint(FlatCAMTool, Gerber):
tooldia = float('%.4f' % float(self.tools_table.item(0, 1).text()))
# To be called after clicking on the plot.
def on_mouse_press(event):
def on_mouse_release(event):
# do paint single only for left mouse clicks
if event.button == 1:
if not self.first_click:
@ -975,8 +978,7 @@ class ToolPaint(FlatCAMTool, Gerber):
if self.app.grid_status() == True:
self.cursor_pos = self.app.geo_editor.snap(self.cursor_pos[0], self.cursor_pos[1])
else:
self.app.inform.emit(_("Done."))
self.first_click = False
self.app.inform.emit(_("Zone added. Right click to finish."))
self.app.delete_selection_shape()
curr_pos = self.app.plotcanvas.vispy_canvas.translate_coords(event.pos)
@ -989,27 +991,63 @@ class ToolPaint(FlatCAMTool, Gerber):
pt2 = (x1, y0)
pt3 = (x1, y1)
pt4 = (x0, y1)
sel_rect = Polygon([pt1, pt2, pt3, pt4])
self.sel_rect.append(Polygon([pt1, pt2, pt3, pt4]))
modifiers = QtWidgets.QApplication.keyboardModifiers()
if modifiers == QtCore.Qt.ShiftModifier:
mod_key = 'Shift'
elif modifiers == QtCore.Qt.ControlModifier:
mod_key = 'Control'
else:
mod_key = None
if mod_key == self.app.defaults["global_mselect_key"]:
self.first_click = False
return
self.sel_rect = cascaded_union(self.sel_rect)
self.paint_poly_area(obj=self.paint_obj,
sel_obj= sel_rect,
sel_obj= self.sel_rect,
outname=o_name,
overlap=overlap,
connect=connect,
contour=contour)
self.app.plotcanvas.vis_disconnect('mouse_press', on_mouse_press)
self.app.plotcanvas.vis_disconnect('mouse_release', on_mouse_release)
self.app.plotcanvas.vis_disconnect('mouse_move', on_mouse_move)
self.app.plotcanvas.vis_connect('mouse_press', self.app.on_mouse_click_over_plot)
self.app.plotcanvas.vis_connect('mouse_move', self.app.on_mouse_move_over_plot)
self.app.plotcanvas.vis_connect('mouse_release', self.app.on_mouse_click_release_over_plot)
elif event.button == 2 and self.first_click is False and self.mouse_is_dragging is False:
self.first_click = False
self.app.plotcanvas.vis_disconnect('mouse_release', on_mouse_release)
self.app.plotcanvas.vis_disconnect('mouse_move', on_mouse_move)
self.app.plotcanvas.vis_connect('mouse_press', self.app.on_mouse_click_over_plot)
self.app.plotcanvas.vis_connect('mouse_move', self.app.on_mouse_move_over_plot)
self.app.plotcanvas.vis_connect('mouse_release', self.app.on_mouse_click_release_over_plot)
self.sel_rect = cascaded_union(self.sel_rect)
self.paint_poly_area(obj=self.paint_obj,
sel_obj=self.sel_rect,
outname=o_name,
overlap=overlap,
connect=connect,
contour=contour)
# called on mouse move
def on_mouse_move(event):
curr_pos = self.app.plotcanvas.vispy_canvas.translate_coords(event.pos)
self.app.app_cursor.enabled = False
if event.button == 2:
if event.is_dragging is True:
self.mouse_is_dragging = True
else:
self.mouse_is_dragging = False
if self.app.grid_status() == True:
self.app.app_cursor.enabled = True
# Update cursor
@ -1027,7 +1065,7 @@ class ToolPaint(FlatCAMTool, Gerber):
self.app.plotcanvas.vis_disconnect('mouse_move', self.app.on_mouse_move_over_plot)
self.app.plotcanvas.vis_disconnect('mouse_release', self.app.on_mouse_click_release_over_plot)
self.app.plotcanvas.vis_connect('mouse_press', on_mouse_press)
self.app.plotcanvas.vis_connect('mouse_release', on_mouse_release)
self.app.plotcanvas.vis_connect('mouse_move', on_mouse_move)
elif select_method == 'ref':
@ -1611,7 +1649,13 @@ class ToolPaint(FlatCAMTool, Gerber):
pass
geo_to_paint = []
for poly in obj.solid_geometry:
if not isinstance(obj.solid_geometry, list):
target_geo = [obj.solid_geometry]
else:
target_geo = obj.solid_geometry
print(target_geo)
print(sel_obj)
for poly in target_geo:
new_pol = poly.intersection(sel_obj)
geo_to_paint.append(new_pol)