diff --git a/CHANGELOG.md b/CHANGELOG.md index 25566540..40c0fb28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ CHANGELOG for FlatCAM beta ================================================= +9.11.2020 + +- some refactoring in signal connections in App.__init__() +- fixed issue with conenctiong twice the signals for the File Toolbar on the first execution of the program + 8.11.2020 - preprocessors are no longer ordered in the comboboxes so I had to sort them manually diff --git a/appCommon/Common.py b/appCommon/Common.py index bfd08b60..baf60c71 100644 --- a/appCommon/Common.py +++ b/appCommon/Common.py @@ -226,6 +226,11 @@ class ExclusionAreas(QtCore.QObject): e_shape_modified = QtCore.pyqtSignal() def __init__(self, app): + """ + A class that create interdiction areas that need to be avoided by GCode + + :param app: The main application + """ super().__init__() self.app = app diff --git a/appGUI/GUIElements.py b/appGUI/GUIElements.py index a0027c91..46e479ce 100644 --- a/appGUI/GUIElements.py +++ b/appGUI/GUIElements.py @@ -4611,6 +4611,14 @@ class FlatCAMSystemTray(QtWidgets.QSystemTrayIcon): """ def __init__(self, app, icon, headless=None, parent=None): + """ + Class that constructs the system tray + + :param app: Main Application + :param icon: The used icon in the sys tray + :param headless: Boolean; if it will be used in a headless situation + :param parent: + """ # QtWidgets.QSystemTrayIcon.__init__(self, icon, parent) super().__init__(icon, parent=parent) self.app = app diff --git a/app_Main.py b/app_Main.py index c0834195..aa10eb56 100644 --- a/app_Main.py +++ b/app_Main.py @@ -747,6 +747,7 @@ class App(QtCore.QObject): self.workers = WorkerStack(workers_number=int(self.defaults["global_worker_number"])) else: self.workers = WorkerStack(workers_number=2) + self.worker_task.connect(self.workers.add_task) self.log.debug("Finished creating Workers crew.") @@ -1307,7 +1308,7 @@ class App(QtCore.QObject): # ONLY AT FIRST STARTUP INIT THE GUI LAYOUT TO 'minimal' self.log.debug("-> First Run: Setting up the first Layout") initial_lay = 'minimal' - self.on_layout(lay=initial_lay) + self.on_layout(lay=initial_lay, connect_signals=False) # Set the combobox in Preferences to the current layout idx = self.ui.general_defaults_form.general_gui_group.layout_combo.findText(initial_lay) @@ -1369,167 +1370,37 @@ class App(QtCore.QObject): # when the defaults dictionary values change self.defaults.defaults.set_change_callback(callback=self.on_properties_tab_click) + # ########################################################################################################### # ########################################## Standard signals ############################################### - # ### Menu - self.ui.menufilenewproject.triggered.connect(self.f_handlers.on_file_new_click) - self.ui.menufilenewgeo.triggered.connect(self.app_obj.new_geometry_object) - self.ui.menufilenewgrb.triggered.connect(self.app_obj.new_gerber_object) - self.ui.menufilenewexc.triggered.connect(self.app_obj.new_excellon_object) - self.ui.menufilenewdoc.triggered.connect(self.app_obj.new_document_object) + # ########################################################################################################### + # File Signals + self.connect_filemenu_signals() - self.ui.menufileopengerber.triggered.connect(self.f_handlers.on_fileopengerber) - self.ui.menufileopenexcellon.triggered.connect(self.f_handlers.on_fileopenexcellon) - self.ui.menufileopengcode.triggered.connect(self.f_handlers.on_fileopengcode) - self.ui.menufileopenproject.triggered.connect(self.f_handlers.on_file_openproject) - self.ui.menufileopenconfig.triggered.connect(self.f_handlers.on_file_openconfig) + # Edit Signals + self.connect_editmenu_signals() - self.ui.menufilenewscript.triggered.connect(self.f_handlers.on_filenewscript) - self.ui.menufileopenscript.triggered.connect(self.f_handlers.on_fileopenscript) - self.ui.menufileopenscriptexample.triggered.connect(self.f_handlers.on_fileopenscript_example) + # Options Signals + self.connect_optionsmenu_signals() - self.ui.menufilerunscript.triggered.connect(self.f_handlers.on_filerunscript) - - self.ui.menufileimportsvg.triggered.connect(lambda: self.f_handlers.on_file_importsvg("geometry")) - self.ui.menufileimportsvg_as_gerber.triggered.connect(lambda: self.f_handlers.on_file_importsvg("gerber")) - - self.ui.menufileimportdxf.triggered.connect(lambda: self.f_handlers.on_file_importdxf("geometry")) - self.ui.menufileimportdxf_as_gerber.triggered.connect(lambda: self.f_handlers.on_file_importdxf("gerber")) - self.ui.menufileimport_hpgl2_as_geo.triggered.connect(self.f_handlers.on_fileopenhpgl2) - self.ui.menufileexportsvg.triggered.connect(self.f_handlers.on_file_exportsvg) - self.ui.menufileexportpng.triggered.connect(self.f_handlers.on_file_exportpng) - self.ui.menufileexportexcellon.triggered.connect(self.f_handlers.on_file_exportexcellon) - self.ui.menufileexportgerber.triggered.connect(self.f_handlers.on_file_exportgerber) - - self.ui.menufileexportdxf.triggered.connect(self.f_handlers.on_file_exportdxf) - - self.ui.menufile_print.triggered.connect(lambda: self.f_handlers.on_file_save_objects_pdf(use_thread=True)) - - self.ui.menufilesaveproject.triggered.connect(self.f_handlers.on_file_saveproject) - self.ui.menufilesaveprojectas.triggered.connect(self.f_handlers.on_file_saveprojectas) - # self.ui.menufilesaveprojectcopy.triggered.connect(lambda: self.on_file_saveprojectas(make_copy=True)) - self.ui.menufilesavedefaults.triggered.connect(self.f_handlers.on_file_savedefaults) - - self.ui.menufileexportpref.triggered.connect(self.f_handlers.on_export_preferences) - self.ui.menufileimportpref.triggered.connect(self.f_handlers.on_import_preferences) - - self.ui.menufile_exit.triggered.connect(self.final_save) - - self.ui.menueditedit.triggered.connect(lambda: self.object2editor()) - self.ui.menueditok.triggered.connect(lambda: self.editor2object()) - - self.ui.menuedit_join2geo.triggered.connect(self.on_edit_join) - self.ui.menuedit_join_exc2exc.triggered.connect(self.on_edit_join_exc) - self.ui.menuedit_join_grb2grb.triggered.connect(self.on_edit_join_grb) - - self.ui.menuedit_convert_sg2mg.triggered.connect(self.on_convert_singlegeo_to_multigeo) - self.ui.menuedit_convert_mg2sg.triggered.connect(self.on_convert_multigeo_to_singlegeo) - - self.ui.menueditdelete.triggered.connect(self.on_delete) - - self.ui.menueditcopyobject.triggered.connect(self.on_copy_command) - self.ui.menueditconvert_any2geo.triggered.connect(self.convert_any2geo) - self.ui.menueditconvert_any2gerber.triggered.connect(self.convert_any2gerber) - self.ui.menueditconvert_any2excellon.triggered.connect(self.convert_any2excellon) - - self.ui.menueditorigin.triggered.connect(self.on_set_origin) - self.ui.menuedit_move2origin.triggered.connect(self.on_move2origin) - - self.ui.menueditjump.triggered.connect(self.on_jump_to) - self.ui.menueditlocate.triggered.connect(lambda: self.on_locate(obj=self.collection.get_active())) - - self.ui.menuedittoggleunits.triggered.connect(self.on_toggle_units_click) - self.ui.menueditselectall.triggered.connect(self.on_selectall) - self.ui.menueditpreferences.triggered.connect(self.on_preferences) - - # self.ui.menuoptions_transfer_a2o.triggered.connect(self.on_options_app2object) - # self.ui.menuoptions_transfer_a2p.triggered.connect(self.on_options_app2project) - # self.ui.menuoptions_transfer_o2a.triggered.connect(self.on_options_object2app) - # self.ui.menuoptions_transfer_p2a.triggered.connect(self.on_options_project2app) - # self.ui.menuoptions_transfer_o2p.triggered.connect(self.on_options_object2project) - # self.ui.menuoptions_transfer_p2o.triggered.connect(self.on_options_project2object) - - self.ui.menuoptions_transform_rotate.triggered.connect(self.on_rotate) - - self.ui.menuoptions_transform_skewx.triggered.connect(self.on_skewx) - self.ui.menuoptions_transform_skewy.triggered.connect(self.on_skewy) - - self.ui.menuoptions_transform_flipx.triggered.connect(self.on_flipx) - self.ui.menuoptions_transform_flipy.triggered.connect(self.on_flipy) - self.ui.menuoptions_view_source.triggered.connect(self.on_view_source) - self.ui.menuoptions_tools_db.triggered.connect(lambda: self.on_tools_database(source='app')) - - self.ui.menuviewenable.triggered.connect(self.enable_all_plots) - self.ui.menuviewdisableall.triggered.connect(self.disable_all_plots) - self.ui.menuviewenableother.triggered.connect(self.enable_other_plots) - self.ui.menuviewdisableother.triggered.connect(self.disable_other_plots) - - self.ui.menuview_zoom_fit.triggered.connect(self.on_zoom_fit) - self.ui.menuview_zoom_in.triggered.connect(self.on_zoom_in) - self.ui.menuview_zoom_out.triggered.connect(self.on_zoom_out) - self.ui.menuview_replot.triggered.connect(self.plot_all) - - self.ui.menuview_toggle_code_editor.triggered.connect(self.on_toggle_code_editor) - self.ui.menuview_toggle_fscreen.triggered.connect(self.ui.on_fullscreen) - self.ui.menuview_toggle_parea.triggered.connect(self.ui.on_toggle_plotarea) - self.ui.menuview_toggle_notebook.triggered.connect(self.ui.on_toggle_notebook) - self.ui.menu_toggle_nb.triggered.connect(self.ui.on_toggle_notebook) - self.ui.menuview_toggle_grid.triggered.connect(self.ui.on_toggle_grid) - self.ui.menuview_toggle_workspace.triggered.connect(self.on_workspace_toggle) - - self.ui.menuview_toggle_grid_lines.triggered.connect(self.plotcanvas.on_toggle_grid_lines) - self.ui.menuview_toggle_axis.triggered.connect(self.plotcanvas.on_toggle_axis) - self.ui.menuview_toggle_hud.triggered.connect(self.plotcanvas.on_toggle_hud) + # View Signals + self.connect_menuview_signals() + # Tool Signals self.ui.menutoolshell.triggered.connect(self.ui.toggle_shell_ui) + # the rest are autoinserted - self.ui.menuhelp_about.triggered.connect(self.on_about) - self.ui.menuhelp_readme.triggered.connect(self.on_howto) - self.ui.menuhelp_manual.triggered.connect(lambda: webbrowser.open(self.manual_url)) - self.ui.menuhelp_report_bug.triggered.connect(lambda: webbrowser.open(self.bug_report_url)) - self.ui.menuhelp_exc_spec.triggered.connect(lambda: webbrowser.open(self.excellon_spec_url)) - self.ui.menuhelp_gerber_spec.triggered.connect(lambda: webbrowser.open(self.gerber_spec_url)) - self.ui.menuhelp_videohelp.triggered.connect(lambda: webbrowser.open(self.video_url)) - self.ui.menuhelp_shortcut_list.triggered.connect(self.on_shortcut_list) + # Help Signals + self.connect_menuhelp_signals() - self.ui.menuprojectenable.triggered.connect(self.on_enable_sel_plots) - self.ui.menuprojectdisable.triggered.connect(self.on_disable_sel_plots) - self.ui.menuprojectgeneratecnc.triggered.connect(lambda: self.generate_cnc_job(self.collection.get_selected())) - self.ui.menuprojectviewsource.triggered.connect(self.on_view_source) - - self.ui.menuprojectcopy.triggered.connect(self.on_copy_command) - self.ui.menuprojectedit.triggered.connect(self.object2editor) - - self.ui.menuprojectdelete.triggered.connect(self.on_delete) - self.ui.menuprojectsave.triggered.connect(self.on_project_context_save) - self.ui.menuprojectproperties.triggered.connect(self.obj_properties) + # Project Context Menu Signals + self.connect_project_context_signals() # ToolBar signals self.connect_toolbar_signals() - # Context Menu - self.ui.popmenu_disable.triggered.connect(lambda: self.toggle_plots(self.collection.get_selected())) - self.ui.popmenu_panel_toggle.triggered.connect(self.ui.on_toggle_notebook) + # Canvas Context Menu + self.connect_canvas_context_signals() - self.ui.popmenu_new_geo.triggered.connect(self.app_obj.new_geometry_object) - self.ui.popmenu_new_grb.triggered.connect(self.app_obj.new_gerber_object) - self.ui.popmenu_new_exc.triggered.connect(self.app_obj.new_excellon_object) - self.ui.popmenu_new_prj.triggered.connect(self.f_handlers.on_file_new) - - self.ui.zoomfit.triggered.connect(self.on_zoom_fit) - self.ui.clearplot.triggered.connect(self.clear_plots) - self.ui.replot.triggered.connect(self.plot_all) - - self.ui.popmenu_copy.triggered.connect(self.on_copy_command) - self.ui.popmenu_delete.triggered.connect(self.on_delete) - self.ui.popmenu_edit.triggered.connect(self.object2editor) - self.ui.popmenu_save.triggered.connect(lambda: self.editor2object()) - self.ui.popmenu_move.triggered.connect(self.obj_move) - - self.ui.popmenu_properties.triggered.connect(self.obj_properties) - - # Project Context Menu -> Color Setting - for act in self.ui.menuprojectcolor.actions(): - act.triggered.connect(self.on_set_color_action_triggered) # Notebook tab clicking self.ui.notebook.tabBarClicked.connect(self.on_properties_tab_click) @@ -2110,6 +1981,168 @@ class App(QtCore.QObject): # self.worker_task.emit({'fcn': self.f_parse.get_fonts_by_types, # 'params': []}) + def connect_filemenu_signals(self): + # ### Menu + self.ui.menufilenewproject.triggered.connect(self.f_handlers.on_file_new_click) + self.ui.menufilenewgeo.triggered.connect(self.app_obj.new_geometry_object) + self.ui.menufilenewgrb.triggered.connect(self.app_obj.new_gerber_object) + self.ui.menufilenewexc.triggered.connect(self.app_obj.new_excellon_object) + self.ui.menufilenewdoc.triggered.connect(self.app_obj.new_document_object) + + self.ui.menufileopengerber.triggered.connect(self.f_handlers.on_fileopengerber) + self.ui.menufileopenexcellon.triggered.connect(self.f_handlers.on_fileopenexcellon) + self.ui.menufileopengcode.triggered.connect(self.f_handlers.on_fileopengcode) + self.ui.menufileopenproject.triggered.connect(self.f_handlers.on_file_openproject) + self.ui.menufileopenconfig.triggered.connect(self.f_handlers.on_file_openconfig) + + self.ui.menufilenewscript.triggered.connect(self.f_handlers.on_filenewscript) + self.ui.menufileopenscript.triggered.connect(self.f_handlers.on_fileopenscript) + self.ui.menufileopenscriptexample.triggered.connect(self.f_handlers.on_fileopenscript_example) + + self.ui.menufilerunscript.triggered.connect(self.f_handlers.on_filerunscript) + + self.ui.menufileimportsvg.triggered.connect(lambda: self.f_handlers.on_file_importsvg("geometry")) + self.ui.menufileimportsvg_as_gerber.triggered.connect(lambda: self.f_handlers.on_file_importsvg("gerber")) + + self.ui.menufileimportdxf.triggered.connect(lambda: self.f_handlers.on_file_importdxf("geometry")) + self.ui.menufileimportdxf_as_gerber.triggered.connect(lambda: self.f_handlers.on_file_importdxf("gerber")) + self.ui.menufileimport_hpgl2_as_geo.triggered.connect(self.f_handlers.on_fileopenhpgl2) + self.ui.menufileexportsvg.triggered.connect(self.f_handlers.on_file_exportsvg) + self.ui.menufileexportpng.triggered.connect(self.f_handlers.on_file_exportpng) + self.ui.menufileexportexcellon.triggered.connect(self.f_handlers.on_file_exportexcellon) + self.ui.menufileexportgerber.triggered.connect(self.f_handlers.on_file_exportgerber) + + self.ui.menufileexportdxf.triggered.connect(self.f_handlers.on_file_exportdxf) + + self.ui.menufile_print.triggered.connect(lambda: self.f_handlers.on_file_save_objects_pdf(use_thread=True)) + + self.ui.menufilesaveproject.triggered.connect(self.f_handlers.on_file_saveproject) + self.ui.menufilesaveprojectas.triggered.connect(self.f_handlers.on_file_saveprojectas) + # self.ui.menufilesaveprojectcopy.triggered.connect(lambda: self.on_file_saveprojectas(make_copy=True)) + self.ui.menufilesavedefaults.triggered.connect(self.f_handlers.on_file_savedefaults) + + self.ui.menufileexportpref.triggered.connect(self.f_handlers.on_export_preferences) + self.ui.menufileimportpref.triggered.connect(self.f_handlers.on_import_preferences) + + def connect_editmenu_signals(self): + self.ui.menufile_exit.triggered.connect(self.final_save) + + self.ui.menueditedit.triggered.connect(lambda: self.object2editor()) + self.ui.menueditok.triggered.connect(lambda: self.editor2object()) + + self.ui.menuedit_join2geo.triggered.connect(self.on_edit_join) + self.ui.menuedit_join_exc2exc.triggered.connect(self.on_edit_join_exc) + self.ui.menuedit_join_grb2grb.triggered.connect(self.on_edit_join_grb) + + self.ui.menuedit_convert_sg2mg.triggered.connect(self.on_convert_singlegeo_to_multigeo) + self.ui.menuedit_convert_mg2sg.triggered.connect(self.on_convert_multigeo_to_singlegeo) + + self.ui.menueditdelete.triggered.connect(self.on_delete) + + self.ui.menueditcopyobject.triggered.connect(self.on_copy_command) + self.ui.menueditconvert_any2geo.triggered.connect(self.convert_any2geo) + self.ui.menueditconvert_any2gerber.triggered.connect(self.convert_any2gerber) + self.ui.menueditconvert_any2excellon.triggered.connect(self.convert_any2excellon) + + self.ui.menueditorigin.triggered.connect(self.on_set_origin) + self.ui.menuedit_move2origin.triggered.connect(self.on_move2origin) + + self.ui.menueditjump.triggered.connect(self.on_jump_to) + self.ui.menueditlocate.triggered.connect(lambda: self.on_locate(obj=self.collection.get_active())) + + self.ui.menuedittoggleunits.triggered.connect(self.on_toggle_units_click) + self.ui.menueditselectall.triggered.connect(self.on_selectall) + self.ui.menueditpreferences.triggered.connect(self.on_preferences) + + def connect_optionsmenu_signals(self): + # self.ui.menuoptions_transfer_a2o.triggered.connect(self.on_options_app2object) + # self.ui.menuoptions_transfer_a2p.triggered.connect(self.on_options_app2project) + # self.ui.menuoptions_transfer_o2a.triggered.connect(self.on_options_object2app) + # self.ui.menuoptions_transfer_p2a.triggered.connect(self.on_options_project2app) + # self.ui.menuoptions_transfer_o2p.triggered.connect(self.on_options_object2project) + # self.ui.menuoptions_transfer_p2o.triggered.connect(self.on_options_project2object) + + self.ui.menuoptions_transform_rotate.triggered.connect(self.on_rotate) + + self.ui.menuoptions_transform_skewx.triggered.connect(self.on_skewx) + self.ui.menuoptions_transform_skewy.triggered.connect(self.on_skewy) + + self.ui.menuoptions_transform_flipx.triggered.connect(self.on_flipx) + self.ui.menuoptions_transform_flipy.triggered.connect(self.on_flipy) + self.ui.menuoptions_view_source.triggered.connect(self.on_view_source) + self.ui.menuoptions_tools_db.triggered.connect(lambda: self.on_tools_database(source='app')) + + def connect_menuview_signals(self): + self.ui.menuviewenable.triggered.connect(self.enable_all_plots) + self.ui.menuviewdisableall.triggered.connect(self.disable_all_plots) + self.ui.menuviewenableother.triggered.connect(self.enable_other_plots) + self.ui.menuviewdisableother.triggered.connect(self.disable_other_plots) + + self.ui.menuview_zoom_fit.triggered.connect(self.on_zoom_fit) + self.ui.menuview_zoom_in.triggered.connect(self.on_zoom_in) + self.ui.menuview_zoom_out.triggered.connect(self.on_zoom_out) + self.ui.menuview_replot.triggered.connect(self.plot_all) + + self.ui.menuview_toggle_code_editor.triggered.connect(self.on_toggle_code_editor) + self.ui.menuview_toggle_fscreen.triggered.connect(self.ui.on_fullscreen) + self.ui.menuview_toggle_parea.triggered.connect(self.ui.on_toggle_plotarea) + self.ui.menuview_toggle_notebook.triggered.connect(self.ui.on_toggle_notebook) + self.ui.menu_toggle_nb.triggered.connect(self.ui.on_toggle_notebook) + self.ui.menuview_toggle_grid.triggered.connect(self.ui.on_toggle_grid) + self.ui.menuview_toggle_workspace.triggered.connect(self.on_workspace_toggle) + + self.ui.menuview_toggle_grid_lines.triggered.connect(self.plotcanvas.on_toggle_grid_lines) + self.ui.menuview_toggle_axis.triggered.connect(self.plotcanvas.on_toggle_axis) + self.ui.menuview_toggle_hud.triggered.connect(self.plotcanvas.on_toggle_hud) + + def connect_menuhelp_signals(self): + self.ui.menuhelp_about.triggered.connect(self.on_about) + self.ui.menuhelp_readme.triggered.connect(self.on_howto) + self.ui.menuhelp_manual.triggered.connect(lambda: webbrowser.open(self.manual_url)) + self.ui.menuhelp_report_bug.triggered.connect(lambda: webbrowser.open(self.bug_report_url)) + self.ui.menuhelp_exc_spec.triggered.connect(lambda: webbrowser.open(self.excellon_spec_url)) + self.ui.menuhelp_gerber_spec.triggered.connect(lambda: webbrowser.open(self.gerber_spec_url)) + self.ui.menuhelp_videohelp.triggered.connect(lambda: webbrowser.open(self.video_url)) + self.ui.menuhelp_shortcut_list.triggered.connect(self.on_shortcut_list) + + def connect_project_context_signals(self): + self.ui.menuprojectenable.triggered.connect(self.on_enable_sel_plots) + self.ui.menuprojectdisable.triggered.connect(self.on_disable_sel_plots) + self.ui.menuprojectgeneratecnc.triggered.connect(lambda: self.generate_cnc_job(self.collection.get_selected())) + self.ui.menuprojectviewsource.triggered.connect(self.on_view_source) + + self.ui.menuprojectcopy.triggered.connect(self.on_copy_command) + self.ui.menuprojectedit.triggered.connect(self.object2editor) + + self.ui.menuprojectdelete.triggered.connect(self.on_delete) + self.ui.menuprojectsave.triggered.connect(self.on_project_context_save) + self.ui.menuprojectproperties.triggered.connect(self.obj_properties) + + # Project Context Menu -> Color Setting + for act in self.ui.menuprojectcolor.actions(): + act.triggered.connect(self.on_set_color_action_triggered) + + def connect_canvas_context_signals(self): + self.ui.popmenu_disable.triggered.connect(lambda: self.toggle_plots(self.collection.get_selected())) + self.ui.popmenu_panel_toggle.triggered.connect(self.ui.on_toggle_notebook) + + self.ui.popmenu_new_geo.triggered.connect(self.app_obj.new_geometry_object) + self.ui.popmenu_new_grb.triggered.connect(self.app_obj.new_gerber_object) + self.ui.popmenu_new_exc.triggered.connect(self.app_obj.new_excellon_object) + self.ui.popmenu_new_prj.triggered.connect(self.f_handlers.on_file_new) + + self.ui.zoomfit.triggered.connect(self.on_zoom_fit) + self.ui.clearplot.triggered.connect(self.clear_plots) + self.ui.replot.triggered.connect(self.plot_all) + + self.ui.popmenu_copy.triggered.connect(self.on_copy_command) + self.ui.popmenu_delete.triggered.connect(self.on_delete) + self.ui.popmenu_edit.triggered.connect(self.object2editor) + self.ui.popmenu_save.triggered.connect(lambda: self.editor2object()) + self.ui.popmenu_move.triggered.connect(self.obj_move) + + self.ui.popmenu_properties.triggered.connect(self.obj_properties) + def connect_tools_signals_to_toolbar(self): self.log.debug(" -> Connecting Tools Toolbar Signals") @@ -2203,7 +2236,7 @@ class App(QtCore.QObject): except Exception as err: self.log.debug("App.connect_toolbar_signals() tools signals -> %s" % str(err)) - def on_layout(self, index=None, lay=None): + def on_layout(self, index=None, lay=None, connect_signals=True): """ Set the toolbars layout (location) @@ -2329,7 +2362,8 @@ class App(QtCore.QObject): try: # reconnect all the signals to the toolbar actions - self.connect_toolbar_signals() + if connect_signals is True: + self.connect_toolbar_signals() except Exception as e: self.log.debug( "App.on_layout() - connect toolbar signals -> %s" % str(e)) @@ -8268,8 +8302,10 @@ class ArgsThread(QtCore.QObject): class MenuFileHandlers(QtCore.QObject): - def __init__(self, app): + """ + A class that holds all the menu -> file handlers + """ super().__init__() self.app = app diff --git a/defaults.py b/defaults.py index 452972d4..bfb32a12 100644 --- a/defaults.py +++ b/defaults.py @@ -810,6 +810,7 @@ class FlatCAMDefaults: def __init__(self, callback=lambda x: None, beta=True, version=8.9): """ + Class that holds the default parameters used throughout the app. :param callback: A method called each time that one of the values are changed in the self.defaults LouDict """