Pārlūkot izejas kodu

- in Preferences replaced some widgets with a new one that combine a Slider with a Spinner (courtesy of David Robertson)

Marius Stanciu 5 gadi atpakaļ
vecāks
revīzija
907de3fa9e

+ 3 - 0
AppGUI/GUIElements.py

@@ -750,6 +750,9 @@ class FCSliderWithSpinner(QtWidgets.QFrame):
         self.spinner.set_step(step)
         self.spinner.setMinimumWidth(70)
 
+        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
+        self.spinner.setSizePolicy(sizePolicy)
+
         self.layout = QtWidgets.QHBoxLayout()
         self.layout.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
         self.layout.setContentsMargins(0, 0, 0, 0)

+ 12 - 17
AppGUI/preferences/PreferencesUIManager.py

@@ -754,10 +754,9 @@ class PreferencesUIManager:
         self.ui.gerber_defaults_form.gerber_gen_group.pf_color_button.setStyleSheet(
             "background-color:%s;"
             "border-color: dimgray" % str(self.defaults['gerber_plot_fill'])[:7])
-        self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_spinner.set_value(
-            int(self.defaults['gerber_plot_fill'][7:9], 16))
-        self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.setValue(
-            int(self.defaults['gerber_plot_fill'][7:9], 16))
+
+        self.ui.gerber_defaults_form.gerber_gen_group.gerber_alpha_entry.set_value(
+            int(self.defaults['gerber_plot_fill'][7:9], 16))    # alpha
 
         self.ui.gerber_defaults_form.gerber_gen_group.pl_color_entry.set_value(self.defaults['gerber_plot_line'])
         self.ui.gerber_defaults_form.gerber_gen_group.pl_color_button.setStyleSheet(
@@ -770,9 +769,8 @@ class PreferencesUIManager:
         self.ui.excellon_defaults_form.excellon_gen_group.fill_color_button.setStyleSheet(
             "background-color:%s;"
             "border-color: dimgray" % str(self.defaults['excellon_plot_fill'])[:7])
-        self.ui.excellon_defaults_form.excellon_gen_group.color_alpha_spinner.set_value(
-            int(self.defaults['excellon_plot_fill'][7:9], 16))
-        self.ui.excellon_defaults_form.excellon_gen_group.color_alpha_slider.setValue(
+
+        self.ui.excellon_defaults_form.excellon_gen_group.excellon_alpha_entry.set_value(
             int(self.defaults['excellon_plot_fill'][7:9], 16))
 
         self.ui.excellon_defaults_form.excellon_gen_group.line_color_entry.set_value(
@@ -794,10 +792,9 @@ class PreferencesUIManager:
         self.ui.cncjob_defaults_form.cncjob_gen_group.tfill_color_button.setStyleSheet(
             "background-color:%s;"
             "border-color: dimgray" % str(self.defaults['cncjob_travel_fill'])[:7])
-        self.ui.cncjob_defaults_form.cncjob_gen_group.tcolor_alpha_spinner.set_value(
-            int(self.defaults['cncjob_travel_fill'][7:9], 16))
-        self.ui.cncjob_defaults_form.cncjob_gen_group.tcolor_alpha_slider.setValue(
-            int(self.defaults['cncjob_travel_fill'][7:9], 16))
+
+        self.ui.cncjob_defaults_form.cncjob_gen_group.cncjob_alpha_entry.set_value(
+            int(self.defaults['cncjob_travel_fill'][7:9], 16))      # alpha
 
         self.ui.cncjob_defaults_form.cncjob_gen_group.tline_color_entry.set_value(
             self.defaults['cncjob_travel_line'])
@@ -823,9 +820,8 @@ class PreferencesUIManager:
         self.ui.general_defaults_form.general_gui_group.sf_color_button.setStyleSheet(
             "background-color:%s;"
             "border-color: dimgray" % str(self.defaults['global_sel_fill'])[:7])
-        self.ui.general_defaults_form.general_gui_group.sf_color_alpha_spinner.set_value(
-            int(self.defaults['global_sel_fill'][7:9], 16))
-        self.ui.general_defaults_form.general_gui_group.sf_color_alpha_slider.setValue(
+
+        self.ui.general_defaults_form.general_gui_group.left_right_alpha_entry.set_value(
             int(self.defaults['global_sel_fill'][7:9], 16))
 
         self.ui.general_defaults_form.general_gui_group.sl_color_entry.set_value(self.defaults['global_sel_line'])
@@ -839,9 +835,8 @@ class PreferencesUIManager:
         self.ui.general_defaults_form.general_gui_group.alt_sf_color_button.setStyleSheet(
             "background-color:%s;"
             "border-color: dimgray" % str(self.defaults['global_alt_sel_fill'])[:7])
-        self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_spinner.set_value(
-            int(self.defaults['global_sel_fill'][7:9], 16))
-        self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_slider.setValue(
+
+        self.ui.general_defaults_form.general_gui_group.right_left_alpha_entry.set_value(
             int(self.defaults['global_sel_fill'][7:9], 16))
 
         self.ui.general_defaults_form.general_gui_group.alt_sl_color_entry.set_value(

+ 9 - 26
AppGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py

@@ -1,7 +1,7 @@
 from PyQt5 import QtWidgets, QtCore, QtGui
 from PyQt5.QtCore import QSettings
 
-from AppGUI.GUIElements import FCCheckBox, RadioSet, FCSpinner, FCDoubleSpinner, FCEntry
+from AppGUI.GUIElements import FCCheckBox, RadioSet, FCSpinner, FCDoubleSpinner, FCEntry, FCSliderWithSpinner
 from AppGUI.preferences.OptionsGroupUI import OptionsGroupUI
 import gettext
 import AppTranslation as fcTranslate
@@ -202,25 +202,14 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI):
         grid0.addLayout(self.form_box_child_1, 15, 1)
 
         # Plot Fill Transparency Level
-        self.alpha_label = QtWidgets.QLabel('%s:' % _('Alpha'))
-        self.alpha_label.setToolTip(
+        self.cncjob_alpha_label = QtWidgets.QLabel('%s:' % _('Alpha'))
+        self.cncjob_alpha_label.setToolTip(
             _("Set the fill transparency for plotted objects.")
         )
-        self.tcolor_alpha_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
-        self.tcolor_alpha_slider.setMinimum(0)
-        self.tcolor_alpha_slider.setMaximum(255)
-        self.tcolor_alpha_slider.setSingleStep(1)
+        self.cncjob_alpha_entry = FCSliderWithSpinner(0, 255, 1)
 
-        self.tcolor_alpha_spinner = FCSpinner()
-        self.tcolor_alpha_spinner.setMinimumWidth(70)
-        self.tcolor_alpha_spinner.set_range(0, 255)
-
-        self.form_box_child_3 = QtWidgets.QHBoxLayout()
-        self.form_box_child_3.addWidget(self.tcolor_alpha_slider)
-        self.form_box_child_3.addWidget(self.tcolor_alpha_spinner)
-
-        grid0.addWidget(self.alpha_label, 16, 0)
-        grid0.addLayout(self.form_box_child_3, 16, 1)
+        grid0.addWidget(self.cncjob_alpha_label, 16, 0)
+        grid0.addWidget(self.cncjob_alpha_entry, 16, 1)
 
         separator_line = QtWidgets.QFrame()
         separator_line.setFrameShape(QtWidgets.QFrame.HLine)
@@ -274,8 +263,8 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI):
         self.tline_color_button.clicked.connect(self.on_tline_color_button)
         self.tfill_color_entry.editingFinished.connect(self.on_tfill_color_entry)
         self.tfill_color_button.clicked.connect(self.on_tfill_color_button)
-        self.tcolor_alpha_spinner.valueChanged.connect(self.on_tcolor_spinner)
-        self.tcolor_alpha_slider.valueChanged.connect(self.on_tcolor_slider)
+
+        self.cncjob_alpha_entry.valueChanged.connect(self.on_cncjob_alpha_changed)  # alpha
 
         self.line_color_entry.editingFinished.connect(self.on_line_color_entry)
         self.line_color_button.clicked.connect(self.on_line_color_button)
@@ -306,9 +295,7 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI):
         self.tfill_color_entry.set_value(new_val)
         self.app.defaults['cncjob_travel_fill'] = new_val
 
-    def on_tcolor_spinner(self):
-        spinner_value = self.tcolor_alpha_spinner.value()
-        self.tcolor_alpha_slider.setValue(spinner_value)
+    def on_cncjob_alpha_changed(self, spinner_value):
         self.app.defaults['cncjob_travel_fill'] = \
             self.app.defaults['cncjob_travel_fill'][:7] + \
             (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00')
@@ -316,10 +303,6 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI):
             self.app.defaults['cncjob_travel_line'][:7] + \
             (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00')
 
-    def on_tcolor_slider(self):
-        slider_value = self.tcolor_alpha_slider.value()
-        self.tcolor_alpha_spinner.setValue(slider_value)
-
     def on_tline_color_entry(self):
         self.app.defaults['cncjob_travel_line'] = self.tline_color_entry.get_value()[:7] + \
                                                   self.app.defaults['cncjob_travel_line'][7:9]

+ 9 - 26
AppGUI/preferences/excellon/ExcellonGenPrefGroupUI.py

@@ -3,7 +3,7 @@ import platform
 from PyQt5 import QtWidgets, QtCore, QtGui
 from PyQt5.QtCore import QSettings
 
-from AppGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCEntry
+from AppGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCEntry, FCSliderWithSpinner
 from AppGUI.preferences.OptionsGroupUI import OptionsGroupUI
 import gettext
 import AppTranslation as fcTranslate
@@ -304,25 +304,14 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
         grid2.addLayout(self.form_box_child_1, 14, 1)
 
         # Plot Fill Transparency Level
-        self.alpha_label = QtWidgets.QLabel('%s:' % _('Alpha'))
-        self.alpha_label.setToolTip(
+        self.excellon_alpha_label = QtWidgets.QLabel('%s:' % _('Alpha'))
+        self.excellon_alpha_label.setToolTip(
             _("Set the fill transparency for plotted objects.")
         )
-        self.color_alpha_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
-        self.color_alpha_slider.setMinimum(0)
-        self.color_alpha_slider.setMaximum(255)
-        self.color_alpha_slider.setSingleStep(1)
+        self.excellon_alpha_entry = FCSliderWithSpinner(0, 255, 1)
 
-        self.color_alpha_spinner = FCSpinner()
-        self.color_alpha_spinner.setMinimumWidth(70)
-        self.color_alpha_spinner.set_range(0, 255)
-
-        self.form_box_child_3 = QtWidgets.QHBoxLayout()
-        self.form_box_child_3.addWidget(self.color_alpha_slider)
-        self.form_box_child_3.addWidget(self.color_alpha_spinner)
-
-        grid2.addWidget(self.alpha_label, 15, 0)
-        grid2.addLayout(self.form_box_child_3, 15, 1)
+        grid2.addWidget(self.excellon_alpha_label, 15, 0)
+        grid2.addWidget(self.excellon_alpha_entry, 15, 1)
 
         self.layout.addStretch()
 
@@ -345,8 +334,8 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
         self.line_color_button.clicked.connect(self.on_line_color_button)
         self.fill_color_entry.editingFinished.connect(self.on_fill_color_entry)
         self.fill_color_button.clicked.connect(self.on_fill_color_button)
-        self.color_alpha_spinner.valueChanged.connect(self.on_color_spinner)
-        self.color_alpha_slider.valueChanged.connect(self.on_color_slider)
+
+        self.excellon_alpha_entry.valueChanged.connect(self.on_excellon_alpha_changed)  # alpha
 
         # Load the defaults values into the Excellon Format and Excellon Zeros fields
         self.excellon_defaults_button.clicked.connect(self.on_excellon_defaults_button)
@@ -386,9 +375,7 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
         self.fill_color_entry.set_value(new_val)
         self.app.defaults['excellon_plot_fill'] = new_val
 
-    def on_color_spinner(self):
-        spinner_value = self.color_alpha_spinner.value()
-        self.color_alpha_slider.setValue(spinner_value)
+    def on_excellon_alpha_changed(self, spinner_value):
         self.app.defaults['excellon_plot_fill'] = \
             self.app.defaults['excellon_plot_fill'][:7] + \
             (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00')
@@ -396,10 +383,6 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
             self.app.defaults['excellon_plot_line'][:7] + \
             (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00')
 
-    def on_color_slider(self):
-        slider_value = self.color_alpha_slider.value()
-        self.color_alpha_spinner.setValue(slider_value)
-
     def on_line_color_entry(self):
         self.app.defaults['excellon_plot_line'] = self.line_color_entry.get_value()[:7] + \
                                                 self.app.defaults['excellon_plot_line'][7:9]

+ 37 - 47
AppGUI/preferences/general/GeneralGUIPrefGroupUI.py

@@ -1,7 +1,7 @@
 from PyQt5 import QtWidgets, QtCore, QtGui
 from PyQt5.QtCore import QSettings, Qt
 
-from AppGUI.GUIElements import RadioSet, FCCheckBox, FCButton, FCComboBox, FCEntry, FCSpinner
+from AppGUI.GUIElements import RadioSet, FCCheckBox, FCComboBox, FCEntry, FCSpinner, FCSliderWithSpinner
 from AppGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 import gettext
@@ -187,25 +187,14 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
         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(
+        self.left_right_alpha_label = QtWidgets.QLabel('%s:' % _('Alpha'))
+        self.left_right_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.left_right_alpha_entry = FCSliderWithSpinner(0, 255, 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)
+        grid0.addWidget(self.left_right_alpha_label, 18, 0)
+        grid0.addWidget(self.left_right_alpha_entry, 18, 1)
 
         separator_line = QtWidgets.QFrame()
         separator_line.setFrameShape(QtWidgets.QFrame.HLine)
@@ -254,25 +243,14 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
         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(
+        self.right_left_alpha_label = QtWidgets.QLabel('%s:' % _('Alpha'))
+        self.right_left_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)
+        self.right_left_alpha_entry = FCSliderWithSpinner(0 , 255, 1)
 
-        grid0.addWidget(self.alt_sf_alpha_label, 23, 0)
-        grid0.addLayout(self.form_box_child_9, 23, 1)
+        grid0.addWidget(self.right_left_alpha_label, 23, 0)
+        grid0.addWidget(self.right_left_alpha_entry, 23, 1)
 
         separator_line = QtWidgets.QFrame()
         separator_line.setFrameShape(QtWidgets.QFrame.HLine)
@@ -388,19 +366,19 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
         # 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)
 
+        self.left_right_alpha_entry.valueChanged.connect(self.on_left_right_alpha_changed)  # alpha
+
         # 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)
 
+        self.right_left_alpha_entry.valueChanged.connect(self.on_right_left_alpha_changed)  # alpha
+
         # 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)
@@ -454,18 +432,22 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
         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)
+    def on_left_right_alpha_changed(self, spinner_value):
+        """
+        Change the alpha level for the color of the selection box when selection is done left to right.
+        Called on valueChanged of a FCSliderWithSpinner.
+
+        :param spinner_value:   passed value within [0, 255]
+        :type spinner_value:    int
+        :return:                None
+        :rtype:
+        """
+
         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]
@@ -509,9 +491,17 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
         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)
+    def on_right_left_alpha_changed(self, spinner_value):
+        """
+        Change the alpha level for the color of the selection box when selection is done right to left.
+        Called on valueChanged of a FCSliderWithSpinner.
+
+        :param spinner_value:   passed value within [0, 255]
+        :type spinner_value:    int
+        :return:                None
+        :rtype:
+        """
+
         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] + \

+ 9 - 26
AppGUI/preferences/gerber/GerberGenPrefGroupUI.py

@@ -1,7 +1,7 @@
 from PyQt5 import QtWidgets, QtCore, QtGui
 from PyQt5.QtCore import QSettings
 
-from AppGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCEntry
+from AppGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCEntry, FCSliderWithSpinner
 from AppGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 import gettext
@@ -186,25 +186,14 @@ class GerberGenPrefGroupUI(OptionsGroupUI):
         grid0.addLayout(self.form_box_child_1, 12, 1, 1, 2)
 
         # Plot Fill Transparency Level
-        self.pf_alpha_label = QtWidgets.QLabel('%s:' % _('Alpha'))
-        self.pf_alpha_label.setToolTip(
+        self.gerber_alpha_label = QtWidgets.QLabel('%s:' % _('Alpha'))
+        self.gerber_alpha_label.setToolTip(
             _("Set the fill transparency for plotted objects.")
         )
-        self.pf_color_alpha_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
-        self.pf_color_alpha_slider.setMinimum(0)
-        self.pf_color_alpha_slider.setMaximum(255)
-        self.pf_color_alpha_slider.setSingleStep(1)
+        self.gerber_alpha_entry = FCSliderWithSpinner(0, 255, 1)
 
-        self.pf_color_alpha_spinner = FCSpinner()
-        self.pf_color_alpha_spinner.setMinimumWidth(70)
-        self.pf_color_alpha_spinner.set_range(0, 255)
-
-        self.form_box_child_3 = QtWidgets.QHBoxLayout()
-        self.form_box_child_3.addWidget(self.pf_color_alpha_slider)
-        self.form_box_child_3.addWidget(self.pf_color_alpha_spinner)
-
-        grid0.addWidget(self.pf_alpha_label, 13, 0)
-        grid0.addLayout(self.form_box_child_3, 13, 1, 1, 2)
+        grid0.addWidget(self.gerber_alpha_label, 13, 0)
+        grid0.addWidget(self.gerber_alpha_entry, 13, 1, 1, 2)
 
         self.layout.addStretch()
 
@@ -213,8 +202,8 @@ class GerberGenPrefGroupUI(OptionsGroupUI):
         self.pl_color_button.clicked.connect(self.on_pl_color_button)
         self.pf_color_entry.editingFinished.connect(self.on_pf_color_entry)
         self.pf_color_button.clicked.connect(self.on_pf_color_button)
-        self.pf_color_alpha_spinner.valueChanged.connect(self.on_pf_color_spinner)
-        self.pf_color_alpha_slider.valueChanged.connect(self.on_pf_color_slider)
+
+        self.gerber_alpha_entry.valueChanged.connect(self.on_gerber_alpha_changed)     # alpha
 
     # Setting plot colors handlers
     def on_pf_color_entry(self):
@@ -237,9 +226,7 @@ class GerberGenPrefGroupUI(OptionsGroupUI):
         self.pf_color_entry.set_value(new_val)
         self.app.defaults['gerber_plot_fill'] = new_val
 
-    def on_pf_color_spinner(self):
-        spinner_value = self.pf_color_alpha_spinner.value()
-        self.pf_color_alpha_slider.setValue(spinner_value)
+    def on_gerber_alpha_changed(self, spinner_value):
         self.app.defaults['gerber_plot_fill'] = \
             self.app.defaults['gerber_plot_fill'][:7] + \
             (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00')
@@ -247,10 +234,6 @@ class GerberGenPrefGroupUI(OptionsGroupUI):
             self.app.defaults['gerber_plot_line'][:7] + \
             (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00')
 
-    def on_pf_color_slider(self):
-        slider_value = self.pf_color_alpha_slider.value()
-        self.pf_color_alpha_spinner.setValue(slider_value)
-
     def on_pl_color_entry(self):
         self.app.defaults['gerber_plot_line'] = self.pl_color_entry.get_value()[:7] + \
                                                 self.app.defaults['gerber_plot_line'][7:9]

+ 2 - 0
CHANGELOG.md

@@ -21,6 +21,8 @@ CHANGELOG for FlatCAM beta
 - added a button for Transformations Tool in the lower side (common) of the Object UI
 - some other UI changes
 - after using Isolation Tool it will switch automatically to the Geometry UI
+- in Preferences replaced some widgets with a new one that combine a Slider with a Spinner (courtesy of David Robertson)
+
 
 31.05.2020