Преглед изворни кода

- fixed zoom directions legacy graphic engine (previous commit)
- fixed display of MultiGeo geometries in legacy graphic engine
- fixed Paint tool to work in legacy graphic engine

Marius Stanciu пре 6 година
родитељ
комит
5a4f5dbe2f
4 измењених фајлова са 69 додато и 60 уклоњено
  1. 2 14
      FlatCAMObj.py
  2. 7 1
      README.md
  3. 11 7
      flatcamGUI/PlotCanvasLegacy.py
  4. 49 38
      flatcamTools/ToolPaint.py

+ 2 - 14
FlatCAMObj.py

@@ -5364,7 +5364,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
 
 
         return factor
         return factor
 
 
-    def plot_element(self, element, color='red', visible=None):
+    def plot_element(self, element, color='#FF0000FF', visible=None):
 
 
         visible = visible if visible else self.options['plot']
         visible = visible if visible else self.options['plot']
 
 
@@ -5375,19 +5375,7 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
         except TypeError:  # Element is not iterable...
         except TypeError:  # Element is not iterable...
             # if self.app.is_legacy is False:
             # if self.app.is_legacy is False:
             self.add_shape(shape=element, color=color, visible=visible, layer=0)
             self.add_shape(shape=element, color=color, visible=visible, layer=0)
-            # else:
-            #     if type(element) == Polygon:
-            #         x, y = element.exterior.coords.xy
-            #         self.axes.plot(x, y, 'r-')
-            #         for ints in element.interiors:
-            #             x, y = ints.coords.xy
-            #             self.axes.plot(x, y, 'r-')
-            #         return
-            #
-            #     if type(element) == LineString or type(element) == LinearRing:
-            #         x, y = element.coords.xy
-            #         self.axes.plot(x, y, 'r-')
-            #         return
+
 
 
     def plot(self, visible=None, kind=None):
     def plot(self, visible=None, kind=None):
         """
         """

+ 7 - 1
README.md

@@ -9,6 +9,12 @@ CAD program, and create G-Code for Isolation routing.
 
 
 =================================================
 =================================================
 
 
+22.09.2019
+
+- fixed zoom directions legacy graphic engine (previous commit)
+- fixed display of MultiGeo geometries in legacy graphic engine
+- fixed Paint tool to work in legacy graphic engine
+
 21.09.2019
 21.09.2019
 
 
 - fixed Measuring Tool in legacy graphic engine
 - fixed Measuring Tool in legacy graphic engine
@@ -24,7 +30,7 @@ CAD program, and create G-Code for Isolation routing.
 - fixed Geometry Editor to work in legacy graphic engine
 - fixed Geometry Editor to work in legacy graphic engine
 - fixed Excellon Editor to work in legacy graphic engine
 - fixed Excellon Editor to work in legacy graphic engine
 - fixed Gerber Editor to work in legacy graphic engine
 - fixed Gerber Editor to work in legacy graphic engine
-- fixed NCC tool to work in egacy graphic engine
+- fixed NCC tool to work in legacy graphic engine
 
 
 20.09.2019
 20.09.2019
 
 

+ 11 - 7
flatcamGUI/PlotCanvasLegacy.py

@@ -154,7 +154,6 @@ class PlotCanvasLegacy(QtCore.QObject):
         self.canvas.setFocus()
         self.canvas.setFocus()
         self.native = self.canvas
         self.native = self.canvas
 
 
-
         # self.canvas.set_can_focus(True)  # For key press
         # self.canvas.set_can_focus(True)  # For key press
 
 
         # Attach to parent
         # Attach to parent
@@ -686,7 +685,7 @@ class MplCursor(Cursor):
         self._update()
         self._update()
 
 
 
 
-class ShapeCollectionLegacy():
+class ShapeCollectionLegacy:
 
 
     def __init__(self, obj, app, name=None):
     def __init__(self, obj, app, name=None):
 
 
@@ -702,6 +701,8 @@ class ShapeCollectionLegacy():
         self._visible = True
         self._visible = True
         self._update = False
         self._update = False
         self._alpha = None
         self._alpha = None
+        self._tool_tolerance = None
+        self._tooldia = None
 
 
         self._obj = None
         self._obj = None
         self._gcode_parsed = None
         self._gcode_parsed = None
@@ -783,6 +784,7 @@ class ShapeCollectionLegacy():
             obj_type = self.obj.kind
             obj_type = self.obj.kind
         except AttributeError:
         except AttributeError:
             obj_type = 'utility'
             obj_type = 'utility'
+
         if self._visible:
         if self._visible:
             for element in local_shapes:
             for element in local_shapes:
                 if obj_type == 'excellon':
                 if obj_type == 'excellon':
@@ -800,17 +802,19 @@ class ShapeCollectionLegacy():
                         for ints in local_shapes[element]['shape'].interiors:
                         for ints in local_shapes[element]['shape'].interiors:
                             x, y = ints.coords.xy
                             x, y = ints.coords.xy
                             self.axes.plot(x, y, 'o-')
                             self.axes.plot(x, y, 'o-')
-                elif obj_type== 'geometry':
+                elif obj_type == 'geometry':
                     if type(local_shapes[element]['shape']) == Polygon:
                     if type(local_shapes[element]['shape']) == Polygon:
                         x, y = local_shapes[element]['shape'].exterior.coords.xy
                         x, y = local_shapes[element]['shape'].exterior.coords.xy
                         self.axes.plot(x, y, local_shapes[element]['color'], linestyle='-')
                         self.axes.plot(x, y, local_shapes[element]['color'], linestyle='-')
                         for ints in local_shapes[element]['shape'].interiors:
                         for ints in local_shapes[element]['shape'].interiors:
                             x, y = ints.coords.xy
                             x, y = ints.coords.xy
                             self.axes.plot(x, y, local_shapes[element]['color'], linestyle='-')
                             self.axes.plot(x, y, local_shapes[element]['color'], linestyle='-')
-                    elif type(element) == LineString or type(element) == LinearRing:
-                        x, y = element.coords.xy
-                        self.axes.plot(x, y, local_shapes[element]['color'], marker='-')
-                        return
+                    elif type(local_shapes[element]['shape']) == LineString or \
+                            type(local_shapes[element]['shape']) == LinearRing:
+
+                        x, y = local_shapes[element]['shape'].coords.xy
+                        self.axes.plot(x, y, local_shapes[element]['color'], linestyle='-')
+
                 elif obj_type == 'gerber':
                 elif obj_type == 'gerber':
                     if self.obj.options["multicolored"]:
                     if self.obj.options["multicolored"]:
                         linespec = '-'
                         linespec = '-'

+ 49 - 38
flatcamTools/ToolPaint.py

@@ -364,6 +364,9 @@ class ToolPaint(FlatCAMTool, Gerber):
         self.cursor_pos = None
         self.cursor_pos = None
         self.mouse_is_dragging = False
         self.mouse_is_dragging = False
 
 
+        self.mm = None
+        self.mp = None
+
         self.sel_rect = []
         self.sel_rect = []
 
 
         # store here the default data for Geometry Data
         # store here the default data for Geometry Data
@@ -1005,7 +1008,10 @@ class ToolPaint(FlatCAMTool, Gerber):
                 # do paint single only for left mouse clicks
                 # do paint single only for left mouse clicks
                 if event.button == 1:
                 if event.button == 1:
                     self.app.inform.emit(_("Painting polygon..."))
                     self.app.inform.emit(_("Painting polygon..."))
-                    self.app.plotcanvas.graph_event_disconnect('mouse_press', doit)
+                    if self.app.is_legacy:
+                        self.app.plotcanvas.graph_event_disconnect('mouse_press', doit)
+                    else:
+                        self.app.plotcanvas.graph_event_disconnect(self.mp)
 
 
                     pos = self.app.plotcanvas.translate_coords(event.pos)
                     pos = self.app.plotcanvas.translate_coords(event.pos)
                     if self.app.grid_status() == True:
                     if self.app.grid_status() == True:
@@ -1039,6 +1045,23 @@ class ToolPaint(FlatCAMTool, Gerber):
 
 
             # To be called after clicking on the plot.
             # To be called after clicking on the plot.
             def on_mouse_release(event):
             def on_mouse_release(event):
+                if self.app.is_legacy is False:
+                    event_pos = event.pos
+                    event_is_dragging = event.is_dragging
+                    right_button = 2
+                else:
+                    event_pos = (event.xdata, event.ydata)
+                    event_is_dragging = self.app.plotcanvas.is_dragging
+                    right_button = 3
+
+                try:
+                    x = float(event_pos[0])
+                    y = float(event_pos[1])
+                except TypeError:
+                    return
+
+                event_pos = (x, y)
+
                 # do paint single only for left mouse clicks
                 # do paint single only for left mouse clicks
                 if event.button == 1:
                 if event.button == 1:
                     if not self.first_click:
                     if not self.first_click:
@@ -1046,14 +1069,14 @@ class ToolPaint(FlatCAMTool, Gerber):
                         self.app.inform.emit('[WARNING_NOTCL] %s' %
                         self.app.inform.emit('[WARNING_NOTCL] %s' %
                                              _("Click the end point of the paint area."))
                                              _("Click the end point of the paint area."))
 
 
-                        self.cursor_pos = self.app.plotcanvas.translate_coords(event.pos)
+                        self.cursor_pos = self.app.plotcanvas.translate_coords(event_pos)
                         if self.app.grid_status() == True:
                         if self.app.grid_status() == True:
                             self.cursor_pos = self.app.geo_editor.snap(self.cursor_pos[0], self.cursor_pos[1])
                             self.cursor_pos = self.app.geo_editor.snap(self.cursor_pos[0], self.cursor_pos[1])
                     else:
                     else:
                         self.app.inform.emit(_("Zone added. Click to start adding next zone or right click to finish."))
                         self.app.inform.emit(_("Zone added. Click to start adding next zone or right click to finish."))
                         self.app.delete_selection_shape()
                         self.app.delete_selection_shape()
 
 
-                        curr_pos = self.app.plotcanvas.translate_coords(event.pos)
+                        curr_pos = self.app.plotcanvas.translate_coords(event_pos)
                         if self.app.grid_status() == True:
                         if self.app.grid_status() == True:
                             curr_pos = self.app.geo_editor.snap(curr_pos[0], curr_pos[1])
                             curr_pos = self.app.geo_editor.snap(curr_pos[0], curr_pos[1])
 
 
@@ -1066,35 +1089,8 @@ class ToolPaint(FlatCAMTool, Gerber):
                         self.sel_rect.append(Polygon([pt1, pt2, pt3, pt4]))
                         self.sel_rect.append(Polygon([pt1, pt2, pt3, pt4]))
                         self.first_click = False
                         self.first_click = False
                         return
                         return
-                        # 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,
-                        #                      tooldia=tooldia_list,
-                        #                      sel_obj= self.sel_rect,
-                        #                      outname=o_name,
-                        #                      overlap=overlap,
-                        #                      connect=connect,
-                        #                      contour=contour)
-                        #
-                        # self.app.plotcanvas.graph_event_disconnect('mouse_release', on_mouse_release)
-                        # self.app.plotcanvas.graph_event_disconnect('mouse_move', on_mouse_move)
-                        #
-                        # self.app.plotcanvas.graph_event_connect('mouse_press', self.app.on_mouse_click_over_plot)
-                        # self.app.plotcanvas.graph_event_connect('mouse_move', self.app.on_mouse_move_over_plot)
-                        # self.app.plotcanvas.graph_event_connect('mouse_release', self.app.on_mouse_click_release_over_plot)
-                elif event.button == 2 and self.mouse_is_dragging is False:
+
+                elif event.button == right_button and self.mouse_is_dragging is False:
                     self.first_click = False
                     self.first_click = False
 
 
                     if self.app.is_legacy is False:
                     if self.app.is_legacy is False:
@@ -1125,10 +1121,25 @@ class ToolPaint(FlatCAMTool, Gerber):
 
 
             # called on mouse move
             # called on mouse move
             def on_mouse_move(event):
             def on_mouse_move(event):
-                curr_pos = self.app.plotcanvas.translate_coords(event.pos)
+                if self.app.is_legacy is False:
+                    event_pos = event.pos
+                    event_is_dragging = event.is_dragging
+                    right_button = 2
+                else:
+                    event_pos = (event.xdata, event.ydata)
+                    event_is_dragging = self.app.plotcanvas.is_dragging
+                    right_button = 3
+
+                try:
+                    x = float(event_pos[0])
+                    y = float(event_pos[1])
+                except TypeError:
+                    return
+
+                curr_pos = self.app.plotcanvas.translate_coords((x, y))
 
 
                 # detect mouse dragging motion
                 # detect mouse dragging motion
-                if event.is_dragging is True:
+                if event_is_dragging == 1:
                     self.mouse_is_dragging = True
                     self.mouse_is_dragging = True
                 else:
                 else:
                     self.mouse_is_dragging = False
                     self.mouse_is_dragging = False
@@ -1137,15 +1148,15 @@ class ToolPaint(FlatCAMTool, Gerber):
                 if self.app.grid_status() == True:
                 if self.app.grid_status() == True:
                     # Update cursor
                     # Update cursor
                     curr_pos = self.app.geo_editor.snap(curr_pos[0], curr_pos[1])
                     curr_pos = self.app.geo_editor.snap(curr_pos[0], curr_pos[1])
-                    self.app.app_cursor.set_data(np.asarray([(curr_pos[0], curr_pos[1])]),
-                                                 symbol='++', edge_color='black', size=20)
+                    if self.app.is_legacy is False:
+                        self.app.app_cursor.set_data(np.asarray([(curr_pos[0], curr_pos[1])]),
+                                                     symbol='++', edge_color='black', size=20)
 
 
                 # draw the utility geometry
                 # draw the utility geometry
                 if self.first_click:
                 if self.first_click:
                     self.app.delete_selection_shape()
                     self.app.delete_selection_shape()
                     self.app.draw_moving_selection_shape(old_coords=(self.cursor_pos[0], self.cursor_pos[1]),
                     self.app.draw_moving_selection_shape(old_coords=(self.cursor_pos[0], self.cursor_pos[1]),
-                                                         coords=(curr_pos[0], curr_pos[1]),
-                                                         face_alpha=0.0)
+                                                         coords=(curr_pos[0], curr_pos[1]))
 
 
             if self.app.is_legacy is False:
             if self.app.is_legacy is False:
                 self.app.plotcanvas.graph_event_disconnect('mouse_press', self.app.on_mouse_click_over_plot)
                 self.app.plotcanvas.graph_event_disconnect('mouse_press', self.app.on_mouse_click_over_plot)