Преглед изворни кода

- more updates to the Preferences window and in some other parts of the GUI
- updated the translations (less Russian)

Marius Stanciu пре 6 година
родитељ
комит
47fe73a91b

+ 0 - 13
FlatCAMApp.py

@@ -2070,10 +2070,6 @@ class App(QtCore.QObject):
         # call it once to make sure it is updated at startup
         self.on_update_exc_export(state=self.defaults["excellon_update"])
 
-        # Load the defaults values into the Excellon Format and Excellon Zeros fields
-        self.ui.excellon_defaults_form.excellon_opt_group.excellon_defaults_button.clicked.connect(
-            self.on_excellon_defaults_button)
-
         # when there are arguments at application startup this get launched
         self.args_at_startup[list].connect(self.on_startup_args)
 
@@ -6388,15 +6384,6 @@ class App(QtCore.QObject):
             "background-color:%s;"
             "border-color: dimgray" % str(self.defaults['tools_qrcode_back_color'])[:7])
 
-    def on_excellon_defaults_button(self):
-        self.defaults_form_fields["excellon_format_lower_in"].set_value('4')
-        self.defaults_form_fields["excellon_format_upper_in"].set_value('2')
-        self.defaults_form_fields["excellon_format_lower_mm"].set_value('3')
-        self.defaults_form_fields["excellon_format_upper_mm"].set_value('3')
-        self.defaults_form_fields["excellon_zeros"].set_value('L')
-        self.defaults_form_fields["excellon_units"].set_value('INCH')
-        log.debug("Excellon app defaults loaded ...")
-
     def on_update_exc_export(self, state):
         """
         This is handling the update of Excellon Export parameters based on the ones in the Excellon General but only

+ 5 - 0
README.md

@@ -11,6 +11,11 @@ CAD program, and create G-Code for Isolation routing.
 
 28.12.2019
 
+- more updates to the Preferences window and in some other parts of the GUI
+- updated the translations (less Russian)
+
+28.12.2019
+
 - updated all the translations files
 - fixed the big mouse cursor in OpenGL(3D) graphic mode to get the set color
 - fixed the cursor to have the set color and set cursor width in the Legacy(2D) graphic engine

+ 1 - 1
flatcamGUI/ObjectUI.py

@@ -1637,7 +1637,7 @@ class GeometryObjectUI(ObjectUI):
         self.grid3.addWidget(self.dwelltime_entry, 15, 1)
 
         # preprocessor selection
-        pp_label = QtWidgets.QLabel('%s:' % _("PostProcessor"))
+        pp_label = QtWidgets.QLabel('%s:' % _("Preprocessor"))
         pp_label.setToolTip(
             _("The Preprocessor file that dictates\n"
               "the Machine Code (like GCode, RML, HPGL) output.")

+ 166 - 174
flatcamGUI/PreferencesUI.py

@@ -273,7 +273,7 @@ class CNCJobPreferencesUI(QtWidgets.QWidget):
         self.decimals = decimals
 
         self.cncjob_gen_group = CNCJobGenPrefGroupUI(decimals=self.decimals)
-        self.cncjob_gen_group.setMinimumWidth(320)
+        self.cncjob_gen_group.setMinimumWidth(260)
         self.cncjob_opt_group = CNCJobOptPrefGroupUI(decimals=self.decimals)
         self.cncjob_opt_group.setMinimumWidth(260)
         self.cncjob_adv_opt_group = CNCJobAdvOptPrefGroupUI(decimals=self.decimals)
@@ -1474,15 +1474,13 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.app_level_radio, 5, 1)
 
         # Portability for FlatCAM
-        self.portability_label = QtWidgets.QLabel('%s:' % _('Portable app'))
-        self.portability_label.setToolTip(_("Choose if the application should run as portable.\n\n"
-                                            "If Checked the application will run portable,\n"
-                                            "which means that the preferences files will be saved\n"
-                                            "in the application folder, in the lib\\config subfolder."))
-        self.portability_cb = FCCheckBox()
+        self.portability_cb = FCCheckBox('%s' % _('Portable app'))
+        self.portability_cb.setToolTip(_("Choose if the application should run as portable.\n\n"
+                                         "If Checked the application will run portable,\n"
+                                         "which means that the preferences files will be saved\n"
+                                         "in the application folder, in the lib\\config subfolder."))
 
-        grid0.addWidget(self.portability_label, 6, 0)
-        grid0.addWidget(self.portability_cb, 6, 1)
+        grid0.addWidget(self.portability_cb, 6, 0, 1, 2)
 
         separator_line = QtWidgets.QFrame()
         separator_line.setFrameShape(QtWidgets.QFrame.HLine)
@@ -2358,7 +2356,7 @@ class GerberExpPrefGroupUI(OptionsGroupUI):
         self.layout.addLayout(form)
 
         # Gerber Units
-        self.gerber_units_label = QtWidgets.QLabel('<b>%s:</b>' % _('Units'))
+        self.gerber_units_label = QtWidgets.QLabel('%s:' % _('Units'))
         self.gerber_units_label.setToolTip(
             _("The units used in the Gerber file.")
         )
@@ -2372,7 +2370,7 @@ class GerberExpPrefGroupUI(OptionsGroupUI):
         form.addRow(self.gerber_units_label, self.gerber_units_radio)
 
         # Gerber format
-        self.digits_label = QtWidgets.QLabel("<b>%s:</b>" % _("Int/Decimals"))
+        self.digits_label = QtWidgets.QLabel("%s:" % _("Int/Decimals"))
         self.digits_label.setToolTip(
             _("The number of digits in the whole part of the number\n"
               "and in the fractional part of the number.")
@@ -2412,7 +2410,7 @@ class GerberExpPrefGroupUI(OptionsGroupUI):
         form.addRow(self.digits_label, hlay1)
 
         # Gerber Zeros
-        self.zeros_label = QtWidgets.QLabel('<b>%s:</b>' % _('Zeros'))
+        self.zeros_label = QtWidgets.QLabel('%s:' % _('Zeros'))
         self.zeros_label.setAlignment(QtCore.Qt.AlignLeft)
         self.zeros_label.setToolTip(
             _("This sets the type of Gerber zeros.\n"
@@ -2691,6 +2689,16 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
         )
         grid1.addWidget(self.solid_cb, 0, 1)
 
+        separator_line = QtWidgets.QFrame()
+        separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+        separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+        grid1.addWidget(separator_line, 1, 0, 1, 2)
+
+        grid2 = QtWidgets.QGridLayout()
+        self.layout.addLayout(grid2)
+        grid2.setColumnStretch(0, 0)
+        grid2.setColumnStretch(1, 1)
+
         # Excellon format
         self.excellon_format_label = QtWidgets.QLabel("<b>%s:</b>" % _("Excellon Format"))
         self.excellon_format_label.setToolTip(
@@ -2715,16 +2723,12 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
               "\n"
               "KiCAD 3:5 INCH TZ")
         )
-        self.layout.addWidget(self.excellon_format_label)
+        grid2.addWidget(self.excellon_format_label, 0, 0, 1, 2)
 
-        hlay1 = QtWidgets.QHBoxLayout()
-        self.layout.addLayout(hlay1)
         self.excellon_format_in_label = QtWidgets.QLabel('%s:' % _("INCH"))
-        self.excellon_format_in_label.setAlignment(QtCore.Qt.AlignLeft)
-        self.excellon_format_in_label.setToolTip(
-            _("Default values for INCH are 2:4"))
-        hlay1.addWidget(self.excellon_format_in_label, QtCore.Qt.AlignLeft)
+        self.excellon_format_in_label.setToolTip(_("Default values for INCH are 2:4"))
 
+        hlay1 = QtWidgets.QHBoxLayout()
         self.excellon_format_upper_in_entry = FCSpinner()
         self.excellon_format_upper_in_entry.set_range(0, 9)
         self.excellon_format_upper_in_entry.setMinimumWidth(30)
@@ -2732,11 +2736,11 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
            _("This numbers signify the number of digits in\n"
              "the whole part of Excellon coordinates.")
         )
-        hlay1.addWidget(self.excellon_format_upper_in_entry, QtCore.Qt.AlignLeft)
+        hlay1.addWidget(self.excellon_format_upper_in_entry)
 
         excellon_separator_in_label = QtWidgets.QLabel(':')
         excellon_separator_in_label.setFixedWidth(5)
-        hlay1.addWidget(excellon_separator_in_label, QtCore.Qt.AlignLeft)
+        hlay1.addWidget(excellon_separator_in_label)
 
         self.excellon_format_lower_in_entry = FCSpinner()
         self.excellon_format_lower_in_entry.set_range(0, 9)
@@ -2745,17 +2749,15 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
             _("This numbers signify the number of digits in\n"
               "the decimal part of Excellon coordinates.")
         )
-        hlay1.addWidget(self.excellon_format_lower_in_entry, QtCore.Qt.AlignLeft)
-        hlay1.addStretch()
+        hlay1.addWidget(self.excellon_format_lower_in_entry)
+
+        grid2.addWidget(self.excellon_format_in_label, 1, 0)
+        grid2.addLayout(hlay1, 1, 1)
 
-        hlay2 = QtWidgets.QHBoxLayout()
-        self.layout.addLayout(hlay2)
         self.excellon_format_mm_label = QtWidgets.QLabel('%s:' % _("METRIC"))
-        self.excellon_format_mm_label.setAlignment(QtCore.Qt.AlignLeft)
-        self.excellon_format_mm_label.setToolTip(
-            _("Default values for METRIC are 3:3"))
-        hlay2.addWidget(self.excellon_format_mm_label, QtCore.Qt.AlignLeft)
+        self.excellon_format_mm_label.setToolTip(_("Default values for METRIC are 3:3"))
 
+        hlay2 = QtWidgets.QHBoxLayout()
         self.excellon_format_upper_mm_entry = FCSpinner()
         self.excellon_format_upper_mm_entry.set_range(0, 9)
         self.excellon_format_upper_mm_entry.setMinimumWidth(30)
@@ -2763,7 +2765,7 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
             _("This numbers signify the number of digits in\n"
               "the whole part of Excellon coordinates.")
         )
-        hlay2.addWidget(self.excellon_format_upper_mm_entry, QtCore.Qt.AlignLeft)
+        hlay2.addWidget(self.excellon_format_upper_mm_entry)
 
         excellon_separator_mm_label = QtWidgets.QLabel(':')
         excellon_separator_mm_label.setFixedWidth(5)
@@ -2776,37 +2778,30 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
             _("This numbers signify the number of digits in\n"
               "the decimal part of Excellon coordinates.")
         )
-        hlay2.addWidget(self.excellon_format_lower_mm_entry, QtCore.Qt.AlignLeft)
-        hlay2.addStretch()
+        hlay2.addWidget(self.excellon_format_lower_mm_entry)
 
-        grid2 = QtWidgets.QGridLayout()
-        self.layout.addLayout(grid2)
+        grid2.addWidget(self.excellon_format_mm_label, 2, 0)
+        grid2.addLayout(hlay2, 2, 1)
 
-        self.excellon_zeros_label = QtWidgets.QLabel('%s:' % _('Default <b>Zeros</b>'))
+        self.excellon_zeros_label = QtWidgets.QLabel('%s:' % _('Zeros'))
         self.excellon_zeros_label.setAlignment(QtCore.Qt.AlignLeft)
         self.excellon_zeros_label.setToolTip(
             _("This sets the type of Excellon zeros.\n"
               "If LZ then Leading Zeros are kept and\n"
               "Trailing Zeros are removed.\n"
               "If TZ is checked then Trailing Zeros are kept\n"
-              "and Leading Zeros are removed.")
+              "and Leading Zeros are removed.\n\n"
+              "This is used when there is no information\n"
+              "stored in the Excellon file.")
         )
-        grid2.addWidget(self.excellon_zeros_label, 0, 0)
+        grid2.addWidget(self.excellon_zeros_label, 3, 0)
 
         self.excellon_zeros_radio = RadioSet([{'label': _('LZ'), 'value': 'L'},
                                               {'label': _('TZ'), 'value': 'T'}])
-        self.excellon_zeros_radio.setToolTip(
-            _("This sets the default type of Excellon zeros.\n"
-              "If it is not detected in the parsed file the value here\n"
-              "will be used."
-              "If LZ then Leading Zeros are kept and\n"
-              "Trailing Zeros are removed.\n"
-              "If TZ is checked then Trailing Zeros are kept\n"
-              "and Leading Zeros are removed.")
-        )
-        grid2.addWidget(self.excellon_zeros_radio, 0, 1)
 
-        self.excellon_units_label = QtWidgets.QLabel('%s:' % _('Default <b>Units</b>'))
+        grid2.addWidget(self.excellon_zeros_radio, 3, 1)
+
+        self.excellon_units_label = QtWidgets.QLabel('%s:' % _('Units'))
         self.excellon_units_label.setAlignment(QtCore.Qt.AlignLeft)
         self.excellon_units_label.setToolTip(
             _("This sets the default units of Excellon files.\n"
@@ -2815,7 +2810,6 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
               "Some Excellon files don't have an header\n"
               "therefore this parameter will be used.")
         )
-        grid2.addWidget(self.excellon_units_label, 1, 0)
 
         self.excellon_units_radio = RadioSet([{'label': _('INCH'), 'value': 'INCH'},
                                               {'label': _('MM'), 'value': 'METRIC'}])
@@ -2824,18 +2818,29 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
               "Some Excellon files don't have an header\n"
               "therefore this parameter will be used.")
         )
-        grid2.addWidget(self.excellon_units_radio, 1, 1)
+
+        grid2.addWidget(self.excellon_units_label, 4, 0)
+        grid2.addWidget(self.excellon_units_radio, 4, 1)
 
         self.update_excellon_cb = FCCheckBox(label=_('Update Export settings'))
         self.update_excellon_cb.setToolTip(
             "If checked, the Excellon Export settings will be updated with the ones above."
         )
-        grid2.addWidget(self.update_excellon_cb, 2, 0, 1, 2)
+        grid2.addWidget(self.update_excellon_cb, 5, 0, 1, 2)
 
-        grid2.addWidget(QtWidgets.QLabel(""), 3, 0)
+        # Adding the Excellon Format Defaults Button
+        self.excellon_defaults_button = QtWidgets.QPushButton()
+        self.excellon_defaults_button.setText(str(_("Restore Defaults")))
+        self.excellon_defaults_button.setMinimumWidth(80)
+        grid2.addWidget(self.excellon_defaults_button, 6, 0, 1, 2)
+
+        separator_line = QtWidgets.QFrame()
+        separator_line.setFrameShape(QtWidgets.QFrame.HLine)
+        separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
+        grid2.addWidget(separator_line, 7, 0, 1, 2)
 
         self.excellon_general_label = QtWidgets.QLabel("<b>%s:</b>" % _("Excellon Optimization"))
-        grid2.addWidget(self.excellon_general_label, 4, 0, 1, 2)
+        grid2.addWidget(self.excellon_general_label, 8, 0, 1, 2)
 
         self.excellon_optimization_label = QtWidgets.QLabel(_('Algorithm:'))
         self.excellon_optimization_label.setToolTip(
@@ -2849,7 +2854,6 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
               "If this control is disabled, then FlatCAM works in 32bit mode and it uses\n"
               "Travelling Salesman algorithm for path optimization.")
         )
-        grid2.addWidget(self.excellon_optimization_label, 5, 0)
 
         self.excellon_optimization_radio = RadioSet([{'label': _('MetaHeuristic'), 'value': 'M'},
                                                      {'label': _('Basic'), 'value': 'B'},
@@ -2866,9 +2870,11 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
               "If this control is disabled, then FlatCAM works in 32bit mode and it uses\n"
               "Travelling Salesman algorithm for path optimization.")
         )
-        grid2.addWidget(self.excellon_optimization_radio, 5, 1)
 
-        self.optimization_time_label = QtWidgets.QLabel('%s:' % _('Optimization Time'))
+        grid2.addWidget(self.excellon_optimization_label, 9, 0)
+        grid2.addWidget(self.excellon_optimization_radio, 9, 1)
+
+        self.optimization_time_label = QtWidgets.QLabel('%s:' % _('Duration'))
         self.optimization_time_label.setAlignment(QtCore.Qt.AlignLeft)
         self.optimization_time_label.setToolTip(
             _("When OR-Tools Metaheuristic (MH) is enabled there is a\n"
@@ -2877,21 +2883,21 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
               "In seconds.")
 
         )
-        grid2.addWidget(self.optimization_time_label, 6, 0)
 
         self.optimization_time_entry = FCSpinner()
         self.optimization_time_entry.set_range(0, 999)
 
-        grid2.addWidget(self.optimization_time_entry, 6, 1)
+        grid2.addWidget(self.optimization_time_label, 10, 0)
+        grid2.addWidget(self.optimization_time_entry, 10, 1)
 
         separator_line = QtWidgets.QFrame()
         separator_line.setFrameShape(QtWidgets.QFrame.HLine)
         separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
-        grid2.addWidget(separator_line, 9, 0, 1, 2)
+        grid2.addWidget(separator_line, 11, 0, 1, 2)
 
         # Excellon Object Color
         self.gerber_color_label = QtWidgets.QLabel('<b>%s</b>' % _('Excellon Object Color'))
-        grid2.addWidget(self.gerber_color_label, 10, 0, 1, 2)
+        grid2.addWidget(self.gerber_color_label, 12, 0, 1, 2)
 
         # Plot Line Color
         self.line_color_label = QtWidgets.QLabel('%s:' % _('Outline'))
@@ -2907,8 +2913,8 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
         self.form_box_child_2.addWidget(self.line_color_button)
         self.form_box_child_2.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
 
-        grid2.addWidget(self.line_color_label, 11, 0)
-        grid2.addLayout(self.form_box_child_2, 11, 1)
+        grid2.addWidget(self.line_color_label, 13, 0)
+        grid2.addLayout(self.form_box_child_2, 13, 1)
 
         # Plot Fill Color
         self.fill_color_label = QtWidgets.QLabel('%s:' % _('Fill'))
@@ -2926,8 +2932,8 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
         self.form_box_child_1.addWidget(self.fill_color_button)
         self.form_box_child_1.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
 
-        grid2.addWidget(self.fill_color_label, 12, 0)
-        grid2.addLayout(self.form_box_child_1, 12, 1)
+        grid2.addWidget(self.fill_color_label, 14, 0)
+        grid2.addLayout(self.form_box_child_1, 14, 1)
 
         # Plot Fill Transparency Level
         self.alpha_label = QtWidgets.QLabel('%s:' % _('Alpha'))
@@ -2947,8 +2953,8 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
         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, 13, 0)
-        grid2.addLayout(self.form_box_child_3, 13, 1)
+        grid2.addWidget(self.alpha_label, 15, 0)
+        grid2.addLayout(self.form_box_child_3, 15, 1)
 
         self.layout.addStretch()
 
@@ -2974,6 +2980,9 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
         self.color_alpha_spinner.valueChanged.connect(self.on_color_spinner)
         self.color_alpha_slider.valueChanged.connect(self.on_color_slider)
 
+        # Load the defaults values into the Excellon Format and Excellon Zeros fields
+        self.excellon_defaults_button.clicked.connect(self.on_excellon_defaults_button)
+
     def optimization_selection(self):
         if self.excellon_optimization_radio.get_value() == 'M':
             self.optimization_time_label.setDisabled(False)
@@ -3038,6 +3047,14 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
         self.line_color_entry.set_value(new_val_line)
         self.app.defaults['excellon_plot_line'] = new_val_line
 
+    def on_excellon_defaults_button(self):
+        self.app.defaults_form_fields["excellon_format_lower_in"].set_value('4')
+        self.app.defaults_form_fields["excellon_format_upper_in"].set_value('2')
+        self.app.defaults_form_fields["excellon_format_lower_mm"].set_value('3')
+        self.app.defaults_form_fields["excellon_format_upper_mm"].set_value('3')
+        self.app.defaults_form_fields["excellon_zeros"].set_value('L')
+        self.app.defaults_form_fields["excellon_units"].set_value('INCH')
+
 
 class ExcellonOptPrefGroupUI(OptionsGroupUI):
 
@@ -3058,6 +3075,8 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI):
 
         grid2 = QtWidgets.QGridLayout()
         self.layout.addLayout(grid2)
+        grid2.setColumnStretch(0, 0)
+        grid2.setColumnStretch(1, 1)
 
         # Cut Z
         cutzlabel = QtWidgets.QLabel('%s:' % _('Cut Z'))
@@ -3095,14 +3114,12 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI):
         grid2.addWidget(self.travelz_entry, 1, 1)
 
         # Tool change:
-        toolchlabel = QtWidgets.QLabel('%s:' % _("Tool change"))
-        toolchlabel.setToolTip(
+        self.toolchange_cb = FCCheckBox('%s' % _("Tool change"))
+        self.toolchange_cb.setToolTip(
             _("Include tool-change sequence\n"
               "in G-Code (Pause for tool change).")
         )
-        self.toolchange_cb = FCCheckBox()
-        grid2.addWidget(toolchlabel, 2, 0)
-        grid2.addWidget(self.toolchange_cb, 2, 1)
+        grid2.addWidget(self.toolchange_cb, 2, 0, 1, 2)
 
         toolchangezlabel = QtWidgets.QLabel('%s:' % _('Toolchange Z'))
         toolchangezlabel.setToolTip(
@@ -3165,22 +3182,19 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI):
         grid2.addWidget(self.spindlespeed_entry, 6, 1)
 
         # Dwell
-        dwelllabel = QtWidgets.QLabel('%s:' % _('Dwell'))
-        dwelllabel.setToolTip(
+        self.dwell_cb = FCCheckBox('%s' % _('Enable Dwell'))
+        self.dwell_cb .setToolTip(
             _("Pause to allow the spindle to reach its\n"
               "speed before cutting.")
         )
+        grid2.addWidget(self.dwell_cb, 7, 0, 1, 2)
+
         dwelltime = QtWidgets.QLabel('%s:' % _('Duration'))
-        dwelltime.setToolTip(
-            _("Number of time units for spindle to dwell.")
-        )
-        self.dwell_cb = FCCheckBox()
+        dwelltime.setToolTip(_("Number of time units for spindle to dwell."))
         self.dwelltime_entry = FCDoubleSpinner()
         self.dwelltime_entry.set_precision(self.decimals)
         self.dwelltime_entry.set_range(0, 99999.9999)
 
-        grid2.addWidget(dwelllabel, 7, 0)
-        grid2.addWidget(self.dwell_cb, 7, 1)
         grid2.addWidget(dwelltime, 8, 0)
         grid2.addWidget(self.dwelltime_entry, 8, 1)
 
@@ -3245,15 +3259,6 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI):
         grid2.addWidget(stdlabel, 13, 0)
         grid2.addWidget(self.slot_tooldia_entry, 13, 1)
 
-        grid4 = QtWidgets.QGridLayout()
-        self.layout.addLayout(grid4)
-
-        # Adding the Excellon Format Defaults Button
-        self.excellon_defaults_button = QtWidgets.QPushButton()
-        self.excellon_defaults_button.setText(str(_("Defaults")))
-        self.excellon_defaults_button.setMinimumWidth(80)
-        grid4.addWidget(self.excellon_defaults_button, 0, 0, QtCore.Qt.AlignRight)
-
         self.layout.addStretch()
 
 
@@ -3365,19 +3370,17 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI):
         grid1.addWidget(spindle_dir_label, 6, 0)
         grid1.addWidget(self.spindledir_radio, 6, 1)
 
-        fplungelabel = QtWidgets.QLabel('%s:' % _('Fast Plunge'))
-        fplungelabel.setToolTip(
+        self.fplunge_cb = FCCheckBox('%s' % _('Fast Plunge'))
+        self.fplunge_cb.setToolTip(
             _("By checking this, the vertical move from\n"
               "Z_Toolchange to Z_move is done with G0,\n"
               "meaning the fastest speed available.\n"
               "WARNING: the move is done at Toolchange X,Y coords.")
         )
-        self.fplunge_cb = FCCheckBox()
-        grid1.addWidget(fplungelabel, 7, 0)
-        grid1.addWidget(self.fplunge_cb, 7, 1)
+        grid1.addWidget(self.fplunge_cb, 7, 0, 1, 2)
 
-        fretractlabel = QtWidgets.QLabel('%s:' % _('Fast Retract'))
-        fretractlabel.setToolTip(
+        self.fretract_cb = FCCheckBox('%s' % _('Fast Retract'))
+        self.fretract_cb.setToolTip(
             _("Exit hole strategy.\n"
               " - When uncheked, while exiting the drilled hole the drill bit\n"
               "will travel slow, with set feedrate (G1), up to zero depth and then\n"
@@ -3385,9 +3388,8 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI):
               " - When checked the travel from Z cut (cut depth) to Z_move\n"
               "(travel height) is done as fast as possible (G0) in one move.")
         )
-        self.fretract_cb = FCCheckBox()
-        grid1.addWidget(fretractlabel, 8, 0)
-        grid1.addWidget(self.fretract_cb, 8, 1)
+
+        grid1.addWidget(self.fretract_cb, 8, 0, 1, 2)
 
         self.layout.addStretch()
 
@@ -3412,7 +3414,7 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI):
         self.layout.addLayout(form)
 
         # Excellon Units
-        self.excellon_units_label = QtWidgets.QLabel('<b>%s:</b>' % _('Units'))
+        self.excellon_units_label = QtWidgets.QLabel('%s:' % _('Units'))
         self.excellon_units_label.setToolTip(
             _("The units used in the Excellon file.")
         )
@@ -3426,7 +3428,7 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI):
         form.addRow(self.excellon_units_label, self.excellon_units_radio)
 
         # Excellon non-decimal format
-        self.digits_label = QtWidgets.QLabel("<b>%s:</b>" % _("Int/Decimals"))
+        self.digits_label = QtWidgets.QLabel("%s:" % _("Int/Decimals"))
         self.digits_label.setToolTip(
             _("The NC drill files, usually named Excellon files\n"
               "are files that can be found in different formats.\n"
@@ -3462,7 +3464,7 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI):
         form.addRow(self.digits_label, hlay1)
 
         # Select the Excellon Format
-        self.format_label = QtWidgets.QLabel("<b>%s:</b>" % _("Format"))
+        self.format_label = QtWidgets.QLabel("%s:" % _("Format"))
         self.format_label.setToolTip(
             _("Select the kind of coordinates format used.\n"
               "Coordinates can be saved with decimal point or without.\n"
@@ -3485,7 +3487,7 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI):
         form.addRow(self.format_label, self.format_radio)
 
         # Excellon Zeros
-        self.zeros_label = QtWidgets.QLabel('<b>%s:</b>' % _('Zeros'))
+        self.zeros_label = QtWidgets.QLabel('%s:' % _('Zeros'))
         self.zeros_label.setAlignment(QtCore.Qt.AlignLeft)
         self.zeros_label.setToolTip(
             _("This sets the type of Excellon zeros.\n"
@@ -3508,7 +3510,7 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI):
         form.addRow(self.zeros_label, self.zeros_radio)
 
         # Slot type
-        self.slot_type_label = QtWidgets.QLabel('<b>%s:</b>' % _('Slot type'))
+        self.slot_type_label = QtWidgets.QLabel('%s:' % _('Slot type'))
         self.slot_type_label.setAlignment(QtCore.Qt.AlignLeft)
         self.slot_type_label.setToolTip(
             _("This sets how the slots will be exported.\n"
@@ -3952,6 +3954,8 @@ class GeometryOptPrefGroupUI(OptionsGroupUI):
 
         grid1 = QtWidgets.QGridLayout()
         self.layout.addLayout(grid1)
+        grid1.setColumnStretch(0, 0)
+        grid1.setColumnStretch(1, 1)
 
         # Cut Z
         cutzlabel = QtWidgets.QLabel('%s:' % _('Cut Z'))
@@ -4027,16 +4031,14 @@ class GeometryOptPrefGroupUI(OptionsGroupUI):
         grid1.addWidget(self.travelz_entry, 3, 1)
 
         # Tool change:
-        toolchlabel = QtWidgets.QLabel('%s:' % _("Tool change"))
-        toolchlabel.setToolTip(
+        self.toolchange_cb = FCCheckBox('%s' % _("Tool change"))
+        self.toolchange_cb.setToolTip(
             _(
                 "Include tool-change sequence\n"
                 "in the Machine Code (Pause for tool change)."
             )
         )
-        self.toolchange_cb = FCCheckBox()
-        grid1.addWidget(toolchlabel, 4, 0)
-        grid1.addWidget(self.toolchange_cb, 4, 1)
+        grid1.addWidget(self.toolchange_cb, 4, 0, 1, 2)
 
         # Toolchange Z
         toolchangezlabel = QtWidgets.QLabel('%s:' % _('Toolchange Z'))
@@ -4128,7 +4130,7 @@ class GeometryOptPrefGroupUI(OptionsGroupUI):
         grid1.addWidget(self.cncspindlespeed_entry, 9, 1)
 
         # Dwell
-        self.dwell_cb = FCCheckBox(label='%s:' % _('Dwell'))
+        self.dwell_cb = FCCheckBox(label='%s' % _('Enable Dwell'))
         self.dwell_cb.setToolTip(
             _("Pause to allow the spindle to reach its\n"
               "speed before cutting.")
@@ -4289,16 +4291,14 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI):
         grid1.addWidget(self.spindledir_radio, 8, 1)
 
         # Fast Move from Z Toolchange
-        fplungelabel = QtWidgets.QLabel('%s:' % _('Fast Plunge'))
-        fplungelabel.setToolTip(
+        self.fplunge_cb = FCCheckBox('%s' % _('Fast Plunge'))
+        self.fplunge_cb.setToolTip(
             _("By checking this, the vertical move from\n"
               "Z_Toolchange to Z_move is done with G0,\n"
               "meaning the fastest speed available.\n"
               "WARNING: the move is done at Toolchange X,Y coords.")
         )
-        self.fplunge_cb = FCCheckBox()
-        grid1.addWidget(fplungelabel, 9, 0)
-        grid1.addWidget(self.fplunge_cb, 9, 1)
+        grid1.addWidget(self.fplunge_cb, 9, 0, 1, 2)
 
         # Size of trace segment on X axis
         segx_label = QtWidgets.QLabel('%s:' % _("Segment X size"))
@@ -4404,7 +4404,7 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI):
         # self.plot_cb = QtWidgets.QCheckBox('Plot')
         self.plot_cb = FCCheckBox(_('Plot Object'))
         self.plot_cb.setToolTip(_("Plot (show) this object."))
-        grid0.addWidget(self.plot_cb, 0, 0)
+        grid0.addWidget(self.plot_cb, 0, 0, 1, 2)
 
         # Plot Kind
         self.cncplot_method_label = QtWidgets.QLabel('%s:' % _("Plot kind"))
@@ -4419,7 +4419,7 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI):
             {"label": _("All"), "value": "all"},
             {"label": _("Travel"), "value": "travel"},
             {"label": _("Cut"), "value": "cut"}
-        ], stretch=False)
+        ], orientation='vertical')
 
         grid0.addWidget(self.cncplot_method_label, 1, 0)
         grid0.addWidget(self.cncplot_method_radio, 1, 1)
@@ -4465,10 +4465,10 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.tooldia_entry, 4, 1)
 
         # add a space
-        grid0.addWidget(QtWidgets.QLabel(''), 5, 0)
+        grid0.addWidget(QtWidgets.QLabel('<b>%s:</b>' % _("G-code Decimals")), 5, 0, 1, 2)
 
         # Number of decimals to use in GCODE coordinates
-        cdeclabel = QtWidgets.QLabel('%s:' % _('Coordinates decimals'))
+        cdeclabel = QtWidgets.QLabel('%s:' % _('Coordinates'))
         cdeclabel.setToolTip(
             _("The number of decimals to be used for \n"
               "the X, Y, Z coordinates in CNC code (GCODE, etc.)")
@@ -4481,7 +4481,7 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.coords_dec_entry, 6, 1)
 
         # Number of decimals to use in GCODE feedrate
-        frdeclabel = QtWidgets.QLabel('%s:' % _('Feedrate decimals'))
+        frdeclabel = QtWidgets.QLabel('%s:' % _('Feedrate'))
         frdeclabel.setToolTip(
             _("The number of decimals to be used for \n"
               "the Feedrate parameter in CNC code (GCODE, etc.)")
@@ -4788,7 +4788,7 @@ class CNCJobOptPrefGroupUI(OptionsGroupUI):
 
         self.prepend_text = FCTextArea()
         self.prepend_text.setPlaceholderText(
-            _("Type here any G-Code commands you would\n"
+            _("Type here any G-Code commands you would "
               "like to add at the beginning of the G-Code file.")
         )
         self.layout.addWidget(self.prepend_text)
@@ -4805,7 +4805,7 @@ class CNCJobOptPrefGroupUI(OptionsGroupUI):
 
         self.append_text = FCTextArea()
         self.append_text.setPlaceholderText(
-            _("Type here any G-Code commands you would\n"
+            _("Type here any G-Code commands you would "
               "like to append to the generated file.\n"
               "I.e.: M2 (End of program)")
         )
@@ -4832,7 +4832,7 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI):
         self.layout.addWidget(self.export_gcode_label)
 
         # Prepend to G-Code
-        toolchangelabel = QtWidgets.QLabel('%s:' % _('Toolchange G-Code'))
+        toolchangelabel = QtWidgets.QLabel('%s' % _('Toolchange G-Code'))
         toolchangelabel.setToolTip(
             _(
                 "Type here any G-Code commands you would\n"
@@ -4858,12 +4858,12 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI):
         self.toolchange_text = FCTextArea()
         self.toolchange_text.setPlaceholderText(
             _(
-                "Type here any G-Code commands you would\n"
+                "Type here any G-Code commands you would "
                 "like to be executed when Toolchange event is encountered.\n"
-                "This will constitute a Custom Toolchange GCode,\n"
+                "This will constitute a Custom Toolchange GCode, "
                 "or a Toolchange Macro.\n"
                 "The FlatCAM variables are surrounded by '%' symbol.\n"
-                "WARNING: it can be used only with a preprocessor file\n"
+                "WARNING: it can be used only with a preprocessor file "
                 "that has 'toolchange_custom' in it's name."
             )
         )
@@ -4898,26 +4898,32 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI):
         variables = [_('Parameters'), 'tool', 'tooldia', 't_drills', 'x_toolchange', 'y_toolchange', 'z_toolchange',
                      'z_cut', 'z_move', 'z_depthpercut', 'spindlespeed', 'dwelltime']
         self.tc_variable_combo.addItems(variables)
+        self.tc_variable_combo.insertSeparator(1)
+
         self.tc_variable_combo.setItemData(0, _("FlatCAM CNC parameters"), Qt.ToolTipRole)
-        self.tc_variable_combo.setItemData(1, 'tool = %s' % _("tool number"), Qt.ToolTipRole)
-        self.tc_variable_combo.setItemData(2, 'tooldia = %s' % _("tool diameter"), Qt.ToolTipRole)
-        self.tc_variable_combo.setItemData(3, 't_drills = %s' % _("for Excellon, total number of drills"),
+        fnt = QtGui.QFont()
+        fnt.setBold(True)
+        self.tc_variable_combo.setItemData(0, fnt, Qt.FontRole)
+
+        self.tc_variable_combo.setItemData(2, 'tool = %s' % _("tool number"), Qt.ToolTipRole)
+        self.tc_variable_combo.setItemData(3, 'tooldia = %s' % _("tool diameter"), Qt.ToolTipRole)
+        self.tc_variable_combo.setItemData(4, 't_drills = %s' % _("for Excellon, total number of drills"),
                                            Qt.ToolTipRole)
-        self.tc_variable_combo.setItemData(4, 'x_toolchange = %s' % _("X coord for Toolchange"), Qt.ToolTipRole)
-        self.tc_variable_combo.setItemData(5, 'y_toolchange = %s' % _("Y coord for Toolchange"),
+        self.tc_variable_combo.setItemData(5, 'x_toolchange = %s' % _("X coord for Toolchange"), Qt.ToolTipRole)
+        self.tc_variable_combo.setItemData(6, 'y_toolchange = %s' % _("Y coord for Toolchange"),
                                            Qt.ToolTipRole)
-        self.tc_variable_combo.setItemData(6, 'z_toolchange = %s' % _("Z coord for Toolchange"), Qt.ToolTipRole)
-        self.tc_variable_combo.setItemData(7, 'z_cut = %s' % _("Z depth for the cut"), Qt.ToolTipRole)
-        self.tc_variable_combo.setItemData(8, 'z_move = %s' % _("Z height for travel"), Qt.ToolTipRole)
-        self.tc_variable_combo.setItemData(9, 'z_depthpercut = %s' % _("the step value for multidepth cut"),
+        self.tc_variable_combo.setItemData(7, 'z_toolchange = %s' % _("Z coord for Toolchange"), Qt.ToolTipRole)
+        self.tc_variable_combo.setItemData(8, 'z_cut = %s' % _("Z depth for the cut"), Qt.ToolTipRole)
+        self.tc_variable_combo.setItemData(9, 'z_move = %s' % _("Z height for travel"), Qt.ToolTipRole)
+        self.tc_variable_combo.setItemData(10, 'z_depthpercut = %s' % _("the step value for multidepth cut"),
                                            Qt.ToolTipRole)
-        self.tc_variable_combo.setItemData(10, 'spindlesspeed = %s' % _("the value for the spindle speed"),
+        self.tc_variable_combo.setItemData(11, 'spindlesspeed = %s' % _("the value for the spindle speed"),
                                            Qt.ToolTipRole)
-        self.tc_variable_combo.setItemData(11,
+        self.tc_variable_combo.setItemData(12,
                                            _("dwelltime = time to dwell to allow the spindle to reach it's set RPM"),
                                            Qt.ToolTipRole)
 
-        hlay1.addStretch()
+        # hlay1.addStretch()
 
         # Insert Variable into the Toolchange G-Code Text Box
         # self.tc_insert_buton = FCButton("Insert")
@@ -5193,30 +5199,26 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.ncc_method_radio, 10, 1)
 
         # Connect lines
-        pathconnectlabel = QtWidgets.QLabel('%s:' % _("Connect"))
-        pathconnectlabel.setToolTip(
+        self.ncc_connect_cb = FCCheckBox('%s' % _("Connect"))
+        self.ncc_connect_cb.setToolTip(
             _("Draw lines between resulting\n"
               "segments to minimize tool lifts.")
         )
-        self.ncc_connect_cb = FCCheckBox()
 
-        grid0.addWidget(pathconnectlabel, 11, 0)
-        grid0.addWidget(self.ncc_connect_cb, 11, 1)
+        grid0.addWidget(self.ncc_connect_cb, 11, 0, 1, 2)
 
         # Contour Checkbox
-        contourlabel = QtWidgets.QLabel('%s:' % _("Contour"))
-        contourlabel.setToolTip(
+        self.ncc_contour_cb = FCCheckBox('%s' % _("Contour"))
+        self.ncc_contour_cb.setToolTip(
            _("Cut around the perimeter of the polygon\n"
              "to trim rough edges.")
         )
-        self.ncc_contour_cb = FCCheckBox()
 
-        grid0.addWidget(contourlabel, 12, 0)
-        grid0.addWidget(self.ncc_contour_cb, 12, 1)
+        grid0.addWidget(self.ncc_contour_cb, 12, 0, 1, 2)
 
         # Rest machining CheckBox
-        restlabel = QtWidgets.QLabel('%s:' % _("Rest M."))
-        restlabel.setToolTip(
+        self.ncc_rest_cb = FCCheckBox('%s' % _("Rest Machining"))
+        self.ncc_rest_cb.setToolTip(
             _("If checked, use 'rest machining'.\n"
               "Basically it will clear copper outside PCB features,\n"
               "using the biggest tool and continue with the next tools,\n"
@@ -5225,23 +5227,19 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI):
               "no more copper to clear or there are no more tools.\n"
               "If not checked, use the standard algorithm.")
         )
-        self.ncc_rest_cb = FCCheckBox()
 
-        grid0.addWidget(restlabel, 13, 0)
-        grid0.addWidget(self.ncc_rest_cb, 13, 1)
+        grid0.addWidget(self.ncc_rest_cb, 13, 0, 1, 2)
 
         # ## NCC Offset choice
-        self.ncc_offset_choice_label = QtWidgets.QLabel('%s:' % _("Offset"))
-        self.ncc_offset_choice_label.setToolTip(
+        self.ncc_choice_offset_cb = FCCheckBox('%s' % _("Offset"))
+        self.ncc_choice_offset_cb.setToolTip(
             _("If used, it will add an offset to the copper features.\n"
               "The copper clearing will finish to a distance\n"
               "from the copper features.\n"
               "The value can be between 0 and 10 FlatCAM units.")
         )
-        self.ncc_choice_offset_cb = FCCheckBox()
 
-        grid0.addWidget(self.ncc_offset_choice_label, 14, 0)
-        grid0.addWidget(self.ncc_choice_offset_cb, 14, 1)
+        grid0.addWidget(self.ncc_choice_offset_cb, 14, 0, 1, 2)
 
         # ## NCC Offset value
         self.ncc_offset_label = QtWidgets.QLabel('%s:' % _("Offset value"))
@@ -5438,14 +5436,12 @@ class ToolsCutoutPrefGroupUI(OptionsGroupUI):
             self.gaps_combo.setStyleSheet('background-color: rgb(255,255,255)')
 
         # Surrounding convex box shape
-        self.convex_box = FCCheckBox()
-        self.convex_box_label = QtWidgets.QLabel('%s:' % _("Convex Sh."))
-        self.convex_box_label.setToolTip(
+        self.convex_box = FCCheckBox('%s' % _("Convex Shape"))
+        self.convex_box.setToolTip(
             _("Create a convex shape surrounding the entire PCB.\n"
               "Used only if the source object type is Gerber.")
         )
-        grid0.addWidget(self.convex_box_label, 7, 0)
-        grid0.addWidget(self.convex_box, 7, 1)
+        grid0.addWidget(self.convex_box, 7, 0, 1, 2)
 
         self.layout.addStretch()
 
@@ -5619,24 +5615,20 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.paintmethod_combo, 4, 1)
 
         # Connect lines
-        pathconnectlabel = QtWidgets.QLabel('%s:' % _("Connect"))
-        pathconnectlabel.setToolTip(
+        self.pathconnect_cb = FCCheckBox('%s' % _("Connect"))
+        self.pathconnect_cb.setToolTip(
             _("Draw lines between resulting\n"
               "segments to minimize tool lifts.")
         )
-        grid0.addWidget(pathconnectlabel, 5, 0)
-        self.pathconnect_cb = FCCheckBox()
-        grid0.addWidget(self.pathconnect_cb, 5, 1)
+        grid0.addWidget(self.pathconnect_cb, 5, 0, 1, 2)
 
         # Paint contour
-        contourlabel = QtWidgets.QLabel('%s:' % _("Contour"))
-        contourlabel.setToolTip(
+        self.contour_cb = FCCheckBox('%s' % _("Contour"))
+        self.contour_cb.setToolTip(
             _("Cut around the perimeter of the polygon\n"
               "to trim rough edges.")
         )
-        grid0.addWidget(contourlabel, 6, 0)
-        self.contour_cb = FCCheckBox()
-        grid0.addWidget(self.contour_cb, 6, 1)
+        grid0.addWidget(self.contour_cb, 6, 0, 1, 2)
 
         # Polygon selection
         selectlabel = QtWidgets.QLabel('%s:' % _('Selection'))
@@ -6065,7 +6057,7 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI):
               "the final panel will have as many columns and rows as\n"
               "they fit completely within selected area.")
         )
-        grid0.addWidget(self.pconstrain_cb, 5, 0)
+        grid0.addWidget(self.pconstrain_cb, 5, 0, 1, 2)
 
         self.px_width_entry = FCDoubleSpinner()
         self.px_width_entry.set_range(0.000001, 9999.9999)
@@ -6647,7 +6639,7 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.dwellrev_entry, 14, 1)
 
         # Preprocessors
-        pp_label = QtWidgets.QLabel('%s:' % _('PostProcessor'))
+        pp_label = QtWidgets.QLabel('%s:' % _('Preprocessor'))
         pp_label.setToolTip(
             _("Files that control the GCode generation.")
         )

+ 14 - 20
flatcamTools/ToolNonCopperClear.py

@@ -361,26 +361,23 @@ class NonCopperClear(FlatCAMTool, Gerber):
         grid3.addWidget(self.ncc_method_radio, 4, 1)
 
         # Connect lines
-        pathconnectlabel = QtWidgets.QLabel('%s:' % _("Connect"))
-        pathconnectlabel.setToolTip(
+        self.ncc_connect_cb = FCCheckBox('%s' % _("Connect"))
+        self.ncc_connect_cb.setToolTip(
             _("Draw lines between resulting\n"
               "segments to minimize tool lifts.")
         )
-        grid3.addWidget(pathconnectlabel, 5, 0)
-        self.ncc_connect_cb = FCCheckBox()
-        grid3.addWidget(self.ncc_connect_cb, 5, 1)
+        grid3.addWidget(self.ncc_connect_cb, 5, 0, 1, 2)
 
-        contourlabel = QtWidgets.QLabel('%s:' % _("Contour"))
-        contourlabel.setToolTip(
+        self.ncc_contour_cb = FCCheckBox('%s' % _("Contour"))
+        self.ncc_contour_cb.setToolTip(
             _("Cut around the perimeter of the polygon\n"
               "to trim rough edges.")
         )
-        grid3.addWidget(contourlabel, 6, 0)
-        self.ncc_contour_cb = FCCheckBox()
-        grid3.addWidget(self.ncc_contour_cb, 6, 1)
+        grid3.addWidget(self.ncc_contour_cb, 6, 0, 1, 2)
 
-        restlabel = QtWidgets.QLabel('%s:' % _("Rest M."))
-        restlabel.setToolTip(
+        # Rest Machining
+        self.ncc_rest_cb = FCCheckBox('%s' % _("Rest Machining"))
+        self.ncc_rest_cb.setToolTip(
             _("If checked, use 'rest machining'.\n"
               "Basically it will clear copper outside PCB features,\n"
               "using the biggest tool and continue with the next tools,\n"
@@ -389,21 +386,18 @@ class NonCopperClear(FlatCAMTool, Gerber):
               "no more copper to clear or there are no more tools.\n"
               "If not checked, use the standard algorithm.")
         )
-        grid3.addWidget(restlabel, 7, 0)
-        self.ncc_rest_cb = FCCheckBox()
-        grid3.addWidget(self.ncc_rest_cb, 7, 1)
+
+        grid3.addWidget(self.ncc_rest_cb, 7, 0, 1, 2)
 
         # ## NCC Offset choice
-        self.ncc_offset_choice_label = QtWidgets.QLabel('%s:' % _("Offset"))
-        self.ncc_offset_choice_label.setToolTip(
+        self.ncc_choice_offset_cb = FCCheckBox('%s' % _("Offset"))
+        self.ncc_choice_offset_cb.setToolTip(
             _("If used, it will add an offset to the copper features.\n"
               "The copper clearing will finish to a distance\n"
               "from the copper features.\n"
               "The value can be between 0 and 10 FlatCAM units.")
         )
-        grid3.addWidget(self.ncc_offset_choice_label, 8, 0)
-        self.ncc_choice_offset_cb = FCCheckBox()
-        grid3.addWidget(self.ncc_choice_offset_cb, 8, 1)
+        grid3.addWidget(self.ncc_choice_offset_cb, 8, 0, 1, 2)
 
         # ## NCC Offset value
         self.ncc_offset_label = QtWidgets.QLabel('%s:' % _("Offset value"))

+ 9 - 15
flatcamTools/ToolPaint.py

@@ -264,26 +264,22 @@ class ToolPaint(FlatCAMTool, Gerber):
         grid3.addWidget(self.paintmethod_combo, 3, 1)
 
         # Connect lines
-        pathconnectlabel = QtWidgets.QLabel('%s:' % _("Connect"))
-        pathconnectlabel.setToolTip(
+        self.pathconnect_cb = FCCheckBox('%s' % _("Connect"))
+        self.pathconnect_cb.setToolTip(
             _("Draw lines between resulting\n"
               "segments to minimize tool lifts.")
         )
-        grid3.addWidget(pathconnectlabel, 4, 0)
-        self.pathconnect_cb = FCCheckBox()
-        grid3.addWidget(self.pathconnect_cb, 4, 1)
+        grid3.addWidget(self.pathconnect_cb, 4, 0, 1, 2)
 
-        contourlabel = QtWidgets.QLabel('%s:' % _("Contour"))
-        contourlabel.setToolTip(
+        self.paintcontour_cb = FCCheckBox('%s' % _("Contour"))
+        self.paintcontour_cb.setToolTip(
             _("Cut around the perimeter of the polygon\n"
               "to trim rough edges.")
         )
-        grid3.addWidget(contourlabel, 5, 0)
-        self.paintcontour_cb = FCCheckBox()
-        grid3.addWidget(self.paintcontour_cb, 5, 1)
+        grid3.addWidget(self.paintcontour_cb, 5, 0, 1, 2)
 
-        restlabel = QtWidgets.QLabel('%s:' % _("Rest M."))
-        restlabel.setToolTip(
+        self.rest_cb = FCCheckBox('%s' % _("Rest Machining"))
+        self.rest_cb.setToolTip(
             _("If checked, use 'rest machining'.\n"
               "Basically it will clear copper outside PCB features,\n"
               "using the biggest tool and continue with the next tools,\n"
@@ -292,9 +288,7 @@ class ToolPaint(FlatCAMTool, Gerber):
               "no more copper to clear or there are no more tools.\n\n"
               "If not checked, use the standard algorithm.")
         )
-        grid3.addWidget(restlabel, 6, 0)
-        self.rest_cb = FCCheckBox()
-        grid3.addWidget(self.rest_cb, 6, 1)
+        grid3.addWidget(self.rest_cb, 6, 0, 1, 2)
 
         # Polygon selection
         selectlabel = QtWidgets.QLabel('%s:' % _('Selection'))

+ 1 - 1
flatcamTools/ToolSolderPaste.py

@@ -331,7 +331,7 @@ class SolderPaste(FlatCAMTool):
         self.gcode_form_layout.addRow(self.dwellrev_label, self.dwellrev_entry)
 
         # Preprocessors
-        pp_label = QtWidgets.QLabel('%s:' % _('PostProcessor'))
+        pp_label = QtWidgets.QLabel('%s:' % _('Preprocessor'))
         pp_label.setToolTip(
             _("Files that control the GCode generation.")
         )

BIN
locale/de/LC_MESSAGES/strings.mo


Разлика између датотеке није приказан због своје велике величине
+ 187 - 187
locale/de/LC_MESSAGES/strings.po


BIN
locale/en/LC_MESSAGES/strings.mo


Разлика између датотеке није приказан због своје велике величине
+ 276 - 276
locale/en/LC_MESSAGES/strings.po


BIN
locale/es/LC_MESSAGES/strings.mo


Разлика између датотеке није приказан због своје велике величине
+ 276 - 276
locale/es/LC_MESSAGES/strings.po


BIN
locale/fr/LC_MESSAGES/strings.mo


Разлика између датотеке није приказан због своје велике величине
+ 276 - 276
locale/fr/LC_MESSAGES/strings.po


BIN
locale/it/LC_MESSAGES/strings.mo


Разлика између датотеке није приказан због своје велике величине
+ 300 - 300
locale/it/LC_MESSAGES/strings.po


BIN
locale/pt_BR/LC_MESSAGES/strings.mo


Разлика између датотеке није приказан због своје велике величине
+ 276 - 276
locale/pt_BR/LC_MESSAGES/strings.po


BIN
locale/ro/LC_MESSAGES/strings.mo


Разлика између датотеке није приказан због своје велике величине
+ 276 - 276
locale/ro/LC_MESSAGES/strings.po


Неке датотеке нису приказане због велике количине промена