- In Tool Isolation made sure that the use of ESC key while some processes are active will disconnect the mouse events that may be connected, correctly

This commit is contained in:
Marius Stanciu
2020-05-30 17:15:42 +03:00
committed by Marius
parent 23ee9c8ad1
commit d8bf1a8a4e
3 changed files with 65 additions and 36 deletions

View File

@@ -669,6 +669,10 @@ class ToolIsolation(AppTool, Gerber):
self.pool = self.app.pool
self.results = []
# disconnect flags
self.area_sel_disconnect_flag = False
self.poly_sel_disconnect_flag = False
self.form_fields = {
"tools_iso_passes": self.passes_entry,
"tools_iso_overlap": self.iso_overlap_entry,
@@ -1676,6 +1680,9 @@ class ToolIsolation(AppTool, Gerber):
self.mm = self.app.plotcanvas.graph_event_connect('mouse_move', self.on_mouse_move)
self.kp = self.app.plotcanvas.graph_event_connect('key_press', self.on_key_press)
# disconnect flags
self.area_sel_disconnect_flag = True
elif selection == _("Polygon Selection"):
# disengage the grid snapping since it may be hard to click on polygons with grid snapping on
if self.app.ui.grid_snap_btn.isChecked():
@@ -1693,6 +1700,9 @@ class ToolIsolation(AppTool, Gerber):
else:
self.app.plotcanvas.graph_event_disconnect(self.app.mr)
# disconnect flags
self.poly_sel_disconnect_flag = True
self.app.inform.emit('[WARNING_NOTCL] %s' % _("Click on a polygon to isolate it."))
elif selection == _("Reference Object"):
ref_obj = self.app.collection.get_by_name(self.reference_combo.get_value())
@@ -1800,24 +1810,9 @@ class ToolIsolation(AppTool, Gerber):
self.app.proc_container.update_view_text(' %s' % _("Intersecting Geo"))
iso_geo = self.area_intersection(iso_geo, intersection_geo=limited_area)
# transfer the Cut Z and Vtip and VAngle values in case that we use the V-Shape tool in
# Gerber UI
if tool_type.lower() == 'v':
new_cutz = self.cutz_entry.get_value()
new_vtipdia = self.tipdia_entry.get_value()
new_vtipangle = self.tipangle_entry.get_value()
tool_type = 'V'
tool_data.update({
"name": iso_name,
"cutz": new_cutz,
"vtipdia": new_vtipdia,
"vtipangle": new_vtipangle,
})
else:
tool_data.update({
"name": iso_name,
})
tool_type = 'C1'
tool_data.update({
"name": iso_name,
})
def iso_init(geo_obj, fc_obj):
# Propagate options
@@ -2148,10 +2143,14 @@ class ToolIsolation(AppTool, Gerber):
geo_obj.multigeo = True
else:
if to_follow:
passes_no = 1
geo_obj.multigeo = False
else:
passes_no = float(tools_storage[0]['data']['tools_iso_passes'])
geo_obj.multigeo = True if passes_no > 1 else False
passes_no = 1
for ky in tools_storage.keys():
passes_no = float(tools_storage[ky]['data']['tools_iso_passes'])
geo_obj.multigeo = True if passes_no > 1 else False
break
geo_obj.multigeo = True if passes_no > 1 else False
# detect if solid_geometry is empty and this require list flattening which is "heavy"
# or just looking in the lists (they are one level depth) and if any is not empty
@@ -2361,6 +2360,9 @@ class ToolIsolation(AppTool, Gerber):
self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release',
self.app.on_mouse_click_release_over_plot)
# disconnect flags
self.poly_sel_disconnect_flag = False
self.app.tool_shapes.clear(update=True)
if self.poly_dict:
@@ -2547,6 +2549,9 @@ class ToolIsolation(AppTool, Gerber):
self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release',
self.app.on_mouse_click_release_over_plot)
# disconnect flags
self.area_sel_disconnect_flag = False
if len(self.sel_rect) == 0:
return
@@ -2651,21 +2656,39 @@ class ToolIsolation(AppTool, Gerber):
key = event.key
if key == QtCore.Qt.Key_Escape or key == 'Escape':
if self.app.is_legacy is False:
self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_mouse_release)
self.app.plotcanvas.graph_event_disconnect('mouse_move', self.on_mouse_move)
self.app.plotcanvas.graph_event_disconnect('key_press', self.on_key_press)
else:
self.app.plotcanvas.graph_event_disconnect(self.mr)
self.app.plotcanvas.graph_event_disconnect(self.mm)
self.app.plotcanvas.graph_event_disconnect(self.kp)
self.app.mp = self.app.plotcanvas.graph_event_connect('mouse_press',
self.app.on_mouse_click_over_plot)
self.app.mm = self.app.plotcanvas.graph_event_connect('mouse_move',
self.app.on_mouse_move_over_plot)
self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release',
self.app.on_mouse_click_release_over_plot)
if self.area_sel_disconnect_flag is True:
if self.app.is_legacy is False:
self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_mouse_release)
self.app.plotcanvas.graph_event_disconnect('mouse_move', self.on_mouse_move)
self.app.plotcanvas.graph_event_disconnect('key_press', self.on_key_press)
else:
self.app.plotcanvas.graph_event_disconnect(self.mr)
self.app.plotcanvas.graph_event_disconnect(self.mm)
self.app.plotcanvas.graph_event_disconnect(self.kp)
self.app.mp = self.app.plotcanvas.graph_event_connect('mouse_press',
self.app.on_mouse_click_over_plot)
self.app.mm = self.app.plotcanvas.graph_event_connect('mouse_move',
self.app.on_mouse_move_over_plot)
self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release',
self.app.on_mouse_click_release_over_plot)
if self.poly_sel_disconnect_flag is False:
# restore the Grid snapping if it was active before
if self.grid_status_memory is True:
self.app.ui.grid_snap_btn.trigger()
if self.app.is_legacy is False:
self.app.plotcanvas.graph_event_disconnect('mouse_release', self.on_poly_mouse_click_release)
self.app.plotcanvas.graph_event_disconnect('key_press', self.on_key_pres)
else:
self.app.plotcanvas.graph_event_disconnect(self.mr)
self.app.plotcanvas.graph_event_disconnect(self.kp)
self.app.mr = self.app.plotcanvas.graph_event_connect('mouse_release',
self.app.on_mouse_click_release_over_plot)
self.points = []
self.poly_drawn = False
self.delete_moving_selection_shape()
@@ -2909,6 +2932,7 @@ class ToolIsolation(AppTool, Gerber):
'solid_geometry': []
}
})
self.iso_tools[tooluid]['data']['name'] = '_iso'
self.app.inform.emit('[success] %s' % _("New tool added to Tool Table."))