Bläddra i källkod

- cleaned the Preferences classes and added the signals and signal slots in those classes, removing them from the main app class
- each FlatCAM object found in Preferences has it's own set of controls for changing the colors
- added a set of gray icons to be used when the theme is complete dark (for now it is useful only for MacOS with dark theme because at the moment the app is not styled to dark UI except the plot area)

Marius Stanciu 6 år sedan
förälder
incheckning
55549c7ba5
100 ändrade filer med 904 tillägg och 507 borttagningar
  1. 124 373
      FlatCAMApp.py
  2. 12 11
      FlatCAMObj.py
  3. 3 0
      README.md
  4. 7 2
      camlib.py
  5. 1 1
      flatcamGUI/FlatCAMGUI.py
  6. 757 120
      flatcamGUI/PreferencesUI.py
  7. BIN
      share/dark_resources/about32.png
  8. BIN
      share/dark_resources/active.gif
  9. BIN
      share/dark_resources/active_2.gif
  10. BIN
      share/dark_resources/active_2_static.png
  11. BIN
      share/dark_resources/active_3.gif
  12. BIN
      share/dark_resources/active_3_static.png
  13. BIN
      share/dark_resources/active_4.gif
  14. BIN
      share/dark_resources/active_4_static.png
  15. BIN
      share/dark_resources/active_static.png
  16. BIN
      share/dark_resources/addarray16.png
  17. BIN
      share/dark_resources/addarray20.png
  18. BIN
      share/dark_resources/addarray32.png
  19. BIN
      share/dark_resources/aero.png
  20. BIN
      share/dark_resources/aero_arc.png
  21. BIN
      share/dark_resources/aero_array.png
  22. BIN
      share/dark_resources/aero_buffer.png
  23. BIN
      share/dark_resources/aero_circle.png
  24. BIN
      share/dark_resources/aero_circle_geo.png
  25. BIN
      share/dark_resources/aero_disc.png
  26. BIN
      share/dark_resources/aero_drill.png
  27. BIN
      share/dark_resources/aero_drill_array.png
  28. BIN
      share/dark_resources/aero_path1.png
  29. BIN
      share/dark_resources/aero_path2.png
  30. BIN
      share/dark_resources/aero_path3.png
  31. BIN
      share/dark_resources/aero_path4.png
  32. BIN
      share/dark_resources/aero_path5.png
  33. BIN
      share/dark_resources/aero_semidisc.png
  34. BIN
      share/dark_resources/aero_slot.png
  35. BIN
      share/dark_resources/aero_text.png
  36. BIN
      share/dark_resources/align_center32.png
  37. BIN
      share/dark_resources/align_justify32.png
  38. BIN
      share/dark_resources/align_left32.png
  39. BIN
      share/dark_resources/align_right32.png
  40. BIN
      share/dark_resources/aperture16.png
  41. BIN
      share/dark_resources/aperture32.png
  42. BIN
      share/dark_resources/arc16.png
  43. BIN
      share/dark_resources/arc24.png
  44. BIN
      share/dark_resources/arc32.png
  45. BIN
      share/dark_resources/axis32.png
  46. BIN
      share/dark_resources/backup24.png
  47. BIN
      share/dark_resources/backup_export24.png
  48. BIN
      share/dark_resources/backup_import24.png
  49. BIN
      share/dark_resources/blocked16.png
  50. BIN
      share/dark_resources/blue32.png
  51. BIN
      share/dark_resources/bluelight12.png
  52. BIN
      share/dark_resources/bold32.png
  53. BIN
      share/dark_resources/bookmarks16.png
  54. BIN
      share/dark_resources/bookmarks32.png
  55. BIN
      share/dark_resources/brown32.png
  56. BIN
      share/dark_resources/buffer16-2.png
  57. BIN
      share/dark_resources/buffer16.png
  58. BIN
      share/dark_resources/buffer20.png
  59. BIN
      share/dark_resources/buffer24.png
  60. BIN
      share/dark_resources/bug16.png
  61. BIN
      share/dark_resources/bug32.png
  62. BIN
      share/dark_resources/calculator16.png
  63. BIN
      share/dark_resources/calculator24.png
  64. BIN
      share/dark_resources/calibrate_16.png
  65. BIN
      share/dark_resources/calibrate_32.png
  66. BIN
      share/dark_resources/cancel_edit16.png
  67. BIN
      share/dark_resources/cancel_edit32.png
  68. BIN
      share/dark_resources/circle32.png
  69. BIN
      share/dark_resources/clear_plot16.png
  70. BIN
      share/dark_resources/clear_plot32.png
  71. BIN
      share/dark_resources/close_edit_file16.png
  72. BIN
      share/dark_resources/close_edit_file32.png
  73. BIN
      share/dark_resources/cnc16.png
  74. BIN
      share/dark_resources/cnc32.png
  75. BIN
      share/dark_resources/code.png
  76. BIN
      share/dark_resources/code_editor32.png
  77. BIN
      share/dark_resources/convert24.png
  78. BIN
      share/dark_resources/copperfill16.png
  79. BIN
      share/dark_resources/copperfill32.png
  80. BIN
      share/dark_resources/copy.png
  81. BIN
      share/dark_resources/copy16.png
  82. BIN
      share/dark_resources/copy32.png
  83. BIN
      share/dark_resources/copy_16.png
  84. BIN
      share/dark_resources/copy_file16.png
  85. BIN
      share/dark_resources/copy_file32.png
  86. BIN
      share/dark_resources/copy_geo.png
  87. BIN
      share/dark_resources/corner32.png
  88. BIN
      share/dark_resources/cut16.png
  89. BIN
      share/dark_resources/cut16_bis.png
  90. BIN
      share/dark_resources/cut32.png
  91. BIN
      share/dark_resources/cut32_bis.png
  92. BIN
      share/dark_resources/cutpath16.png
  93. BIN
      share/dark_resources/cutpath24.png
  94. BIN
      share/dark_resources/cutpath32.png
  95. BIN
      share/dark_resources/database32.png
  96. BIN
      share/dark_resources/defaults.png
  97. BIN
      share/dark_resources/delete32.png
  98. BIN
      share/dark_resources/delete_file16.png
  99. BIN
      share/dark_resources/delete_file32.png
  100. BIN
      share/dark_resources/deleteshape16.png

+ 124 - 373
FlatCAMApp.py

@@ -612,6 +612,8 @@ class App(QtCore.QObject):
             "excellon_save_filters": "Excellon File (*.txt);;Excellon File (*.drd);;Excellon File (*.drl);;"
             "excellon_save_filters": "Excellon File (*.txt);;Excellon File (*.drd);;Excellon File (*.drl);;"
                                      "Excellon File (*.exc);;Excellon File (*.ncd);;Excellon File (*.tap);;"
                                      "Excellon File (*.exc);;Excellon File (*.ncd);;Excellon File (*.tap);;"
                                      "Excellon File (*.xln);;All Files (*.*)",
                                      "Excellon File (*.xln);;All Files (*.*)",
+            "excellon_plot_fill": '#C40000BF',
+            "excellon_plot_line": '#750000BF',
 
 
             # Excellon Options
             # Excellon Options
             "excellon_drillz": -1.7,
             "excellon_drillz": -1.7,
@@ -672,6 +674,7 @@ class App(QtCore.QObject):
             "geometry_plot": True,
             "geometry_plot": True,
             "geometry_circle_steps": 64,
             "geometry_circle_steps": 64,
             "geometry_cnctooldia": "2.4",
             "geometry_cnctooldia": "2.4",
+            "geometry_plot_line": "#FF0000",
 
 
             # Geometry Options
             # Geometry Options
             "geometry_cutz": -2.4,
             "geometry_cutz": -2.4,
@@ -728,6 +731,10 @@ class App(QtCore.QObject):
                                    "G-Code Files (*.ngc);;G-Code Files (*.out);;G-Code Files (*.ply);;"
                                    "G-Code Files (*.ngc);;G-Code Files (*.out);;G-Code Files (*.ply);;"
                                    "G-Code Files (*.sbp);;G-Code Files (*.tap);;G-Code Files (*.xpi);;"
                                    "G-Code Files (*.sbp);;G-Code Files (*.tap);;G-Code Files (*.xpi);;"
                                    "All Files (*.*)",
                                    "All Files (*.*)",
+            "cncjob_plot_line": '#4650BDFF',
+            "cncjob_plot_fill": '#5E6CFFFF',
+            "cncjob_travel_line": '#B5AB3A4C',
+            "cncjob_travel_fill": '#F0E24D4C',
 
 
             # CNC Job Options
             # CNC Job Options
             "cncjob_prepend": "",
             "cncjob_prepend": "",
@@ -983,10 +990,10 @@ class App(QtCore.QObject):
         else:
         else:
             self.decimals = int(self.defaults['decimals_inch'])
             self.decimals = int(self.defaults['decimals_inch'])
 
 
-        if self.defaults["global_theme"] == 'white':
+        if self.defaults["global_gray_icons"] is False:
             self.resource_location = 'share'
             self.resource_location = 'share'
         else:
         else:
-            self.resource_location = 'share'
+            self.resource_location = 'share/dark_resources'
 
 
         self.current_units = self.defaults['units']
         self.current_units = self.defaults['units']
 
 
@@ -1093,20 +1100,18 @@ class App(QtCore.QObject):
             "global_portable": self.ui.general_defaults_form.general_app_group.portability_cb,
             "global_portable": self.ui.general_defaults_form.general_app_group.portability_cb,
             "global_language": self.ui.general_defaults_form.general_app_group.language_cb,
             "global_language": self.ui.general_defaults_form.general_app_group.language_cb,
 
 
+            "global_systray_icon": self.ui.general_defaults_form.general_app_group.systray_cb,
+            "global_shell_at_startup": self.ui.general_defaults_form.general_app_group.shell_startup_cb,
+            "global_project_at_startup": self.ui.general_defaults_form.general_app_group.project_startup_cb,
             "global_version_check": self.ui.general_defaults_form.general_app_group.version_check_cb,
             "global_version_check": self.ui.general_defaults_form.general_app_group.version_check_cb,
             "global_send_stats": self.ui.general_defaults_form.general_app_group.send_stats_cb,
             "global_send_stats": self.ui.general_defaults_form.general_app_group.send_stats_cb,
 
 
             "global_worker_number": self.ui.general_defaults_form.general_app_group.worker_number_sb,
             "global_worker_number": self.ui.general_defaults_form.general_app_group.worker_number_sb,
             "global_tolerance": self.ui.general_defaults_form.general_app_group.tol_entry,
             "global_tolerance": self.ui.general_defaults_form.general_app_group.tol_entry,
 
 
-            "global_open_style": self.ui.general_defaults_form.general_app_group.open_style_cb,
-
             "global_compression_level": self.ui.general_defaults_form.general_app_group.compress_spinner,
             "global_compression_level": self.ui.general_defaults_form.general_app_group.compress_spinner,
             "global_save_compressed": self.ui.general_defaults_form.general_app_group.save_type_cb,
             "global_save_compressed": self.ui.general_defaults_form.general_app_group.save_type_cb,
 
 
-            "global_bookmarks_limit": self.ui.general_defaults_form.general_app_group.bm_limit_spinner,
-            "global_machinist_setting": self.ui.general_defaults_form.general_app_group.machinist_cb,
-
             "global_tpdf_tmargin": self.ui.general_defaults_form.general_app_group.tmargin_entry,
             "global_tpdf_tmargin": self.ui.general_defaults_form.general_app_group.tmargin_entry,
             "global_tpdf_bmargin": self.ui.general_defaults_form.general_app_group.bmargin_entry,
             "global_tpdf_bmargin": self.ui.general_defaults_form.general_app_group.bmargin_entry,
             "global_tpdf_lmargin": self.ui.general_defaults_form.general_app_group.lmargin_entry,
             "global_tpdf_lmargin": self.ui.general_defaults_form.general_app_group.lmargin_entry,
@@ -1131,27 +1136,27 @@ class App(QtCore.QObject):
             "global_project_autohide": self.ui.general_defaults_form.general_gui_group.project_autohide_cb,
             "global_project_autohide": self.ui.general_defaults_form.general_gui_group.project_autohide_cb,
 
 
             # General GUI Settings
             # General GUI Settings
-            "global_gridx": self.ui.general_defaults_form.general_gui_set_group.gridx_entry,
-            "global_gridy": self.ui.general_defaults_form.general_gui_set_group.gridy_entry,
-            "global_snap_max": self.ui.general_defaults_form.general_gui_set_group.snap_max_dist_entry,
-            "global_workspace": self.ui.general_defaults_form.general_gui_set_group.workspace_cb,
-            "global_workspaceT": self.ui.general_defaults_form.general_gui_set_group.wk_cb,
-            "global_workspace_orientation": self.ui.general_defaults_form.general_gui_set_group.wk_orientation_radio,
-
-            "global_systray_icon": self.ui.general_defaults_form.general_gui_set_group.systray_cb,
-            "global_shell_at_startup": self.ui.general_defaults_form.general_gui_set_group.shell_startup_cb,
-            "global_project_at_startup": self.ui.general_defaults_form.general_gui_set_group.project_startup_cb,
-            "global_cursor_type": self.ui.general_defaults_form.general_gui_set_group.cursor_radio,
-            "global_cursor_size": self.ui.general_defaults_form.general_gui_set_group.cursor_size_entry,
-            "global_cursor_width": self.ui.general_defaults_form.general_gui_set_group.cursor_width_entry,
-            "global_cursor_color_enabled": self.ui.general_defaults_form.general_gui_set_group.mouse_cursor_color_cb,
-            "global_cursor_color": self.ui.general_defaults_form.general_gui_set_group.mouse_cursor_entry,
-            "global_pan_button": self.ui.general_defaults_form.general_gui_set_group.pan_button_radio,
-            "global_mselect_key": self.ui.general_defaults_form.general_gui_set_group.mselect_radio,
-            "global_delete_confirmation": self.ui.general_defaults_form.general_gui_set_group.delete_conf_cb,
-
-            "global_toggle_tooltips": self.ui.general_defaults_form.general_gui_set_group.toggle_tooltips_cb,
-            "global_activity_icon": self.ui.general_defaults_form.general_gui_set_group.activity_combo,
+            "global_gridx": self.ui.general_defaults_form.general_app_set_group.gridx_entry,
+            "global_gridy": self.ui.general_defaults_form.general_app_set_group.gridy_entry,
+            "global_snap_max": self.ui.general_defaults_form.general_app_set_group.snap_max_dist_entry,
+            "global_workspace": self.ui.general_defaults_form.general_app_set_group.workspace_cb,
+            "global_workspaceT": self.ui.general_defaults_form.general_app_set_group.wk_cb,
+            "global_workspace_orientation": self.ui.general_defaults_form.general_app_set_group.wk_orientation_radio,
+
+            "global_cursor_type": self.ui.general_defaults_form.general_app_set_group.cursor_radio,
+            "global_cursor_size": self.ui.general_defaults_form.general_app_set_group.cursor_size_entry,
+            "global_cursor_width": self.ui.general_defaults_form.general_app_set_group.cursor_width_entry,
+            "global_cursor_color_enabled": self.ui.general_defaults_form.general_app_set_group.mouse_cursor_color_cb,
+            "global_cursor_color": self.ui.general_defaults_form.general_app_set_group.mouse_cursor_entry,
+            "global_pan_button": self.ui.general_defaults_form.general_app_set_group.pan_button_radio,
+            "global_mselect_key": self.ui.general_defaults_form.general_app_set_group.mselect_radio,
+            "global_delete_confirmation": self.ui.general_defaults_form.general_app_set_group.delete_conf_cb,
+            "global_open_style": self.ui.general_defaults_form.general_app_set_group.open_style_cb,
+            "global_toggle_tooltips": self.ui.general_defaults_form.general_app_set_group.toggle_tooltips_cb,
+            "global_machinist_setting": self.ui.general_defaults_form.general_app_set_group.machinist_cb,
+
+            "global_bookmarks_limit": self.ui.general_defaults_form.general_app_set_group.bm_limit_spinner,
+            "global_activity_icon": self.ui.general_defaults_form.general_app_set_group.activity_combo,
 
 
             # Gerber General
             # Gerber General
             "gerber_plot": self.ui.gerber_defaults_form.gerber_gen_group.plot_cb,
             "gerber_plot": self.ui.gerber_defaults_form.gerber_gen_group.plot_cb,
@@ -1232,6 +1237,8 @@ class App(QtCore.QObject):
             "excellon_update": self.ui.excellon_defaults_form.excellon_gen_group.update_excellon_cb,
             "excellon_update": self.ui.excellon_defaults_form.excellon_gen_group.update_excellon_cb,
             "excellon_optimization_type": self.ui.excellon_defaults_form.excellon_gen_group.excellon_optimization_radio,
             "excellon_optimization_type": self.ui.excellon_defaults_form.excellon_gen_group.excellon_optimization_radio,
             "excellon_search_time": self.ui.excellon_defaults_form.excellon_gen_group.optimization_time_entry,
             "excellon_search_time": self.ui.excellon_defaults_form.excellon_gen_group.optimization_time_entry,
+            "excellon_plot_fill": self.ui.excellon_defaults_form.excellon_gen_group.fill_color_entry,
+            "excellon_plot_line": self.ui.excellon_defaults_form.excellon_gen_group.line_color_entry,
 
 
             # Excellon Options
             # Excellon Options
             "excellon_drillz": self.ui.excellon_defaults_form.excellon_opt_group.cutz_entry,
             "excellon_drillz": self.ui.excellon_defaults_form.excellon_opt_group.cutz_entry,
@@ -1301,6 +1308,7 @@ class App(QtCore.QObject):
             "geometry_plot": self.ui.geometry_defaults_form.geometry_gen_group.plot_cb,
             "geometry_plot": self.ui.geometry_defaults_form.geometry_gen_group.plot_cb,
             "geometry_circle_steps": self.ui.geometry_defaults_form.geometry_gen_group.circle_steps_entry,
             "geometry_circle_steps": self.ui.geometry_defaults_form.geometry_gen_group.circle_steps_entry,
             "geometry_cnctooldia": self.ui.geometry_defaults_form.geometry_gen_group.cnctooldia_entry,
             "geometry_cnctooldia": self.ui.geometry_defaults_form.geometry_gen_group.cnctooldia_entry,
+            "geometry_plot_line": self.ui.geometry_defaults_form.geometry_gen_group.line_color_entry,
 
 
             # Geometry Options
             # Geometry Options
             "geometry_cutz": self.ui.geometry_defaults_form.geometry_opt_group.cutz_entry,
             "geometry_cutz": self.ui.geometry_defaults_form.geometry_opt_group.cutz_entry,
@@ -1345,6 +1353,10 @@ class App(QtCore.QObject):
             "cncjob_fr_decimals": self.ui.cncjob_defaults_form.cncjob_gen_group.fr_dec_entry,
             "cncjob_fr_decimals": self.ui.cncjob_defaults_form.cncjob_gen_group.fr_dec_entry,
             "cncjob_steps_per_circle": self.ui.cncjob_defaults_form.cncjob_gen_group.steps_per_circle_entry,
             "cncjob_steps_per_circle": self.ui.cncjob_defaults_form.cncjob_gen_group.steps_per_circle_entry,
             "cncjob_line_ending":  self.ui.cncjob_defaults_form.cncjob_gen_group.line_ending_cb,
             "cncjob_line_ending":  self.ui.cncjob_defaults_form.cncjob_gen_group.line_ending_cb,
+            "cncjob_plot_line": self.ui.cncjob_defaults_form.cncjob_gen_group.line_color_entry,
+            "cncjob_plot_fill": self.ui.cncjob_defaults_form.cncjob_gen_group.fill_color_entry,
+            "cncjob_travel_line": self.ui.cncjob_defaults_form.cncjob_gen_group.tline_color_entry,
+            "cncjob_travel_fill": self.ui.cncjob_defaults_form.cncjob_gen_group.tfill_color_entry,
 
 
             # CNC Job Options
             # CNC Job Options
             "cncjob_prepend": self.ui.cncjob_defaults_form.cncjob_opt_group.prepend_text,
             "cncjob_prepend": self.ui.cncjob_defaults_form.cncjob_opt_group.prepend_text,
@@ -1583,8 +1595,8 @@ class App(QtCore.QObject):
             self.on_layout(lay=initial_lay)
             self.on_layout(lay=initial_lay)
 
 
             # Set the combobox in Preferences to the current layout
             # Set the combobox in Preferences to the current layout
-            idx = self.ui.general_defaults_form.general_gui_set_group.layout_combo.findText(initial_lay)
-            self.ui.general_defaults_form.general_gui_set_group.layout_combo.setCurrentIndex(idx)
+            idx = self.ui.general_defaults_form.general_gui_group.layout_combo.findText(initial_lay)
+            self.ui.general_defaults_form.general_gui_group.layout_combo.setCurrentIndex(idx)
 
 
             # after the first run, this object should be False
             # after the first run, this object should be False
             self.defaults["first_run"] = False
             self.defaults["first_run"] = False
@@ -2003,90 +2015,25 @@ class App(QtCore.QObject):
         # ######################### GUI PREFERENCES SIGNALS ###########################
         # ######################### GUI PREFERENCES SIGNALS ###########################
         # #############################################################################
         # #############################################################################
 
 
-        self.ui.general_defaults_form.general_app_group.ge_radio.activated_custom.connect(self.on_app_restart)
-        self.ui.general_defaults_form.general_app_group.language_apply_btn.clicked.connect(
-            lambda: fcTranslate.on_language_apply_click(self, restart=True)
-        )
         self.ui.general_defaults_form.general_app_group.units_radio.activated_custom.connect(
         self.ui.general_defaults_form.general_app_group.units_radio.activated_custom.connect(
             lambda: self.on_toggle_units(no_pref=False))
             lambda: self.on_toggle_units(no_pref=False))
 
 
-        # #############################################################################
-        # ############################# GUI COLORS SIGNALS ############################
-        # #############################################################################
-
-        # Setting selection (left - right) colors signals
-        self.ui.general_defaults_form.general_gui_group.sf_color_entry.editingFinished.connect(
-            self.on_sf_color_entry)
-        self.ui.general_defaults_form.general_gui_group.sf_color_button.clicked.connect(
-            self.on_sf_color_button)
-        self.ui.general_defaults_form.general_gui_group.sf_color_alpha_spinner.valueChanged.connect(
-            self.on_sf_color_spinner)
-        self.ui.general_defaults_form.general_gui_group.sf_color_alpha_slider.valueChanged.connect(
-            self.on_sf_color_slider)
-        self.ui.general_defaults_form.general_gui_group.sl_color_entry.editingFinished.connect(
-            self.on_sl_color_entry)
-        self.ui.general_defaults_form.general_gui_group.sl_color_button.clicked.connect(
-            self.on_sl_color_button)
-
-        # Setting selection (right - left) colors signals
-        self.ui.general_defaults_form.general_gui_group.alt_sf_color_entry.editingFinished.connect(
-            self.on_alt_sf_color_entry)
-        self.ui.general_defaults_form.general_gui_group.alt_sf_color_button.clicked.connect(
-            self.on_alt_sf_color_button)
-        self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_spinner.valueChanged.connect(
-            self.on_alt_sf_color_spinner)
-        self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_slider.valueChanged.connect(
-            self.on_alt_sf_color_slider)
-        self.ui.general_defaults_form.general_gui_group.alt_sl_color_entry.editingFinished.connect(
-            self.on_alt_sl_color_entry)
-        self.ui.general_defaults_form.general_gui_group.alt_sl_color_button.clicked.connect(
-            self.on_alt_sl_color_button)
-
-        # Setting Editor Draw colors signals
-        self.ui.general_defaults_form.general_gui_group.draw_color_entry.editingFinished.connect(
-            self.on_draw_color_entry)
-        self.ui.general_defaults_form.general_gui_group.draw_color_button.clicked.connect(
-            self.on_draw_color_button)
-
-        self.ui.general_defaults_form.general_gui_group.sel_draw_color_entry.editingFinished.connect(
-            self.on_sel_draw_color_entry)
-        self.ui.general_defaults_form.general_gui_group.sel_draw_color_button.clicked.connect(
-            self.on_sel_draw_color_button)
-
-        self.ui.general_defaults_form.general_gui_group.proj_color_entry.editingFinished.connect(
-            self.on_proj_color_entry)
-        self.ui.general_defaults_form.general_gui_group.proj_color_button.clicked.connect(
-            self.on_proj_color_button)
-
-        self.ui.general_defaults_form.general_gui_group.proj_color_dis_entry.editingFinished.connect(
-            self.on_proj_color_dis_entry)
-        self.ui.general_defaults_form.general_gui_group.proj_color_dis_button.clicked.connect(
-            self.on_proj_color_dis_button)
-
         # ############################# Workspace Setting Signals #####################
         # ############################# Workspace Setting Signals #####################
-        self.ui.general_defaults_form.general_gui_set_group.wk_cb.currentIndexChanged.connect(
+        self.ui.general_defaults_form.general_app_set_group.wk_cb.currentIndexChanged.connect(
             self.on_workspace_modified)
             self.on_workspace_modified)
-        self.ui.general_defaults_form.general_gui_set_group.wk_orientation_radio.activated_custom.connect(
+        self.ui.general_defaults_form.general_app_set_group.wk_orientation_radio.activated_custom.connect(
             self.on_workspace_modified
             self.on_workspace_modified
         )
         )
 
 
-        self.ui.general_defaults_form.general_gui_set_group.workspace_cb.stateChanged.connect(self.on_workspace)
+        self.ui.general_defaults_form.general_app_set_group.workspace_cb.stateChanged.connect(self.on_workspace)
 
 
         self.ui.general_defaults_form.general_gui_group.layout_combo.activated.connect(self.on_layout)
         self.ui.general_defaults_form.general_gui_group.layout_combo.activated.connect(self.on_layout)
 
 
         # #############################################################################
         # #############################################################################
         # ############################# GUI SETTINGS SIGNALS ##########################
         # ############################# GUI SETTINGS SIGNALS ##########################
         # #############################################################################
         # #############################################################################
-
-        self.ui.general_defaults_form.general_gui_set_group.cursor_radio.activated_custom.connect(self.on_cursor_type)
-
-        # ########## CNC Job related signals #############
-        self.ui.cncjob_defaults_form.cncjob_adv_opt_group.tc_variable_combo.currentIndexChanged[str].connect(
-            self.on_cnc_custom_parameters)
-        self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_entry.editingFinished.connect(
-            self.on_annotation_fontcolor_entry)
-        self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_button.clicked.connect(
-            self.on_annotation_fontcolor_button)
+        self.ui.general_defaults_form.general_app_group.ge_radio.activated_custom.connect(self.on_app_restart)
+        self.ui.general_defaults_form.general_app_set_group.cursor_radio.activated_custom.connect(self.on_cursor_type)
 
 
         # ########## Tools related signals #############
         # ########## Tools related signals #############
         # Film Tool
         # Film Tool
@@ -2114,14 +2061,12 @@ class App(QtCore.QObject):
 
 
         self.object_status_changed.connect(self.on_collection_updated)
         self.object_status_changed.connect(self.on_collection_updated)
 
 
-        # Monitor the checkbox from the Application Defaults Tab and show the TCL shell or not depending on it's value
-        self.ui.general_defaults_form.general_gui_set_group.shell_startup_cb.clicked.connect(self.on_toggle_shell)
-
         # Make sure that when the Excellon loading parameters are changed, the change is reflected in the
         # Make sure that when the Excellon loading parameters are changed, the change is reflected in the
         # Export Excellon parameters.
         # Export Excellon parameters.
         self.ui.excellon_defaults_form.excellon_gen_group.update_excellon_cb.stateChanged.connect(
         self.ui.excellon_defaults_form.excellon_gen_group.update_excellon_cb.stateChanged.connect(
             self.on_update_exc_export
             self.on_update_exc_export
         )
         )
+
         # call it once to make sure it is updated at startup
         # call it once to make sure it is updated at startup
         self.on_update_exc_export(state=self.defaults["excellon_update"])
         self.on_update_exc_export(state=self.defaults["excellon_update"])
 
 
@@ -2184,9 +2129,6 @@ class App(QtCore.QObject):
         self.ui.util_defaults_form.kw_group.del_btn.clicked.connect(
         self.ui.util_defaults_form.kw_group.del_btn.clicked.connect(
             lambda: self.del_extension(ext_type='keyword'))
             lambda: self.del_extension(ext_type='keyword'))
 
 
-        # splash screen button signal
-        self.ui.general_defaults_form.general_gui_set_group.splash_cb.stateChanged.connect(self.on_splash_changed)
-
         # connect the abort_all_tasks related slots to the related signals
         # connect the abort_all_tasks related slots to the related signals
         self.proc_container.idle_flag.connect(self.app_is_idle)
         self.proc_container.idle_flag.connect(self.app_is_idle)
 
 
@@ -5175,20 +5117,20 @@ class App(QtCore.QObject):
             )
             )
             stgs.setValue(
             stgs.setValue(
                 'notebook_font_size',
                 'notebook_font_size',
-                self.ui.general_defaults_form.general_gui_set_group.notebook_font_size_spinner.get_value()
+                self.ui.general_defaults_form.general_app_set_group.notebook_font_size_spinner.get_value()
             )
             )
             stgs.setValue(
             stgs.setValue(
                 'axis_font_size',
                 'axis_font_size',
-                self.ui.general_defaults_form.general_gui_set_group.axis_font_size_spinner.get_value()
+                self.ui.general_defaults_form.general_app_set_group.axis_font_size_spinner.get_value()
             )
             )
             stgs.setValue(
             stgs.setValue(
                 'textbox_font_size',
                 'textbox_font_size',
-                self.ui.general_defaults_form.general_gui_set_group.textbox_font_size_spinner.get_value()
+                self.ui.general_defaults_form.general_app_set_group.textbox_font_size_spinner.get_value()
             )
             )
             stgs.setValue('toolbar_lock', self.ui.lock_action.isChecked())
             stgs.setValue('toolbar_lock', self.ui.lock_action.isChecked())
             stgs.setValue(
             stgs.setValue(
                 'machinist',
                 'machinist',
-                1 if self.ui.general_defaults_form.general_app_group.machinist_cb.get_value() else 0
+                1 if self.ui.general_defaults_form.general_app_set_group.machinist_cb.get_value() else 0
             )
             )
 
 
             # This will write the setting to the platform specific storage.
             # This will write the setting to the platform specific storage.
@@ -6283,7 +6225,7 @@ class App(QtCore.QObject):
         # self.options2form()
         # self.options2form()
 
 
     def init_color_pickers_in_preferences_gui(self):
     def init_color_pickers_in_preferences_gui(self):
-        # Init Plot Colors
+        # Init Gerber Plot Colors
         self.ui.gerber_defaults_form.gerber_gen_group.pf_color_entry.set_value(self.defaults['gerber_plot_fill'])
         self.ui.gerber_defaults_form.gerber_gen_group.pf_color_entry.set_value(self.defaults['gerber_plot_fill'])
         self.ui.gerber_defaults_form.gerber_gen_group.pf_color_button.setStyleSheet(
         self.ui.gerber_defaults_form.gerber_gen_group.pf_color_button.setStyleSheet(
             "background-color:%s;"
             "background-color:%s;"
@@ -6298,6 +6240,60 @@ class App(QtCore.QObject):
             "background-color:%s;"
             "background-color:%s;"
             "border-color: dimgray" % str(self.defaults['gerber_plot_line'])[:7])
             "border-color: dimgray" % str(self.defaults['gerber_plot_line'])[:7])
 
 
+        # Init Excellon Plot Colors
+        self.ui.excellon_defaults_form.excellon_gen_group.fill_color_entry.set_value(
+            self.defaults['excellon_plot_fill'])
+        self.ui.excellon_defaults_form.excellon_gen_group.fill_color_button.setStyleSheet(
+            "background-color:%s;"
+            "border-color: dimgray" % str(self.defaults['excellon_plot_fill'])[:7])
+        self.ui.excellon_defaults_form.excellon_gen_group.color_alpha_spinner.set_value(
+            int(self.defaults['excellon_plot_fill'][7:9], 16))
+        self.ui.excellon_defaults_form.excellon_gen_group.color_alpha_slider.setValue(
+            int(self.defaults['excellon_plot_fill'][7:9], 16))
+
+        self.ui.excellon_defaults_form.excellon_gen_group.line_color_entry.set_value(
+            self.defaults['excellon_plot_line'])
+        self.ui.excellon_defaults_form.excellon_gen_group.line_color_button.setStyleSheet(
+            "background-color:%s;"
+            "border-color: dimgray" % str(self.defaults['excellon_plot_line'])[:7])
+
+        # Init Geometry Plot Colors
+        self.ui.geometry_defaults_form.geometry_gen_group.line_color_entry.set_value(
+            self.defaults['geometry_plot_line'])
+        self.ui.geometry_defaults_form.geometry_gen_group.line_color_button.setStyleSheet(
+            "background-color:%s;"
+            "border-color: dimgray" % str(self.defaults['geometry_plot_line'])[:7])
+
+        # Init CNCJob Travel Line Colors
+        self.ui.cncjob_defaults_form.cncjob_gen_group.tfill_color_entry.set_value(
+            self.defaults['cncjob_travel_fill'])
+        self.ui.cncjob_defaults_form.cncjob_gen_group.tfill_color_button.setStyleSheet(
+            "background-color:%s;"
+            "border-color: dimgray" % str(self.defaults['cncjob_travel_fill'])[:7])
+        self.ui.cncjob_defaults_form.cncjob_gen_group.tcolor_alpha_spinner.set_value(
+            int(self.defaults['cncjob_travel_fill'][7:9], 16))
+        self.ui.cncjob_defaults_form.cncjob_gen_group.tcolor_alpha_slider.setValue(
+            int(self.defaults['cncjob_travel_fill'][7:9], 16))
+
+        self.ui.cncjob_defaults_form.cncjob_gen_group.tline_color_entry.set_value(
+            self.defaults['cncjob_travel_line'])
+        self.ui.cncjob_defaults_form.cncjob_gen_group.tline_color_button.setStyleSheet(
+            "background-color:%s;"
+            "border-color: dimgray" % str(self.defaults['cncjob_travel_line'])[:7])
+
+        # Init CNCJob Plot Colors
+        self.ui.cncjob_defaults_form.cncjob_gen_group.fill_color_entry.set_value(
+            self.defaults['cncjob_plot_fill'])
+        self.ui.cncjob_defaults_form.cncjob_gen_group.fill_color_button.setStyleSheet(
+            "background-color:%s;"
+            "border-color: dimgray" % str(self.defaults['cncjob_plot_fill'])[:7])
+
+        self.ui.cncjob_defaults_form.cncjob_gen_group.line_color_entry.set_value(
+            self.defaults['cncjob_plot_line'])
+        self.ui.cncjob_defaults_form.cncjob_gen_group.line_color_button.setStyleSheet(
+            "background-color:%s;"
+            "border-color: dimgray" % str(self.defaults['cncjob_plot_line'])[:7])
+
         # Init Left-Right Selection colors
         # Init Left-Right Selection colors
         self.ui.general_defaults_form.general_gui_group.sf_color_entry.set_value(self.defaults['global_sel_fill'])
         self.ui.general_defaults_form.general_gui_group.sf_color_entry.set_value(self.defaults['global_sel_fill'])
         self.ui.general_defaults_form.general_gui_group.sf_color_button.setStyleSheet(
         self.ui.general_defaults_form.general_gui_group.sf_color_button.setStyleSheet(
@@ -6358,9 +6354,9 @@ class App(QtCore.QObject):
             "border-color: dimgray" % str(self.defaults['global_proj_item_dis_color'])[:7])
             "border-color: dimgray" % str(self.defaults['global_proj_item_dis_color'])[:7])
 
 
         # Init Project Disabled Items color
         # Init Project Disabled Items color
-        self.ui.general_defaults_form.general_gui_set_group.mouse_cursor_entry.set_value(
+        self.ui.general_defaults_form.general_app_set_group.mouse_cursor_entry.set_value(
             self.defaults['global_cursor_color'])
             self.defaults['global_cursor_color'])
-        self.ui.general_defaults_form.general_gui_set_group.mouse_cursor_button.setStyleSheet(
+        self.ui.general_defaults_form.general_app_set_group.mouse_cursor_button.setStyleSheet(
             "background-color:%s;"
             "background-color:%s;"
             "border-color: dimgray" % str(self.defaults['global_cursor_color'])[:7])
             "border-color: dimgray" % str(self.defaults['global_cursor_color'])[:7])
 
 
@@ -6529,238 +6525,6 @@ class App(QtCore.QObject):
         )
         )
         self.on_excellon_format_changed()
         self.on_excellon_format_changed()
 
 
-    # Setting selection colors (left - right) handlers
-    def on_sf_color_entry(self):
-        self.defaults['global_sel_fill'] = \
-            self.ui.general_defaults_form.general_gui_group.sf_color_entry.get_value()[:7] + \
-            self.defaults['global_sel_fill'][7:9]
-        self.ui.general_defaults_form.general_gui_group.sf_color_button.setStyleSheet(
-            "background-color:%s" % str(self.defaults['global_sel_fill'])[:7])
-
-    def on_sf_color_button(self):
-        current_color = QtGui.QColor(self.defaults['global_sel_fill'][:7])
-
-        c_dialog = QtWidgets.QColorDialog()
-        plot_fill_color = c_dialog.getColor(initial=current_color)
-
-        if plot_fill_color.isValid() is False:
-            return
-
-        self.ui.general_defaults_form.general_gui_group.sf_color_button.setStyleSheet(
-            "background-color:%s" % str(plot_fill_color.name()))
-
-        new_val = str(plot_fill_color.name()) + str(self.defaults['global_sel_fill'][7:9])
-        self.ui.general_defaults_form.general_gui_group.sf_color_entry.set_value(new_val)
-        self.defaults['global_sel_fill'] = new_val
-
-    def on_sf_color_spinner(self):
-        spinner_value = self.ui.general_defaults_form.general_gui_group.sf_color_alpha_spinner.value()
-        self.ui.general_defaults_form.general_gui_group.sf_color_alpha_slider.setValue(spinner_value)
-        self.defaults['global_sel_fill'] = \
-            self.defaults['global_sel_fill'][:7] + \
-            (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00')
-        self.defaults['global_sel_line'] = \
-            self.defaults['global_sel_line'][:7] + \
-            (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00')
-
-    def on_sf_color_slider(self):
-        slider_value = self.ui.general_defaults_form.general_gui_group.sf_color_alpha_slider.value()
-        self.ui.general_defaults_form.general_gui_group.sf_color_alpha_spinner.setValue(slider_value)
-
-    def on_sl_color_entry(self):
-        self.defaults['global_sel_line'] = \
-            self.ui.general_defaults_form.general_gui_group.sl_color_entry.get_value()[:7] + \
-            self.defaults['global_sel_line'][7:9]
-        self.ui.general_defaults_form.general_gui_group.sl_color_button.setStyleSheet(
-            "background-color:%s" % str(self.defaults['global_sel_line'])[:7])
-
-    def on_sl_color_button(self):
-        current_color = QtGui.QColor(self.defaults['global_sel_line'][:7])
-
-        c_dialog = QtWidgets.QColorDialog()
-        plot_line_color = c_dialog.getColor(initial=current_color)
-
-        if plot_line_color.isValid() is False:
-            return
-
-        self.ui.general_defaults_form.general_gui_group.sl_color_button.setStyleSheet(
-            "background-color:%s" % str(plot_line_color.name()))
-
-        new_val_line = str(plot_line_color.name()) + str(self.defaults['global_sel_line'][7:9])
-        self.ui.general_defaults_form.general_gui_group.sl_color_entry.set_value(new_val_line)
-        self.defaults['global_sel_line'] = new_val_line
-
-    # Setting selection colors (right - left) handlers
-    def on_alt_sf_color_entry(self):
-        self.defaults['global_alt_sel_fill'] = self.ui.general_defaults_form.general_gui_group \
-                                   .alt_sf_color_entry.get_value()[:7] + self.defaults['global_alt_sel_fill'][7:9]
-        self.ui.general_defaults_form.general_gui_group.alt_sf_color_button.setStyleSheet(
-            "background-color:%s" % str(self.defaults['global_alt_sel_fill'])[:7])
-
-    def on_alt_sf_color_button(self):
-        current_color = QtGui.QColor(self.defaults['global_alt_sel_fill'][:7])
-
-        c_dialog = QtWidgets.QColorDialog()
-        plot_fill_color = c_dialog.getColor(initial=current_color)
-
-        if plot_fill_color.isValid() is False:
-            return
-
-        self.ui.general_defaults_form.general_gui_group.alt_sf_color_button.setStyleSheet(
-            "background-color:%s" % str(plot_fill_color.name()))
-
-        new_val = str(plot_fill_color.name()) + str(self.defaults['global_alt_sel_fill'][7:9])
-        self.ui.general_defaults_form.general_gui_group.alt_sf_color_entry.set_value(new_val)
-        self.defaults['global_alt_sel_fill'] = new_val
-
-    def on_alt_sf_color_spinner(self):
-        spinner_value = self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_spinner.value()
-        self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_slider.setValue(spinner_value)
-        self.defaults['global_alt_sel_fill'] = \
-            self.defaults['global_alt_sel_fill'][:7] + \
-            (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00')
-        self.defaults['global_alt_sel_line'] = \
-            self.defaults['global_alt_sel_line'][:7] + \
-            (hex(spinner_value)[2:] if int(hex(spinner_value)[2:], 16) > 0 else '00')
-
-    def on_alt_sf_color_slider(self):
-        slider_value = self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_slider.value()
-        self.ui.general_defaults_form.general_gui_group.alt_sf_color_alpha_spinner.setValue(slider_value)
-
-    def on_alt_sl_color_entry(self):
-        self.defaults['global_alt_sel_line'] = \
-            self.ui.general_defaults_form.general_gui_group.alt_sl_color_entry.get_value()[:7] + \
-            self.defaults['global_alt_sel_line'][7:9]
-        self.ui.general_defaults_form.general_gui_group.alt_sl_color_button.setStyleSheet(
-            "background-color:%s" % str(self.defaults['global_alt_sel_line'])[:7])
-
-    def on_alt_sl_color_button(self):
-        current_color = QtGui.QColor(self.defaults['global_alt_sel_line'][:7])
-
-        c_dialog = QtWidgets.QColorDialog()
-        plot_line_color = c_dialog.getColor(initial=current_color)
-
-        if plot_line_color.isValid() is False:
-            return
-
-        self.ui.general_defaults_form.general_gui_group.alt_sl_color_button.setStyleSheet(
-            "background-color:%s" % str(plot_line_color.name()))
-
-        new_val_line = str(plot_line_color.name()) + str(self.defaults['global_alt_sel_line'][7:9])
-        self.ui.general_defaults_form.general_gui_group.alt_sl_color_entry.set_value(new_val_line)
-        self.defaults['global_alt_sel_line'] = new_val_line
-
-    # Setting Editor colors
-    def on_draw_color_entry(self):
-        self.defaults['global_draw_color'] = self.ui.general_defaults_form.general_gui_group \
-                                                   .draw_color_entry.get_value()
-        self.ui.general_defaults_form.general_gui_group.draw_color_button.setStyleSheet(
-            "background-color:%s" % str(self.defaults['global_draw_color']))
-
-    def on_draw_color_button(self):
-        current_color = QtGui.QColor(self.defaults['global_draw_color'])
-
-        c_dialog = QtWidgets.QColorDialog()
-        draw_color = c_dialog.getColor(initial=current_color)
-
-        if draw_color.isValid() is False:
-            return
-
-        self.ui.general_defaults_form.general_gui_group.draw_color_button.setStyleSheet(
-            "background-color:%s" % str(draw_color.name()))
-
-        new_val = str(draw_color.name())
-        self.ui.general_defaults_form.general_gui_group.draw_color_entry.set_value(new_val)
-        self.defaults['global_draw_color'] = new_val
-
-    def on_sel_draw_color_entry(self):
-        self.defaults['global_sel_draw_color'] = self.ui.general_defaults_form.general_gui_group \
-                                                   .sel_draw_color_entry.get_value()
-        self.ui.general_defaults_form.general_gui_group.sel_draw_color_button.setStyleSheet(
-            "background-color:%s" % str(self.defaults['global_sel_draw_color']))
-
-    def on_sel_draw_color_button(self):
-        current_color = QtGui.QColor(self.defaults['global_sel_draw_color'])
-
-        c_dialog = QtWidgets.QColorDialog()
-        sel_draw_color = c_dialog.getColor(initial=current_color)
-
-        if sel_draw_color.isValid() is False:
-            return
-
-        self.ui.general_defaults_form.general_gui_group.sel_draw_color_button.setStyleSheet(
-            "background-color:%s" % str(sel_draw_color.name()))
-
-        new_val_sel = str(sel_draw_color.name())
-        self.ui.general_defaults_form.general_gui_group.sel_draw_color_entry.set_value(new_val_sel)
-        self.defaults['global_sel_draw_color'] = new_val_sel
-
-    def on_proj_color_entry(self):
-        self.defaults['global_proj_item_color'] = self.ui.general_defaults_form.general_gui_group \
-                                                   .proj_color_entry.get_value()
-        self.ui.general_defaults_form.general_gui_group.proj_color_button.setStyleSheet(
-            "background-color:%s" % str(self.defaults['global_proj_item_color']))
-
-    def on_proj_color_button(self):
-        current_color = QtGui.QColor(self.defaults['global_proj_item_color'])
-
-        c_dialog = QtWidgets.QColorDialog()
-        proj_color = c_dialog.getColor(initial=current_color)
-
-        if proj_color.isValid() is False:
-            return
-
-        self.ui.general_defaults_form.general_gui_group.proj_color_button.setStyleSheet(
-            "background-color:%s" % str(proj_color.name()))
-
-        new_val_sel = str(proj_color.name())
-        self.ui.general_defaults_form.general_gui_group.proj_color_entry.set_value(new_val_sel)
-        self.defaults['global_proj_item_color'] = new_val_sel
-
-    def on_proj_color_dis_entry(self):
-        self.defaults['global_proj_item_dis_color'] = self.ui.general_defaults_form.general_gui_group \
-                                                   .proj_color_dis_entry.get_value()
-        self.ui.general_defaults_form.general_gui_group.proj_color_dis_button.setStyleSheet(
-            "background-color:%s" % str(self.defaults['global_proj_item_dis_color']))
-
-    def on_proj_color_dis_button(self):
-        current_color = QtGui.QColor(self.defaults['global_proj_item_dis_color'])
-
-        c_dialog = QtWidgets.QColorDialog()
-        proj_color = c_dialog.getColor(initial=current_color)
-
-        if proj_color.isValid() is False:
-            return
-
-        self.ui.general_defaults_form.general_gui_group.proj_color_dis_button.setStyleSheet(
-            "background-color:%s" % str(proj_color.name()))
-
-        new_val_sel = str(proj_color.name())
-        self.ui.general_defaults_form.general_gui_set_group.proj_color_dis_entry.set_value(new_val_sel)
-        self.defaults['global_proj_item_dis_color'] = new_val_sel
-
-    def on_annotation_fontcolor_entry(self):
-        self.defaults['cncjob_annotation_fontcolor'] = \
-            self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_entry.get_value()
-        self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_button.setStyleSheet(
-            "background-color:%s" % str(self.defaults['cncjob_annotation_fontcolor']))
-
-    def on_annotation_fontcolor_button(self):
-        current_color = QtGui.QColor(self.defaults['cncjob_annotation_fontcolor'])
-
-        c_dialog = QtWidgets.QColorDialog()
-        annotation_color = c_dialog.getColor(initial=current_color)
-
-        if annotation_color.isValid() is False:
-            return
-
-        self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_button.setStyleSheet(
-            "background-color:%s" % str(annotation_color.name()))
-
-        new_val_sel = str(annotation_color.name())
-        self.ui.cncjob_defaults_form.cncjob_adv_opt_group.annotation_fontcolor_entry.set_value(new_val_sel)
-        self.defaults['cncjob_annotation_fontcolor'] = new_val_sel
-
     def on_film_color_entry(self):
     def on_film_color_entry(self):
         self.defaults['tools_film_color'] = \
         self.defaults['tools_film_color'] = \
             self.ui.tools_defaults_form.tools_film_group.film_color_entry.get_value()
             self.ui.tools_defaults_form.tools_film_group.film_color_entry.get_value()
@@ -6850,13 +6614,6 @@ class App(QtCore.QObject):
         self.ui.tools2_defaults_form.tools2_qrcode_group.back_color_entry.set_value(new_val_sel)
         self.ui.tools2_defaults_form.tools2_qrcode_group.back_color_entry.set_value(new_val_sel)
         self.defaults['tools_qrcode_back_color'] = new_val_sel
         self.defaults['tools_qrcode_back_color'] = new_val_sel
 
 
-    def on_splash_changed(self, state):
-        settings = QSettings("Open Source", "FlatCAM")
-        settings.setValue('splash_screen', 1) if state else settings.setValue('splash_screen', 0)
-
-        # This will write the setting to the platform specific storage.
-        del settings
-
     def on_tab_rmb_click(self, checked):
     def on_tab_rmb_click(self, checked):
         self.ui.notebook.set_detachable(val=checked)
         self.ui.notebook.set_detachable(val=checked)
         self.defaults["global_tabs_detachable"] = checked
         self.defaults["global_tabs_detachable"] = checked
@@ -7060,12 +6817,12 @@ class App(QtCore.QObject):
         self.app_cursor.enabled = False
         self.app_cursor.enabled = False
 
 
         if val == 'small':
         if val == 'small':
-            self.ui.general_defaults_form.general_gui_set_group.cursor_size_entry.setDisabled(False)
-            self.ui.general_defaults_form.general_gui_set_group.cursor_size_lbl.setDisabled(False)
+            self.ui.general_defaults_form.general_app_set_group.cursor_size_entry.setDisabled(False)
+            self.ui.general_defaults_form.general_app_set_group.cursor_size_lbl.setDisabled(False)
             self.app_cursor = self.plotcanvas.new_cursor()
             self.app_cursor = self.plotcanvas.new_cursor()
         else:
         else:
-            self.ui.general_defaults_form.general_gui_set_group.cursor_size_entry.setDisabled(True)
-            self.ui.general_defaults_form.general_gui_set_group.cursor_size_lbl.setDisabled(True)
+            self.ui.general_defaults_form.general_app_set_group.cursor_size_entry.setDisabled(True)
+            self.ui.general_defaults_form.general_app_set_group.cursor_size_lbl.setDisabled(True)
             self.app_cursor = self.plotcanvas.new_cursor(big=True)
             self.app_cursor = self.plotcanvas.new_cursor(big=True)
 
 
         if self.ui.grid_snap_btn.isChecked():
         if self.ui.grid_snap_btn.isChecked():
@@ -7073,12 +6830,6 @@ class App(QtCore.QObject):
         else:
         else:
             self.app_cursor.enabled = False
             self.app_cursor.enabled = False
 
 
-    def on_cnc_custom_parameters(self, signal_text):
-        if signal_text == 'Parameters':
-            return
-        else:
-            self.ui.cncjob_defaults_form.cncjob_adv_opt_group.toolchange_text.insertPlainText('%%%s%%' % signal_text)
-
     def on_save_button(self, save_to_file=True):
     def on_save_button(self, save_to_file=True):
         log.debug("App.on_save_button() --> Applying preferences to file.")
         log.debug("App.on_save_button() --> Applying preferences to file.")
 
 
@@ -7106,20 +6857,20 @@ class App(QtCore.QObject):
         settgs = QSettings("Open Source", "FlatCAM")
         settgs = QSettings("Open Source", "FlatCAM")
 
 
         # save the notebook font size
         # save the notebook font size
-        fsize = self.ui.general_defaults_form.general_gui_set_group.notebook_font_size_spinner.get_value()
+        fsize = self.ui.general_defaults_form.general_app_set_group.notebook_font_size_spinner.get_value()
         settgs.setValue('notebook_font_size', fsize)
         settgs.setValue('notebook_font_size', fsize)
 
 
         # save the axis font size
         # save the axis font size
-        g_fsize = self.ui.general_defaults_form.general_gui_set_group.axis_font_size_spinner.get_value()
+        g_fsize = self.ui.general_defaults_form.general_app_set_group.axis_font_size_spinner.get_value()
         settgs.setValue('axis_font_size', g_fsize)
         settgs.setValue('axis_font_size', g_fsize)
 
 
         # save the textbox font size
         # save the textbox font size
-        tb_fsize = self.ui.general_defaults_form.general_gui_set_group.textbox_font_size_spinner.get_value()
+        tb_fsize = self.ui.general_defaults_form.general_app_set_group.textbox_font_size_spinner.get_value()
         settgs.setValue('textbox_font_size', tb_fsize)
         settgs.setValue('textbox_font_size', tb_fsize)
 
 
         settgs.setValue(
         settgs.setValue(
             'machinist',
             'machinist',
-            1 if self.ui.general_defaults_form.general_app_group.machinist_cb.get_value() else 0
+            1 if self.ui.general_defaults_form.general_app_set_group.machinist_cb.get_value() else 0
         )
         )
 
 
         # This will write the setting to the platform specific storage.
         # This will write the setting to the platform specific storage.
@@ -12411,22 +12162,22 @@ class App(QtCore.QObject):
 
 
         if act_name == 'red':
         if act_name == 'red':
             new_color = '#FF0000' + \
             new_color = '#FF0000' + \
-                        str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:])
+                        str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:])
         if act_name == 'blue':
         if act_name == 'blue':
             new_color = '#0000FF' + \
             new_color = '#0000FF' + \
-                        str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:])
+                        str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:])
         if act_name == 'yellow':
         if act_name == 'yellow':
             new_color = '#FFDF00' + \
             new_color = '#FFDF00' + \
-                        str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:])
+                        str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:])
         if act_name == 'green':
         if act_name == 'green':
             new_color = '#00FF00' + \
             new_color = '#00FF00' + \
-                        str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:])
+                        str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:])
         if act_name == 'purple':
         if act_name == 'purple':
             new_color = '#FF00FF' + \
             new_color = '#FF00FF' + \
-                        str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:])
+                        str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:])
         if act_name == 'brown':
         if act_name == 'brown':
             new_color = '#A52A2A' + \
             new_color = '#A52A2A' + \
-                        str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:])
+                        str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:])
 
 
         if act_name == 'custom':
         if act_name == 'custom':
             new_color = QtGui.QColor(self.defaults['gerber_plot_fill'][:7])
             new_color = QtGui.QColor(self.defaults['gerber_plot_fill'][:7])
@@ -12437,7 +12188,7 @@ class App(QtCore.QObject):
                 return
                 return
 
 
             new_color = str(plot_fill_color.name()) + \
             new_color = str(plot_fill_color.name()) + \
-                        str(hex(self.ui.general_defaults_form.general_gui_group.pf_color_alpha_slider.value())[2:])
+                        str(hex(self.ui.gerber_defaults_form.gerber_gen_group.pf_color_alpha_slider.value())[2:])
 
 
         new_line_color = color_variant(new_color[:7], 0.7)
         new_line_color = color_variant(new_color[:7], 0.7)
 
 

+ 12 - 11
FlatCAMObj.py

@@ -3536,7 +3536,9 @@ class FlatCAMExcellon(FlatCAMObj, Excellon):
             # Plot Excellon (All polygons?)
             # Plot Excellon (All polygons?)
             if self.options["solid"]:
             if self.options["solid"]:
                 for geo in self.solid_geometry:
                 for geo in self.solid_geometry:
-                    self.add_shape(shape=geo, color='#750000BF', face_color='#C40000BF',
+                    self.add_shape(shape=geo,
+                                   color=self.app.defaults["excellon_plot_line"],
+                                   face_color=self.app.defaults["excellon_plot_fill"],
                                    visible=visible,
                                    visible=visible,
                                    layer=2)
                                    layer=2)
             else:
             else:
@@ -4074,7 +4076,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
 
 
         # I use lambda's because the connected functions have parameters that could be used in certain scenarios
         # I use lambda's because the connected functions have parameters that could be used in certain scenarios
         self.ui.addtool_btn.clicked.connect(lambda: self.on_tool_add())
         self.ui.addtool_btn.clicked.connect(lambda: self.on_tool_add())
-        self.ui.addtool_entry.returnPressed.connect(self.on_tool_add)
 
 
         self.ui.copytool_btn.clicked.connect(lambda: self.on_tool_copy())
         self.ui.copytool_btn.clicked.connect(lambda: self.on_tool_copy())
         self.ui.deltool_btn.clicked.connect(lambda: self.on_tool_delete())
         self.ui.deltool_btn.clicked.connect(lambda: self.on_tool_delete())
@@ -4127,11 +4128,6 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
         except (TypeError, AttributeError):
         except (TypeError, AttributeError):
             pass
             pass
 
 
-        try:
-            self.ui.addtool_entry.returnPressed.disconnect()
-        except (TypeError, AttributeError):
-            pass
-
         try:
         try:
             self.ui.copytool_btn.clicked.disconnect()
             self.ui.copytool_btn.clicked.disconnect()
         except (TypeError, AttributeError):
         except (TypeError, AttributeError):
@@ -5793,12 +5789,15 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
 
 
         return factor
         return factor
 
 
-    def plot_element(self, element, color='#FF0000FF', visible=None):
+    def plot_element(self, element, color=None, visible=None):
+
+        if color is None:
+            color = '#FF0000FF'
 
 
         visible = visible if visible else self.options['plot']
         visible = visible if visible else self.options['plot']
         try:
         try:
             for sub_el in element:
             for sub_el in element:
-                self.plot_element(sub_el)
+                self.plot_element(sub_el, color=color)
 
 
         except TypeError:  # Element is not iterable...
         except TypeError:  # Element is not iterable...
             # if self.app.is_legacy is False:
             # if self.app.is_legacy is False:
@@ -5825,12 +5824,14 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
             if self.multigeo is True:  # geo multi tool usage
             if self.multigeo is True:  # geo multi tool usage
                 for tooluid_key in self.tools:
                 for tooluid_key in self.tools:
                     solid_geometry = self.tools[tooluid_key]['solid_geometry']
                     solid_geometry = self.tools[tooluid_key]['solid_geometry']
-                    self.plot_element(solid_geometry, visible=visible)
+                    self.plot_element(solid_geometry, visible=visible,
+                                      color=self.app.defaults["geometry_plot_line"])
             else:
             else:
                 # plot solid geometry that may be an direct attribute of the geometry object
                 # plot solid geometry that may be an direct attribute of the geometry object
                 # for SingleGeo
                 # for SingleGeo
                 if self.solid_geometry:
                 if self.solid_geometry:
-                    self.plot_element(self.solid_geometry, visible=visible)
+                    self.plot_element(self.solid_geometry, visible=visible,
+                                      color=self.app.defaults["geometry_plot_line"])
 
 
             # self.plot_element(self.solid_geometry, visible=self.options['plot'])
             # self.plot_element(self.solid_geometry, visible=self.options['plot'])
 
 

+ 3 - 0
README.md

@@ -24,6 +24,9 @@ CAD program, and create G-Code for Isolation routing.
 - further modifications in Preferences -> General GUI - extended the changes
 - further modifications in Preferences -> General GUI - extended the changes
 - in Legacy(2D) graphic engine made to work the mouse color change
 - in Legacy(2D) graphic engine made to work the mouse color change
 - theme changing is no longer auto-reboot upon change; it require now to press a button
 - theme changing is no longer auto-reboot upon change; it require now to press a button
+- cleaned the Preferences classes and added the signals and signal slots in those classes, removing them from the main app class
+- each FlatCAM object found in Preferences has it's own set of controls for changing the colors
+- added a set of gray icons to be used when the theme is complete dark (for now it is useful only for MacOS with dark theme because at the moment the app is not styled to dark UI except the plot area)
 
 
 25.12.2019
 25.12.2019
 
 

+ 7 - 2
camlib.py

@@ -4252,8 +4252,7 @@ class CNCjob(Geometry):
     #     return fig
     #     return fig
 
 
     def plot2(self, tooldia=None, dpi=75, margin=0.1, gcode_parsed=None,
     def plot2(self, tooldia=None, dpi=75, margin=0.1, gcode_parsed=None,
-              color={"T": ["#F0E24D4C", "#B5AB3A4C"], "C": ["#5E6CFFFF", "#4650BDFF"]},
-              alpha={"T": 0.3, "C": 1.0}, tool_tolerance=0.0005, obj=None, visible=False, kind='all'):
+              color=None, alpha={"T": 0.3, "C": 1.0}, tool_tolerance=0.0005, obj=None, visible=False, kind='all'):
         """
         """
         Plots the G-code job onto the given axes.
         Plots the G-code job onto the given axes.
 
 
@@ -4270,6 +4269,12 @@ class CNCjob(Geometry):
         """
         """
         # units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().upper()
         # units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value().upper()
 
 
+        if color is None:
+            color = {
+                "T": [self.app.defaults["cncjob_travel_fill"], self.app.defaults["cncjob_travel_line"]],
+                "C": [self.app.defaults["cncjob_plot_fill"], self.app.defaults["cncjob_plot_line"]]
+            }
+
         gcode_parsed = gcode_parsed if gcode_parsed else self.gcode_parsed
         gcode_parsed = gcode_parsed if gcode_parsed else self.gcode_parsed
         path_num = 0
         path_num = 0
 
 

+ 1 - 1
flatcamGUI/FlatCAMGUI.py

@@ -2333,7 +2333,7 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
         :param event: QT event to filter
         :param event: QT event to filter
         :return:
         :return:
         """
         """
-        if self.general_defaults_form.general_gui_set_group.toggle_tooltips_cb.get_value() is False:
+        if self.general_defaults_form.general_app_set_group.toggle_tooltips_cb.get_value() is False:
             if event.type() == QtCore.QEvent.ToolTip:
             if event.type() == QtCore.QEvent.ToolTip:
                 return True
                 return True
             else:
             else:

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 757 - 120
flatcamGUI/PreferencesUI.py


BIN
share/dark_resources/about32.png


BIN
share/dark_resources/active.gif


BIN
share/dark_resources/active_2.gif


BIN
share/dark_resources/active_2_static.png


BIN
share/dark_resources/active_3.gif


BIN
share/dark_resources/active_3_static.png


BIN
share/dark_resources/active_4.gif


BIN
share/dark_resources/active_4_static.png


BIN
share/dark_resources/active_static.png


BIN
share/dark_resources/addarray16.png


BIN
share/dark_resources/addarray20.png


BIN
share/dark_resources/addarray32.png


BIN
share/dark_resources/aero.png


BIN
share/dark_resources/aero_arc.png


BIN
share/dark_resources/aero_array.png


BIN
share/dark_resources/aero_buffer.png


BIN
share/dark_resources/aero_circle.png


BIN
share/dark_resources/aero_circle_geo.png


BIN
share/dark_resources/aero_disc.png


BIN
share/dark_resources/aero_drill.png


BIN
share/dark_resources/aero_drill_array.png


BIN
share/dark_resources/aero_path1.png


BIN
share/dark_resources/aero_path2.png


BIN
share/dark_resources/aero_path3.png


BIN
share/dark_resources/aero_path4.png


BIN
share/dark_resources/aero_path5.png


BIN
share/dark_resources/aero_semidisc.png


BIN
share/dark_resources/aero_slot.png


BIN
share/dark_resources/aero_text.png


BIN
share/dark_resources/align_center32.png


BIN
share/dark_resources/align_justify32.png


BIN
share/dark_resources/align_left32.png


BIN
share/dark_resources/align_right32.png


BIN
share/dark_resources/aperture16.png


BIN
share/dark_resources/aperture32.png


BIN
share/dark_resources/arc16.png


BIN
share/dark_resources/arc24.png


BIN
share/dark_resources/arc32.png


BIN
share/dark_resources/axis32.png


BIN
share/dark_resources/backup24.png


BIN
share/dark_resources/backup_export24.png


BIN
share/dark_resources/backup_import24.png


BIN
share/dark_resources/blocked16.png


BIN
share/dark_resources/blue32.png


BIN
share/dark_resources/bluelight12.png


BIN
share/dark_resources/bold32.png


BIN
share/dark_resources/bookmarks16.png


BIN
share/dark_resources/bookmarks32.png


BIN
share/dark_resources/brown32.png


BIN
share/dark_resources/buffer16-2.png


BIN
share/dark_resources/buffer16.png


BIN
share/dark_resources/buffer20.png


BIN
share/dark_resources/buffer24.png


BIN
share/dark_resources/bug16.png


BIN
share/dark_resources/bug32.png


BIN
share/dark_resources/calculator16.png


BIN
share/dark_resources/calculator24.png


BIN
share/dark_resources/calibrate_16.png


BIN
share/dark_resources/calibrate_32.png


BIN
share/dark_resources/cancel_edit16.png


BIN
share/dark_resources/cancel_edit32.png


BIN
share/dark_resources/circle32.png


BIN
share/dark_resources/clear_plot16.png


BIN
share/dark_resources/clear_plot32.png


BIN
share/dark_resources/close_edit_file16.png


BIN
share/dark_resources/close_edit_file32.png


BIN
share/dark_resources/cnc16.png


BIN
share/dark_resources/cnc32.png


BIN
share/dark_resources/code.png


BIN
share/dark_resources/code_editor32.png


BIN
share/dark_resources/convert24.png


BIN
share/dark_resources/copperfill16.png


BIN
share/dark_resources/copperfill32.png


BIN
share/dark_resources/copy.png


BIN
share/dark_resources/copy16.png


BIN
share/dark_resources/copy32.png


BIN
share/dark_resources/copy_16.png


BIN
share/dark_resources/copy_file16.png


BIN
share/dark_resources/copy_file32.png


BIN
share/dark_resources/copy_geo.png


BIN
share/dark_resources/corner32.png


BIN
share/dark_resources/cut16.png


BIN
share/dark_resources/cut16_bis.png


BIN
share/dark_resources/cut32.png


BIN
share/dark_resources/cut32_bis.png


BIN
share/dark_resources/cutpath16.png


BIN
share/dark_resources/cutpath24.png


BIN
share/dark_resources/cutpath32.png


BIN
share/dark_resources/database32.png


BIN
share/dark_resources/defaults.png


BIN
share/dark_resources/delete32.png


BIN
share/dark_resources/delete_file16.png


BIN
share/dark_resources/delete_file32.png


BIN
share/dark_resources/deleteshape16.png


Vissa filer visades inte eftersom för många filer har ändrats