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

- minor changes in the way that the tools are installed and connected

Marius Stanciu пре 5 година
родитељ
комит
d97d3eabd2

+ 4 - 0
CHANGELOG.md

@@ -7,6 +7,10 @@ CHANGELOG for FlatCAM beta
 
 =================================================
 
+8.06.2020
+
+- minor changes in the way that the tools are installed and connected
+
 7.06.2020
 
 - refactoring in camlib.py. Made sure that some conditions are met, if some of the parameters are None then return failure. Modifications in generate_from_geometry_2 and generate_from_multitool_geometry methods

+ 7 - 7
appGUI/preferences/general/GeneralAppPrefGroupUI.py

@@ -95,7 +95,7 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(separator_line, 4, 0, 1, 2)
 
         # Application Level for FlatCAM
-        self.app_level_label = QtWidgets.QLabel('<span style="color:red;"><b>%s:</b></span>' % _('APP. LEVEL'))
+        self.app_level_label = QtWidgets.QLabel('<span style="color:red;"><b>%s:</b></span>' % _('APPLICATION LEVEL'))
         self.app_level_label.setToolTip(_("Choose the default level of usage for FlatCAM.\n"
                                           "BASIC level -> reduced functionality, best for beginner's.\n"
                                           "ADVANCED level -> full functionality.\n\n"
@@ -104,8 +104,8 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
         self.app_level_radio = RadioSet([{'label': _('Basic'), 'value': 'b'},
                                          {'label': _('Advanced'), 'value': 'a'}])
 
-        grid0.addWidget(self.app_level_label, 5, 0)
-        grid0.addWidget(self.app_level_radio, 5, 1)
+        grid0.addWidget(self.app_level_label, 5, 0, 1, 2)
+        grid0.addWidget(self.app_level_radio, 6, 0, 1, 2)
 
         # Portability for FlatCAM
         self.portability_cb = FCCheckBox('%s' % _('Portable app'))
@@ -114,20 +114,20 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
                                          "which means that the preferences files will be saved\n"
                                          "in the application folder, in the lib\\config subfolder."))
 
-        grid0.addWidget(self.portability_cb, 6, 0, 1, 2)
+        grid0.addWidget(self.portability_cb, 7, 0, 1, 2)
 
         separator_line = QtWidgets.QFrame()
         separator_line.setFrameShape(QtWidgets.QFrame.HLine)
         separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
-        grid0.addWidget(separator_line, 7, 0, 1, 2)
+        grid0.addWidget(separator_line, 8, 0, 1, 2)
 
         # Languages for FlatCAM
         self.languagelabel = QtWidgets.QLabel('<b>%s</b>' % _('Languages'))
         self.languagelabel.setToolTip(_("Set the language used throughout FlatCAM."))
         self.language_cb = FCComboBox()
 
-        grid0.addWidget(self.languagelabel, 8, 0, 1, 2)
-        grid0.addWidget(self.language_cb, 9, 0, 1, 2)
+        grid0.addWidget(self.languagelabel, 9, 0, 1, 2)
+        grid0.addWidget(self.language_cb, 10, 0, 1, 2)
 
         self.language_apply_btn = FCButton(_("Apply Language"))
         self.language_apply_btn.setToolTip(_("Set the language used throughout FlatCAM.\n"

+ 6 - 2
appGUI/preferences/general/GeneralGUIPrefGroupUI.py

@@ -531,8 +531,12 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
         # add all the actions to the toolbars
         self.app.ui.populate_toolbars()
 
-        # reconnect all the signals to the toolbar actions
-        self.app.connect_toolbar_signals()
+        try:
+            # reconnect all the signals to the toolbar actions
+            self.app.connect_toolbar_signals(ui=self.app.ui)
+        except Exception as e:
+            self.app.log.debug(
+                "appGUI.preferences.general.GeneralGUIPrefGroupUI.on_layout() - connect toolbar signals -> %s" % str(e))
 
         self.app.ui.grid_snap_btn.setChecked(True)
 

+ 3 - 0
appTools/ToolShell.py

@@ -295,6 +295,9 @@ class FCShell(TermWidget):
         self._append_to_browser('in', "FlatCAM %s - " % version)
         self.append_output('%s\n\n' % _("Type >help< to get started"))
 
+        self.app.ui.shell_dock.setWidget(self)
+        self.app.log.debug("TCL Shell has been initialized.")
+
     def init_tcl(self):
         if hasattr(self, 'tcl') and self.tcl is not None:
             # self.tcl = None

+ 73 - 67
app_Main.py

@@ -920,7 +920,7 @@ class App(QtCore.QObject):
         self.ui.menuprojectproperties.triggered.connect(self.obj_properties)
 
         # ToolBar signals
-        self.connect_toolbar_signals()
+        self.connect_toolbar_signals(ui=self.ui)
 
         # Notebook and Plot Tab Area signals
         # make the right click on the notebook tab and plot tab area tab raise a menu
@@ -1317,25 +1317,12 @@ class App(QtCore.QObject):
         self.autocomplete_kw_list = self.defaults['util_autocomplete_keywords'].replace(' ', '').split(',')
         self.myKeywords = self.tcl_commands_list + self.autocomplete_kw_list + self.tcl_keywords
 
-        # ###########################################################################################################
-        # ############################################## Shell SETUP ################################################
-        # ###########################################################################################################
-
-        self.shell = FCShell(app=self, version=self.version)
-
-        self.ui.shell_dock.setWidget(self.shell)
-        self.log.debug("TCL Shell has been initialized.")
-
-        # show TCL shell at start-up based on the Menu -? Edit -> Preferences setting.
-        if self.defaults["global_shell_at_startup"]:
-            self.ui.shell_dock.show()
-        else:
-            self.ui.shell_dock.hide()
-
         # ###########################################################################################################
         # ########################################## Tools and Plugins ##############################################
         # ###########################################################################################################
 
+
+        self.shell = None
         self.dblsidedtool = None
         self.distance_tool = None
         self.distance_min_tool = None
@@ -1398,6 +1385,15 @@ class App(QtCore.QObject):
         # self.f_parse = ParseFont(self)
         # self.parse_system_fonts()
 
+        # ###########################################################################################################
+        # ############################################## Shell SETUP ################################################
+        # ###########################################################################################################
+        # show TCL shell at start-up based on the Menu -? Edit -> Preferences setting.
+        if self.defaults["global_shell_at_startup"]:
+            self.ui.shell_dock.show()
+        else:
+            self.ui.shell_dock.hide()
+
         # ###########################################################################################################
         # ######################################### Check for updates ###############################################
         # ###########################################################################################################
@@ -1869,6 +1865,10 @@ class App(QtCore.QObject):
 
         :return: None
         """
+
+        # shell tool has t obe initialized always first because other tools print messages in the Shell Dock
+        self.shell = FCShell(app=self, version=self.version)
+
         self.distance_tool = Distance(self)
         self.distance_tool.install(icon=QtGui.QIcon(self.resource_location + '/distance16.png'), pos=self.ui.menuedit,
                                    before=self.ui.menueditorigin,
@@ -2041,7 +2041,35 @@ class App(QtCore.QObject):
     #     self.worker_task.emit({'fcn': self.f_parse.get_fonts_by_types,
     #                            'params': []})
 
-    def connect_toolbar_signals(self):
+    def connect_tools_signals_to_toolbar(self, ui):
+        ui.dblsided_btn.triggered.connect(lambda: self.dblsidedtool.run(toggle=True))
+        ui.cal_btn.triggered.connect(lambda: self.cal_exc_tool.run(toggle=True))
+        ui.align_btn.triggered.connect(lambda: self.align_objects_tool.run(toggle=True))
+        ui.extract_btn.triggered.connect(lambda: self.edrills_tool.run(toggle=True))
+
+        ui.cutout_btn.triggered.connect(lambda: self.cutout_tool.run(toggle=True))
+        ui.ncc_btn.triggered.connect(lambda: self.ncclear_tool.run(toggle=True))
+        ui.paint_btn.triggered.connect(lambda: self.paint_tool.run(toggle=True))
+        ui.isolation_btn.triggered.connect(lambda: self.isolation_tool.run(toggle=True))
+
+        ui.panelize_btn.triggered.connect(lambda: self.panelize_tool.run(toggle=True))
+        ui.film_btn.triggered.connect(lambda: self.film_tool.run(toggle=True))
+        ui.solder_btn.triggered.connect(lambda: self.paste_tool.run(toggle=True))
+        ui.sub_btn.triggered.connect(lambda: self.sub_tool.run(toggle=True))
+        ui.rules_btn.triggered.connect(lambda: self.rules_tool.run(toggle=True))
+        ui.optimal_btn.triggered.connect(lambda: self.optimal_tool.run(toggle=True))
+
+        ui.calculators_btn.triggered.connect(lambda: self.calculator_tool.run(toggle=True))
+        ui.transform_btn.triggered.connect(lambda: self.transform_tool.run(toggle=True))
+        ui.qrcode_btn.triggered.connect(lambda: self.qrcode_tool.run(toggle=True))
+        ui.copperfill_btn.triggered.connect(lambda: self.copper_thieving_tool.run(toggle=True))
+        ui.fiducials_btn.triggered.connect(lambda: self.fiducial_tool.run(toggle=True))
+        ui.punch_btn.triggered.connect(lambda: self.punch_tool.run(toggle=True))
+        ui.invert_btn.triggered.connect(lambda: self.invert_tool.run(toggle=True))
+        ui.corners_tool_btn.triggered.connect(lambda: self.corners_tool.run(toggle=True))
+        ui.etch_btn.triggered.connect(lambda: self.etch_tool.run(toggle=True))
+
+    def connect_toolbar_signals(self, ui):
         """
         Reconnect the signals to the actions in the toolbar.
         This has to be done each time after the FlatCAM tools are removed/installed.
@@ -2052,66 +2080,44 @@ class App(QtCore.QObject):
         # Toolbar
 
         # File Toolbar Signals
-        # self.ui.file_new_btn.triggered.connect(self.on_file_new)
-        self.ui.file_open_btn.triggered.connect(self.on_file_openproject)
-        self.ui.file_save_btn.triggered.connect(self.on_file_saveproject)
-        self.ui.file_open_gerber_btn.triggered.connect(self.on_fileopengerber)
-        self.ui.file_open_excellon_btn.triggered.connect(self.on_fileopenexcellon)
+        # ui.file_new_btn.triggered.connect(self.on_file_new)
+        ui.file_open_btn.triggered.connect(self.on_file_openproject)
+        ui.file_save_btn.triggered.connect(self.on_file_saveproject)
+        ui.file_open_gerber_btn.triggered.connect(self.on_fileopengerber)
+        ui.file_open_excellon_btn.triggered.connect(self.on_fileopenexcellon)
 
         # View Toolbar Signals
-        self.ui.clear_plot_btn.triggered.connect(self.clear_plots)
-        self.ui.replot_btn.triggered.connect(self.plot_all)
-        self.ui.zoom_fit_btn.triggered.connect(self.on_zoom_fit)
-        self.ui.zoom_in_btn.triggered.connect(lambda: self.plotcanvas.zoom(1 / 1.5))
-        self.ui.zoom_out_btn.triggered.connect(lambda: self.plotcanvas.zoom(1.5))
+        ui.clear_plot_btn.triggered.connect(self.clear_plots)
+        ui.replot_btn.triggered.connect(self.plot_all)
+        ui.zoom_fit_btn.triggered.connect(self.on_zoom_fit)
+        ui.zoom_in_btn.triggered.connect(lambda: self.plotcanvas.zoom(1 / 1.5))
+        ui.zoom_out_btn.triggered.connect(lambda: self.plotcanvas.zoom(1.5))
 
         # Edit Toolbar Signals
-        self.ui.editgeo_btn.triggered.connect(self.object2editor)
-        self.ui.update_obj_btn.triggered.connect(lambda: self.editor2object())
-        self.ui.copy_btn.triggered.connect(self.on_copy_command)
-        self.ui.delete_btn.triggered.connect(self.on_delete)
+        ui.editgeo_btn.triggered.connect(self.object2editor)
+        ui.update_obj_btn.triggered.connect(lambda: self.editor2object())
+        ui.copy_btn.triggered.connect(self.on_copy_command)
+        ui.delete_btn.triggered.connect(self.on_delete)
 
-        self.ui.distance_btn.triggered.connect(lambda: self.distance_tool.run(toggle=True))
-        self.ui.distance_min_btn.triggered.connect(lambda: self.distance_min_tool.run(toggle=True))
-        self.ui.origin_btn.triggered.connect(self.on_set_origin)
-        self.ui.move2origin_btn.triggered.connect(self.on_move2origin)
+        ui.distance_btn.triggered.connect(lambda: self.distance_tool.run(toggle=True))
+        ui.distance_min_btn.triggered.connect(lambda: self.distance_min_tool.run(toggle=True))
+        ui.origin_btn.triggered.connect(self.on_set_origin)
+        ui.move2origin_btn.triggered.connect(self.on_move2origin)
 
-        self.ui.jmp_btn.triggered.connect(self.on_jump_to)
-        self.ui.locate_btn.triggered.connect(lambda: self.on_locate(obj=self.collection.get_active()))
+        ui.jmp_btn.triggered.connect(self.on_jump_to)
+        ui.locate_btn.triggered.connect(lambda: self.on_locate(obj=self.collection.get_active()))
 
         # Scripting Toolbar Signals
-        self.ui.shell_btn.triggered.connect(self.ui.toggle_shell_ui)
-        self.ui.new_script_btn.triggered.connect(self.on_filenewscript)
-        self.ui.open_script_btn.triggered.connect(self.on_fileopenscript)
-        self.ui.run_script_btn.triggered.connect(self.on_filerunscript)
+        ui.shell_btn.triggered.connect(ui.toggle_shell_ui)
+        ui.new_script_btn.triggered.connect(self.on_filenewscript)
+        ui.open_script_btn.triggered.connect(self.on_fileopenscript)
+        ui.run_script_btn.triggered.connect(self.on_filerunscript)
 
         # Tools Toolbar Signals
-        self.ui.dblsided_btn.triggered.connect(lambda: self.dblsidedtool.run(toggle=True))
-        self.ui.cal_btn.triggered.connect(lambda: self.cal_exc_tool.run(toggle=True))
-        self.ui.align_btn.triggered.connect(lambda: self.align_objects_tool.run(toggle=True))
-        self.ui.extract_btn.triggered.connect(lambda: self.edrills_tool.run(toggle=True))
-
-        self.ui.cutout_btn.triggered.connect(lambda: self.cutout_tool.run(toggle=True))
-        self.ui.ncc_btn.triggered.connect(lambda: self.ncclear_tool.run(toggle=True))
-        self.ui.paint_btn.triggered.connect(lambda: self.paint_tool.run(toggle=True))
-        self.ui.isolation_btn.triggered.connect(lambda: self.isolation_tool.run(toggle=True))
-
-        self.ui.panelize_btn.triggered.connect(lambda: self.panelize_tool.run(toggle=True))
-        self.ui.film_btn.triggered.connect(lambda: self.film_tool.run(toggle=True))
-        self.ui.solder_btn.triggered.connect(lambda: self.paste_tool.run(toggle=True))
-        self.ui.sub_btn.triggered.connect(lambda: self.sub_tool.run(toggle=True))
-        self.ui.rules_btn.triggered.connect(lambda: self.rules_tool.run(toggle=True))
-        self.ui.optimal_btn.triggered.connect(lambda: self.optimal_tool.run(toggle=True))
-
-        self.ui.calculators_btn.triggered.connect(lambda: self.calculator_tool.run(toggle=True))
-        self.ui.transform_btn.triggered.connect(lambda: self.transform_tool.run(toggle=True))
-        self.ui.qrcode_btn.triggered.connect(lambda: self.qrcode_tool.run(toggle=True))
-        self.ui.copperfill_btn.triggered.connect(lambda: self.copper_thieving_tool.run(toggle=True))
-        self.ui.fiducials_btn.triggered.connect(lambda: self.fiducial_tool.run(toggle=True))
-        self.ui.punch_btn.triggered.connect(lambda: self.punch_tool.run(toggle=True))
-        self.ui.invert_btn.triggered.connect(lambda: self.invert_tool.run(toggle=True))
-        self.ui.corners_tool_btn.triggered.connect(lambda: self.corners_tool.run(toggle=True))
-        self.ui.etch_btn.triggered.connect(lambda: self.etch_tool.run(toggle=True))
+        try:
+            self.connect_tools_signals_to_toolbar(ui=ui)
+        except Exception as err:
+            log.debug("App.connect_toolbar_signals() tools signals -> %s" % str(err))
 
     def object2editor(self):
         """