Ver código fonte

Merged marius_stanciu/flatcam_beta/Beta 8.992 into Beta

Marius Stanciu 5 anos atrás
pai
commit
42937a29c9
56 arquivos alterados com 843 adições e 108 exclusões
  1. 5 0
      CHANGELOG.md
  2. 6 6
      FlatCAMApp.py
  3. 16 1
      flatcamGUI/preferences/PreferencesUIManager.py
  4. 0 1
      flatcamGUI/preferences/__init__.py
  5. 15 2
      flatcamGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py
  6. 16 2
      flatcamGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py
  7. 16 2
      flatcamGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py
  8. 1 1
      flatcamGUI/preferences/cncjob/CNCJobPreferencesUI.py
  9. 16 2
      flatcamGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py
  10. 17 2
      flatcamGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py
  11. 16 2
      flatcamGUI/preferences/excellon/ExcellonExpPrefGroupUI.py
  12. 16 2
      flatcamGUI/preferences/excellon/ExcellonGenPrefGroupUI.py
  13. 16 3
      flatcamGUI/preferences/excellon/ExcellonOptPrefGroupUI.py
  14. 16 1
      flatcamGUI/preferences/excellon/ExcellonPreferencesUI.py
  15. 16 2
      flatcamGUI/preferences/general/GeneralAPPSetGroupUI.py
  16. 16 3
      flatcamGUI/preferences/general/GeneralAppPrefGroupUI.py
  17. 17 2
      flatcamGUI/preferences/general/GeneralGUIPrefGroupUI.py
  18. 16 1
      flatcamGUI/preferences/general/GeneralPreferencesUI.py
  19. 17 2
      flatcamGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py
  20. 17 2
      flatcamGUI/preferences/geometry/GeometryEditorPrefGroupUI.py
  21. 17 2
      flatcamGUI/preferences/geometry/GeometryGenPrefGroupUI.py
  22. 17 3
      flatcamGUI/preferences/geometry/GeometryOptPrefGroupUI.py
  23. 16 1
      flatcamGUI/preferences/geometry/GeometryPreferencesUI.py
  24. 17 2
      flatcamGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py
  25. 17 2
      flatcamGUI/preferences/gerber/GerberEditorPrefGroupUI.py
  26. 17 2
      flatcamGUI/preferences/gerber/GerberExpPrefGroupUI.py
  27. 17 3
      flatcamGUI/preferences/gerber/GerberGenPrefGroupUI.py
  28. 18 2
      flatcamGUI/preferences/gerber/GerberOptPrefGroupUI.py
  29. 16 1
      flatcamGUI/preferences/gerber/GerberPreferencesUI.py
  30. 17 2
      flatcamGUI/preferences/tools/Tools2CThievingPrefGroupUI.py
  31. 17 2
      flatcamGUI/preferences/tools/Tools2CalPrefGroupUI.py
  32. 17 2
      flatcamGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py
  33. 17 2
      flatcamGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py
  34. 17 2
      flatcamGUI/preferences/tools/Tools2InvertPrefGroupUI.py
  35. 17 2
      flatcamGUI/preferences/tools/Tools2OptimalPrefGroupUI.py
  36. 16 1
      flatcamGUI/preferences/tools/Tools2PreferencesUI.py
  37. 17 2
      flatcamGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py
  38. 17 3
      flatcamGUI/preferences/tools/Tools2QRCodePrefGroupUI.py
  39. 17 2
      flatcamGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py
  40. 17 2
      flatcamGUI/preferences/tools/Tools2sidedPrefGroupUI.py
  41. 17 2
      flatcamGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py
  42. 17 2
      flatcamGUI/preferences/tools/ToolsCutoutPrefGroupUI.py
  43. 17 3
      flatcamGUI/preferences/tools/ToolsFilmPrefGroupUI.py
  44. 17 2
      flatcamGUI/preferences/tools/ToolsNCCPrefGroupUI.py
  45. 17 2
      flatcamGUI/preferences/tools/ToolsPaintPrefGroupUI.py
  46. 17 2
      flatcamGUI/preferences/tools/ToolsPanelizePrefGroupUI.py
  47. 16 1
      flatcamGUI/preferences/tools/ToolsPreferencesUI.py
  48. 17 2
      flatcamGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py
  49. 17 2
      flatcamGUI/preferences/tools/ToolsSubPrefGroupUI.py
  50. 17 2
      flatcamGUI/preferences/tools/ToolsTransformPrefGroupUI.py
  51. 15 1
      flatcamGUI/preferences/utilities/AutoCompletePrefGroupUI.py
  52. 16 2
      flatcamGUI/preferences/utilities/FAExcPrefGroupUI.py
  53. 16 2
      flatcamGUI/preferences/utilities/FAGcoPrefGroupUI.py
  54. 16 2
      flatcamGUI/preferences/utilities/FAGrbPrefGroupUI.py
  55. 1 1
      flatcamGUI/preferences/utilities/UtilPreferencesUI.py
  56. 1 1
      requirements.txt

+ 5 - 0
CHANGELOG.md

@@ -7,6 +7,11 @@ CHANGELOG for FlatCAM beta
 
 
 =================================================
 =================================================
 
 
+30.04.2020 
+
+- made some corrections - due of recent refactoring PyCharm reported errors all over (not correct but it made programming difficult)
+- modified the requirements.txt file to force svg.path module to be at least version 4.0
+
 29.04.2020
 29.04.2020
 
 
 - added a try-except clause in the FlatCAMTranslation.restart_program() when closing the Listener and the thread that runs it to adjust to MacOS usage
 - added a try-except clause in the FlatCAMTranslation.restart_program() when closing the Listener and the thread that runs it to adjust to MacOS usage

+ 6 - 6
FlatCAMApp.py

@@ -2729,7 +2729,7 @@ class App(QtCore.QObject):
         # Re-build the recent items menu
         # Re-build the recent items menu
         self.setup_recent_items()
         self.setup_recent_items()
 
 
-    def new_object(self, kind, name, initialize, active=True, fit=True, plot=True, autoselected=True):
+    def new_object(self, kind, name, initialize, plot=True, autoselected=True):
         """
         """
         Creates a new specialized FlatCAMObj and attaches it to the application,
         Creates a new specialized FlatCAMObj and attaches it to the application,
         this is, updates the GUI accordingly, any other records and plots it.
         this is, updates the GUI accordingly, any other records and plots it.
@@ -2747,8 +2747,6 @@ class App(QtCore.QObject):
         :param initialize: Function to run after creation of the object but before it is attached to the application.
         :param initialize: Function to run after creation of the object but before it is attached to the application.
         The function is called with 2 parameters: the new object and the App instance.
         The function is called with 2 parameters: the new object and the App instance.
         :type initialize: function
         :type initialize: function
-        :param active:
-        :param fit:
         :param plot: If to plot the resulting object
         :param plot: If to plot the resulting object
         :param autoselected: if the resulting object is autoselected in the Project tab and therefore in the
         :param autoselected: if the resulting object is autoselected in the Project tab and therefore in the
         self.collection
         self.collection
@@ -9247,9 +9245,10 @@ class App(QtCore.QObject):
         Adds a new Geometry Object to the projects and populates
         Adds a new Geometry Object to the projects and populates
         it with shapes extracted from the SVG file.
         it with shapes extracted from the SVG file.
 
 
-        :param filename: Path to the SVG file.
-        :param geo_type: Type of FlatCAM object that will be created from SVG
-        :param outname:
+        :param plot:        If True then the resulting object will be plotted on canvas
+        :param filename:    Path to the SVG file.
+        :param geo_type:    Type of FlatCAM object that will be created from SVG
+        :param outname:     The name given to the resulting FlatCAM object
         :return:
         :return:
         """
         """
         self.defaults.report_usage("import_svg()")
         self.defaults.report_usage("import_svg()")
@@ -9297,6 +9296,7 @@ class App(QtCore.QObject):
         :param filename:    Path to the DXF file.
         :param filename:    Path to the DXF file.
         :param geo_type:    Type of FlatCAM object that will be created from DXF
         :param geo_type:    Type of FlatCAM object that will be created from DXF
         :param outname:     Name for the imported Geometry
         :param outname:     Name for the imported Geometry
+        :param plot:        If True then the resulting object will be plotted on canvas
         :return:
         :return:
         """
         """
         self.defaults.report_usage("import_dxf()")
         self.defaults.report_usage("import_dxf()")

+ 16 - 1
flatcamGUI/preferences/PreferencesUIManager.py

@@ -3,6 +3,21 @@ from PyQt5 import QtGui, QtCore, QtWidgets
 from PyQt5.QtCore import QSettings
 from PyQt5.QtCore import QSettings
 from defaults import FlatCAMDefaults
 from defaults import FlatCAMDefaults
 import logging
 import logging
+
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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
+
 log = logging.getLogger('PreferencesUIManager')
 log = logging.getLogger('PreferencesUIManager')
 
 
 
 
@@ -1113,4 +1128,4 @@ class PreferencesUIManager:
             else:
             else:
                 self.preferences_changed_flag = False
                 self.preferences_changed_flag = False
                 self.inform.emit('')
                 self.inform.emit('')
-                return
+                return

+ 0 - 1
flatcamGUI/preferences/__init__.py

@@ -13,4 +13,3 @@ if settings.contains("machinist"):
     machinist_setting = settings.value('machinist', type=int)
     machinist_setting = settings.value('machinist', type=int)
 else:
 else:
     machinist_setting = 0
     machinist_setting = 0
-

+ 15 - 2
flatcamGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py

@@ -3,12 +3,25 @@ from PyQt5.QtCore import QSettings, Qt
 
 
 from flatcamGUI.GUIElements import FCTextArea, FCCheckBox, FCComboBox, FCSpinner, FCEntry
 from flatcamGUI.GUIElements import FCTextArea, FCCheckBox, FCComboBox, FCSpinner, FCEntry
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 CNCJobAdvOptPrefGroupUI(OptionsGroupUI):
 class CNCJobAdvOptPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "CNC Job Advanced Options Preferences", parent=None)
         # OptionsGroupUI.__init__(self, "CNC Job Advanced Options Preferences", parent=None)
-        super(CNCJobAdvOptPrefGroupUI, self).__init__(self)
+        super(CNCJobAdvOptPrefGroupUI, self).__init__(self, parent=parent)
         self.decimals = decimals
         self.decimals = decimals
 
 
         self.setTitle(str(_("CNC Job Adv. Options")))
         self.setTitle(str(_("CNC Job Adv. Options")))
@@ -192,4 +205,4 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI):
 
 
         new_val_sel = str(annotation_color.name())
         new_val_sel = str(annotation_color.name())
         self.annotation_fontcolor_entry.set_value(new_val_sel)
         self.annotation_fontcolor_entry.set_value(new_val_sel)
-        self.app.defaults['cncjob_annotation_fontcolor'] = new_val_sel
+        self.app.defaults['cncjob_annotation_fontcolor'] = new_val_sel

+ 16 - 2
flatcamGUI/preferences/cncjob/CNCJobGenPrefGroupUI.py

@@ -1,13 +1,27 @@
 from PyQt5 import QtWidgets, QtCore, QtGui
 from PyQt5 import QtWidgets, QtCore, QtGui
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCSpinner, FCDoubleSpinner, FCEntry
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCSpinner, FCDoubleSpinner, FCEntry
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 CNCJobGenPrefGroupUI(OptionsGroupUI):
 class CNCJobGenPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "CNC Job General Preferences", parent=None)
         # OptionsGroupUI.__init__(self, "CNC Job General Preferences", parent=None)
-        super(CNCJobGenPrefGroupUI, self).__init__(self)
+        super(CNCJobGenPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("CNC Job General")))
         self.setTitle(str(_("CNC Job General")))
         self.decimals = decimals
         self.decimals = decimals
@@ -372,4 +386,4 @@ class CNCJobGenPrefGroupUI(OptionsGroupUI):
 
 
         new_val_line = str(plot_line_color.name()) + str(self.app.defaults['cncjob_plot_line'][7:9])
         new_val_line = str(plot_line_color.name()) + str(self.app.defaults['cncjob_plot_line'][7:9])
         self.line_color_entry.set_value(new_val_line)
         self.line_color_entry.set_value(new_val_line)
-        self.app.defaults['cncjob_plot_line'] = new_val_line
+        self.app.defaults['cncjob_plot_line'] = new_val_line

+ 16 - 2
flatcamGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py

@@ -4,11 +4,25 @@ from PyQt5.QtCore import QSettings
 from flatcamGUI.GUIElements import FCTextArea
 from flatcamGUI.GUIElements import FCTextArea
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 CNCJobOptPrefGroupUI(OptionsGroupUI):
 class CNCJobOptPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "CNC Job Options Preferences", parent=None)
         # OptionsGroupUI.__init__(self, "CNC Job Options Preferences", parent=None)
-        super(CNCJobOptPrefGroupUI, self).__init__(self)
+        super(CNCJobOptPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("CNC Job Options")))
         self.setTitle(str(_("CNC Job Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -63,4 +77,4 @@ class CNCJobOptPrefGroupUI(OptionsGroupUI):
         self.layout.addWidget(self.append_text)
         self.layout.addWidget(self.append_text)
         self.append_text.setFont(font)
         self.append_text.setFont(font)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 1 - 1
flatcamGUI/preferences/cncjob/CNCJobPreferencesUI.py

@@ -24,4 +24,4 @@ class CNCJobPreferencesUI(QtWidgets.QWidget):
         self.layout.addWidget(self.cncjob_opt_group)
         self.layout.addWidget(self.cncjob_opt_group)
         self.layout.addWidget(self.cncjob_adv_opt_group)
         self.layout.addWidget(self.cncjob_adv_opt_group)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 16 - 2
flatcamGUI/preferences/excellon/ExcellonAdvOptPrefGroupUI.py

@@ -1,14 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCEntry, FloatEntry, RadioSet, FCCheckBox
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCEntry, FloatEntry, RadioSet, FCCheckBox
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ExcellonAdvOptPrefGroupUI(OptionsGroupUI):
 class ExcellonAdvOptPrefGroupUI(OptionsGroupUI):
 
 
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Excellon Advanced Options", parent=parent)
         # OptionsGroupUI.__init__(self, "Excellon Advanced Options", parent=parent)
-        super(ExcellonAdvOptPrefGroupUI, self).__init__(self)
+        super(ExcellonAdvOptPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Excellon Adv. Options")))
         self.setTitle(str(_("Excellon Adv. Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -138,4 +152,4 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI):
 
 
         grid1.addWidget(self.fretract_cb, 8, 0, 1, 2)
         grid1.addWidget(self.fretract_cb, 8, 0, 1, 2)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py

@@ -1,12 +1,27 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCSpinner, FCDoubleSpinner, RadioSet
 from flatcamGUI.GUIElements import FCSpinner, FCDoubleSpinner, RadioSet
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ExcellonEditorPrefGroupUI(OptionsGroupUI):
 class ExcellonEditorPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
-        super(ExcellonEditorPrefGroupUI, self).__init__(self)
+        super(ExcellonEditorPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Excellon Editor")))
         self.setTitle(str(_("Excellon Editor")))
         self.decimals = decimals
         self.decimals = decimals
@@ -288,4 +303,4 @@ class ExcellonEditorPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.slot_array_circular_angle_label, 21, 0)
         grid0.addWidget(self.slot_array_circular_angle_label, 21, 0)
         grid0.addWidget(self.slot_array_circular_angle_entry, 21, 1)
         grid0.addWidget(self.slot_array_circular_angle_entry, 21, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 16 - 2
flatcamGUI/preferences/excellon/ExcellonExpPrefGroupUI.py

@@ -1,13 +1,27 @@
 from PyQt5 import QtWidgets, QtCore
 from PyQt5 import QtWidgets, QtCore
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import RadioSet, FCSpinner
 from flatcamGUI.GUIElements import RadioSet, FCSpinner
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ExcellonExpPrefGroupUI(OptionsGroupUI):
 class ExcellonExpPrefGroupUI(OptionsGroupUI):
 
 
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
-        super(ExcellonExpPrefGroupUI, self).__init__(self)
+        super(ExcellonExpPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Excellon Export")))
         self.setTitle(str(_("Excellon Export")))
         self.decimals = decimals
         self.decimals = decimals
@@ -151,4 +165,4 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI):
             self.zeros_radio.setDisabled(True)
             self.zeros_radio.setDisabled(True)
         else:
         else:
             self.zeros_label.setDisabled(False)
             self.zeros_label.setDisabled(False)
-            self.zeros_radio.setDisabled(False)
+            self.zeros_radio.setDisabled(False)

+ 16 - 2
flatcamGUI/preferences/excellon/ExcellonGenPrefGroupUI.py

@@ -1,16 +1,30 @@
 import platform
 import platform
 
 
 from PyQt5 import QtWidgets, QtCore, QtGui
 from PyQt5 import QtWidgets, QtCore, QtGui
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCEntry
 from flatcamGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCEntry
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ExcellonGenPrefGroupUI(OptionsGroupUI):
 class ExcellonGenPrefGroupUI(OptionsGroupUI):
 
 
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Excellon Options", parent=parent)
         # OptionsGroupUI.__init__(self, "Excellon Options", parent=parent)
-        super(ExcellonGenPrefGroupUI, self).__init__(self)
+        super(ExcellonGenPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Excellon General")))
         self.setTitle(str(_("Excellon General")))
         self.decimals = decimals
         self.decimals = decimals
@@ -398,4 +412,4 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
         self.app.preferencesUiManager.defaults_form_fields["excellon_format_lower_mm"].set_value('3')
         self.app.preferencesUiManager.defaults_form_fields["excellon_format_lower_mm"].set_value('3')
         self.app.preferencesUiManager.defaults_form_fields["excellon_format_upper_mm"].set_value('3')
         self.app.preferencesUiManager.defaults_form_fields["excellon_format_upper_mm"].set_value('3')
         self.app.preferencesUiManager.defaults_form_fields["excellon_zeros"].set_value('L')
         self.app.preferencesUiManager.defaults_form_fields["excellon_zeros"].set_value('L')
-        self.app.preferencesUiManager.defaults_form_fields["excellon_units"].set_value('INCH')
+        self.app.preferencesUiManager.defaults_form_fields["excellon_units"].set_value('INCH')

+ 16 - 3
flatcamGUI/preferences/excellon/ExcellonOptPrefGroupUI.py

@@ -1,17 +1,30 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
-from PyQt5.QtCore import Qt
+from PyQt5.QtCore import Qt, QSettings
 
 
 from flatcamGUI.GUIElements import RadioSet, FCDoubleSpinner, FCCheckBox, FCEntry, FCSpinner, OptionalInputSection, \
 from flatcamGUI.GUIElements import RadioSet, FCDoubleSpinner, FCCheckBox, FCEntry, FCSpinner, OptionalInputSection, \
     FCComboBox
     FCComboBox
 from flatcamGUI.preferences import machinist_setting
 from flatcamGUI.preferences import machinist_setting
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ExcellonOptPrefGroupUI(OptionsGroupUI):
 class ExcellonOptPrefGroupUI(OptionsGroupUI):
 
 
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Excellon Options", parent=parent)
         # OptionsGroupUI.__init__(self, "Excellon Options", parent=parent)
-        super(ExcellonOptPrefGroupUI, self).__init__(self)
+        super(ExcellonOptPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Excellon Options")))
         self.setTitle(str(_("Excellon Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -301,4 +314,4 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI):
         grid2.addWidget(stdlabel, 21, 0)
         grid2.addWidget(stdlabel, 21, 0)
         grid2.addWidget(self.slot_tooldia_entry, 21, 1)
         grid2.addWidget(self.slot_tooldia_entry, 21, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 16 - 1
flatcamGUI/preferences/excellon/ExcellonPreferencesUI.py

@@ -1,4 +1,5 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.preferences.excellon.ExcellonEditorPrefGroupUI import ExcellonEditorPrefGroupUI
 from flatcamGUI.preferences.excellon.ExcellonEditorPrefGroupUI import ExcellonEditorPrefGroupUI
 from flatcamGUI.preferences.excellon.ExcellonExpPrefGroupUI import ExcellonExpPrefGroupUI
 from flatcamGUI.preferences.excellon.ExcellonExpPrefGroupUI import ExcellonExpPrefGroupUI
@@ -6,6 +7,20 @@ from flatcamGUI.preferences.excellon.ExcellonAdvOptPrefGroupUI import ExcellonAd
 from flatcamGUI.preferences.excellon.ExcellonOptPrefGroupUI import ExcellonOptPrefGroupUI
 from flatcamGUI.preferences.excellon.ExcellonOptPrefGroupUI import ExcellonOptPrefGroupUI
 from flatcamGUI.preferences.excellon.ExcellonGenPrefGroupUI import ExcellonGenPrefGroupUI
 from flatcamGUI.preferences.excellon.ExcellonGenPrefGroupUI import ExcellonGenPrefGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ExcellonPreferencesUI(QtWidgets.QWidget):
 class ExcellonPreferencesUI(QtWidgets.QWidget):
 
 
@@ -35,4 +50,4 @@ class ExcellonPreferencesUI(QtWidgets.QWidget):
         self.layout.addWidget(self.excellon_adv_opt_group)
         self.layout.addWidget(self.excellon_adv_opt_group)
         self.layout.addWidget(self.excellon_editor_group)
         self.layout.addWidget(self.excellon_editor_group)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 16 - 2
flatcamGUI/preferences/general/GeneralAPPSetGroupUI.py

@@ -6,10 +6,24 @@ from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, FCComboBox, Radi
 from flatcamGUI.preferences import settings
 from flatcamGUI.preferences import settings
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GeneralAPPSetGroupUI(OptionsGroupUI):
 class GeneralAPPSetGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
-        super(GeneralAPPSetGroupUI, self).__init__(self)
+        super(GeneralAPPSetGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("App Settings")))
         self.setTitle(str(_("App Settings")))
         self.decimals = decimals
         self.decimals = decimals
@@ -466,4 +480,4 @@ class GeneralAPPSetGroupUI(OptionsGroupUI):
         self.mouse_cursor_entry.set_value(new_val_sel)
         self.mouse_cursor_entry.set_value(new_val_sel)
         self.app.defaults['global_cursor_color'] = new_val_sel
         self.app.defaults['global_cursor_color'] = new_val_sel
 
 
-        self.app.cursor_color_3D = self.app.defaults["global_cursor_color"]
+        self.app.cursor_color_3D = self.app.defaults["global_cursor_color"]

+ 16 - 3
flatcamGUI/preferences/general/GeneralAppPrefGroupUI.py

@@ -3,15 +3,28 @@ import sys
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
 from PyQt5.QtCore import QSettings
 from PyQt5.QtCore import QSettings
 
 
-import FlatCAMTranslation as fcTranslate
 from flatcamGUI.GUIElements import RadioSet, FCSpinner, FCCheckBox, FCComboBox, FCButton, OptionalInputSection, \
 from flatcamGUI.GUIElements import RadioSet, FCSpinner, FCCheckBox, FCComboBox, FCButton, OptionalInputSection, \
     FCDoubleSpinner
     FCDoubleSpinner
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GeneralAppPrefGroupUI(OptionsGroupUI):
 class GeneralAppPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
-        super(GeneralAppPrefGroupUI, self).__init__(self)
+        super(GeneralAppPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(_("App Preferences"))
         self.setTitle(_("App Preferences"))
         self.decimals = decimals
         self.decimals = decimals
@@ -371,4 +384,4 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
         qsettings.setValue('splash_screen', 1) if state else qsettings.setValue('splash_screen', 0)
         qsettings.setValue('splash_screen', 1) if state else qsettings.setValue('splash_screen', 0)
 
 
         # This will write the setting to the platform specific storage.
         # This will write the setting to the platform specific storage.
-        del qsettings
+        del qsettings

+ 17 - 2
flatcamGUI/preferences/general/GeneralGUIPrefGroupUI.py

@@ -4,10 +4,24 @@ from PyQt5.QtCore import QSettings, Qt
 from flatcamGUI.GUIElements import RadioSet, FCCheckBox, FCButton, FCComboBox, FCEntry, FCSpinner
 from flatcamGUI.GUIElements import RadioSet, FCCheckBox, FCButton, FCComboBox, FCEntry, FCSpinner
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GeneralGUIPrefGroupUI(OptionsGroupUI):
 class GeneralGUIPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
-        super(GeneralGUIPrefGroupUI, self).__init__(self)
+        super(GeneralGUIPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("GUI Preferences")))
         self.setTitle(str(_("GUI Preferences")))
         self.decimals = decimals
         self.decimals = decimals
@@ -629,6 +643,7 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
         :param lay:     Type of layout to be set on the toolbard
         :param lay:     Type of layout to be set on the toolbard
         :return:        None
         :return:        None
         """
         """
+
         self.app.defaults.report_usage("on_layout()")
         self.app.defaults.report_usage("on_layout()")
         if lay:
         if lay:
             current_layout = lay
             current_layout = lay
@@ -769,4 +784,4 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
         self.app.ui.grid_gap_x_entry.setText(str(self.app.defaults["global_gridx"]))
         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.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.snap_max_dist_entry.setText(str(self.app.defaults["global_snap_max"]))
-        self.app.ui.grid_gap_link_cb.setChecked(True)
+        self.app.ui.grid_gap_link_cb.setChecked(True)

+ 16 - 1
flatcamGUI/preferences/general/GeneralPreferencesUI.py

@@ -1,9 +1,24 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.preferences.general.GeneralAppPrefGroupUI import GeneralAppPrefGroupUI
 from flatcamGUI.preferences.general.GeneralAppPrefGroupUI import GeneralAppPrefGroupUI
 from flatcamGUI.preferences.general.GeneralAPPSetGroupUI import GeneralAPPSetGroupUI
 from flatcamGUI.preferences.general.GeneralAPPSetGroupUI import GeneralAPPSetGroupUI
 from flatcamGUI.preferences.general.GeneralGUIPrefGroupUI import GeneralGUIPrefGroupUI
 from flatcamGUI.preferences.general.GeneralGUIPrefGroupUI import GeneralGUIPrefGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GeneralPreferencesUI(QtWidgets.QWidget):
 class GeneralPreferencesUI(QtWidgets.QWidget):
     def __init__(self, decimals, parent=None):
     def __init__(self, decimals, parent=None):
@@ -25,4 +40,4 @@ class GeneralPreferencesUI(QtWidgets.QWidget):
         self.layout.addWidget(self.general_gui_group)
         self.layout.addWidget(self.general_gui_group)
         self.layout.addWidget(self.general_app_set_group)
         self.layout.addWidget(self.general_app_set_group)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCEntry, FloatEntry, FCDoubleSpinner, FCCheckBox, RadioSet
 from flatcamGUI.GUIElements import FCEntry, FloatEntry, FCDoubleSpinner, FCCheckBox, RadioSet
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GeometryAdvOptPrefGroupUI(OptionsGroupUI):
 class GeometryAdvOptPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Geometry Advanced Options Preferences", parent=parent)
         # OptionsGroupUI.__init__(self, "Geometry Advanced Options Preferences", parent=parent)
-        super(GeometryAdvOptPrefGroupUI, self).__init__(self)
+        super(GeometryAdvOptPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Geometry Adv. Options")))
         self.setTitle(str(_("Geometry Adv. Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -171,4 +186,4 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI):
         grid1.addWidget(segy_label, 11, 0)
         grid1.addWidget(segy_label, 11, 0)
         grid1.addWidget(self.segy_entry, 11, 1)
         grid1.addWidget(self.segy_entry, 11, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/geometry/GeometryEditorPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCSpinner, RadioSet
 from flatcamGUI.GUIElements import FCSpinner, RadioSet
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GeometryEditorPrefGroupUI(OptionsGroupUI):
 class GeometryEditorPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Gerber Adv. Options Preferences", parent=parent)
         # OptionsGroupUI.__init__(self, "Gerber Adv. Options Preferences", parent=parent)
-        super(GeometryEditorPrefGroupUI, self).__init__(self)
+        super(GeometryEditorPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Geometry Editor")))
         self.setTitle(str(_("Geometry Editor")))
         self.decimals = decimals
         self.decimals = decimals
@@ -49,4 +64,4 @@ class GeometryEditorPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(milling_type_label, 1, 0)
         grid0.addWidget(milling_type_label, 1, 0)
         grid0.addWidget(self.milling_type_radio, 1, 1)
         grid0.addWidget(self.milling_type_radio, 1, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/geometry/GeometryGenPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets, QtCore, QtGui
 from PyQt5 import QtWidgets, QtCore, QtGui
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCCheckBox, FCSpinner, FCEntry
 from flatcamGUI.GUIElements import FCCheckBox, FCSpinner, FCEntry
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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(OptionsGroupUI):
 class GeometryGenPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Geometry General Preferences", parent=parent)
         # OptionsGroupUI.__init__(self, "Geometry General Preferences", parent=parent)
-        super(GeometryGenPrefGroupUI, self).__init__(self)
+        super(GeometryGenPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Geometry General")))
         self.setTitle(str(_("Geometry General")))
         self.decimals = decimals
         self.decimals = decimals
@@ -105,4 +120,4 @@ class GeometryGenPrefGroupUI(OptionsGroupUI):
         self.line_color_button.setStyleSheet("background-color:%s" % str(plot_line_color.name()))
         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])
         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)
+        self.line_color_entry.set_value(new_val_line)

+ 17 - 3
flatcamGUI/preferences/geometry/GeometryOptPrefGroupUI.py

@@ -1,15 +1,29 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
-from PyQt5.QtCore import Qt
+from PyQt5.QtCore import Qt, QSettings
 
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, OptionalInputSection, FCEntry, FCSpinner, FCComboBox
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, OptionalInputSection, FCEntry, FCSpinner, FCComboBox
 from flatcamGUI.preferences import machinist_setting
 from flatcamGUI.preferences import machinist_setting
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GeometryOptPrefGroupUI(OptionsGroupUI):
 class GeometryOptPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Geometry Options Preferences", parent=parent)
         # OptionsGroupUI.__init__(self, "Geometry Options Preferences", parent=parent)
-        super(GeometryOptPrefGroupUI, self).__init__(self)
+        super(GeometryOptPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Geometry Options")))
         self.setTitle(str(_("Geometry Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -248,4 +262,4 @@ class GeometryOptPrefGroupUI(OptionsGroupUI):
         grid1.addWidget(pp_label, 13, 0)
         grid1.addWidget(pp_label, 13, 0)
         grid1.addWidget(self.pp_geometry_name_cb, 13, 1)
         grid1.addWidget(self.pp_geometry_name_cb, 13, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 16 - 1
flatcamGUI/preferences/geometry/GeometryPreferencesUI.py

@@ -1,10 +1,25 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.preferences.geometry.GeometryEditorPrefGroupUI import GeometryEditorPrefGroupUI
 from flatcamGUI.preferences.geometry.GeometryEditorPrefGroupUI import GeometryEditorPrefGroupUI
 from flatcamGUI.preferences.geometry.GeometryAdvOptPrefGroupUI import GeometryAdvOptPrefGroupUI
 from flatcamGUI.preferences.geometry.GeometryAdvOptPrefGroupUI import GeometryAdvOptPrefGroupUI
 from flatcamGUI.preferences.geometry.GeometryOptPrefGroupUI import GeometryOptPrefGroupUI
 from flatcamGUI.preferences.geometry.GeometryOptPrefGroupUI import GeometryOptPrefGroupUI
 from flatcamGUI.preferences.geometry.GeometryGenPrefGroupUI import GeometryGenPrefGroupUI
 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
+
+settings = QSettings("Open Source", "FlatCAM")
+if settings.contains("machinist"):
+    machinist_setting = settings.value('machinist', type=int)
+else:
+    machinist_setting = 0
+
 
 
 class GeometryPreferencesUI(QtWidgets.QWidget):
 class GeometryPreferencesUI(QtWidgets.QWidget):
 
 
@@ -28,4 +43,4 @@ class GeometryPreferencesUI(QtWidgets.QWidget):
         self.layout.addWidget(self.geometry_adv_opt_group)
         self.layout.addWidget(self.geometry_adv_opt_group)
         self.layout.addWidget(self.geometry_editor_group)
         self.layout.addWidget(self.geometry_editor_group)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCDoubleSpinner, FCSpinner, OptionalInputSection
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCDoubleSpinner, FCSpinner, OptionalInputSection
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GerberAdvOptPrefGroupUI(OptionsGroupUI):
 class GerberAdvOptPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Gerber Adv. Options Preferences", parent=parent)
         # OptionsGroupUI.__init__(self, "Gerber Adv. Options Preferences", parent=parent)
-        super(GerberAdvOptPrefGroupUI, self).__init__(self)
+        super(GerberAdvOptPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Gerber Adv. Options")))
         self.setTitle(str(_("Gerber Adv. Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -168,4 +183,4 @@ class GerberAdvOptPrefGroupUI(OptionsGroupUI):
             ],
             ],
             logic=True)
             logic=True)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/gerber/GerberEditorPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCSpinner, FCDoubleSpinner, FCComboBox, FCEntry, RadioSet
 from flatcamGUI.GUIElements import FCSpinner, FCDoubleSpinner, FCComboBox, FCEntry, RadioSet
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GerberEditorPrefGroupUI(OptionsGroupUI):
 class GerberEditorPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Gerber Adv. Options Preferences", parent=parent)
         # OptionsGroupUI.__init__(self, "Gerber Adv. Options Preferences", parent=parent)
-        super(GerberEditorPrefGroupUI, self).__init__(self)
+        super(GerberEditorPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Gerber Editor")))
         self.setTitle(str(_("Gerber Editor")))
         self.decimals = decimals
         self.decimals = decimals
@@ -229,4 +244,4 @@ class GerberEditorPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.grb_ma_high_label, 19, 0)
         grid0.addWidget(self.grb_ma_high_label, 19, 0)
         grid0.addWidget(self.grb_ma_high_entry, 19, 1)
         grid0.addWidget(self.grb_ma_high_entry, 19, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/gerber/GerberExpPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets, QtCore
 from PyQt5 import QtWidgets, QtCore
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import RadioSet, FCSpinner
 from flatcamGUI.GUIElements import RadioSet, FCSpinner
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GerberExpPrefGroupUI(OptionsGroupUI):
 class GerberExpPrefGroupUI(OptionsGroupUI):
 
 
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
-        super(GerberExpPrefGroupUI, self).__init__(self)
+        super(GerberExpPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Gerber Export")))
         self.setTitle(str(_("Gerber Export")))
         self.decimals = decimals
         self.decimals = decimals
@@ -100,4 +115,4 @@ class GerberExpPrefGroupUI(OptionsGroupUI):
 
 
         form.addRow(self.zeros_label, self.zeros_radio)
         form.addRow(self.zeros_label, self.zeros_radio)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 3
flatcamGUI/preferences/gerber/GerberGenPrefGroupUI.py

@@ -1,15 +1,29 @@
 from PyQt5 import QtWidgets, QtCore, QtGui
 from PyQt5 import QtWidgets, QtCore, QtGui
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCEntry
 from flatcamGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCEntry
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GerberGenPrefGroupUI(OptionsGroupUI):
 class GerberGenPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Gerber General Preferences", parent=parent)
         # OptionsGroupUI.__init__(self, "Gerber General Preferences", parent=parent)
-        super(GerberGenPrefGroupUI, self).__init__(self)
+        super(GerberGenPrefGroupUI, self).__init__(self, parent=parent)
 
 
-        self.parent = parent
         self.setTitle(str(_("Gerber General")))
         self.setTitle(str(_("Gerber General")))
         self.decimals = decimals
         self.decimals = decimals
 
 
@@ -256,4 +270,4 @@ class GerberGenPrefGroupUI(OptionsGroupUI):
 
 
         new_val_line = str(plot_line_color.name()) + str(self.app.defaults['gerber_plot_line'][7:9])
         new_val_line = str(plot_line_color.name()) + str(self.app.defaults['gerber_plot_line'][7:9])
         self.pl_color_entry.set_value(new_val_line)
         self.pl_color_entry.set_value(new_val_line)
-        self.app.defaults['gerber_plot_line'] = new_val_line
+        self.app.defaults['gerber_plot_line'] = new_val_line

+ 18 - 2
flatcamGUI/preferences/gerber/GerberOptPrefGroupUI.py

@@ -1,13 +1,29 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCSpinner, RadioSet, FCCheckBox
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCSpinner, RadioSet, FCCheckBox
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GerberOptPrefGroupUI(OptionsGroupUI):
 class GerberOptPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Gerber Options Preferences", parent=parent)
         # OptionsGroupUI.__init__(self, "Gerber Options Preferences", parent=parent)
-        super(GerberOptPrefGroupUI, self).__init__(self)
+        super(GerberOptPrefGroupUI, self).__init__(self, parent=parent)
+
         self.decimals = decimals
         self.decimals = decimals
 
 
         self.setTitle(str(_("Gerber Options")))
         self.setTitle(str(_("Gerber Options")))
@@ -168,4 +184,4 @@ class GerberOptPrefGroupUI(OptionsGroupUI):
               "the margin.")
               "the margin.")
         )
         )
         grid2.addWidget(self.bbrounded_cb, 1, 0, 1, 2)
         grid2.addWidget(self.bbrounded_cb, 1, 0, 1, 2)
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 16 - 1
flatcamGUI/preferences/gerber/GerberPreferencesUI.py

@@ -1,4 +1,5 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.preferences.gerber.GerberEditorPrefGroupUI import GerberEditorPrefGroupUI
 from flatcamGUI.preferences.gerber.GerberEditorPrefGroupUI import GerberEditorPrefGroupUI
 from flatcamGUI.preferences.gerber.GerberExpPrefGroupUI import GerberExpPrefGroupUI
 from flatcamGUI.preferences.gerber.GerberExpPrefGroupUI import GerberExpPrefGroupUI
@@ -6,6 +7,20 @@ from flatcamGUI.preferences.gerber.GerberAdvOptPrefGroupUI import GerberAdvOptPr
 from flatcamGUI.preferences.gerber.GerberOptPrefGroupUI import GerberOptPrefGroupUI
 from flatcamGUI.preferences.gerber.GerberOptPrefGroupUI import GerberOptPrefGroupUI
 from flatcamGUI.preferences.gerber.GerberGenPrefGroupUI import GerberGenPrefGroupUI
 from flatcamGUI.preferences.gerber.GerberGenPrefGroupUI import GerberGenPrefGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 GerberPreferencesUI(QtWidgets.QWidget):
 class GerberPreferencesUI(QtWidgets.QWidget):
 
 
@@ -35,4 +50,4 @@ class GerberPreferencesUI(QtWidgets.QWidget):
         self.layout.addWidget(self.gerber_adv_opt_group)
         self.layout.addWidget(self.gerber_adv_opt_group)
         self.layout.addWidget(self.gerber_editor_group)
         self.layout.addWidget(self.gerber_editor_group)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/Tools2CThievingPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCSpinner, FCDoubleSpinner, RadioSet
 from flatcamGUI.GUIElements import FCSpinner, FCDoubleSpinner, RadioSet
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 Tools2CThievingPrefGroupUI(OptionsGroupUI):
 class Tools2CThievingPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(Tools2CThievingPrefGroupUI, self).__init__(self)
+        super(Tools2CThievingPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Copper Thieving Tool Options")))
         self.setTitle(str(_("Copper Thieving Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -256,4 +271,4 @@ class Tools2CThievingPrefGroupUI(OptionsGroupUI):
         grid_lay.addWidget(self.clearance_ppm_label, 21, 0)
         grid_lay.addWidget(self.clearance_ppm_label, 21, 0)
         grid_lay.addWidget(self.clearance_ppm_entry, 21, 1)
         grid_lay.addWidget(self.clearance_ppm_entry, 21, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/Tools2CalPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import RadioSet, FCDoubleSpinner, FCCheckBox, FCEntry
 from flatcamGUI.GUIElements import RadioSet, FCDoubleSpinner, FCCheckBox, FCEntry
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 Tools2CalPrefGroupUI(OptionsGroupUI):
 class Tools2CalPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(Tools2CalPrefGroupUI, self).__init__(self)
+        super(Tools2CalPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Calibration Tool Options")))
         self.setTitle(str(_("Calibration Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -120,4 +135,4 @@ class Tools2CalPrefGroupUI(OptionsGroupUI):
         grid_lay.addWidget(second_point_lbl, 8, 0)
         grid_lay.addWidget(second_point_lbl, 8, 0)
         grid_lay.addWidget(self.second_point_radio, 8, 1, 1, 2)
         grid_lay.addWidget(self.second_point_radio, 8, 1, 1, 2)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCDoubleSpinner
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCDoubleSpinner
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 Tools2EDrillsPrefGroupUI(OptionsGroupUI):
 class Tools2EDrillsPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(Tools2EDrillsPrefGroupUI, self).__init__(self)
+        super(Tools2EDrillsPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Extract Drills Options")))
         self.setTitle(str(_("Extract Drills Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -213,4 +228,4 @@ class Tools2EDrillsPrefGroupUI(OptionsGroupUI):
         grid_lay.addWidget(self.factor_label, 20, 0)
         grid_lay.addWidget(self.factor_label, 20, 0)
         grid_lay.addWidget(self.factor_entry, 20, 1)
         grid_lay.addWidget(self.factor_entry, 20, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, RadioSet
 from flatcamGUI.GUIElements import FCDoubleSpinner, RadioSet
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 Tools2FiducialsPrefGroupUI(OptionsGroupUI):
 class Tools2FiducialsPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(Tools2FiducialsPrefGroupUI, self).__init__(self)
+        super(Tools2FiducialsPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Fiducials Tool Options")))
         self.setTitle(str(_("Fiducials Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -117,4 +132,4 @@ class Tools2FiducialsPrefGroupUI(OptionsGroupUI):
         grid_lay.addWidget(self.line_thickness_label, 7, 0)
         grid_lay.addWidget(self.line_thickness_label, 7, 0)
         grid_lay.addWidget(self.line_thickness_entry, 7, 1)
         grid_lay.addWidget(self.line_thickness_entry, 7, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/Tools2InvertPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, RadioSet
 from flatcamGUI.GUIElements import FCDoubleSpinner, RadioSet
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 Tools2InvertPrefGroupUI(OptionsGroupUI):
 class Tools2InvertPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(Tools2InvertPrefGroupUI, self).__init__(self)
+        super(Tools2InvertPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Invert Gerber Tool Options")))
         self.setTitle(str(_("Invert Gerber Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -57,4 +72,4 @@ class Tools2InvertPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.join_label, 5, 0, 1, 2)
         grid0.addWidget(self.join_label, 5, 0, 1, 2)
         grid0.addWidget(self.join_radio, 7, 0, 1, 2)
         grid0.addWidget(self.join_radio, 7, 0, 1, 2)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/Tools2OptimalPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCSpinner
 from flatcamGUI.GUIElements import FCSpinner
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 Tools2OptimalPrefGroupUI(OptionsGroupUI):
 class Tools2OptimalPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(Tools2OptimalPrefGroupUI, self).__init__(self)
+        super(Tools2OptimalPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Optimal Tool Options")))
         self.setTitle(str(_("Optimal Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -38,4 +53,4 @@ class Tools2OptimalPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.precision_lbl, 0, 0)
         grid0.addWidget(self.precision_lbl, 0, 0)
         grid0.addWidget(self.precision_sp, 0, 1)
         grid0.addWidget(self.precision_sp, 0, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 16 - 1
flatcamGUI/preferences/tools/Tools2PreferencesUI.py

@@ -1,4 +1,5 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.preferences.tools.Tools2InvertPrefGroupUI import Tools2InvertPrefGroupUI
 from flatcamGUI.preferences.tools.Tools2InvertPrefGroupUI import Tools2InvertPrefGroupUI
 from flatcamGUI.preferences.tools.Tools2PunchGerberPrefGroupUI import Tools2PunchGerberPrefGroupUI
 from flatcamGUI.preferences.tools.Tools2PunchGerberPrefGroupUI import Tools2PunchGerberPrefGroupUI
@@ -10,6 +11,20 @@ from flatcamGUI.preferences.tools.Tools2QRCodePrefGroupUI import Tools2QRCodePre
 from flatcamGUI.preferences.tools.Tools2OptimalPrefGroupUI import Tools2OptimalPrefGroupUI
 from flatcamGUI.preferences.tools.Tools2OptimalPrefGroupUI import Tools2OptimalPrefGroupUI
 from flatcamGUI.preferences.tools.Tools2RulesCheckPrefGroupUI import Tools2RulesCheckPrefGroupUI
 from flatcamGUI.preferences.tools.Tools2RulesCheckPrefGroupUI import Tools2RulesCheckPrefGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 Tools2PreferencesUI(QtWidgets.QWidget):
 class Tools2PreferencesUI(QtWidgets.QWidget):
 
 
@@ -71,4 +86,4 @@ class Tools2PreferencesUI(QtWidgets.QWidget):
         self.layout.addLayout(self.vlay3)
         self.layout.addLayout(self.vlay3)
         self.layout.addLayout(self.vlay4)
         self.layout.addLayout(self.vlay4)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/Tools2PunchGerberPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCDoubleSpinner
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCDoubleSpinner
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 Tools2PunchGerberPrefGroupUI(OptionsGroupUI):
 class Tools2PunchGerberPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(Tools2PunchGerberPrefGroupUI, self).__init__(self)
+        super(Tools2PunchGerberPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Punch Gerber Options")))
         self.setTitle(str(_("Punch Gerber Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -215,4 +230,4 @@ class Tools2PunchGerberPrefGroupUI(OptionsGroupUI):
         grid_lay.addWidget(self.factor_label, 20, 0)
         grid_lay.addWidget(self.factor_label, 20, 0)
         grid_lay.addWidget(self.factor_entry, 20, 1)
         grid_lay.addWidget(self.factor_entry, 20, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 3
flatcamGUI/preferences/tools/Tools2QRCodePrefGroupUI.py

@@ -1,14 +1,28 @@
 from PyQt5 import QtWidgets, QtCore
 from PyQt5 import QtWidgets, QtCore
-from PyQt5.QtCore import Qt
+from PyQt5.QtCore import Qt, QSettings
 
 
 from flatcamGUI.GUIElements import FCSpinner, RadioSet, FCTextArea, FCEntry
 from flatcamGUI.GUIElements import FCSpinner, RadioSet, FCTextArea, FCEntry
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 Tools2QRCodePrefGroupUI(OptionsGroupUI):
 class Tools2QRCodePrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(Tools2QRCodePrefGroupUI, self).__init__(self)
+        super(Tools2QRCodePrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("QRCode Tool Options")))
         self.setTitle(str(_("QRCode Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -190,4 +204,4 @@ class Tools2QRCodePrefGroupUI(OptionsGroupUI):
 
 
         grid_lay.addWidget(self.sel_limit_label, 11, 0)
         grid_lay.addWidget(self.sel_limit_label, 11, 0)
         grid_lay.addWidget(self.sel_limit_entry, 11, 1)
         grid_lay.addWidget(self.sel_limit_entry, 11, 1)
-        # self.layout.addStretch()
+        # self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/Tools2RulesCheckPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCCheckBox, FCDoubleSpinner
 from flatcamGUI.GUIElements import FCCheckBox, FCDoubleSpinner
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 Tools2RulesCheckPrefGroupUI(OptionsGroupUI):
 class Tools2RulesCheckPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(Tools2RulesCheckPrefGroupUI, self).__init__(self)
+        super(Tools2RulesCheckPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Check Rules Tool Options")))
         self.setTitle(str(_("Check Rules Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -224,4 +239,4 @@ class Tools2RulesCheckPrefGroupUI(OptionsGroupUI):
         )
         )
         self.form_layout_1.addRow(self.drill_size_lbl, self.drill_size_entry)
         self.form_layout_1.addRow(self.drill_size_lbl, self.drill_size_entry)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/Tools2sidedPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, RadioSet
 from flatcamGUI.GUIElements import FCDoubleSpinner, RadioSet
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 Tools2sidedPrefGroupUI(OptionsGroupUI):
 class Tools2sidedPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "2sided Tool Options", parent=parent)
         # OptionsGroupUI.__init__(self, "2sided Tool Options", parent=parent)
-        super(Tools2sidedPrefGroupUI, self).__init__(self)
+        super(Tools2sidedPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("2Sided Tool Options")))
         self.setTitle(str(_("2Sided Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -74,4 +89,4 @@ class Tools2sidedPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.axloc_label, 4, 0)
         grid0.addWidget(self.axloc_label, 4, 0)
         grid0.addWidget(self.axis_location_radio, 4, 1)
         grid0.addWidget(self.axis_location_radio, 4, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/ToolsCalculatorsPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCDoubleSpinner
 from flatcamGUI.GUIElements import FCDoubleSpinner
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
 class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Calculators Tool Options", parent=parent)
         # OptionsGroupUI.__init__(self, "Calculators Tool Options", parent=parent)
-        super(ToolsCalculatorsPrefGroupUI, self).__init__(self)
+        super(ToolsCalculatorsPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Calculators Tool Options")))
         self.setTitle(str(_("Calculators Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -124,4 +139,4 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.growth_label, 7, 0)
         grid0.addWidget(self.growth_label, 7, 0)
         grid0.addWidget(self.growth_entry, 7, 1)
         grid0.addWidget(self.growth_entry, 7, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/ToolsCutoutPrefGroupUI.py

@@ -1,14 +1,29 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, RadioSet, FCComboBox
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, RadioSet, FCComboBox
 from flatcamGUI.preferences import machinist_setting
 from flatcamGUI.preferences import machinist_setting
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ToolsCutoutPrefGroupUI(OptionsGroupUI):
 class ToolsCutoutPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Cutout Tool Options", parent=parent)
         # OptionsGroupUI.__init__(self, "Cutout Tool Options", parent=parent)
-        super(ToolsCutoutPrefGroupUI, self).__init__(self)
+        super(ToolsCutoutPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Cutout Tool Options")))
         self.setTitle(str(_("Cutout Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -159,4 +174,4 @@ class ToolsCutoutPrefGroupUI(OptionsGroupUI):
         )
         )
         grid0.addWidget(self.convex_box, 7, 0, 1, 2)
         grid0.addWidget(self.convex_box, 7, 0, 1, 2)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 3
flatcamGUI/preferences/tools/ToolsFilmPrefGroupUI.py

@@ -1,14 +1,28 @@
 from PyQt5 import QtWidgets, QtCore
 from PyQt5 import QtWidgets, QtCore
-from PyQt5.QtCore import Qt
+from PyQt5.QtCore import Qt, QSettings
 
 
 from flatcamGUI.GUIElements import RadioSet, FCEntry, FCDoubleSpinner, FCCheckBox, FCComboBox
 from flatcamGUI.GUIElements import RadioSet, FCEntry, FCDoubleSpinner, FCCheckBox, FCComboBox
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ToolsFilmPrefGroupUI(OptionsGroupUI):
 class ToolsFilmPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Cutout Tool Options", parent=parent)
         # OptionsGroupUI.__init__(self, "Cutout Tool Options", parent=parent)
-        super(ToolsFilmPrefGroupUI, self).__init__(self)
+        super(ToolsFilmPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Film Tool Options")))
         self.setTitle(str(_("Film Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -299,4 +313,4 @@ class ToolsFilmPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.pagesize_label, 17, 0)
         grid0.addWidget(self.pagesize_label, 17, 0)
         grid0.addWidget(self.pagesize_combo, 17, 1)
         grid0.addWidget(self.pagesize_combo, 17, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/ToolsNCCPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCEntry, RadioSet, FCDoubleSpinner, FCComboBox, FCCheckBox
 from flatcamGUI.GUIElements import FCEntry, RadioSet, FCDoubleSpinner, FCComboBox, FCCheckBox
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ToolsNCCPrefGroupUI(OptionsGroupUI):
 class ToolsNCCPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "NCC Tool Options", parent=parent)
         # OptionsGroupUI.__init__(self, "NCC Tool Options", parent=parent)
-        super(ToolsNCCPrefGroupUI, self).__init__(self)
+        super(ToolsNCCPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("NCC Tool Options")))
         self.setTitle(str(_("NCC Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -331,4 +346,4 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(plotting_label, 21, 0)
         grid0.addWidget(plotting_label, 21, 0)
         grid0.addWidget(self.ncc_plotting_radio, 21, 1)
         grid0.addWidget(self.ncc_plotting_radio, 21, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/ToolsPaintPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCEntry, RadioSet, FCDoubleSpinner, FCComboBox, FCCheckBox
 from flatcamGUI.GUIElements import FCEntry, RadioSet, FCDoubleSpinner, FCComboBox, FCCheckBox
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ToolsPaintPrefGroupUI(OptionsGroupUI):
 class ToolsPaintPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Paint Area Tool Options", parent=parent)
         # OptionsGroupUI.__init__(self, "Paint Area Tool Options", parent=parent)
-        super(ToolsPaintPrefGroupUI, self).__init__(self)
+        super(ToolsPaintPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Paint Tool Options")))
         self.setTitle(str(_("Paint Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -295,4 +310,4 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(plotting_label, 20, 0)
         grid0.addWidget(plotting_label, 20, 0)
         grid0.addWidget(self.paint_plotting_radio, 20, 1)
         grid0.addWidget(self.paint_plotting_radio, 20, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/ToolsPanelizePrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCSpinner, RadioSet, FCCheckBox
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCSpinner, RadioSet, FCCheckBox
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ToolsPanelizePrefGroupUI(OptionsGroupUI):
 class ToolsPanelizePrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Cutout Tool Options", parent=parent)
         # OptionsGroupUI.__init__(self, "Cutout Tool Options", parent=parent)
-        super(ToolsPanelizePrefGroupUI, self).__init__(self)
+        super(ToolsPanelizePrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Panelize Tool Options")))
         self.setTitle(str(_("Panelize Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -128,4 +143,4 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.y_height_lbl, 7, 0)
         grid0.addWidget(self.y_height_lbl, 7, 0)
         grid0.addWidget(self.py_height_entry, 7, 1)
         grid0.addWidget(self.py_height_entry, 7, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 16 - 1
flatcamGUI/preferences/tools/ToolsPreferencesUI.py

@@ -1,4 +1,5 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.preferences.tools.ToolsSubPrefGroupUI import ToolsSubPrefGroupUI
 from flatcamGUI.preferences.tools.ToolsSubPrefGroupUI import ToolsSubPrefGroupUI
 from flatcamGUI.preferences.tools.ToolsSolderpastePrefGroupUI import ToolsSolderpastePrefGroupUI
 from flatcamGUI.preferences.tools.ToolsSolderpastePrefGroupUI import ToolsSolderpastePrefGroupUI
@@ -11,6 +12,20 @@ from flatcamGUI.preferences.tools.Tools2sidedPrefGroupUI import Tools2sidedPrefG
 from flatcamGUI.preferences.tools.ToolsCutoutPrefGroupUI import ToolsCutoutPrefGroupUI
 from flatcamGUI.preferences.tools.ToolsCutoutPrefGroupUI import ToolsCutoutPrefGroupUI
 from flatcamGUI.preferences.tools.ToolsNCCPrefGroupUI import ToolsNCCPrefGroupUI
 from flatcamGUI.preferences.tools.ToolsNCCPrefGroupUI import ToolsNCCPrefGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ToolsPreferencesUI(QtWidgets.QWidget):
 class ToolsPreferencesUI(QtWidgets.QWidget):
 
 
@@ -76,4 +91,4 @@ class ToolsPreferencesUI(QtWidgets.QWidget):
         self.layout.addLayout(self.vlay3)
         self.layout.addLayout(self.vlay3)
         self.layout.addLayout(self.vlay4)
         self.layout.addLayout(self.vlay4)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCEntry, FCDoubleSpinner, FCSpinner, FCComboBox
 from flatcamGUI.GUIElements import FCEntry, FCDoubleSpinner, FCSpinner, FCComboBox
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ToolsSolderpastePrefGroupUI(OptionsGroupUI):
 class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(ToolsSolderpastePrefGroupUI, self).__init__(self)
+        super(ToolsSolderpastePrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("SolderPaste Tool Options")))
         self.setTitle(str(_("SolderPaste Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -228,4 +243,4 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
         grid0.addWidget(pp_label, 15, 0)
         grid0.addWidget(pp_label, 15, 0)
         grid0.addWidget(self.pp_combo, 15, 1)
         grid0.addWidget(self.pp_combo, 15, 1)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/ToolsSubPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCCheckBox
 from flatcamGUI.GUIElements import FCCheckBox
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ToolsSubPrefGroupUI(OptionsGroupUI):
 class ToolsSubPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(ToolsSubPrefGroupUI, self).__init__(self)
+        super(ToolsSubPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Substractor Tool Options")))
         self.setTitle(str(_("Substractor Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -24,4 +39,4 @@ class ToolsSubPrefGroupUI(OptionsGroupUI):
         self.close_paths_cb.setToolTip(_("Checking this will close the paths cut by the Geometry substractor object."))
         self.close_paths_cb.setToolTip(_("Checking this will close the paths cut by the Geometry substractor object."))
         self.layout.addWidget(self.close_paths_cb)
         self.layout.addWidget(self.close_paths_cb)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 17 - 2
flatcamGUI/preferences/tools/ToolsTransformPrefGroupUI.py

@@ -1,13 +1,28 @@
 from PyQt5 import QtWidgets
 from PyQt5 import QtWidgets
+from PyQt5.QtCore import QSettings
 
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, EvalEntry2
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, EvalEntry2
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 ToolsTransformPrefGroupUI(OptionsGroupUI):
 class ToolsTransformPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
 
 
-        super(ToolsTransformPrefGroupUI, self).__init__(self)
+        super(ToolsTransformPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Transform Tool Options")))
         self.setTitle(str(_("Transform Tool Options")))
         self.decimals = decimals
         self.decimals = decimals
@@ -231,4 +246,4 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
 
 
         grid0.addWidget(self.buffer_rounded_cb, 19, 0, 1, 2)
         grid0.addWidget(self.buffer_rounded_cb, 19, 0, 1, 2)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 15 - 1
flatcamGUI/preferences/utilities/AutoCompletePrefGroupUI.py

@@ -4,6 +4,20 @@ from PyQt5.QtCore import QSettings
 from flatcamGUI.GUIElements import FCButton, FCTextArea, FCEntry
 from flatcamGUI.GUIElements import FCButton, FCTextArea, FCEntry
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 AutoCompletePrefGroupUI(OptionsGroupUI):
 class AutoCompletePrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
@@ -66,4 +80,4 @@ class AutoCompletePrefGroupUI(OptionsGroupUI):
         hlay2.addWidget(self.add_btn)
         hlay2.addWidget(self.add_btn)
         hlay2.addWidget(self.del_btn)
         hlay2.addWidget(self.del_btn)
 
 
-        # self.layout.addStretch()
+        # self.layout.addStretch()

+ 16 - 2
flatcamGUI/preferences/utilities/FAExcPrefGroupUI.py

@@ -4,11 +4,25 @@ from PyQt5.QtCore import QSettings
 from flatcamGUI.GUIElements import VerticalScrollArea, FCButton, FCTextArea, FCEntry
 from flatcamGUI.GUIElements import VerticalScrollArea, FCButton, FCTextArea, FCEntry
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 FAExcPrefGroupUI(OptionsGroupUI):
 class FAExcPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Excellon File associations Preferences", parent=None)
         # OptionsGroupUI.__init__(self, "Excellon File associations Preferences", parent=None)
-        super().__init__(self)
+        super().__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Excellon File associations")))
         self.setTitle(str(_("Excellon File associations")))
         self.decimals = decimals
         self.decimals = decimals
@@ -85,4 +99,4 @@ class FAExcPrefGroupUI(OptionsGroupUI):
         scroll_widget.setLayout(self.vertical_lay)
         scroll_widget.setLayout(self.vertical_lay)
         self.layout.addWidget(scroll)
         self.layout.addWidget(scroll)
 
 
-        # self.vertical_lay.addStretch()
+        # self.vertical_lay.addStretch()

+ 16 - 2
flatcamGUI/preferences/utilities/FAGcoPrefGroupUI.py

@@ -4,11 +4,25 @@ from PyQt5.QtCore import QSettings
 from flatcamGUI.GUIElements import FCButton, FCTextArea, FCEntry
 from flatcamGUI.GUIElements import FCButton, FCTextArea, FCEntry
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 FAGcoPrefGroupUI(OptionsGroupUI):
 class FAGcoPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Gcode File associations Preferences", parent=None)
         # OptionsGroupUI.__init__(self, "Gcode File associations Preferences", parent=None)
-        super(FAGcoPrefGroupUI, self).__init__(self)
+        super(FAGcoPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("GCode File associations")))
         self.setTitle(str(_("GCode File associations")))
         self.decimals = decimals
         self.decimals = decimals
@@ -72,4 +86,4 @@ class FAGcoPrefGroupUI(OptionsGroupUI):
                                        "This work only in Windows."))
                                        "This work only in Windows."))
         self.layout.addWidget(self.gco_list_btn)
         self.layout.addWidget(self.gco_list_btn)
 
 
-        # self.layout.addStretch()
+        # self.layout.addStretch()

+ 16 - 2
flatcamGUI/preferences/utilities/FAGrbPrefGroupUI.py

@@ -4,11 +4,25 @@ from PyQt5.QtCore import QSettings
 from flatcamGUI.GUIElements import FCButton, FCTextArea, FCEntry
 from flatcamGUI.GUIElements import FCButton, FCTextArea, FCEntry
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 from flatcamGUI.preferences.OptionsGroupUI import OptionsGroupUI
 
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+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 FAGrbPrefGroupUI(OptionsGroupUI):
 class FAGrbPrefGroupUI(OptionsGroupUI):
     def __init__(self, decimals=4, parent=None):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Gerber File associations Preferences", parent=None)
         # OptionsGroupUI.__init__(self, "Gerber File associations Preferences", parent=None)
-        super(FAGrbPrefGroupUI, self).__init__(self)
+        super(FAGrbPrefGroupUI, self).__init__(self, parent=parent)
 
 
         self.setTitle(str(_("Gerber File associations")))
         self.setTitle(str(_("Gerber File associations")))
         self.decimals = decimals
         self.decimals = decimals
@@ -72,4 +86,4 @@ class FAGrbPrefGroupUI(OptionsGroupUI):
 
 
         self.layout.addWidget(self.grb_list_btn)
         self.layout.addWidget(self.grb_list_btn)
 
 
-        # self.layout.addStretch()
+        # self.layout.addStretch()

+ 1 - 1
flatcamGUI/preferences/utilities/UtilPreferencesUI.py

@@ -34,4 +34,4 @@ class UtilPreferencesUI(QtWidgets.QWidget):
         self.layout.addWidget(self.fa_gerber_group)
         self.layout.addWidget(self.fa_gerber_group)
         self.layout.addWidget(self.kw_group)
         self.layout.addWidget(self.kw_group)
 
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 1 - 1
requirements.txt

@@ -16,7 +16,7 @@ rtree
 pyopengl
 pyopengl
 vispy
 vispy
 ortools>=7.0
 ortools>=7.0
-svg.path
+svg.path>=4.0
 simplejson
 simplejson
 shapely>=1.7.0
 shapely>=1.7.0
 freetype-py
 freetype-py