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

- modified the GUI in Objects Selected Tab to accommodate 2 different modes: basic and Advanced. In Basic mode, some of the functionality's are hidden from the user.

Marius Stanciu пре 7 година
родитељ
комит
88a0be7cf1
5 измењених фајлова са 178 додато и 37 уклоњено
  1. 26 13
      FlatCAMApp.py
  2. 30 4
      FlatCAMGUI.py
  3. 62 0
      FlatCAMObj.py
  4. 59 20
      ObjectUI.py
  5. 1 0
      README.md

+ 26 - 13
FlatCAMApp.py

@@ -311,6 +311,7 @@ class App(QtCore.QObject):
             "global_send_stats": self.general_defaults_form.general_app_group.send_stats_cb,
             "global_send_stats": self.general_defaults_form.general_app_group.send_stats_cb,
             "global_project_at_startup": self.general_defaults_form.general_app_group.project_startup_cb,
             "global_project_at_startup": self.general_defaults_form.general_app_group.project_startup_cb,
             "global_project_autohide": self.general_defaults_form.general_app_group.project_autohide_cb,
             "global_project_autohide": self.general_defaults_form.general_app_group.project_autohide_cb,
+            "global_advanced": self.general_defaults_form.general_app_group.advanced_cb,
 
 
             "global_gridx": self.general_defaults_form.general_gui_group.gridx_entry,
             "global_gridx": self.general_defaults_form.general_gui_group.gridx_entry,
             "global_gridy": self.general_defaults_form.general_gui_group.gridy_entry,
             "global_gridy": self.general_defaults_form.general_gui_group.gridy_entry,
@@ -486,6 +487,7 @@ class App(QtCore.QObject):
             "global_send_stats": True,
             "global_send_stats": True,
             "global_project_at_startup": False,
             "global_project_at_startup": False,
             "global_project_autohide": True,
             "global_project_autohide": True,
+            "global_advanced": False,
 
 
             "global_gridx": 1.0,
             "global_gridx": 1.0,
             "global_gridy": 1.0,
             "global_gridy": 1.0,
@@ -3597,21 +3599,32 @@ class App(QtCore.QObject):
         # work only if the notebook tab on focus is the Selected_Tab and only if the object is Geometry
         # work only if the notebook tab on focus is the Selected_Tab and only if the object is Geometry
         if notebook_widget_name == 'selected_tab':
         if notebook_widget_name == 'selected_tab':
             if str(type(self.collection.get_active())) == "<class 'FlatCAMObj.FlatCAMGeometry'>":
             if str(type(self.collection.get_active())) == "<class 'FlatCAMObj.FlatCAMGeometry'>":
-                tool_add_popup = FCInputDialog(title="New Tool ...",
-                                               text='Enter a Tool Diameter:',
-                                               min=0.0000, max=99.9999, decimals=4)
-                tool_add_popup.setWindowIcon(QtGui.QIcon('share/letter_t_32.png'))
-
-                val, ok = tool_add_popup.get_value()
-                if ok:
-                    if float(val) == 0:
+                # Tool add works for Geometry only if Advanced is True in Preferences
+                if self.defaults["global_advanced"] is True:
+                    tool_add_popup = FCInputDialog(title="New Tool ...",
+                                                   text='Enter a Tool Diameter:',
+                                                   min=0.0000, max=99.9999, decimals=4)
+                    tool_add_popup.setWindowIcon(QtGui.QIcon('share/letter_t_32.png'))
+
+                    val, ok = tool_add_popup.get_value()
+                    if ok:
+                        if float(val) == 0:
+                            self.inform.emit(
+                                "[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format.")
+                            return
+                        self.collection.get_active().on_tool_add(dia=float(val))
+                    else:
                         self.inform.emit(
                         self.inform.emit(
-                            "[WARNING_NOTCL] Please enter a tool diameter with non-zero value, in Float format.")
-                        return
-                    self.collection.get_active().on_tool_add(dia=float(val))
+                            "[WARNING_NOTCL] Adding Tool cancelled ...")
                 else:
                 else:
-                    self.inform.emit(
-                        "[WARNING_NOTCL] Adding Tool cancelled ...")
+                    msgbox = QtWidgets.QMessageBox()
+                    msgbox.setText("Adding Tool works only when Advanced is checked.\n"
+                                   "Go to Preferences -> General - Show Advanced Options.")
+                    msgbox.setWindowTitle("Tool adding ...")
+                    msgbox.setWindowIcon(QtGui.QIcon('share/warning.png'))
+                    msgbox.setStandardButtons(QtWidgets.QMessageBox.Ok)
+                    msgbox.setDefaultButton(QtWidgets.QMessageBox.Ok)
+                    msgbox.exec_()
 
 
         # work only if the notebook tab on focus is the Tools_Tab
         # work only if the notebook tab on focus is the Tools_Tab
         if notebook_widget_name == 'tool_tab':
         if notebook_widget_name == 'tool_tab':

+ 30 - 4
FlatCAMGUI.py

@@ -1165,6 +1165,10 @@ class FlatCAMGUI(QtWidgets.QMainWindow):
 			<td height="20">&nbsp;</td>
 			<td height="20">&nbsp;</td>
 			<td>&nbsp;</td>
 			<td>&nbsp;</td>
 		</tr>
 		</tr>
+        <tr height="20">
+			<td height="20"><strong>ALT+R</strong></td>
+			<td>&nbsp;Editor Transformation Tool</td>
+		</tr>
         <tr height="20">
         <tr height="20">
 			<td height="20"><strong>ALT+X</strong></td>
 			<td height="20"><strong>ALT+X</strong></td>
 			<td>&nbsp;Offset shape on X axis</td>
 			<td>&nbsp;Offset shape on X axis</td>
@@ -3104,6 +3108,25 @@ class GeneralAppPrefGroupUI(OptionsGroupUI):
         # to the main layout of this TAB
         # to the main layout of this TAB
         self.layout.addLayout(self.form_box)
         self.layout.addLayout(self.form_box)
 
 
+        hlay = QtWidgets.QHBoxLayout()
+        self.layout.addLayout(hlay)
+
+        # Advanced CB
+        self.advanced_cb = FCCheckBox('Show Advanced Options')
+        self.advanced_cb.setToolTip(
+            "When checked, Advanced Options will be\n"
+            "displayed in the Selected Tab for all\n"
+            "kind of objects."
+        )
+        # self.advanced_cb.setLayoutDirection(QtCore.Qt.RightToLeft)
+        hlay.addWidget(self.advanced_cb)
+        hlay.addStretch()
+
+        self.form_box_2 = QtWidgets.QFormLayout()
+        self.layout.addLayout(self.form_box_2)
+
+        self.layout.addStretch()
+
 
 
 class GerberGenPrefGroupUI(OptionsGroupUI):
 class GerberGenPrefGroupUI(OptionsGroupUI):
     def __init__(self, parent=None):
     def __init__(self, parent=None):
@@ -3519,8 +3542,11 @@ class ExcellonGenPrefGroupUI(OptionsGroupUI):
             self.optimization_time_label.setDisabled(True)
             self.optimization_time_label.setDisabled(True)
             self.optimization_time_entry.setDisabled(True)
             self.optimization_time_entry.setDisabled(True)
 
 
-        ## Create CNC Job
-        self.cncjob_label = QtWidgets.QLabel('<b>Create CNC Job</b>')
+        ######################
+        ## ADVANCED OPTIONS ##
+        ######################
+
+        self.cncjob_label = QtWidgets.QLabel('<b>Advanced Options:</b>')
         self.cncjob_label.setToolTip(
         self.cncjob_label.setToolTip(
             "Parameters used to create a CNC Job object\n"
             "Parameters used to create a CNC Job object\n"
             "for this drill object that are not changed very often."
             "for this drill object that are not changed very often."
@@ -3965,9 +3991,9 @@ class GeometryGenPrefGroupUI(OptionsGroupUI):
 
 
 
 
         # ------------------------------
         # ------------------------------
-        ## Create CNC Job
+        ## Advanced Options
         # ------------------------------
         # ------------------------------
-        self.cncjob_label = QtWidgets.QLabel('<b>Create CNC Job:</b>')
+        self.cncjob_label = QtWidgets.QLabel('<b>Advanced Options:</b>')
         self.cncjob_label.setToolTip(
         self.cncjob_label.setToolTip(
             "Parameters to create a CNC Job object\n"
             "Parameters to create a CNC Job object\n"
             "tracing the contours of a Geometry object."
             "tracing the contours of a Geometry object."

+ 62 - 0
FlatCAMObj.py

@@ -478,6 +478,19 @@ class FlatCAMGerber(FlatCAMObj, Gerber):
         self.ui.generate_noncopper_button.clicked.connect(self.on_generatenoncopper_button_click)
         self.ui.generate_noncopper_button.clicked.connect(self.on_generatenoncopper_button_click)
         self.ui.aperture_table_visibility_cb.stateChanged.connect(self.on_aperture_table_visibility_change)
         self.ui.aperture_table_visibility_cb.stateChanged.connect(self.on_aperture_table_visibility_change)
 
 
+        # Show/Hide Advanced Options
+        if self.app.defaults["global_advanced"] is False:
+            self.ui.level.setText('<span style="color:green;"><b>BASIC Mode</b></span>')
+            self.ui.apertures_table_label.hide()
+            self.ui.aperture_table_visibility_cb.hide()
+            self.ui.milling_type_label.hide()
+            self.ui.milling_type_radio.hide()
+            self.ui.generate_ext_iso_button.hide()
+            self.ui.generate_int_iso_button.hide()
+
+        else:
+            self.ui.level.setText('<span style="color:red;"><b>ADVANCED Mode</b></span>')
+
         self.build_ui()
         self.build_ui()
 
 
     def build_ui(self):
     def build_ui(self):
@@ -1528,6 +1541,24 @@ class FlatCAMExcellon(FlatCAMObj, Excellon):
                     dia = float('%.3f' % float(value['C']))
                     dia = float('%.3f' % float(value['C']))
                 self.tool_offset[dia] = t_default_offset
                 self.tool_offset[dia] = t_default_offset
 
 
+        # Show/Hide Advanced Options
+        if self.app.defaults["global_advanced"] is False:
+            self.ui.level.setText('<span style="color:green;"><b>BASIC Mode</b></span>')
+
+            self.ui.tools_table.setColumnHidden(4, True)
+            self.ui.estartz_label.hide()
+            self.ui.estartz_entry.hide()
+            self.ui.eendz_label.hide()
+            self.ui.eendz_entry.hide()
+            self.ui.feedrate_rapid_label.hide()
+            self.ui.feedrate_rapid_entry.hide()
+            self.ui.pdepth_label.hide()
+            self.ui.pdepth_entry.hide()
+            self.ui.feedrate_probe_label.hide()
+            self.ui.feedrate_probe_entry.hide()
+        else:
+            self.ui.level.setText('<span style="color:red;"><b>ADVANCED Mode</b></span>')
+
         assert isinstance(self.ui, ExcellonObjectUI), \
         assert isinstance(self.ui, ExcellonObjectUI), \
             "Expected a ExcellonObjectUI, got %s" % type(self.ui)
             "Expected a ExcellonObjectUI, got %s" % type(self.ui)
         self.ui.plot_cb.stateChanged.connect(self.on_plot_cb_click)
         self.ui.plot_cb.stateChanged.connect(self.on_plot_cb_click)
@@ -2744,6 +2775,30 @@ class FlatCAMGeometry(FlatCAMObj, Geometry):
         self.ui.geo_tools_table.addContextMenu(
         self.ui.geo_tools_table.addContextMenu(
             "Delete", lambda: self.on_tool_delete(all=None), icon=QtGui.QIcon("share/delete32.png"))
             "Delete", lambda: self.on_tool_delete(all=None), icon=QtGui.QIcon("share/delete32.png"))
 
 
+        # Show/Hide Advanced Options
+        if self.app.defaults["global_advanced"] is False:
+            self.ui.level.setText('<span style="color:green;"><b>BASIC Mode</b></span>')
+
+            self.ui.geo_tools_table.setColumnHidden(2, True)
+            self.ui.geo_tools_table.setColumnHidden(3, True)
+            self.ui.geo_tools_table.setColumnHidden(4, True)
+            self.ui.addtool_entry_lbl.hide()
+            self.ui.addtool_entry.hide()
+            self.ui.addtool_btn.hide()
+            self.ui.copytool_btn.hide()
+            self.ui.deltool_btn.hide()
+            self.ui.endzlabel.hide()
+            self.ui.gendz_entry.hide()
+            self.ui.fr_rapidlabel.hide()
+            self.ui.cncfeedrate_rapid_entry.hide()
+            self.ui.extracut_cb.hide()
+            self.ui.pdepth_label.hide()
+            self.ui.pdepth_entry.hide()
+            self.ui.feedrate_probe_label.hide()
+            self.ui.feedrate_probe_entry.hide()
+        else:
+            self.ui.level.setText('<span style="color:red;"><b>ADVANCED Mode</b></span>')
+
         self.ui.plot_cb.stateChanged.connect(self.on_plot_cb_click)
         self.ui.plot_cb.stateChanged.connect(self.on_plot_cb_click)
         self.ui.generate_cnc_button.clicked.connect(self.on_generatecnc_button_click)
         self.ui.generate_cnc_button.clicked.connect(self.on_generatecnc_button_click)
         self.ui.paint_tool_button.clicked.connect(self.app.paint_tool.run)
         self.ui.paint_tool_button.clicked.connect(self.app.paint_tool.run)
@@ -4762,6 +4817,13 @@ class FlatCAMCNCjob(FlatCAMObj, CNCjob):
         # set the kind of geometries are plotted by default with plot2() from camlib.CNCJob
         # set the kind of geometries are plotted by default with plot2() from camlib.CNCJob
         self.ui.cncplot_method_combo.set_value(self.app.defaults["cncjob_plot_kind"])
         self.ui.cncplot_method_combo.set_value(self.app.defaults["cncjob_plot_kind"])
 
 
+        # Show/Hide Advanced Options
+        if self.app.defaults["global_advanced"] is False:
+            self.ui.level.setText('<span style="color:green;"><b>BASIC Mode</b></span>')
+
+        else:
+            self.ui.level.setText('<span style="color:red;"><b>ADVANCED Mode</b></span>')
+
         self.ui.updateplot_button.clicked.connect(self.on_updateplot_button_click)
         self.ui.updateplot_button.clicked.connect(self.on_updateplot_button_click)
         self.ui.export_gcode_button.clicked.connect(self.on_exportgcode_button_click)
         self.ui.export_gcode_button.clicked.connect(self.on_exportgcode_button_click)
         self.ui.modify_gcode_button.clicked.connect(self.on_modifygcode_button_click)
         self.ui.modify_gcode_button.clicked.connect(self.on_modifygcode_button_click)

+ 59 - 20
ObjectUI.py

@@ -108,6 +108,16 @@ class GerberObjectUI(ObjectUI):
     def __init__(self, parent=None):
     def __init__(self, parent=None):
         ObjectUI.__init__(self, title='Gerber Object', parent=parent)
         ObjectUI.__init__(self, title='Gerber Object', parent=parent)
 
 
+        self.level = QtWidgets.QLabel("")
+        self.level.setToolTip(
+            "In the BASIC mode certain functionality's\n"
+            "are hidden from the user.\n"
+            "To enable them, go to:\n"
+            "Edit -> Preferences -> General and check:\n"
+            "'Show Advanced Options' checkbox."
+        )
+        self.custom_box.addWidget(self.level)
+
         # Plot options
         # Plot options
         grid0 = QtWidgets.QGridLayout()
         grid0 = QtWidgets.QGridLayout()
         grid0.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
         grid0.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
@@ -237,13 +247,13 @@ class GerberObjectUI(ObjectUI):
         grid1.addWidget(self.iso_overlap_entry, 2, 1)
         grid1.addWidget(self.iso_overlap_entry, 2, 1)
 
 
         # Milling Type Radio Button
         # Milling Type Radio Button
-        milling_type_label = QtWidgets.QLabel('Milling Type:')
-        milling_type_label.setToolTip(
+        self.milling_type_label = QtWidgets.QLabel('Milling Type:')
+        self.milling_type_label.setToolTip(
             "Milling type:\n"
             "Milling type:\n"
             "- climb / best for precision milling and to reduce tool usage\n"
             "- climb / best for precision milling and to reduce tool usage\n"
             "- conventional / useful when there is no backlash compensation"
             "- conventional / useful when there is no backlash compensation"
         )
         )
-        grid1.addWidget(milling_type_label, 3, 0)
+        grid1.addWidget(self.milling_type_label, 3, 0)
         self.milling_type_radio = RadioSet([{'label': 'Climb', 'value': 'cl'},
         self.milling_type_radio = RadioSet([{'label': 'Climb', 'value': 'cl'},
                                     {'label': 'Conv.', 'value': 'cv'}])
                                     {'label': 'Conv.', 'value': 'cv'}])
         grid1.addWidget(self.milling_type_radio, 3, 1)
         grid1.addWidget(self.milling_type_radio, 3, 1)
@@ -430,6 +440,16 @@ class ExcellonObjectUI(ObjectUI):
                           icon_file='share/drill32.png',
                           icon_file='share/drill32.png',
                           parent=parent)
                           parent=parent)
 
 
+        self.level = QtWidgets.QLabel("")
+        self.level.setToolTip(
+            "In the BASIC mode certain functionality's\n"
+            "are hidden from the user.\n"
+            "To enable them, go to:\n"
+            "Edit -> Preferences -> General and check:\n"
+            "'Show Advanced Options' checkbox."
+        )
+        self.custom_box.addWidget(self.level)
+
         #### Plot options ####
         #### Plot options ####
         hlay_plot = QtWidgets.QHBoxLayout()
         hlay_plot = QtWidgets.QHBoxLayout()
         self.custom_box.addLayout(hlay_plot)
         self.custom_box.addLayout(hlay_plot)
@@ -485,7 +505,7 @@ class ExcellonObjectUI(ObjectUI):
         self.tools_box.addWidget(self.tools_table)
         self.tools_box.addWidget(self.tools_table)
 
 
         self.tools_table.setColumnCount(6)
         self.tools_table.setColumnCount(6)
-        self.tools_table.setHorizontalHeaderLabels(['#', 'Diameter', 'Drills', 'Slots', 'Offset', 'P'])
+        self.tools_table.setHorizontalHeaderLabels(['#', 'Diameter', 'Drills', 'Slots', 'Offset Z', 'P'])
         self.tools_table.setSortingEnabled(False)
         self.tools_table.setSortingEnabled(False)
 
 
         self.tools_table.horizontalHeaderItem(0).setToolTip(
         self.tools_table.horizontalHeaderItem(0).setToolTip(
@@ -562,22 +582,22 @@ class ExcellonObjectUI(ObjectUI):
         self.ois_tcz_e = OptionalInputSection(self.toolchange_cb, [self.toolchangez_entry])
         self.ois_tcz_e = OptionalInputSection(self.toolchange_cb, [self.toolchangez_entry])
 
 
         # Start move Z:
         # Start move Z:
-        startzlabel = QtWidgets.QLabel("Start move Z:")
-        startzlabel.setToolTip(
+        self.estartz_label = QtWidgets.QLabel("Start move Z:")
+        self.estartz_label.setToolTip(
             "Tool height just before starting the work.\n"
             "Tool height just before starting the work.\n"
             "Delete the value if you don't need this feature."
             "Delete the value if you don't need this feature."
         )
         )
-        grid1.addWidget(startzlabel, 4, 0)
+        grid1.addWidget(self.estartz_label, 4, 0)
         self.estartz_entry = FloatEntry()
         self.estartz_entry = FloatEntry()
         grid1.addWidget(self.estartz_entry, 4, 1)
         grid1.addWidget(self.estartz_entry, 4, 1)
 
 
         # End move Z:
         # End move Z:
-        endzlabel = QtWidgets.QLabel("End move Z:")
-        endzlabel.setToolTip(
+        self.eendz_label = QtWidgets.QLabel("End move Z:")
+        self.eendz_label.setToolTip(
             "Z-axis position (height) for\n"
             "Z-axis position (height) for\n"
             "the last move."
             "the last move."
         )
         )
-        grid1.addWidget(endzlabel, 5, 0)
+        grid1.addWidget(self.eendz_label, 5, 0)
         self.eendz_entry = LengthEntry()
         self.eendz_entry = LengthEntry()
         grid1.addWidget(self.eendz_entry, 5, 1)
         grid1.addWidget(self.eendz_entry, 5, 1)
 
 
@@ -593,13 +613,13 @@ class ExcellonObjectUI(ObjectUI):
         grid1.addWidget(self.feedrate_entry, 6, 1)
         grid1.addWidget(self.feedrate_entry, 6, 1)
 
 
         # Excellon Rapid Feedrate
         # Excellon Rapid Feedrate
-        fr_rapid_label = QtWidgets.QLabel('Feedrate Rapids:')
-        fr_rapid_label.setToolTip(
+        self.feedrate_rapid_label = QtWidgets.QLabel('Feedrate Rapids:')
+        self.feedrate_rapid_label.setToolTip(
             "Tool speed while drilling\n"
             "Tool speed while drilling\n"
             "(in units per minute).\n"
             "(in units per minute).\n"
             "This is for the rapid move G00."
             "This is for the rapid move G00."
         )
         )
-        grid1.addWidget(fr_rapid_label, 7, 0)
+        grid1.addWidget(self.feedrate_rapid_label, 7, 0)
         self.feedrate_rapid_entry = LengthEntry()
         self.feedrate_rapid_entry = LengthEntry()
         grid1.addWidget(self.feedrate_rapid_entry, 7, 1)
         grid1.addWidget(self.feedrate_rapid_entry, 7, 1)
 
 
@@ -753,6 +773,16 @@ class GeometryObjectUI(ObjectUI):
     def __init__(self, parent=None):
     def __init__(self, parent=None):
         super(GeometryObjectUI, self).__init__(title='Geometry Object', icon_file='share/geometry32.png', parent=parent)
         super(GeometryObjectUI, self).__init__(title='Geometry Object', icon_file='share/geometry32.png', parent=parent)
 
 
+        self.level = QtWidgets.QLabel("")
+        self.level.setToolTip(
+            "In the BASIC mode certain functionality's\n"
+            "are hidden from the user.\n"
+            "To enable them, go to:\n"
+            "Edit -> Preferences -> General and check:\n"
+            "'Show Advanced Options' checkbox."
+        )
+        self.custom_box.addWidget(self.level)
+
         # Plot options
         # Plot options
         self.plot_options_label = QtWidgets.QLabel("<b>Plot Options:</b>")
         self.plot_options_label = QtWidgets.QLabel("<b>Plot Options:</b>")
         self.custom_box.addWidget(self.plot_options_label)
         self.custom_box.addWidget(self.plot_options_label)
@@ -976,7 +1006,6 @@ class GeometryObjectUI(ObjectUI):
         )
         )
         self.grid3.addWidget(self.mpass_cb, 4, 0)
         self.grid3.addWidget(self.mpass_cb, 4, 0)
 
 
-
         self.maxdepth_entry = LengthEntry()
         self.maxdepth_entry = LengthEntry()
         self.maxdepth_entry.setToolTip(
         self.maxdepth_entry.setToolTip(
             "Depth of each pass (positive)."
             "Depth of each pass (positive)."
@@ -1026,12 +1055,12 @@ class GeometryObjectUI(ObjectUI):
         # self.grid3.addWidget(self.gstartz_entry, 8, 1)
         # self.grid3.addWidget(self.gstartz_entry, 8, 1)
 
 
         # The Z value for the end move
         # The Z value for the end move
-        endzlabel = QtWidgets.QLabel('End move Z:')
-        endzlabel.setToolTip(
+        self.endzlabel = QtWidgets.QLabel('End move Z:')
+        self.endzlabel.setToolTip(
             "This is the height (Z) at which the CNC\n"
             "This is the height (Z) at which the CNC\n"
             "will go as the last move."
             "will go as the last move."
         )
         )
-        self.grid3.addWidget(endzlabel, 9, 0)
+        self.grid3.addWidget(self.endzlabel, 9, 0)
         self.gendz_entry = LengthEntry()
         self.gendz_entry = LengthEntry()
         self.grid3.addWidget(self.gendz_entry, 9, 1)
         self.grid3.addWidget(self.gendz_entry, 9, 1)
 
 
@@ -1056,13 +1085,13 @@ class GeometryObjectUI(ObjectUI):
         self.grid3.addWidget(self.cncplunge_entry, 11, 1)
         self.grid3.addWidget(self.cncplunge_entry, 11, 1)
 
 
         # Feedrate rapids
         # Feedrate rapids
-        fr_rapidlabel = QtWidgets.QLabel('Feed Rate Rapids:')
-        fr_rapidlabel.setToolTip(
+        self.fr_rapidlabel = QtWidgets.QLabel('Feed Rate Rapids:')
+        self.fr_rapidlabel.setToolTip(
             "Cutting speed in the XY\n"
             "Cutting speed in the XY\n"
             "plane in units per minute\n"
             "plane in units per minute\n"
             "for the rapid movements"
             "for the rapid movements"
         )
         )
-        self.grid3.addWidget(fr_rapidlabel, 12, 0)
+        self.grid3.addWidget(self.fr_rapidlabel, 12, 0)
         self.cncfeedrate_rapid_entry = LengthEntry()
         self.cncfeedrate_rapid_entry = LengthEntry()
         self.grid3.addWidget(self.cncfeedrate_rapid_entry, 12, 1)
         self.grid3.addWidget(self.cncfeedrate_rapid_entry, 12, 1)
 
 
@@ -1182,6 +1211,16 @@ class CNCObjectUI(ObjectUI):
 
 
         ObjectUI.__init__(self, title='CNC Job Object', icon_file='share/cnc32.png', parent=parent)
         ObjectUI.__init__(self, title='CNC Job Object', icon_file='share/cnc32.png', parent=parent)
 
 
+        self.level = QtWidgets.QLabel("")
+        self.level.setToolTip(
+            "In the BASIC mode certain functionality's\n"
+            "are hidden from the user.\n"
+            "To enable them, go to:\n"
+            "Edit -> Preferences -> General and check:\n"
+            "'Show Advanced Options' checkbox."
+        )
+        self.custom_box.addWidget(self.level)
+
         # Scale and offset ans skew are not available for CNCJob objects.
         # Scale and offset ans skew are not available for CNCJob objects.
         # Hiding from the GUI.
         # Hiding from the GUI.
         for i in range(0, self.scale_grid.count()):
         for i in range(0, self.scale_grid.count()):

+ 1 - 0
README.md

@@ -25,6 +25,7 @@ CAD program, and create G-Code for Isolation routing.
 - added a button to clear de GUI preferences in Preferences -> General -> Gui Settings -> Clear GUI Settings
 - added a button to clear de GUI preferences in Preferences -> General -> Gui Settings -> Clear GUI Settings
 - added key shortcuts for the shape transformations within Geometry Editor: X, Y keys for Flip(mirror), SHIFT+X, SHIFT+Y combo keys for Skew and ALT+X, ALT+Y combo keys for Offset
 - added key shortcuts for the shape transformations within Geometry Editor: X, Y keys for Flip(mirror), SHIFT+X, SHIFT+Y combo keys for Skew and ALT+X, ALT+Y combo keys for Offset
 - adjusted the plotcanvas.zomm_fit() function so the objects are better fit into view (with a border around) 
 - adjusted the plotcanvas.zomm_fit() function so the objects are better fit into view (with a border around) 
+- modified the GUI in Objects Selected Tab to accommodate 2 different modes: basic and Advanced. In Basic mode, some of the functionality's are hidden from the user.
 
 
 17.02.2019
 17.02.2019