Просмотр исходного кода

- fixed bugs in Excellon Editor
- Excellon Editor: made Add Pad tool to work until right click

Marius Stanciu 6 лет назад
Родитель
Сommit
52ab274b1c
4 измененных файлов с 59 добавлено и 27 удалено
  1. 1 0
      FlatCAMApp.py
  2. 2 0
      README.md
  3. 53 25
      flatcamEditors/FlatCAMExcEditor.py
  4. 3 2
      flatcamGUI/FlatCAMGUI.py

+ 1 - 0
FlatCAMApp.py

@@ -1386,6 +1386,7 @@ class App(QtCore.QObject):
         self.ui.popmenu_disable.triggered.connect(lambda: self.disable_plots(self.collection.get_selected()))
 
         self.ui.popmenu_new_geo.triggered.connect(self.new_geometry_object)
+        self.ui.popmenu_new_grb.triggered.connect(self.new_gerber_object)
         self.ui.popmenu_new_exc.triggered.connect(self.new_excellon_object)
         self.ui.popmenu_new_prj.triggered.connect(self.on_file_new)
 

+ 2 - 0
README.md

@@ -18,6 +18,8 @@ CAD program, and create G-Code for Isolation routing.
 - fixed a crash when triggering 'Jump To' menu action (shortcut key 'J' worked ok)
 - made some mods to what can be translated as some of the translations interfered with the correct functioning of FlatCAM
 - updated the translations
+- fixed bugs in Excellon Editor
+- Excellon Editor:  made Add Pad tool to work until right click
 
 30.04.2019
 

+ 53 - 25
flatcamEditors/FlatCAMExcEditor.py

@@ -44,7 +44,7 @@ class FCDrillAdd(FCShapeTool):
 
         except KeyError:
             self.draw_app.app.inform.emit(_("[WARNING_NOTCL] To add a drill first select a tool"))
-            self.draw_app.select_tool("select")
+            self.draw_app.select_tool("drill_select")
             return
 
         try:
@@ -103,6 +103,7 @@ class FCDrillAdd(FCShapeTool):
 
         self.draw_app.current_storage = self.draw_app.storage_dict[self.selected_dia]
         self.geometry = DrawToolShape(self.util_shape(self.points))
+        self.draw_app.in_action = False
         self.complete = True
         self.draw_app.app.inform.emit(_("[success] Done. Drill added."))
 
@@ -319,7 +320,7 @@ class FCDrillArray(FCShapeTool):
                 self.geometry.append(DrawToolShape(geo))
         self.complete = True
         self.draw_app.app.inform.emit(_("[success] Done. Drill Array added."))
-        self.draw_app.in_action = True
+        self.draw_app.in_action = False
         self.draw_app.array_frame.hide()
         return
 
@@ -428,7 +429,7 @@ class FCDrillResize(FCShapeTool):
         self.complete = True
 
         # MS: always return to the Select Tool
-        self.draw_app.select_tool("select")
+        self.draw_app.select_tool("drill_select")
 
 
 class FCDrillMove(FCShapeTool):
@@ -475,7 +476,7 @@ class FCDrillMove(FCShapeTool):
             self.make()
 
             # MS: always return to the Select Tool
-            self.draw_app.select_tool("select")
+            self.draw_app.select_tool("drill_select")
             return
 
     def make(self):
@@ -643,8 +644,11 @@ class FCDrillSelect(DrawTool):
                         sel_tools.add(storage)
 
             for storage in sel_tools:
-                self.exc_editor_app.tools_table_exc.selectRow(int(storage) - 1)
-                self.draw_app.last_tool_selected = int(storage)
+                for k, v in self.draw_app.tool2tooldia.items():
+                    if v == storage:
+                        self.exc_editor_app.tools_table_exc.selectRow(int(k) - 1)
+                        self.draw_app.last_tool_selected = int(k)
+                        break
 
             self.exc_editor_app.tools_table_exc.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
 
@@ -999,7 +1003,7 @@ class FlatCAMExcEditor(QtCore.QObject):
 
         ## Toolbar events and properties
         self.tools_exc = {
-            "select": {"button": self.app.ui.select_drill_btn,
+            "drill_select": {"button": self.app.ui.select_drill_btn,
                        "constructor": FCDrillSelect},
             "drill_add": {"button": self.app.ui.add_drill_btn,
                     "constructor": FCDrillAdd},
@@ -1016,6 +1020,8 @@ class FlatCAMExcEditor(QtCore.QObject):
         ### Data
         self.active_tool = None
 
+        self.in_action = False
+
         self.storage_dict = {}
         self.current_storage = []
 
@@ -1067,7 +1073,6 @@ class FlatCAMExcEditor(QtCore.QObject):
 
         self.app.ui.exc_move_drill_menuitem.triggered.connect(self.exc_move_drills)
 
-
         # Init GUI
         self.drill_array_size_entry.set_value(5)
         self.drill_pitch_entry.set_value(2.54)
@@ -1844,7 +1849,7 @@ class FlatCAMExcEditor(QtCore.QObject):
         # Set selection tolerance
         # DrawToolShape.tolerance = fc_excellon.drawing_tolerance * 10
 
-        self.select_tool("select")
+        self.select_tool("drill_select")
 
         self.set_ui()
 
@@ -2060,10 +2065,10 @@ class FlatCAMExcEditor(QtCore.QObject):
 
         self.app.log.debug("on_tool_select('%s')" % tool)
 
-        if self.last_tool_selected is None and current_tool is not 'select':
-            # self.draw_app.select_tool('select')
+        if self.last_tool_selected is None and current_tool is not 'drill_select':
+            # self.draw_app.select_tool('drill_select')
             self.complete = True
-            current_tool = 'select'
+            current_tool = 'drill_select'
             self.app.inform.emit(_("[WARNING_NOTCL] Cancelled. There is no Tool/Drill selected"))
 
         # This is to make the group behave as radio group
@@ -2082,7 +2087,7 @@ class FlatCAMExcEditor(QtCore.QObject):
                 for t in self.tools_exc:
                     self.tools_exc[t]["button"].setChecked(False)
 
-                self.select_tool('select')
+                self.select_tool('drill_select')
                 self.active_tool = FCDrillSelect(self)
 
     def on_row_selected(self, row, col):
@@ -2100,7 +2105,7 @@ class FlatCAMExcEditor(QtCore.QObject):
 
             try:
                 selected_dia = self.tool2tooldia[self.tools_table_exc.currentRow() + 1]
-                self.last_tool_selected = copy(self.tools_table_exc.currentRow()) + 1
+                self.last_tool_selected = int(self.tools_table_exc.currentRow()) + 1
                 for obj in self.storage_dict[selected_dia].get_objects():
                     self.selected.append(obj)
             except Exception as e:
@@ -2163,7 +2168,11 @@ class FlatCAMExcEditor(QtCore.QObject):
                     if key_modifier == modifier_to_use:
                         self.select_tool(self.active_tool.name)
                     else:
-                        self.select_tool("select")
+                        # return to Select tool but not for FCPad
+                        if isinstance(self.active_tool, FCDrillAdd):
+                            self.select_tool(self.active_tool.name)
+                        else:
+                            self.select_tool("drill_select")
                         return
 
                 if isinstance(self.active_tool, FCDrillSelect):
@@ -2250,10 +2259,9 @@ class FlatCAMExcEditor(QtCore.QObject):
             self.storage.insert(shape)  # TODO: Check performance
 
     def on_exc_click_release(self, event):
-        pos_canvas = self.canvas.vispy_canvas.translate_coords(event.pos)
-
         self.modifiers = QtWidgets.QApplication.keyboardModifiers()
 
+        pos_canvas = self.canvas.vispy_canvas.translate_coords(event.pos)
         if self.app.grid_status():
             pos = self.app.geo_editor.snap(pos_canvas[0], pos_canvas[1])
         else:
@@ -2263,12 +2271,29 @@ class FlatCAMExcEditor(QtCore.QObject):
         # canvas menu
         try:
             if event.button == 2:  # right click
-                if self.app.panning_action is True:
-                    self.app.panning_action = False
-                else:
-                    self.app.cursor = QtGui.QCursor()
-                    self.app.populate_cmenu_grids()
-                    self.app.ui.popMenu.popup(self.app.cursor.pos())
+                if self.app.ui.popMenu.mouse_is_panning is False:
+                    try:
+                        QtGui.QGuiApplication.restoreOverrideCursor()
+                    except:
+                        pass
+                    if self.active_tool.complete is False and not isinstance(self.active_tool, FCDrillSelect):
+                        self.active_tool.complete = True
+                        self.in_action = False
+                        self.delete_utility_geometry()
+                        self.app.inform.emit(_("[success] Done."))
+                        self.select_tool('drill_select')
+                    else:
+                        if isinstance(self.active_tool, FCDrillAdd):
+                            self.active_tool.complete = True
+                            self.in_action = False
+                            self.delete_utility_geometry()
+                            self.app.inform.emit(_("[success] Done."))
+                            self.select_tool('drill_select')
+
+                        self.app.cursor = QtGui.QCursor()
+                        self.app.populate_cmenu_grids()
+                        self.app.ui.popMenu.popup(self.app.cursor.pos())
+
         except Exception as e:
             log.warning("Error: %s" % str(e))
             raise
@@ -2286,7 +2311,10 @@ class FlatCAMExcEditor(QtCore.QObject):
                     # msg = self.active_tool.click_release((self.pos[0], self.pos[1]))
                     # self.app.inform.emit(msg)
                     self.active_tool.click_release((self.pos[0], self.pos[1]))
-                    self.replot()
+
+                    # if there are selected objects then plot them
+                    if self.selected:
+                        self.replot()
         except Exception as e:
             log.warning("Error: %s" % str(e))
             raise
@@ -2328,7 +2356,7 @@ class FlatCAMExcEditor(QtCore.QObject):
                         if self.tool2tooldia[key] == storage:
                             item = self.tools_table_exc.item((key - 1), 1)
                             self.tools_table_exc.setCurrentItem(item)
-                            self.last_tool_selected = key
+                            self.last_tool_selected = int(key)
 
         self.tools_table_exc.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
 

+ 3 - 2
flatcamGUI/FlatCAMGUI.py

@@ -1567,6 +1567,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
         self.popMenu.addSeparator()
         self.cmenu_newmenu = self.popMenu.addMenu(QtGui.QIcon('share/file32.png'), _("New"))
         self.popmenu_new_geo = self.cmenu_newmenu.addAction(QtGui.QIcon('share/new_geo32_bis.png'), _("Geometry"))
+        self.popmenu_new_grb = self.cmenu_newmenu.addAction(QtGui.QIcon('share/flatcam_icon32.png'), "Gerber")
         self.popmenu_new_exc = self.cmenu_newmenu.addAction(QtGui.QIcon('share/new_exc32.png'), _("Excellon"))
         self.cmenu_newmenu.addSeparator()
         self.popmenu_new_prj = self.cmenu_newmenu.addAction(QtGui.QIcon('share/file16.png'), _("Project"))
@@ -2831,7 +2832,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
                     self.app.exc_editor.replot()
                     # self.select_btn.setChecked(True)
                     # self.on_tool_select('select')
-                    self.app.exc_editor.select_tool('select')
+                    self.app.exc_editor.select_tool('drill_select')
                     return
 
                 # Delete selected object if delete key event comes out of canvas
@@ -2967,7 +2968,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
                 if key == QtCore.Qt.Key_T or key == 'T':
                     self.app.exc_editor.launched_from_shortcuts = True
                     ## Current application units in Upper Case
-                    self.units = self.general_defaults_group.general_app_group.units_radio.get_value().upper()
+                    self.units = self.general_defaults_form.general_app_group.units_radio.get_value().upper()
                     tool_add_popup = FCInputDialog(title=_("New Tool ..."),
                                                    text=_('Enter a Tool Diameter:'),
                                                    min=0.0000, max=99.9999, decimals=4)