- in Preferences, more Plugins preferences UI is upgraded to the new look

- In Paint Plugin fixed the Area select mode to work with Geometry object created by the Geometry Editor
- in Paint Plugin some changes in the way the source object is autoloaded
- in Paint, NCC and Cutout Plugins when using a mode that require to be terminated (by mouse RMB or ESC key) the notebook UI element is disabled until this is done
This commit is contained in:
Marius Stanciu
2021-10-02 18:02:27 +03:00
committed by Marius
parent a1530963f5
commit bc2f31aa90
13 changed files with 380 additions and 283 deletions

View File

@@ -1512,8 +1512,11 @@ class CutOut(AppTool):
int_list = []
for b_geo in buff_man_geo.geoms:
int_list += b_geo.interiors
else:
elif isinstance(buff_man_geo, Polygon):
int_list = buff_man_geo.interiors
else:
self.app.log.debug("Not supported geometry at the moment: %s" % type(buff_man_geo))
return
self.mb_manual_solid_geo = self.flatten(int_list)
self.cutting_gapsize = self.ui.gapsize.get_value()
@@ -1547,7 +1550,10 @@ class CutOut(AppTool):
if self.ui.big_cursor_cb.get_value():
self.old_cursor_type = self.app.defaults["global_cursor_type"]
self.app.on_cursor_type(val="big")
self.app.defaults['global_selection_shape'] = False
# disable the notebook until finished
self.app.ui.notebook.setDisabled(True)
def on_manual_cutout(self, click_pos):
@@ -1833,6 +1839,7 @@ class CutOut(AppTool):
self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]})
self.app.ui.notebook.setDisabled(False)
self.app.inform.emit('[success] %s' % _("Finished manual adding of gaps."))
def on_mouse_move(self, event):
@@ -1903,32 +1910,24 @@ class CutOut(AppTool):
angle = 0
return angle
r_man_geo = man_geo.geoms if isinstance(man_geo, (MultiPolygon, MultiLineString)) else man_geo
try:
rot_angle = 0
for geo_el in man_geo:
for geo_el in r_man_geo:
if isinstance(geo_el, Polygon):
work_geo = geo_el.exterior
if cut_geo.intersects(work_geo):
rot_angle = get_angle(geo=work_geo)
else:
rot_angle = 0
rot_angle = get_angle(geo=work_geo) if cut_geo.intersects(work_geo) else 0
else:
rot_angle = 0
if cut_geo.intersects(geo_el):
rot_angle = get_angle(geo=geo_el)
rot_angle = get_angle(geo=geo_el) if cut_geo.intersects(geo_el) else 0
if rot_angle != 0:
break
except TypeError:
if isinstance(man_geo, Polygon):
work_geo = man_geo.exterior
if cut_geo.intersects(work_geo):
rot_angle = get_angle(geo=work_geo)
else:
rot_angle = 0
if isinstance(r_man_geo, Polygon):
work_geo = r_man_geo.exterior
rot_angle = get_angle(geo=work_geo) if cut_geo.intersects(work_geo) else 0
else:
rot_angle = 0
if cut_geo.intersects(man_geo):
rot_angle = get_angle(geo=man_geo)
rot_angle = get_angle(geo=r_man_geo) if cut_geo.intersects(r_man_geo) else 0
# rotate only if there is an angle to rotate to
if rot_angle != 0:
@@ -2008,6 +2007,10 @@ class CutOut(AppTool):
self.app.geo_editor.tool_shape.clear(update=True)
self.app.geo_editor.tool_shape.enabled = False
# restore the notebook state
self.app.ui.notebook.setDisabled(False)
self.app.inform.emit("[WARNING_NOTCL] %s" % _("Cancelled."))
# Grid toggle
if key == QtCore.Qt.Key.Key_G or key == 'G':
self.app.ui.grid_snap_btn.trigger()