from PyQt5 import QtWidgets, QtCore, QtGui from PyQt5.QtCore import QSettings, Qt from flatcamGUI.GUIElements import RadioSet, FCCheckBox, FCButton, FCComboBox, FCEntry, FCSpinner from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI class GeneralGUIPrefGroupUI(OptionsGroupUI): def __init__(self, decimals=4, parent=None): super(GeneralGUIPrefGroupUI, self).__init__(self) self.setTitle(str(_("GUI Preferences"))) self.decimals = decimals # Create a grid layout for the Application general settings grid0 = QtWidgets.QGridLayout() self.layout.addLayout(grid0) grid0.setColumnStretch(0, 0) grid0.setColumnStretch(1, 1) # Theme selection self.theme_label = QtWidgets.QLabel('%s:' % _('Theme')) self.theme_label.setToolTip( _("Select a theme for FlatCAM.\n" "It will theme the plot area.") ) self.theme_radio = RadioSet([ {"label": _("Light"), "value": "white"}, {"label": _("Dark"), "value": "black"} ], orientation='vertical') grid0.addWidget(self.theme_label, 0, 0) grid0.addWidget(self.theme_radio, 0, 1) # Enable Gray Icons self.gray_icons_cb = FCCheckBox('%s' % _('Use Gray Icons')) self.gray_icons_cb.setToolTip( _("Check this box to use a set of icons with\n" "a lighter (gray) color. To be used when a\n" "full dark theme is applied.") ) grid0.addWidget(self.gray_icons_cb, 1, 0, 1, 3) self.theme_button = FCButton(_("Apply Theme")) self.theme_button.setToolTip( _("Select a theme for FlatCAM.\n" "It will theme the plot area.\n" "The application will restart after change.") ) grid0.addWidget(self.theme_button, 2, 0, 1, 3) separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) grid0.addWidget(separator_line, 3, 0, 1, 2) # Layout selection self.layout_label = QtWidgets.QLabel('%s:' % _('Layout')) self.layout_label.setToolTip( _("Select an layout for FlatCAM.\n" "It is applied immediately.") ) self.layout_combo = FCComboBox() # don't translate the QCombo items as they are used in QSettings and identified by name self.layout_combo.addItem("standard") self.layout_combo.addItem("compact") self.layout_combo.addItem("minimal") grid0.addWidget(self.layout_label, 4, 0) grid0.addWidget(self.layout_combo, 4, 1) # Set the current index for layout_combo qsettings = QSettings("Open Source", "FlatCAM") if qsettings.contains("layout"): layout = qsettings.value('layout', type=str) idx = self.layout_combo.findText(layout.capitalize()) self.layout_combo.setCurrentIndex(idx) # Style selection self.style_label = QtWidgets.QLabel('%s:' % _('Style')) self.style_label.setToolTip( _("Select an style for FlatCAM.\n" "It will be applied at the next app start.") ) self.style_combo = FCComboBox() self.style_combo.addItems(QtWidgets.QStyleFactory.keys()) # find current style index = self.style_combo.findText(QtWidgets.qApp.style().objectName(), QtCore.Qt.MatchFixedString) self.style_combo.setCurrentIndex(index) self.style_combo.activated[str].connect(self.handle_style) grid0.addWidget(self.style_label, 5, 0) grid0.addWidget(self.style_combo, 5, 1) # Enable High DPI Support self.hdpi_cb = FCCheckBox('%s' % _('Activate HDPI Support')) self.hdpi_cb.setToolTip( _("Enable High DPI support for FlatCAM.\n" "It will be applied at the next app start.") ) qsettings = QSettings("Open Source", "FlatCAM") if qsettings.contains("hdpi"): self.hdpi_cb.set_value(qsettings.value('hdpi', type=int)) else: self.hdpi_cb.set_value(False) self.hdpi_cb.stateChanged.connect(self.handle_hdpi) grid0.addWidget(self.hdpi_cb, 6, 0, 1, 3) # Enable Hover box self.hover_cb = FCCheckBox('%s' % _('Display Hover Shape')) self.hover_cb.setToolTip( _("Enable display of a hover shape for FlatCAM objects.\n" "It is displayed whenever the mouse cursor is hovering\n" "over any kind of not-selected object.") ) grid0.addWidget(self.hover_cb, 8, 0, 1, 3) # Enable Selection box self.selection_cb = FCCheckBox('%s' % _('Display Selection Shape')) self.selection_cb.setToolTip( _("Enable the display of a selection shape for FlatCAM objects.\n" "It is displayed whenever the mouse selects an object\n" "either by clicking or dragging mouse from left to right or\n" "right to left.") ) grid0.addWidget(self.selection_cb, 9, 0, 1, 3) separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) grid0.addWidget(separator_line, 14, 0, 1, 2) # Plot Selection (left - right) Color self.sel_lr_label = QtWidgets.QLabel('%s' % _('Left-Right Selection Color')) grid0.addWidget(self.sel_lr_label, 15, 0, 1, 2) self.sl_color_label = QtWidgets.QLabel('%s:' % _('Outline')) self.sl_color_label.setToolTip( _("Set the line color for the 'left to right' selection box.") ) self.sl_color_entry = FCEntry() self.sl_color_button = QtWidgets.QPushButton() self.sl_color_button.setFixedSize(15, 15) self.form_box_child_4 = QtWidgets.QHBoxLayout() self.form_box_child_4.addWidget(self.sl_color_entry) self.form_box_child_4.addWidget(self.sl_color_button) self.form_box_child_4.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) grid0.addWidget(self.sl_color_label, 16, 0) grid0.addLayout(self.form_box_child_4, 16, 1) self.sf_color_label = QtWidgets.QLabel('%s:' % _('Fill')) self.sf_color_label.setToolTip( _("Set the fill color for the selection box\n" "in case that the selection is done from left to right.\n" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level.") ) self.sf_color_entry = FCEntry() self.sf_color_button = QtWidgets.QPushButton() self.sf_color_button.setFixedSize(15, 15) self.form_box_child_5 = QtWidgets.QHBoxLayout() self.form_box_child_5.addWidget(self.sf_color_entry) self.form_box_child_5.addWidget(self.sf_color_button) self.form_box_child_5.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) grid0.addWidget(self.sf_color_label, 17, 0) grid0.addLayout(self.form_box_child_5, 17, 1) # Plot Selection (left - right) Fill Transparency Level self.sf_alpha_label = QtWidgets.QLabel('%s:' % _('Alpha')) self.sf_alpha_label.setToolTip( _("Set the fill transparency for the 'left to right' selection box.") ) self.sf_color_alpha_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) self.sf_color_alpha_slider.setMinimum(0) self.sf_color_alpha_slider.setMaximum(255) self.sf_color_alpha_slider.setSingleStep(1) self.sf_color_alpha_spinner = FCSpinner() self.sf_color_alpha_spinner.setMinimumWidth(70) self.sf_color_alpha_spinner.set_range(0, 255) self.form_box_child_6 = QtWidgets.QHBoxLayout() self.form_box_child_6.addWidget(self.sf_color_alpha_slider) self.form_box_child_6.addWidget(self.sf_color_alpha_spinner) grid0.addWidget(self.sf_alpha_label, 18, 0) grid0.addLayout(self.form_box_child_6, 18, 1) separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) grid0.addWidget(separator_line, 19, 0, 1, 2) # Plot Selection (left - right) Color self.sel_rl_label = QtWidgets.QLabel('%s' % _('Right-Left Selection Color')) grid0.addWidget(self.sel_rl_label, 20, 0, 1, 2) # Plot Selection (right - left) Line Color self.alt_sl_color_label = QtWidgets.QLabel('%s:' % _('Outline')) self.alt_sl_color_label.setToolTip( _("Set the line color for the 'right to left' selection box.") ) self.alt_sl_color_entry = FCEntry() self.alt_sl_color_button = QtWidgets.QPushButton() self.alt_sl_color_button.setFixedSize(15, 15) self.form_box_child_7 = QtWidgets.QHBoxLayout() self.form_box_child_7.addWidget(self.alt_sl_color_entry) self.form_box_child_7.addWidget(self.alt_sl_color_button) self.form_box_child_7.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) grid0.addWidget(self.alt_sl_color_label, 21, 0) grid0.addLayout(self.form_box_child_7, 21, 1) # Plot Selection (right - left) Fill Color self.alt_sf_color_label = QtWidgets.QLabel('%s:' % _('Fill')) self.alt_sf_color_label.setToolTip( _("Set the fill color for the selection box\n" "in case that the selection is done from right to left.\n" "First 6 digits are the color and the last 2\n" "digits are for alpha (transparency) level.") ) self.alt_sf_color_entry = FCEntry() self.alt_sf_color_button = QtWidgets.QPushButton() self.alt_sf_color_button.setFixedSize(15, 15) self.form_box_child_8 = QtWidgets.QHBoxLayout() self.form_box_child_8.addWidget(self.alt_sf_color_entry) self.form_box_child_8.addWidget(self.alt_sf_color_button) self.form_box_child_8.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) grid0.addWidget(self.alt_sf_color_label, 22, 0) grid0.addLayout(self.form_box_child_8, 22, 1) # Plot Selection (right - left) Fill Transparency Level self.alt_sf_alpha_label = QtWidgets.QLabel('%s:' % _('Alpha')) self.alt_sf_alpha_label.setToolTip( _("Set the fill transparency for selection 'right to left' box.") ) self.alt_sf_color_alpha_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal) self.alt_sf_color_alpha_slider.setMinimum(0) self.alt_sf_color_alpha_slider.setMaximum(255) self.alt_sf_color_alpha_slider.setSingleStep(1) self.alt_sf_color_alpha_spinner = FCSpinner() self.alt_sf_color_alpha_spinner.setMinimumWidth(70) self.alt_sf_color_alpha_spinner.set_range(0, 255) self.form_box_child_9 = QtWidgets.QHBoxLayout() self.form_box_child_9.addWidget(self.alt_sf_color_alpha_slider) self.form_box_child_9.addWidget(self.alt_sf_color_alpha_spinner) grid0.addWidget(self.alt_sf_alpha_label, 23, 0) grid0.addLayout(self.form_box_child_9, 23, 1) separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) grid0.addWidget(separator_line, 24, 0, 1, 2) # ------------------------------------------------------------------ # ----------------------- Editor Color ----------------------------- # ------------------------------------------------------------------ self.editor_color_label = QtWidgets.QLabel('%s' % _('Editor Color')) grid0.addWidget(self.editor_color_label, 25, 0, 1, 2) # Editor Draw Color self.draw_color_label = QtWidgets.QLabel('%s:' % _('Drawing')) self.alt_sf_color_label.setToolTip( _("Set the color for the shape.") ) self.draw_color_entry = FCEntry() self.draw_color_button = QtWidgets.QPushButton() self.draw_color_button.setFixedSize(15, 15) self.form_box_child_10 = QtWidgets.QHBoxLayout() self.form_box_child_10.addWidget(self.draw_color_entry) self.form_box_child_10.addWidget(self.draw_color_button) self.form_box_child_10.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) grid0.addWidget(self.draw_color_label, 26, 0) grid0.addLayout(self.form_box_child_10, 26, 1) # Editor Draw Selection Color self.sel_draw_color_label = QtWidgets.QLabel('%s:' % _('Selection')) self.sel_draw_color_label.setToolTip( _("Set the color of the shape when selected.") ) self.sel_draw_color_entry = FCEntry() self.sel_draw_color_button = QtWidgets.QPushButton() self.sel_draw_color_button.setFixedSize(15, 15) self.form_box_child_11 = QtWidgets.QHBoxLayout() self.form_box_child_11.addWidget(self.sel_draw_color_entry) self.form_box_child_11.addWidget(self.sel_draw_color_button) self.form_box_child_11.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) grid0.addWidget(self.sel_draw_color_label, 27, 0) grid0.addLayout(self.form_box_child_11, 27, 1) separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) grid0.addWidget(separator_line, 28, 0, 1, 2) # ------------------------------------------------------------------ # ----------------------- Project Settings ----------------------------- # ------------------------------------------------------------------ self.proj_settings_label = QtWidgets.QLabel('%s' % _('Project Items Color')) grid0.addWidget(self.proj_settings_label, 29, 0, 1, 2) # Project Tab items color self.proj_color_label = QtWidgets.QLabel('%s:' % _('Enabled')) self.proj_color_label.setToolTip( _("Set the color of the items in Project Tab Tree.") ) self.proj_color_entry = FCEntry() self.proj_color_button = QtWidgets.QPushButton() self.proj_color_button.setFixedSize(15, 15) self.form_box_child_12 = QtWidgets.QHBoxLayout() self.form_box_child_12.addWidget(self.proj_color_entry) self.form_box_child_12.addWidget(self.proj_color_button) self.form_box_child_12.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) grid0.addWidget(self.proj_color_label, 30, 0) grid0.addLayout(self.form_box_child_12, 30, 1) self.proj_color_dis_label = QtWidgets.QLabel('%s:' % _('Disabled')) self.proj_color_dis_label.setToolTip( _("Set the color of the items in Project Tab Tree,\n" "for the case when the items are disabled.") ) self.proj_color_dis_entry = FCEntry() self.proj_color_dis_button = QtWidgets.QPushButton() self.proj_color_dis_button.setFixedSize(15, 15) self.form_box_child_13 = QtWidgets.QHBoxLayout() self.form_box_child_13.addWidget(self.proj_color_dis_entry) self.form_box_child_13.addWidget(self.proj_color_dis_button) self.form_box_child_13.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) grid0.addWidget(self.proj_color_dis_label, 31, 0) grid0.addLayout(self.form_box_child_13, 31, 1) # Project autohide CB self.project_autohide_cb = FCCheckBox(label=_('Project AutoHide')) self.project_autohide_cb.setToolTip( _("Check this box if you want the project/selected/tool tab area to\n" "hide automatically when there are no objects loaded and\n" "to show whenever a new object is created.") ) grid0.addWidget(self.project_autohide_cb, 32, 0, 1, 2) # Just to add empty rows grid0.addWidget(QtWidgets.QLabel(''), 33, 0, 1, 2) self.layout.addStretch() self.theme_button.clicked.connect(self.on_theme_change) # ############################################################################# # ############################# GUI COLORS SIGNALS ############################ # ############################################################################# # Setting selection (left - right) colors signals self.sf_color_entry.editingFinished.connect(self.on_sf_color_entry) self.sf_color_button.clicked.connect(self.on_sf_color_button) self.sf_color_alpha_spinner.valueChanged.connect(self.on_sf_color_spinner) self.sf_color_alpha_slider.valueChanged.connect(self.on_sf_color_slider) self.sl_color_entry.editingFinished.connect(self.on_sl_color_entry) self.sl_color_button.clicked.connect(self.on_sl_color_button) # Setting selection (right - left) colors signals self.alt_sf_color_entry.editingFinished.connect(self.on_alt_sf_color_entry) self.alt_sf_color_button.clicked.connect(self.on_alt_sf_color_button) self.alt_sf_color_alpha_spinner.valueChanged.connect(self.on_alt_sf_color_spinner) self.alt_sf_color_alpha_slider.valueChanged.connect(self.on_alt_sf_color_slider) self.alt_sl_color_entry.editingFinished.connect(self.on_alt_sl_color_entry) self.alt_sl_color_button.clicked.connect(self.on_alt_sl_color_button) # Setting Editor Draw colors signals self.draw_color_entry.editingFinished.connect(self.on_draw_color_entry) self.draw_color_button.clicked.connect(self.on_draw_color_button) self.sel_draw_color_entry.editingFinished.connect(self.on_sel_draw_color_entry) self.sel_draw_color_button.clicked.connect(self.on_sel_draw_color_button) self.proj_color_entry.editingFinished.connect(self.on_proj_color_entry) self.proj_color_button.clicked.connect(self.on_proj_color_button) self.proj_color_dis_entry.editingFinished.connect(self.on_proj_color_dis_entry) self.proj_color_dis_button.clicked.connect(self.on_proj_color_dis_button) self.layout_combo.activated.connect(self.on_layout) def on_theme_change(self): val = self.theme_radio.get_value() qsettings = QSettings("Open Source", "FlatCAM") qsettings.setValue('theme', val) # This will write the setting to the platform specific storage. del qsettings self.app.on_app_restart() @staticmethod def handle_style(style): # set current style qsettings = QSettings("Open Source", "FlatCAM") qsettings.setValue('style', style) # This will write the setting to the platform specific storage. del qsettings @staticmethod def handle_hdpi(state): # set current HDPI qsettings = QSettings("Open Source", "FlatCAM") qsettings.setValue('hdpi', state) # This will write the setting to the platform specific storage. del qsettings # Setting selection colors (left - right) handlers def on_sf_color_entry(self): self.app.defaults['global_sel_fill'] = self.app.defaults['global_sel_fill'][7:9] self.sf_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['global_sel_fill'])[:7]) def on_sf_color_button(self): current_color = QtGui.QColor(self.app.defaults['global_sel_fill'][:7]) c_dialog = QtWidgets.QColorDialog() plot_fill_color = c_dialog.getColor(initial=current_color) if plot_fill_color.isValid() is False: return self.sf_color_button.setStyleSheet("background-color:%s" % str(plot_fill_color.name())) new_val = str(plot_fill_color.name()) + str(self.app.defaults['global_sel_fill'][7:9]) self.sf_color_entry.set_value(new_val) self.app.defaults['global_sel_fill'] = new_val def on_sf_color_spinner(self): spinner_value = self.sf_color_alpha_spinner.value() self.sf_color_alpha_slider.setValue(spinner_value) self.app.defaults['global_sel_fill'] = self.app.defaults['global_sel_fill'][:7] + \ (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') self.app.defaults['global_sel_line'] = self.app.defaults['global_sel_line'][:7] + \ (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') def on_sf_color_slider(self): slider_value = self.sf_color_alpha_slider.value() self.sf_color_alpha_spinner.setValue(slider_value) def on_sl_color_entry(self): self.app.defaults['global_sel_line'] = self.sl_color_entry.get_value()[:7] + \ self.app.defaults['global_sel_line'][7:9] self.sl_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['global_sel_line'])[:7]) def on_sl_color_button(self): current_color = QtGui.QColor(self.app.defaults['global_sel_line'][:7]) c_dialog = QtWidgets.QColorDialog() plot_line_color = c_dialog.getColor(initial=current_color) if plot_line_color.isValid() is False: return self.sl_color_button.setStyleSheet("background-color:%s" % str(plot_line_color.name())) new_val_line = str(plot_line_color.name()) + str(self.app.defaults['global_sel_line'][7:9]) self.sl_color_entry.set_value(new_val_line) self.app.defaults['global_sel_line'] = new_val_line # Setting selection colors (right - left) handlers def on_alt_sf_color_entry(self): self.app.defaults['global_alt_sel_fill'] = self.alt_sf_color_entry.get_value()[:7] + \ self.app.defaults['global_alt_sel_fill'][7:9] self.alt_sf_color_button.setStyleSheet( "background-color:%s" % str(self.app.defaults['global_alt_sel_fill'])[:7] ) def on_alt_sf_color_button(self): current_color = QtGui.QColor(self.app.defaults['global_alt_sel_fill'][:7]) c_dialog = QtWidgets.QColorDialog() plot_fill_color = c_dialog.getColor(initial=current_color) if plot_fill_color.isValid() is False: return self.alt_sf_color_button.setStyleSheet("background-color:%s" % str(plot_fill_color.name())) new_val = str(plot_fill_color.name()) + str(self.app.defaults['global_alt_sel_fill'][7:9]) self.alt_sf_color_entry.set_value(new_val) self.app.defaults['global_alt_sel_fill'] = new_val def on_alt_sf_color_spinner(self): spinner_value = self.alt_sf_color_alpha_spinner.value() self.alt_sf_color_alpha_slider.setValue(spinner_value) self.app.defaults['global_alt_sel_fill'] = self.app.defaults['global_alt_sel_fill'][:7] + \ (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') self.app.defaults['global_alt_sel_line'] = self.app.defaults['global_alt_sel_line'][:7] + \ (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00') def on_alt_sf_color_slider(self): slider_value = self.alt_sf_color_alpha_slider.value() self.alt_sf_color_alpha_spinner.setValue(slider_value) def on_alt_sl_color_entry(self): self.app.defaults['global_alt_sel_line'] = self.alt_sl_color_entry.get_value()[:7] + \ self.app.defaults['global_alt_sel_line'][7:9] self.alt_sl_color_button.setStyleSheet( "background-color:%s" % str(self.app.defaults['global_alt_sel_line'])[:7] ) def on_alt_sl_color_button(self): current_color = QtGui.QColor(self.app.defaults['global_alt_sel_line'][:7]) c_dialog = QtWidgets.QColorDialog() plot_line_color = c_dialog.getColor(initial=current_color) if plot_line_color.isValid() is False: return self.alt_sl_color_button.setStyleSheet("background-color:%s" % str(plot_line_color.name())) new_val_line = str(plot_line_color.name()) + str(self.app.defaults['global_alt_sel_line'][7:9]) self.alt_sl_color_entry.set_value(new_val_line) self.app.defaults['global_alt_sel_line'] = new_val_line # Setting Editor colors def on_draw_color_entry(self): self.app.defaults['global_draw_color'] = self.draw_color_entry.get_value() self.draw_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['global_draw_color'])) def on_draw_color_button(self): current_color = QtGui.QColor(self.app.defaults['global_draw_color']) c_dialog = QtWidgets.QColorDialog() draw_color = c_dialog.getColor(initial=current_color) if draw_color.isValid() is False: return self.draw_color_button.setStyleSheet("background-color:%s" % str(draw_color.name())) new_val = str(draw_color.name()) self.draw_color_entry.set_value(new_val) self.app.defaults['global_draw_color'] = new_val def on_sel_draw_color_entry(self): self.app.defaults['global_sel_draw_color'] = self.sel_draw_color_entry.get_value() self.sel_draw_color_button.setStyleSheet( "background-color:%s" % str(self.app.defaults['global_sel_draw_color'])) def on_sel_draw_color_button(self): current_color = QtGui.QColor(self.app.defaults['global_sel_draw_color']) c_dialog = QtWidgets.QColorDialog() sel_draw_color = c_dialog.getColor(initial=current_color) if sel_draw_color.isValid() is False: return self.sel_draw_color_button.setStyleSheet("background-color:%s" % str(sel_draw_color.name())) new_val_sel = str(sel_draw_color.name()) self.sel_draw_color_entry.set_value(new_val_sel) self.app.defaults['global_sel_draw_color'] = new_val_sel def on_proj_color_entry(self): self.app.defaults['global_proj_item_color'] = self.proj_color_entry.get_value() self.proj_color_button.setStyleSheet( "background-color:%s" % str(self.app.defaults['global_proj_item_color'])) def on_proj_color_button(self): current_color = QtGui.QColor(self.app.defaults['global_proj_item_color']) c_dialog = QtWidgets.QColorDialog() proj_color = c_dialog.getColor(initial=current_color) if proj_color.isValid() is False: return self.proj_color_button.setStyleSheet("background-color:%s" % str(proj_color.name())) new_val_sel = str(proj_color.name()) self.proj_color_entry.set_value(new_val_sel) self.app.defaults['global_proj_item_color'] = new_val_sel def on_proj_color_dis_entry(self): self.app.defaults['global_proj_item_dis_color'] = self.proj_color_dis_entry.get_value() self.proj_color_dis_button.setStyleSheet( "background-color:%s" % str(self.app.defaults['global_proj_item_dis_color'])) def on_proj_color_dis_button(self): current_color = QtGui.QColor(self.app.defaults['global_proj_item_dis_color']) c_dialog = QtWidgets.QColorDialog() proj_color = c_dialog.getColor(initial=current_color) if proj_color.isValid() is False: return self.proj_color_dis_button.setStyleSheet("background-color:%s" % str(proj_color.name())) new_val_sel = str(proj_color.name()) self.proj_color_dis_entry.set_value(new_val_sel) self.app.defaults['global_proj_item_dis_color'] = new_val_sel def on_layout(self, index=None, lay=None): """ Set the toolbars layout (location) :param index: :param lay: Type of layout to be set on the toolbard :return: None """ self.app.defaults.report_usage("on_layout()") if lay: current_layout = lay else: current_layout = self.layout_combo.get_value() lay_settings = QSettings("Open Source", "FlatCAM") lay_settings.setValue('layout', current_layout) # This will write the setting to the platform specific storage. del lay_settings # first remove the toolbars: try: self.app.ui.removeToolBar(self.app.ui.toolbarfile) self.app.ui.removeToolBar(self.app.ui.toolbargeo) self.app.ui.removeToolBar(self.app.ui.toolbarview) self.app.ui.removeToolBar(self.app.ui.toolbarshell) self.app.ui.removeToolBar(self.app.ui.toolbartools) self.app.ui.removeToolBar(self.app.ui.exc_edit_toolbar) self.app.ui.removeToolBar(self.app.ui.geo_edit_toolbar) self.app.ui.removeToolBar(self.app.ui.grb_edit_toolbar) self.app.ui.removeToolBar(self.app.ui.snap_toolbar) self.app.ui.removeToolBar(self.app.ui.toolbarshell) except Exception: pass if current_layout == 'compact': # ## TOOLBAR INSTALLATION # ## self.app.ui.toolbarfile = QtWidgets.QToolBar('File Toolbar') self.app.ui.toolbarfile.setObjectName('File_TB') self.app.ui.addToolBar(Qt.LeftToolBarArea, self.app.ui.toolbarfile) self.app.ui.toolbargeo = QtWidgets.QToolBar('Edit Toolbar') self.app.ui.toolbargeo.setObjectName('Edit_TB') self.app.ui.addToolBar(Qt.LeftToolBarArea, self.app.ui.toolbargeo) self.app.ui.toolbarshell = QtWidgets.QToolBar('Shell Toolbar') self.app.ui.toolbarshell.setObjectName('Shell_TB') self.app.ui.addToolBar(Qt.LeftToolBarArea, self.app.ui.toolbarshell) self.app.ui.toolbartools = QtWidgets.QToolBar('Tools Toolbar') self.app.ui.toolbartools.setObjectName('Tools_TB') self.app.ui.addToolBar(Qt.LeftToolBarArea, self.app.ui.toolbartools) self.app.ui.geo_edit_toolbar = QtWidgets.QToolBar('Geometry Editor Toolbar') # self.app.ui.geo_edit_toolbar.setVisible(False) self.app.ui.geo_edit_toolbar.setObjectName('GeoEditor_TB') self.app.ui.addToolBar(Qt.RightToolBarArea, self.app.ui.geo_edit_toolbar) self.app.ui.toolbarview = QtWidgets.QToolBar('View Toolbar') self.app.ui.toolbarview.setObjectName('View_TB') self.app.ui.addToolBar(Qt.RightToolBarArea, self.app.ui.toolbarview) self.app.ui.addToolBarBreak(area=Qt.RightToolBarArea) self.app.ui.grb_edit_toolbar = QtWidgets.QToolBar('Gerber Editor Toolbar') # self.app.ui.grb_edit_toolbar.setVisible(False) self.app.ui.grb_edit_toolbar.setObjectName('GrbEditor_TB') self.app.ui.addToolBar(Qt.RightToolBarArea, self.app.ui.grb_edit_toolbar) self.app.ui.exc_edit_toolbar = QtWidgets.QToolBar('Excellon Editor Toolbar') self.app.ui.exc_edit_toolbar.setObjectName('ExcEditor_TB') self.app.ui.addToolBar(Qt.RightToolBarArea, self.app.ui.exc_edit_toolbar) self.app.ui.snap_toolbar = QtWidgets.QToolBar('Grid Toolbar') self.app.ui.snap_toolbar.setObjectName('Snap_TB') self.app.ui.snap_toolbar.setMaximumHeight(30) self.app.ui.splitter_left.addWidget(self.app.ui.snap_toolbar) self.app.ui.corner_snap_btn.setVisible(True) self.app.ui.snap_magnet.setVisible(True) else: # ## TOOLBAR INSTALLATION # ## self.app.ui.toolbarfile = QtWidgets.QToolBar('File Toolbar') self.app.ui.toolbarfile.setObjectName('File_TB') self.app.ui.addToolBar(self.app.ui.toolbarfile) self.app.ui.toolbargeo = QtWidgets.QToolBar('Edit Toolbar') self.app.ui.toolbargeo.setObjectName('Edit_TB') self.app.ui.addToolBar(self.app.ui.toolbargeo) self.app.ui.toolbarview = QtWidgets.QToolBar('View Toolbar') self.app.ui.toolbarview.setObjectName('View_TB') self.app.ui.addToolBar(self.app.ui.toolbarview) self.app.ui.toolbarshell = QtWidgets.QToolBar('Shell Toolbar') self.app.ui.toolbarshell.setObjectName('Shell_TB') self.app.ui.addToolBar(self.app.ui.toolbarshell) self.app.ui.toolbartools = QtWidgets.QToolBar('Tools Toolbar') self.app.ui.toolbartools.setObjectName('Tools_TB') self.app.ui.addToolBar(self.app.ui.toolbartools) self.app.ui.exc_edit_toolbar = QtWidgets.QToolBar('Excellon Editor Toolbar') # self.app.ui.exc_edit_toolbar.setVisible(False) self.app.ui.exc_edit_toolbar.setObjectName('ExcEditor_TB') self.app.ui.addToolBar(self.app.ui.exc_edit_toolbar) self.app.ui.addToolBarBreak() self.app.ui.geo_edit_toolbar = QtWidgets.QToolBar('Geometry Editor Toolbar') # self.app.ui.geo_edit_toolbar.setVisible(False) self.app.ui.geo_edit_toolbar.setObjectName('GeoEditor_TB') self.app.ui.addToolBar(self.app.ui.geo_edit_toolbar) self.app.ui.grb_edit_toolbar = QtWidgets.QToolBar('Gerber Editor Toolbar') # self.app.ui.grb_edit_toolbar.setVisible(False) self.app.ui.grb_edit_toolbar.setObjectName('GrbEditor_TB') self.app.ui.addToolBar(self.app.ui.grb_edit_toolbar) self.app.ui.snap_toolbar = QtWidgets.QToolBar('Grid Toolbar') self.app.ui.snap_toolbar.setObjectName('Snap_TB') # self.app.ui.snap_toolbar.setMaximumHeight(30) self.app.ui.addToolBar(self.app.ui.snap_toolbar) self.app.ui.corner_snap_btn.setVisible(False) self.app.ui.snap_magnet.setVisible(False) if current_layout == 'minimal': self.app.ui.toolbarview.setVisible(False) self.app.ui.toolbarshell.setVisible(False) self.app.ui.snap_toolbar.setVisible(False) self.app.ui.geo_edit_toolbar.setVisible(False) self.app.ui.grb_edit_toolbar.setVisible(False) self.app.ui.exc_edit_toolbar.setVisible(False) self.app.ui.lock_toolbar(lock=True) # 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() self.app.ui.grid_snap_btn.setChecked(True) self.app.on_grid_snap_triggered(state=True) self.app.ui.grid_gap_x_entry.setText(str(self.app.defaults["global_gridx"])) self.app.ui.grid_gap_y_entry.setText(str(self.app.defaults["global_gridy"])) self.app.ui.snap_max_dist_entry.setText(str(self.app.defaults["global_snap_max"])) self.app.ui.grid_gap_link_cb.setChecked(True)