diff --git a/FlatCAMApp.py b/FlatCAMApp.py index 44e134d2..b56df9e6 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -313,6 +313,7 @@ class App(QtCore.QObject): # "global_pan_with_space_key": self.general_defaults_form.general_gui_group.pan_with_space_cb, "global_workspace": self.general_defaults_form.general_gui_group.workspace_cb, "global_workspaceT": self.general_defaults_form.general_gui_group.wk_cb, + "global_theme": self.general_defaults_form.general_gui_group.theme_combo, "gerber_plot": self.gerber_defaults_form.gerber_gen_group.plot_cb, "gerber_solid": self.gerber_defaults_form.gerber_gen_group.solid_cb, @@ -468,6 +469,7 @@ class App(QtCore.QObject): "global_def_win_y": 100, "global_def_win_w": 1024, "global_def_win_h": 650, + "global_theme": 'standard', # Constants... "global_defaults_save_period_ms": 20000, # Time between default saves. @@ -623,6 +625,7 @@ class App(QtCore.QObject): "units": self.general_options_form.general_app_group.units_radio, "global_gridx": self.general_options_form.general_gui_group.gridx_entry, "global_gridy": self.general_options_form.general_gui_group.gridy_entry, + "global_theme": self.general_options_form.general_gui_group.theme_combo, "gerber_plot": self.gerber_options_form.gerber_gen_group.plot_cb, "gerber_solid": self.gerber_options_form.gerber_gen_group.solid_cb, @@ -730,6 +733,7 @@ class App(QtCore.QObject): "global_verbose_error_level": 0, # Shell verbosity: # 0 = default(python trace only for unknown errors), # 1 = show trace(show trace allways), 2 = (For the future). + "global_theme": 'standard', "gerber_plot": True, "gerber_solid": True, @@ -1152,6 +1156,7 @@ class App(QtCore.QObject): self.general_defaults_form.general_gui_group.wk_cb.currentIndexChanged.connect(self.on_workspace_modified) self.general_defaults_form.general_gui_group.workspace_cb.stateChanged.connect(self.on_workspace) + self.general_defaults_form.general_gui_group.theme_combo.currentIndexChanged.connect(self.on_theme) # Modify G-CODE Plot Area TAB self.ui.code_editor.textChanged.connect(self.handleTextChanged) @@ -3104,6 +3109,9 @@ class App(QtCore.QObject): self.general_defaults_form.general_gui_group.workspace_cb.setChecked(True) self.on_workspace() + def on_theme(self): + self.defaults["global_theme"] = self.general_defaults_form.general_gui_group.theme_combo.get_value() + def on_save_button(self): self.save_defaults(silent=False) # load the defaults so they are updated into the app diff --git a/FlatCAMGUI.py b/FlatCAMGUI.py index 98a53e3c..c015143a 100644 --- a/FlatCAMGUI.py +++ b/FlatCAMGUI.py @@ -365,6 +365,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_editor_menu.menuAction().setVisible(False) self.exc_editor_menu.setDisabled(True) + ################################ ### Project Tab Context menu ### ################################ @@ -384,10 +385,77 @@ class FlatCAMGUI(QtWidgets.QMainWindow): ############### ### Toolbar ### ############### + + ### TOOLBAR INSTALLATION ### self.toolbarfile = QtWidgets.QToolBar('File Toolbar') self.toolbarfile.setObjectName('File_TB') self.addToolBar(self.toolbarfile) + self.toolbargeo = QtWidgets.QToolBar('Edit Toolbar') + self.toolbargeo.setObjectName('Edit_TB') + self.addToolBar(self.toolbargeo) + self.toolbarview = QtWidgets.QToolBar('View Toolbar') + self.toolbarview.setObjectName('View_TB') + self.addToolBar(self.toolbarview) + self.toolbartools = QtWidgets.QToolBar('Tools Toolbar') + self.toolbartools.setObjectName('Tools_TB') + self.addToolBar(self.toolbartools) + self.exc_edit_toolbar = QtWidgets.QToolBar('Excellon Editor Toolbar') + self.exc_edit_toolbar.setObjectName('ExcEditor_TB') + self.addToolBar(self.exc_edit_toolbar) + self.geo_edit_toolbar = QtWidgets.QToolBar('Geometry Editor Toolbar') + self.geo_edit_toolbar.setVisible(False) + self.geo_edit_toolbar.setObjectName('GeoEditor_TB') + self.addToolBar(self.geo_edit_toolbar) + self.snap_toolbar = QtWidgets.QToolBar('Grid Toolbar') + self.snap_toolbar.setObjectName('Snap_TB') + self.addToolBar(self.snap_toolbar) + # if self.app.gui_defaults['global_theme'] == 'standard': + # self.toolbarfile = QtWidgets.QToolBar('File Toolbar') + # self.toolbarfile.setObjectName('File_TB') + # self.addToolBar(self.toolbarfile) + # self.toolbargeo = QtWidgets.QToolBar('Edit Toolbar') + # self.toolbargeo.setObjectName('Edit_TB') + # self.addToolBar(self.toolbargeo) + # self.toolbarview = QtWidgets.QToolBar('View Toolbar') + # self.toolbarview.setObjectName('View_TB') + # self.addToolBar(self.toolbarview) + # self.toolbartools = QtWidgets.QToolBar('Tools Toolbar') + # self.toolbartools.setObjectName('Tools_TB') + # self.addToolBar(self.toolbartools) + # self.exc_edit_toolbar = QtWidgets.QToolBar('Excellon Editor Toolbar') + # self.exc_edit_toolbar.setObjectName('ExcEditor_TB') + # self.addToolBar(self.exc_edit_toolbar) + # self.geo_edit_toolbar = QtWidgets.QToolBar('Geometry Editor Toolbar') + # self.geo_edit_toolbar.setVisible(False) + # self.geo_edit_toolbar.setObjectName('GeoEditor_TB') + # self.addToolBar(self.geo_edit_toolbar) + # self.snap_toolbar = QtWidgets.QToolBar('Grid Toolbar') + # self.snap_toolbar.setObjectName('Snap_TB') + # elif self.app.defaults['global_theme'] == 'compact': + # self.toolbarfile = QtWidgets.QToolBar('File Toolbar') + # self.toolbarfile.setObjectName('File_TB') + # self.addToolBar(self.toolbarfile) + # self.toolbargeo = QtWidgets.QToolBar('Edit Toolbar') + # self.toolbargeo.setObjectName('Edit_TB') + # self.addToolBar(self.toolbargeo) + # self.toolbarview = QtWidgets.QToolBar('View Toolbar') + # self.toolbarview.setObjectName('View_TB') + # self.addToolBar(self.toolbarview) + # self.toolbartools = QtWidgets.QToolBar('Tools Toolbar') + # self.toolbartools.setObjectName('Tools_TB') + # self.addToolBar(self.toolbartools) + # self.exc_edit_toolbar = QtWidgets.QToolBar('Excellon Editor Toolbar') + # self.exc_edit_toolbar.setObjectName('ExcEditor_TB') + # self.addToolBar(self.exc_edit_toolbar) + # self.geo_edit_toolbar = QtWidgets.QToolBar('Geometry Editor Toolbar') + # self.geo_edit_toolbar.setVisible(False) + # self.geo_edit_toolbar.setObjectName('GeoEditor_TB') + # self.addToolBar(self.geo_edit_toolbar) + # self.snap_toolbar = QtWidgets.QToolBar('Grid Toolbar') + # self.snap_toolbar.setObjectName('Snap_TB') + # self.addToolBar(self.snap_toolbar) + ### File Toolbar ### self.file_open_gerber_btn = self.toolbarfile.addAction(QtGui.QIcon('share/flatcam_icon32.png'), "Open GERBER") self.file_open_excellon_btn = self.toolbarfile.addAction(QtGui.QIcon('share/drill32.png'), "Open EXCELLON") @@ -395,10 +463,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.file_open_btn = self.toolbarfile.addAction(QtGui.QIcon('share/folder32.png'), "Open project") self.file_save_btn = self.toolbarfile.addAction(QtGui.QIcon('share/floppy32.png'), "Save project") - self.toolbargeo = QtWidgets.QToolBar('Edit Toolbar') - self.toolbargeo.setObjectName('Edit_TB') - self.addToolBar(self.toolbargeo) - + ### Edit Toolbar ### self.newgeo_btn = self.toolbargeo.addAction(QtGui.QIcon('share/new_geo32_bis.png'), "New Blank Geometry") self.newexc_btn = self.toolbargeo.addAction(QtGui.QIcon('share/new_exc32.png'), "New Blank Excellon") self.toolbargeo.addSeparator() @@ -410,10 +475,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.toolbargeo.addSeparator() self.delete_btn = self.toolbargeo.addAction(QtGui.QIcon('share/cancel_edit32.png'), "&Delete") - self.toolbarview = QtWidgets.QToolBar('View Toolbar') - self.toolbarview.setObjectName('View_TB') - self.addToolBar(self.toolbarview) - + ### View Toolbar ### self.replot_btn = self.toolbarview.addAction(QtGui.QIcon('share/replot32.png'), "&Replot") self.clear_plot_btn = self.toolbarview.addAction(QtGui.QIcon('share/clear_plot32.png'), "&Clear plot") self.zoom_in_btn = self.toolbarview.addAction(QtGui.QIcon('share/zoom_in32.png'), "Zoom In") @@ -422,17 +484,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow): # self.toolbarview.setVisible(False) - self.toolbartools = QtWidgets.QToolBar('Tools Toolbar') - self.toolbartools.setObjectName('Tools_TB') - self.addToolBar(self.toolbartools) - + ### Tools Toolbar ### self.shell_btn = self.toolbartools.addAction(QtGui.QIcon('share/shell32.png'), "&Command Line") ### Drill Editor Toolbar ### - self.exc_edit_toolbar = QtWidgets.QToolBar('Excellon Editor Toolbar') - self.exc_edit_toolbar.setObjectName('ExcEditor_TB') - self.addToolBar(self.exc_edit_toolbar) - self.select_drill_btn = self.exc_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), "Select 'Esc'") self.add_drill_btn = self.exc_edit_toolbar.addAction(QtGui.QIcon('share/plus16.png'), 'Add Drill Hole') self.add_drill_array_btn = self.exc_edit_toolbar.addAction( @@ -450,11 +505,6 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.exc_edit_toolbar.setVisible(False) ### Geometry Editor Toolbar ### - self.geo_edit_toolbar = QtWidgets.QToolBar('Geometry Editor Toolbar') - self.geo_edit_toolbar.setVisible(False) - self.geo_edit_toolbar.setObjectName('GeoEditor_TB') - self.addToolBar(self.geo_edit_toolbar) - self.geo_select_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/pointer32.png'), "Select 'Esc'") self.geo_add_circle_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/circle32.png'), 'Add Circle') self.geo_add_arc_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/arc32.png'), 'Add Arc') @@ -484,10 +534,8 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.geo_move_btn = self.geo_edit_toolbar.addAction(QtGui.QIcon('share/move32.png'), "Move Objects 'm'") ### Snap Toolbar ### - self.snap_toolbar = QtWidgets.QToolBar('Grid Toolbar') - self.snap_toolbar.setObjectName('Snap_TB') # Snap GRID toolbar is always active to facilitate usage of measurements done on GRID - self.addToolBar(self.snap_toolbar) + # self.addToolBar(self.snap_toolbar) self.grid_snap_btn = self.snap_toolbar.addAction(QtGui.QIcon('share/grid32.png'), 'Snap to grid') self.grid_gap_x_entry = FCEntry2() @@ -519,6 +567,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.grid_snap_btn.setCheckable(True) self.corner_snap_btn.setCheckable(True) + ################ ### Splitter ### ################ @@ -531,6 +580,16 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.notebook = QtWidgets.QTabWidget() self.splitter.addWidget(self.notebook) + # if self.app.defaults['global_theme'] == 'standard': + # self.splitter.addWidget(self.notebook) + # elif self.app.defaults['global_theme'] == 'compact': + # self.splitter_2 = QtWidgets.QSplitter(Qt.Vertical) + # self.splitter.addWidget(self.splitter_2) + # self.splitter_2.addWidget(self.notebook) + # self.splitter_2.setHandleWidth(0) + # self.snap_toolbar.setMaximumHeight(30) + # self.splitter_2.addWidget(self.snap_toolbar) + ### Project ### self.project_tab = QtWidgets.QWidget() # project_tab.setMinimumWidth(250) # Hack @@ -1294,6 +1353,15 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): self.form_box_child_11.addWidget(self.sel_draw_color_button) self.form_box_child_11.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + # Theme selection + self.theme_label = QtWidgets.QLabel('Theme:') + self.alt_sf_color_label.setToolTip( + "Select a theme for FlatCAM." + ) + self.theme_combo = FCComboBox() + self.theme_combo.addItem("Standard") + self.theme_combo.addItem("Compact") + # Just to add empty rows self.spacelabel = QtWidgets.QLabel('') @@ -1319,6 +1387,8 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI): self.form_box.addRow(self.draw_color_label, self.form_box_child_10) self.form_box.addRow(self.sel_draw_color_label, self.form_box_child_11) + self.form_box.addRow(self.spacelabel, self.spacelabel) + self.form_box.addRow(self.theme_label, self.theme_combo) # Add the QFormLayout that holds the Application general defaults # to the main layout of this TAB self.layout.addLayout(self.form_box)