Просмотр исходного кода

Merged marius_stanciu/flatcam_beta/Beta 8.992 into Beta

Marius Stanciu 5 лет назад
Родитель
Сommit
42937a29c9
56 измененных файлов с 843 добавлено и 108 удалено
  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
 
 - 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
         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,
         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.
         The function is called with 2 parameters: the new object and the App instance.
         :type initialize: function
-        :param active:
-        :param fit:
         :param plot: If to plot the resulting object
         :param autoselected: if the resulting object is autoselected in the Project tab and therefore in the
         self.collection
@@ -9247,9 +9245,10 @@ class App(QtCore.QObject):
         Adds a new Geometry Object to the projects and populates
         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:
         """
         self.defaults.report_usage("import_svg()")
@@ -9297,6 +9296,7 @@ class App(QtCore.QObject):
         :param filename:    Path to the DXF file.
         :param geo_type:    Type of FlatCAM object that will be created from DXF
         :param outname:     Name for the imported Geometry
+        :param plot:        If True then the resulting object will be plotted on canvas
         :return:
         """
         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 defaults import FlatCAMDefaults
 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')
 
 
@@ -1113,4 +1128,4 @@ class PreferencesUIManager:
             else:
                 self.preferences_changed_flag = False
                 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)
 else:
     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.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):
     def __init__(self, decimals=4, 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.setTitle(str(_("CNC Job Adv. Options")))
@@ -192,4 +205,4 @@ class CNCJobAdvOptPrefGroupUI(OptionsGroupUI):
 
         new_val_sel = str(annotation_color.name())
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCSpinner, FCDoubleSpinner, FCEntry
 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):
     def __init__(self, decimals=4, 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.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])
         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.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):
     def __init__(self, decimals=4, 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.decimals = decimals
@@ -63,4 +77,4 @@ class CNCJobOptPrefGroupUI(OptionsGroupUI):
         self.layout.addWidget(self.append_text)
         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_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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCEntry, FloatEntry, RadioSet, FCCheckBox
 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):
 
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -138,4 +152,4 @@ class ExcellonAdvOptPrefGroupUI(OptionsGroupUI):
 
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCSpinner, FCDoubleSpinner, RadioSet
 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):
     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.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_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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import RadioSet, FCSpinner
 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):
 
     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.decimals = decimals
@@ -151,4 +165,4 @@ class ExcellonExpPrefGroupUI(OptionsGroupUI):
             self.zeros_radio.setDisabled(True)
         else:
             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
 
 from PyQt5 import QtWidgets, QtCore, QtGui
+from PyQt5.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCEntry
 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):
 
     def __init__(self, decimals=4, parent=None):
         # 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.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_upper_mm"].set_value('3')
         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.QtCore import Qt
+from PyQt5.QtCore import Qt, QSettings
 
 from flatcamGUI.GUIElements import RadioSet, FCDoubleSpinner, FCCheckBox, FCEntry, FCSpinner, OptionalInputSection, \
     FCComboBox
 from flatcamGUI.preferences import machinist_setting
 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):
 
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -301,4 +314,4 @@ class ExcellonOptPrefGroupUI(OptionsGroupUI):
         grid2.addWidget(stdlabel, 21, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.preferences.excellon.ExcellonEditorPrefGroupUI import ExcellonEditorPrefGroupUI
 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.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):
 
@@ -35,4 +50,4 @@ class ExcellonPreferencesUI(QtWidgets.QWidget):
         self.layout.addWidget(self.excellon_adv_opt_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.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):
     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.decimals = decimals
@@ -466,4 +480,4 @@ class GeneralAPPSetGroupUI(OptionsGroupUI):
         self.mouse_cursor_entry.set_value(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.QtCore import QSettings
 
-import FlatCAMTranslation as fcTranslate
 from flatcamGUI.GUIElements import RadioSet, FCSpinner, FCCheckBox, FCComboBox, FCButton, OptionalInputSection, \
     FCDoubleSpinner
 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):
     def __init__(self, decimals=4, parent=None):
-        super(GeneralAppPrefGroupUI, self).__init__(self)
+        super(GeneralAppPrefGroupUI, self).__init__(self, parent=parent)
 
         self.setTitle(_("App Preferences"))
         self.decimals = decimals
@@ -371,4 +384,4 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
         qsettings.setValue('splash_screen', 1) if state else qsettings.setValue('splash_screen', 0)
 
         # 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.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):
     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.decimals = decimals
@@ -629,6 +643,7 @@ class GeneralGUIPrefGroupUI(OptionsGroupUI):
         :param lay:     Type of layout to be set on the toolbard
         :return:        None
         """
+
         self.app.defaults.report_usage("on_layout()")
         if lay:
             current_layout = lay
@@ -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_y_entry.setText(str(self.app.defaults["global_gridy"]))
         self.app.ui.snap_max_dist_entry.setText(str(self.app.defaults["global_snap_max"]))
-        self.app.ui.grid_gap_link_cb.setChecked(True)
+        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.QtCore import QSettings
 
 from flatcamGUI.preferences.general.GeneralAppPrefGroupUI import GeneralAppPrefGroupUI
 from flatcamGUI.preferences.general.GeneralAPPSetGroupUI import GeneralAPPSetGroupUI
 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):
     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_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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCEntry, FloatEntry, FCDoubleSpinner, FCCheckBox, RadioSet
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -171,4 +186,4 @@ class GeometryAdvOptPrefGroupUI(OptionsGroupUI):
         grid1.addWidget(segy_label, 11, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCSpinner, RadioSet
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -49,4 +64,4 @@ class GeometryEditorPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(milling_type_label, 1, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCCheckBox, FCSpinner, FCEntry
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -105,4 +120,4 @@ class GeometryGenPrefGroupUI(OptionsGroupUI):
         self.line_color_button.setStyleSheet("background-color:%s" % str(plot_line_color.name()))
 
         new_val_line = str(plot_line_color.name()) + str(self.app.defaults['geometry_plot_line'][7:9])
-        self.line_color_entry.set_value(new_val_line)
+        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.QtCore import Qt
+from PyQt5.QtCore import Qt, QSettings
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, OptionalInputSection, FCEntry, FCSpinner, FCComboBox
 from flatcamGUI.preferences import machinist_setting
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -248,4 +262,4 @@ class GeometryOptPrefGroupUI(OptionsGroupUI):
         grid1.addWidget(pp_label, 13, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.preferences.geometry.GeometryEditorPrefGroupUI import GeometryEditorPrefGroupUI
 from flatcamGUI.preferences.geometry.GeometryAdvOptPrefGroupUI import GeometryAdvOptPrefGroupUI
 from flatcamGUI.preferences.geometry.GeometryOptPrefGroupUI import GeometryOptPrefGroupUI
 from flatcamGUI.preferences.geometry.GeometryGenPrefGroupUI import GeometryGenPrefGroupUI
 
+import gettext
+import FlatCAMTranslation as fcTranslate
+import builtins
+
+fcTranslate.apply_language('strings')
+if '_' not in builtins.__dict__:
+    _ = gettext.gettext
+
+settings = QSettings("Open Source", "FlatCAM")
+if settings.contains("machinist"):
+    machinist_setting = settings.value('machinist', type=int)
+else:
+    machinist_setting = 0
+
 
 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_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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCDoubleSpinner, FCSpinner, OptionalInputSection
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -168,4 +183,4 @@ class GerberAdvOptPrefGroupUI(OptionsGroupUI):
             ],
             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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCSpinner, FCDoubleSpinner, FCComboBox, FCEntry, RadioSet
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -229,4 +244,4 @@ class GerberEditorPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.grb_ma_high_label, 19, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import RadioSet, FCSpinner
 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):
 
     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.decimals = decimals
@@ -100,4 +115,4 @@ class GerberExpPrefGroupUI(OptionsGroupUI):
 
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCEntry
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.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])
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCSpinner, RadioSet, FCCheckBox
 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):
     def __init__(self, decimals=4, parent=None):
         # OptionsGroupUI.__init__(self, "Gerber Options Preferences", parent=parent)
-        super(GerberOptPrefGroupUI, self).__init__(self)
+        super(GerberOptPrefGroupUI, self).__init__(self, parent=parent)
+
         self.decimals = decimals
 
         self.setTitle(str(_("Gerber Options")))
@@ -168,4 +184,4 @@ class GerberOptPrefGroupUI(OptionsGroupUI):
               "the margin.")
         )
         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.QtCore import QSettings
 
 from flatcamGUI.preferences.gerber.GerberEditorPrefGroupUI import GerberEditorPrefGroupUI
 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.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):
 
@@ -35,4 +50,4 @@ class GerberPreferencesUI(QtWidgets.QWidget):
         self.layout.addWidget(self.gerber_adv_opt_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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCSpinner, FCDoubleSpinner, RadioSet
 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):
     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.decimals = decimals
@@ -256,4 +271,4 @@ class Tools2CThievingPrefGroupUI(OptionsGroupUI):
         grid_lay.addWidget(self.clearance_ppm_label, 21, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import RadioSet, FCDoubleSpinner, FCCheckBox, FCEntry
 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):
     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.decimals = decimals
@@ -120,4 +135,4 @@ class Tools2CalPrefGroupUI(OptionsGroupUI):
         grid_lay.addWidget(second_point_lbl, 8, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCDoubleSpinner
 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):
     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.decimals = decimals
@@ -213,4 +228,4 @@ class Tools2EDrillsPrefGroupUI(OptionsGroupUI):
         grid_lay.addWidget(self.factor_label, 20, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, RadioSet
 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):
     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.decimals = decimals
@@ -117,4 +132,4 @@ class Tools2FiducialsPrefGroupUI(OptionsGroupUI):
         grid_lay.addWidget(self.line_thickness_label, 7, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, RadioSet
 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):
     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.decimals = decimals
@@ -57,4 +72,4 @@ class Tools2InvertPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.join_label, 5, 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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCSpinner
 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):
     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.decimals = decimals
@@ -38,4 +53,4 @@ class Tools2OptimalPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.precision_lbl, 0, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.preferences.tools.Tools2InvertPrefGroupUI import Tools2InvertPrefGroupUI
 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.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):
 
@@ -71,4 +86,4 @@ class Tools2PreferencesUI(QtWidgets.QWidget):
         self.layout.addLayout(self.vlay3)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCCheckBox, RadioSet, FCDoubleSpinner
 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):
     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.decimals = decimals
@@ -215,4 +230,4 @@ class Tools2PunchGerberPrefGroupUI(OptionsGroupUI):
         grid_lay.addWidget(self.factor_label, 20, 0)
         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.QtCore import Qt
+from PyQt5.QtCore import Qt, QSettings
 
 from flatcamGUI.GUIElements import FCSpinner, RadioSet, FCTextArea, FCEntry
 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):
     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.decimals = decimals
@@ -190,4 +204,4 @@ class Tools2QRCodePrefGroupUI(OptionsGroupUI):
 
         grid_lay.addWidget(self.sel_limit_label, 11, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCCheckBox, FCDoubleSpinner
 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):
     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.decimals = decimals
@@ -224,4 +239,4 @@ class Tools2RulesCheckPrefGroupUI(OptionsGroupUI):
         )
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, RadioSet
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -74,4 +89,4 @@ class Tools2sidedPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.axloc_label, 4, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCDoubleSpinner
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -124,4 +139,4 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.growth_label, 7, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, RadioSet, FCComboBox
 from flatcamGUI.preferences import machinist_setting
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -159,4 +174,4 @@ class ToolsCutoutPrefGroupUI(OptionsGroupUI):
         )
         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.QtCore import Qt
+from PyQt5.QtCore import Qt, QSettings
 
 from flatcamGUI.GUIElements import RadioSet, FCEntry, FCDoubleSpinner, FCCheckBox, FCComboBox
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -299,4 +313,4 @@ class ToolsFilmPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.pagesize_label, 17, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCEntry, RadioSet, FCDoubleSpinner, FCComboBox, FCCheckBox
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -331,4 +346,4 @@ class ToolsNCCPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(plotting_label, 21, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCEntry, RadioSet, FCDoubleSpinner, FCComboBox, FCCheckBox
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -295,4 +310,4 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI):
         grid0.addWidget(plotting_label, 20, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCSpinner, RadioSet, FCCheckBox
 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):
     def __init__(self, decimals=4, parent=None):
         # 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.decimals = decimals
@@ -128,4 +143,4 @@ class ToolsPanelizePrefGroupUI(OptionsGroupUI):
         grid0.addWidget(self.y_height_lbl, 7, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.preferences.tools.ToolsSubPrefGroupUI import ToolsSubPrefGroupUI
 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.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):
 
@@ -76,4 +91,4 @@ class ToolsPreferencesUI(QtWidgets.QWidget):
         self.layout.addLayout(self.vlay3)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCEntry, FCDoubleSpinner, FCSpinner, FCComboBox
 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):
     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.decimals = decimals
@@ -228,4 +243,4 @@ class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
         grid0.addWidget(pp_label, 15, 0)
         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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCCheckBox
 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):
     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.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.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.QtCore import QSettings
 
 from flatcamGUI.GUIElements import FCDoubleSpinner, FCCheckBox, EvalEntry2
 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):
     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.decimals = decimals
@@ -231,4 +246,4 @@ class ToolsTransformPrefGroupUI(OptionsGroupUI):
 
         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.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):
     def __init__(self, decimals=4, parent=None):
@@ -66,4 +80,4 @@ class AutoCompletePrefGroupUI(OptionsGroupUI):
         hlay2.addWidget(self.add_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.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):
     def __init__(self, decimals=4, 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.decimals = decimals
@@ -85,4 +99,4 @@ class FAExcPrefGroupUI(OptionsGroupUI):
         scroll_widget.setLayout(self.vertical_lay)
         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.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):
     def __init__(self, decimals=4, 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.decimals = decimals
@@ -72,4 +86,4 @@ class FAGcoPrefGroupUI(OptionsGroupUI):
                                        "This work only in Windows."))
         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.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):
     def __init__(self, decimals=4, 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.decimals = decimals
@@ -72,4 +86,4 @@ class FAGrbPrefGroupUI(OptionsGroupUI):
 
         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.kw_group)
 
-        self.layout.addStretch()
+        self.layout.addStretch()

+ 1 - 1
requirements.txt

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