diff --git a/flatcamGUI/preferences/OptionUI.py b/flatcamGUI/preferences/OptionUI.py
index 33d05386..1fb34b72 100644
--- a/flatcamGUI/preferences/OptionUI.py
+++ b/flatcamGUI/preferences/OptionUI.py
@@ -31,12 +31,12 @@ class OptionUI:
class BasicOptionUI(OptionUI):
"""Abstract OptionUI that has a label on the left then some other widget on the right"""
- def __init__(self, option: str, label_text: str, label_tooltip: Union[str, None] = None, label_bold: bool = False, label_red: bool = False):
+ def __init__(self, option: str, label_text: str, label_tooltip: Union[str, None] = None, label_bold: bool = False, label_color: Union[str, None] = None):
super().__init__(option=option)
self.label_text = label_text
self.label_tooltip = label_tooltip
self.label_bold = label_bold
- self.label_red = label_red
+ self.label_color = label_color
self.label_widget = self.build_label_widget()
self.entry_widget = self.build_entry_widget()
@@ -44,8 +44,8 @@ class BasicOptionUI(OptionUI):
fmt = "%s:"
if self.label_bold:
fmt = "%s" % fmt
- if self.label_red:
- fmt = "%s" % fmt
+ if self.label_color:
+ fmt = "%s" % (self.label_color, fmt)
label_widget = QtWidgets.QLabel(fmt % _(self.label_text))
if self.label_tooltip is not None:
label_widget.setToolTip(_(self.label_tooltip))
diff --git a/flatcamGUI/preferences/PreferencesUIManager.py b/flatcamGUI/preferences/PreferencesUIManager.py
index 9172dfc7..7b5eaec6 100644
--- a/flatcamGUI/preferences/PreferencesUIManager.py
+++ b/flatcamGUI/preferences/PreferencesUIManager.py
@@ -141,11 +141,6 @@ class PreferencesUIManager:
"excellon_editor_slot_circ_angle":
self.ui.excellon_defaults_form.excellon_editor_group.slot_array_circular_angle_entry,
- # Geometry General
- "geometry_plot": self.ui.geometry_defaults_form.geometry_gen_group.plot_cb,
- "geometry_circle_steps": self.ui.geometry_defaults_form.geometry_gen_group.circle_steps_entry,
- "geometry_cnctooldia": self.ui.geometry_defaults_form.geometry_gen_group.cnctooldia_entry,
- "geometry_plot_line": self.ui.geometry_defaults_form.geometry_gen_group.line_color_entry,
# Geometry Options
"geometry_cutz": self.ui.geometry_defaults_form.geometry_opt_group.cutz_entry,
@@ -594,13 +589,6 @@ class PreferencesUIManager:
"background-color:%s;"
"border-color: dimgray" % str(self.defaults['excellon_plot_line'])[:7])
- # Init Geometry Plot Colors
- self.ui.geometry_defaults_form.geometry_gen_group.line_color_entry.set_value(
- self.defaults['geometry_plot_line'])
- self.ui.geometry_defaults_form.geometry_gen_group.line_color_button.setStyleSheet(
- "background-color:%s;"
- "border-color: dimgray" % str(self.defaults['geometry_plot_line'])[:7])
-
# Init CNCJob Travel Line Colors
self.ui.cncjob_defaults_form.cncjob_gen_group.tfill_color_entry.set_value(
self.defaults['cncjob_travel_fill'])
diff --git a/flatcamGUI/preferences/general/GeneralAppPrefGroupUI.py b/flatcamGUI/preferences/general/GeneralAppPrefGroupUI.py
index 96ac84b7..4ab4f105 100644
--- a/flatcamGUI/preferences/general/GeneralAppPrefGroupUI.py
+++ b/flatcamGUI/preferences/general/GeneralAppPrefGroupUI.py
@@ -49,7 +49,7 @@ class GeneralAppPrefGroupUI(OptionsGroupUI2):
"Whatever is selected here is set every time\n"
"FlatCAM is started.",
label_bold=True,
- label_red=True,
+ label_color="red",
choices=[{'label': _('MM'), 'value': 'MM'},
{'label': _('IN'), 'value': 'IN'}]
),
@@ -94,7 +94,7 @@ class GeneralAppPrefGroupUI(OptionsGroupUI2):
"The choice here will influence the parameters in\n"
"the Selected Tab for all kinds of FlatCAM objects.",
label_bold=True,
- label_red=True,
+ label_color="red",
choices=[{'label': _('Basic'), 'value': 'b'},
{'label': _('Advanced'), 'value': 'a'}]
),
diff --git a/flatcamGUI/preferences/geometry/GeometryGenPrefGroupUI.py b/flatcamGUI/preferences/geometry/GeometryGenPrefGroupUI.py
index 60479236..1e800702 100644
--- a/flatcamGUI/preferences/geometry/GeometryGenPrefGroupUI.py
+++ b/flatcamGUI/preferences/geometry/GeometryGenPrefGroupUI.py
@@ -1,8 +1,5 @@
-from PyQt5 import QtWidgets, QtCore, QtGui
-from PyQt5.QtCore import QSettings
-
-from flatcamGUI.GUIElements import FCCheckBox, FCSpinner, FCEntry
-from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
+from flatcamGUI.preferences.OptionUI import *
+from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI2
import gettext
import FlatCAMTranslation as fcTranslate
@@ -12,112 +9,46 @@ fcTranslate.apply_language('strings')
if '_' not in builtins.__dict__:
_ = gettext.gettext
-settings = QSettings("Open Source", "FlatCAM")
-if settings.contains("machinist"):
- machinist_setting = settings.value('machinist', type=int)
-else:
- machinist_setting = 0
+class GeometryGenPrefGroupUI(OptionsGroupUI2):
-class GeometryGenPrefGroupUI(OptionsGroupUI):
- def __init__(self, decimals=4, parent=None):
- # OptionsGroupUI.__init__(self, "Geometry General Preferences", parent=parent)
- super(GeometryGenPrefGroupUI, self).__init__(self, parent=parent)
-
- self.setTitle(str(_("Geometry General")))
+ def __init__(self, decimals=4, **kwargs):
self.decimals = decimals
+ super().__init__(**kwargs)
+ self.setTitle(str(_("Geometry General")))
- # ## Plot options
- self.plot_options_label = QtWidgets.QLabel("%s:" % _("Plot Options"))
- self.layout.addWidget(self.plot_options_label)
+ def build_options(self) -> [OptionUI]:
+ return [
+ HeadingOptionUI(label_text="Plot Options"),
+ CheckboxOptionUI(
+ option="geometry_plot",
+ label_text="Plot",
+ label_tooltip="Plot (show) this object."
+ ),
+ SpinnerOptionUI(
+ option="geometry_circle_steps",
+ label_text="Circle Steps",
+ label_tooltip="The number of circle steps for Geometry \n"
+ "circle and arc shapes linear approximation.",
+ min_value=0, max_value=9999, step=1
+ ),
+ HeadingOptionUI(label_text="Tools"),
+ LineEntryOptionUI(
+ option="geometry_cnctooldia",
+ label_text="Tools Dia",
+ label_color="green",
+ label_bold=True,
+ label_tooltip="Diameters of the tools, separated by comma.\n"
+ "The value of the diameter has to use the dot decimals separator.\n"
+ "Valid values: 0.3, 1.0"
+ ),
+ SeparatorOptionUI(),
- # Plot CB
- self.plot_cb = FCCheckBox(label=_('Plot'))
- self.plot_cb.setToolTip(
- _("Plot (show) this object.")
- )
- self.layout.addWidget(self.plot_cb)
+ HeadingOptionUI(label_text="Geometry Object Color"),
+ ColorOptionUI(
+ option="geometry_plot_line",
+ label_text="Outline",
- grid0 = QtWidgets.QGridLayout()
- self.layout.addLayout(grid0)
- grid0.setColumnStretch(0, 0)
- grid0.setColumnStretch(1, 1)
-
- # Number of circle steps for circular aperture linear approximation
- self.circle_steps_label = QtWidgets.QLabel('%s:' % _("Circle Steps"))
- self.circle_steps_label.setToolTip(
- _("The number of circle steps for Geometry \n"
- "circle and arc shapes linear approximation.")
- )
- self.circle_steps_entry = FCSpinner()
- self.circle_steps_entry.set_range(0, 999)
-
- grid0.addWidget(self.circle_steps_label, 1, 0)
- grid0.addWidget(self.circle_steps_entry, 1, 1)
-
- # Tools
- self.tools_label = QtWidgets.QLabel("%s:" % _("Tools"))
- grid0.addWidget(self.tools_label, 2, 0, 1, 2)
-
- # Tooldia
- tdlabel = QtWidgets.QLabel('%s:' % _('Tools Dia'))
- tdlabel.setToolTip(
- _("Diameters of the tools, separated by comma.\n"
- "The value of the diameter has to use the dot decimals separator.\n"
- "Valid values: 0.3, 1.0")
- )
- self.cnctooldia_entry = FCEntry()
-
- grid0.addWidget(tdlabel, 3, 0)
- grid0.addWidget(self.cnctooldia_entry, 3, 1)
-
- separator_line = QtWidgets.QFrame()
- separator_line.setFrameShape(QtWidgets.QFrame.HLine)
- separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
- grid0.addWidget(separator_line, 9, 0, 1, 2)
-
- # Geometry Object Color
- self.gerber_color_label = QtWidgets.QLabel('%s' % _('Geometry Object Color'))
- grid0.addWidget(self.gerber_color_label, 10, 0, 1, 2)
-
- # Plot Line Color
- self.line_color_label = QtWidgets.QLabel('%s:' % _('Outline'))
- self.line_color_label.setToolTip(
- _("Set the line color for plotted objects.")
- )
- self.line_color_entry = FCEntry()
- self.line_color_button = QtWidgets.QPushButton()
- self.line_color_button.setFixedSize(15, 15)
-
- self.form_box_child_2 = QtWidgets.QHBoxLayout()
- self.form_box_child_2.addWidget(self.line_color_entry)
- self.form_box_child_2.addWidget(self.line_color_button)
- self.form_box_child_2.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
-
- grid0.addWidget(self.line_color_label, 11, 0)
- grid0.addLayout(self.form_box_child_2, 11, 1)
-
- self.layout.addStretch()
-
- # Setting plot colors signals
- self.line_color_entry.editingFinished.connect(self.on_line_color_entry)
- self.line_color_button.clicked.connect(self.on_line_color_button)
-
- def on_line_color_entry(self):
- self.app.defaults['geometry_plot_line'] = self.line_color_entry.get_value()[:7] + 'FF'
- self.line_color_button.setStyleSheet("background-color:%s" % str(self.app.defaults['geometry_plot_line'])[:7])
-
- def on_line_color_button(self):
- current_color = QtGui.QColor(self.app.defaults['geometry_plot_line'][:7])
- # print(current_color)
-
- c_dialog = QtWidgets.QColorDialog()
- plot_line_color = c_dialog.getColor(initial=current_color)
-
- if plot_line_color.isValid() is False:
- return
-
- self.line_color_button.setStyleSheet("background-color:%s" % str(plot_line_color.name()))
-
- new_val_line = str(plot_line_color.name()) + str(self.app.defaults['geometry_plot_line'][7:9])
- self.line_color_entry.set_value(new_val_line)
+ label_tooltip="Set the line color for plotted objects.",
+ ),
+ ]
diff --git a/flatcamGUI/preferences/geometry/GeometryPreferencesUI.py b/flatcamGUI/preferences/geometry/GeometryPreferencesUI.py
index c0e5a10f..c15ff152 100644
--- a/flatcamGUI/preferences/geometry/GeometryPreferencesUI.py
+++ b/flatcamGUI/preferences/geometry/GeometryPreferencesUI.py
@@ -5,6 +5,13 @@ from flatcamGUI.preferences.geometry.GeometryAdvOptPrefGroupUI import GeometryAd
from flatcamGUI.preferences.geometry.GeometryOptPrefGroupUI import GeometryOptPrefGroupUI
from flatcamGUI.preferences.geometry.GeometryGenPrefGroupUI import GeometryGenPrefGroupUI
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+fcTranslate.apply_language('strings')
+if '_' not in builtins.__dict__:
+ _ = gettext.gettext
+
class GeometryPreferencesUI(PreferencesSectionUI):