diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d360edb..276cbca5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ CHANGELOG for FlatCAM beta - Milling UI - clicking the 'Beginner/Advanced' top button will switch the application mode for the current tool(this change need to be propagated everywhere a 'Beginner' mode is needed) - fixed the on_delete() method in the App class; sometime it will delete all files that have similar names - made sure that on creation of new objects the adding of the names to the auto-complete list is done properly +- Drilling Tool - remade the 'Beginner/Advanced' Mode 8.12.2020 diff --git a/appTools/ToolDrilling.py b/appTools/ToolDrilling.py index c8463547..c5b3b2b0 100644 --- a/appTools/ToolDrilling.py +++ b/appTools/ToolDrilling.py @@ -277,6 +277,8 @@ class ToolDrilling(AppTool, Excellon): # ############################################################################# self.builduiSig.connect(self.build_tool_ui) + self.ui.level.toggled.connect(self.on_level_changed) + self.ui.search_load_db_btn.clicked.connect(self.on_tool_db_load) self.ui.apply_param_to_all.clicked.connect(self.on_apply_param_to_all_clicked) @@ -329,16 +331,9 @@ class ToolDrilling(AppTool, Excellon): for it in range(self.ui.pp_excellon_name_cb.count()): self.ui.pp_excellon_name_cb.setItemData(it, self.ui.pp_excellon_name_cb.itemText(it), QtCore.Qt.ToolTipRole) - app_mode = self.app.defaults["global_app_level"] # Show/Hide Advanced Options - if app_mode == 'b': - self.ui.level.setText('%s' % _('Basic')) - self.ui.estartz_label.hide() - self.ui.estartz_entry.hide() - else: - self.ui.level.setText('%s' % _('Advanced')) - self.ui.estartz_label.show() - self.ui.estartz_entry.show() + app_mode = self.app.defaults["global_app_level"] + self.change_level(app_mode) self.ui.tools_frame.show() @@ -482,6 +477,112 @@ class ToolDrilling(AppTool, Excellon): pass self.ui.object_combo.currentTextChanged.connect(self.on_object_changed) + def change_level(self, level): + """ + + :param level: application level: either 'b' or 'a' + :type level: str + :return: + """ + + if level == 'a': + self.ui.level.setChecked(True) + else: + self.ui.level.setChecked(False) + + def on_level_changed(self, checked): + + loaded_obj = self.app.collection.get_by_name(self.ui.object_combo.get_value()) + + if not checked: + self.ui.level.setText('%s' % _('Beginner')) + self.ui.level.setStyleSheet(""" + QToolButton + { + color: green; + } + """) + + # Tool parameters section + if loaded_obj: + for tool in loaded_obj.tools: + tool_data = loaded_obj.tools[tool]['data'] + + tool_data['tools_drill_multidepth'] = False + tool_data['tools_drill_dwell'] = False + tool_data['tools_drill_drill_slots'] = False + + tool_data['tools_drill_toolchangexy'] = '' + tool_data['tools_drill_area_exclusion'] = False + + self.ui.mpass_cb.hide() + self.ui.maxdepth_entry.hide() + + self.ui.dwell_cb.hide() + self.ui.dwelltime_entry.hide() + + self.ui.tool_offset_label.hide() + self.ui.offset_entry.hide() + + self.ui.drill_slots_cb.hide() + + # All param section + self.ui.all_param_separator_line2.hide() + self.ui.apply_param_to_all.hide() + + # General param + self.ui.estartz_label.hide() + self.ui.estartz_entry.hide() + self.ui.endmove_xy_label.hide() + self.ui.endxy_entry.hide() + + self.ui.exclusion_cb.hide() + + else: + self.ui.level.setText('%s' % _('Advanced')) + self.ui.level.setStyleSheet(""" + QToolButton + { + color: red; + } + """) + + # Tool parameters section + if loaded_obj: + app_defaults = self.app.defaults + for tool in loaded_obj.tools: + tool_data = loaded_obj.tools[tool]['data'] + + tool_data['tools_drill_multidepth'] = app_defaults['tools_drill_multidepth'] + tool_data['tools_drill_dwell'] = app_defaults['tools_drill_dwell'] + tool_data['tools_drill_drill_slots'] = app_defaults['tools_drill_drill_slots'] + + tool_data['tools_drill_toolchangexy'] = app_defaults['tools_drill_toolchangexy'] + tool_data['tools_drill_area_exclusion'] = app_defaults['tools_drill_area_exclusion'] + + self.ui.mpass_cb.show() + self.ui.maxdepth_entry.show() + + self.ui.dwell_cb.show() + self.ui.dwelltime_entry.show() + + self.ui.tool_offset_label.show() + self.ui.offset_entry.show() + + self.ui.drill_slots_cb.show() + + # All param section + self.ui.all_param_separator_line2.show() + self.ui.apply_param_to_all.show() + + # General param + self.ui.estartz_label.show() + self.ui.estartz_entry.show() + self.ui.endmove_xy_label.show() + self.ui.endxy_entry.show() + + self.ui.exclusion_cb.show() + # update the changes in UI depending on the selected preprocessor in Preferences # after this moment all the changes in the Posprocessor combo will be handled by the activated signal of the # self.ui.pp_excellon_name_cb combobox @@ -1318,6 +1419,7 @@ class ToolDrilling(AppTool, Excellon): if 'laser' in current_pp.lower(): self.ui.cutzlabel.hide() self.ui.cutz_entry.hide() + try: self.ui.mpass_cb.hide() self.ui.maxdepth_entry.hide() @@ -1357,11 +1459,14 @@ class ToolDrilling(AppTool, Excellon): else: self.ui.cutzlabel.show() self.ui.cutz_entry.show() - try: - self.ui.mpass_cb.show() - self.ui.maxdepth_entry.show() - except AttributeError: - pass + + # if in Advanced Mode + if self.ui.level.isChecked(): + try: + self.ui.mpass_cb.show() + self.ui.maxdepth_entry.show() + except AttributeError: + pass self.ui.travelzlabel.setText('%s:' % _('Travel Z')) @@ -1376,16 +1481,19 @@ class ToolDrilling(AppTool, Excellon): self.ui.feedrate_z_entry.show() except AttributeError: pass - self.ui.dwell_cb.show() - self.ui.dwelltime_entry.show() self.ui.spindle_label.setText('%s:' % _('Spindle speed')) - try: - self.ui.tool_offset_label.show() - self.ui.offset_entry.show() - except AttributeError: - pass + # if in Advanced Mode + if self.ui.level.isChecked(): + self.ui.dwell_cb.show() + self.ui.dwelltime_entry.show() + + try: + self.ui.tool_offset_label.show() + self.ui.offset_entry.show() + except AttributeError: + pass def on_key_press(self, event): # modifiers = QtWidgets.QApplication.keyboardModifiers() @@ -2124,7 +2232,7 @@ class DrillingUI: self.title_box.addWidget(title_label) # App Level label - self.level = QtWidgets.QLabel("") + self.level = QtWidgets.QToolButton() self.level.setToolTip( _( "BASIC is suitable for a beginner. Many parameters\n" @@ -2135,7 +2243,8 @@ class DrillingUI: "'APP. LEVEL' radio button." ) ) - self.level.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) + # self.level.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) + self.level.setCheckable(True) self.title_box.addWidget(self.level) # Grid Layout @@ -2471,10 +2580,10 @@ class DrillingUI: self.grid3.setColumnStretch(1, 1) self.exc_tools_box.addLayout(self.grid3) - separator_line2 = QtWidgets.QFrame() - separator_line2.setFrameShape(QtWidgets.QFrame.HLine) - separator_line2.setFrameShadow(QtWidgets.QFrame.Sunken) - self.grid3.addWidget(separator_line2, 0, 0, 1, 2) + self.all_param_separator_line2 = QtWidgets.QFrame() + self.all_param_separator_line2.setFrameShape(QtWidgets.QFrame.HLine) + self.all_param_separator_line2.setFrameShadow(QtWidgets.QFrame.Sunken) + self.grid3.addWidget(self.all_param_separator_line2, 0, 0, 1, 2) self.apply_param_to_all = FCButton(_("Apply parameters to all tools")) self.apply_param_to_all.setIcon(QtGui.QIcon(self.app.resource_location + '/param_all32.png')) @@ -2559,8 +2668,8 @@ class DrillingUI: self.grid3.addWidget(self.endz_entry, 11, 1) # End Move X,Y - endmove_xy_label = QtWidgets.QLabel('%s:' % _('End move X,Y')) - endmove_xy_label.setToolTip( + self.endmove_xy_label = QtWidgets.QLabel('%s:' % _('End move X,Y')) + self.endmove_xy_label.setToolTip( _("End move X,Y position. In format (x,y).\n" "If no value is entered then there is no move\n" "on X,Y plane at the end of the job.") @@ -2569,7 +2678,7 @@ class DrillingUI: self.endxy_entry.setPlaceholderText(_("X,Y coordinates")) self.endxy_entry.setObjectName("e_endxy") - self.grid3.addWidget(endmove_xy_label, 12, 0) + self.grid3.addWidget(self.endmove_xy_label, 12, 0) self.grid3.addWidget(self.endxy_entry, 12, 1) # Probe depth diff --git a/appTools/ToolMilling.py b/appTools/ToolMilling.py index 752487f7..b1bd251c 100644 --- a/appTools/ToolMilling.py +++ b/appTools/ToolMilling.py @@ -344,12 +344,7 @@ class ToolMilling(AppTool, Excellon): # Fill form fields self.to_form() - # update the changes in UI depending on the selected preprocessor in Preferences - # after this moment all the changes in the Posprocessor combo will be handled by the activated signal of the - # self.ui.pp_excellon_name_cb combobox - # self.on_pp_changed() - # - # # Show/Hide Advanced Options + # Show/Hide Advanced Options app_mode = self.app.defaults["global_app_level"] self.change_level(app_mode) @@ -661,7 +656,7 @@ class ToolMilling(AppTool, Excellon): # update the changes in UI depending on the selected preprocessor in Preferences # after this moment all the changes in the Posprocessor combo will be handled by the activated signal of the - # self.ui.pp_excellon_name_cb combobox + # pp combobox self.on_pp_changed() def on_exc_rebuild_ui(self): @@ -3106,13 +3101,11 @@ class ToolMilling(AppTool, Excellon): self.ui.travelzlabel.hide() self.ui.travelz_entry.hide() - # if in Advanced Mode - if self.ui.level.isChecked(): - try: - self.ui.mpass_cb.hide() - self.ui.maxdepth_entry.hide() - except AttributeError: - pass + try: + self.ui.mpass_cb.hide() + self.ui.maxdepth_entry.hide() + except AttributeError: + pass try: self.ui.frzlabel.hide()