From 09acabc0c18c9795feabffddfb68cde912f77fcc Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 25 Dec 2020 21:35:43 +0200 Subject: [PATCH] - Geometry Editor - added a Beginner/Advanced toggle button - Geometry Editor - made sure that on right clicking in the Table the geometric element associated with the row under mouse cursor is selected --- CHANGELOG.md | 2 + appEditors/AppGeoEditor.py | 107 ++++++++++++++++++++++++++++++------- 2 files changed, 90 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c755174..4da4281e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ CHANGELOG for FlatCAM beta - Excellon Editor - added a Beginner/Advanced toggle button; added context menu to Tools Table - Excellon Editor - fixed the Tools Table row selection handler - GCode Editor - added a Beginner/Advanced toggle button +- Geometry Editor - added a Beginner/Advanced toggle button +- Geometry Editor - made sure that on right clicking in the Table the geometric element associated with the row under mouse cursor is selected 23.12.2020 diff --git a/appEditors/AppGeoEditor.py b/appEditors/AppGeoEditor.py index 0f7bdfc1..3da55bc2 100644 --- a/appEditors/AppGeoEditor.py +++ b/appEditors/AppGeoEditor.py @@ -2654,7 +2654,7 @@ class FCSelect(DrawTool): # if selection is done on canvas update the Tree in Properties Tab with the selection try: - self.draw_app.tw.itemClicked.disconnect(self.draw_app.on_tree_geo_click) + self.draw_app.tw.itemPressed.disconnect(self.draw_app.on_tree_geo_click) except (AttributeError, TypeError): pass @@ -2671,7 +2671,7 @@ class FCSelect(DrawTool): iterator += 1 - self.draw_app.tw.itemClicked.connect(self.draw_app.on_tree_geo_click) + self.draw_app.tw.itemPressed.connect(self.draw_app.on_tree_geo_click) # self.draw_app.tw.itemClicked.emit(self.draw_app.tw.currentItem(), 0) self.draw_app.update_ui() @@ -3393,19 +3393,29 @@ class AppGeoEditor(QtCore.QObject): self.title_label = FCLabel("%s" % _('Geometry Editor')) self.title_label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) self.title_box.addWidget(self.title_label, stretch=1) - self.title_box.addWidget(FCLabel('')) - grid0 = QtWidgets.QGridLayout() - grid0.setColumnStretch(0, 0) - grid0.setColumnStretch(1, 1) - self.tools_box.addLayout(grid0) + # App Level label + self.level = QtWidgets.QToolButton() + self.level.setToolTip( + _( + "BASIC is suitable for a beginner. Many parameters\n" + "are hidden from the user in this mode.\n" + "ADVANCED mode will make available all parameters.\n\n" + "To change the application LEVEL, go to:\n" + "Edit -> Preferences -> General and check:\n" + "'APP. LEVEL' radio button." + ) + ) + # self.level.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) + self.level.setCheckable(True) + self.title_box.addWidget(self.level) # Tree Widget Title tw_label = FCLabel('%s:' % _("Geometry Table")) tw_label.setToolTip( _("The list of geometry elements inside the edited object.") ) - grid0.addWidget(tw_label, 0, 0, 1, 3) + self.tools_box.addWidget(tw_label) # Tree Widget self.tw = FCTree(columns=3, header_hidden=False, protected_column=[0, 1], extended_sel=True) @@ -3414,27 +3424,40 @@ class AppGeoEditor(QtCore.QObject): self.tw.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.tw.header().setStretchLastSection(True) self.tw.header().setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents) - grid0.addWidget(self.tw, 2, 0, 1, 3) + self.tools_box.addWidget(self.tw) self.geo_font = QtGui.QFont() self.geo_font.setBold(True) self.geo_parent = self.tw.invisibleRootItem() + # ############################################################################################################# + # ############################################ Advanced Editor ################################################ + # ############################################################################################################# + self.adv_frame = QtWidgets.QFrame() + self.adv_frame.setContentsMargins(0, 0, 0, 0) + self.tools_box.addWidget(self.adv_frame) + + grid0 = QtWidgets.QGridLayout() + grid0.setColumnStretch(0, 0) + grid0.setColumnStretch(1, 1) + grid0.setContentsMargins(0, 0, 0, 0) + self.adv_frame.setLayout(grid0) + # Zoom Selection self.geo_zoom = FCCheckBox(_("Zoom on selection")) - grid0.addWidget(self.geo_zoom, 4, 0, 1, 3) + grid0.addWidget(self.geo_zoom, 0, 0, 1, 3) separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) - grid0.addWidget(separator_line, 6, 0, 1, 3) + grid0.addWidget(separator_line, 2, 0, 1, 3) # Parameters Title param_title = FCLabel('%s:' % _("Parameters")) param_title.setToolTip( _("Geometry parameters.") ) - grid0.addWidget(param_title, 8, 0, 1, 3) + grid0.addWidget(param_title, 4, 0, 1, 3) # Is Valid is_valid_lbl = FCLabel('%s:' % _("Is Valid")) @@ -3659,6 +3682,7 @@ class AppGeoEditor(QtCore.QObject): # ####################### GEOMETRY Editor Signals ############################################################# # ############################################################################################################# self.build_ui_sig.connect(self.build_ui) + self.level.toggled.connect(self.on_level_changed) self.app.ui.grid_gap_x_entry.textChanged.connect(self.on_gridx_val_changed) self.app.ui.grid_gap_y_entry.textChanged.connect(self.on_gridy_val_changed) @@ -3808,7 +3832,7 @@ class AppGeoEditor(QtCore.QObject): def on_gridy_val_changed(self): self.entry2option("global_gridy", self.app.ui.grid_gap_y_entry) - def set_ui(self): + def set_editor_ui(self): # updated units self.units = self.app.defaults['units'].upper() self.decimals = self.app.decimals @@ -3830,6 +3854,10 @@ class AppGeoEditor(QtCore.QObject): self.geo_tol_entry.set_value(0.01 if self.units == 'MM' else 0.0004) self.geo_zoom.set_value(False) + # Show/Hide Advanced Options + app_mode = self.app.defaults["global_app_level"] + self.change_level(app_mode) + def build_ui(self): """ Build the appGUI in the Properties Tab for this editor @@ -3981,13 +4009,54 @@ class AppGeoEditor(QtCore.QObject): self.app.inform.emit('%s: %s' % (_("Last selected shape ID"), str(last_id))) def on_tree_geo_click(self): - try: self.update_ui() self.plot_all() except Exception as e: self.app.log.debug("APpGeoEditor.on_tree_selection_change() -> %s" % str(e)) + def change_level(self, level): + """ + + :param level: application level: either 'b' or 'a' + :type level: str + :return: + """ + + if level == 'a': + self.level.setChecked(True) + else: + self.level.setChecked(False) + self.on_level_changed(self.level.isChecked()) + + def on_level_changed(self, checked): + if not checked: + self.level.setText('%s' % _('Beginner')) + self.level.setStyleSheet(""" + QToolButton + { + color: green; + } + """) + + self.adv_frame.hide() + + # Context Menu section + # self.tw.removeContextMenu() + else: + self.level.setText('%s' % _('Advanced')) + self.level.setStyleSheet(""" + QToolButton + { + color: red; + } + """) + + self.adv_frame.show() + + # Context Menu section + # self.tw.setupContextMenu() + def on_simplification_click(self): self.app.log.debug("AppGeoEditor.on_simplification_click()") @@ -4124,7 +4193,7 @@ class AppGeoEditor(QtCore.QObject): self.item_selected.connect(self.on_geo_elem_selected) # ## appGUI Events - self.tw.itemClicked.connect(self.on_tree_geo_click) + self.tw.itemPressed.connect(self.on_tree_geo_click) # self.tw.keyPressed.connect(self.app.ui.keyPressEvent) # self.tw.customContextMenuRequested.connect(self.on_menu_request) @@ -4184,7 +4253,7 @@ class AppGeoEditor(QtCore.QObject): try: # ## appGUI Events - self.tw.itemClicked.disconnect(self.on_tree_geo_click) + self.tw.itemPressed.disconnect(self.on_tree_geo_click) # self.tw.keyPressed.connect(self.app.ui.keyPressEvent) # self.tw.customContextMenuRequested.connect(self.on_menu_request) except (AttributeError, TypeError): @@ -4800,7 +4869,7 @@ class AppGeoEditor(QtCore.QObject): # ######### if selection is done on canvas update the Tree in Selected Tab with the selection ############### # ############################################################################################################# try: - self.tw.itemClicked.disconnect(self.on_tree_geo_click) + self.tw.itemPressed.disconnect(self.on_tree_geo_click) except (AttributeError, TypeError): pass @@ -4834,7 +4903,7 @@ class AppGeoEditor(QtCore.QObject): self.geo_vertex_entry.set_value(vertex_nr) - self.tw.itemClicked.connect(self.on_tree_geo_click) + self.tw.itemPressed.connect(self.on_tree_geo_click) self.plot_all() @@ -5183,7 +5252,7 @@ class AppGeoEditor(QtCore.QObject): self.deactivate() self.activate() - self.set_ui() + self.set_editor_ui() self.units = self.app.defaults['units']