mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	NEW: add menu item of per object process
Change-Id: I09c7516903e59e976f582d7efaff33cc3033c820 Signed-off-by: Stone Li <stone.li@bambulab.com>
This commit is contained in:
		
							parent
							
								
									e50d75026a
								
							
						
					
					
						commit
						2b23e3c119
					
				
					 6 changed files with 37 additions and 7 deletions
				
			
		|  | @ -979,6 +979,7 @@ void MenuFactory::create_bbl_object_menu() | ||||||
|     // Set filament insert menu item here
 |     // Set filament insert menu item here
 | ||||||
|     // Set Printable
 |     // Set Printable
 | ||||||
|     wxMenuItem* menu_item_printable = append_menu_item_printable(&m_object_menu); |     wxMenuItem* menu_item_printable = append_menu_item_printable(&m_object_menu); | ||||||
|  |     append_menu_item_per_object_process(&m_object_menu); | ||||||
|     // Enter per object parameters
 |     // Enter per object parameters
 | ||||||
|     append_menu_item_per_object_settings(&m_object_menu); |     append_menu_item_per_object_settings(&m_object_menu); | ||||||
|     m_object_menu.AppendSeparator(); |     m_object_menu.AppendSeparator(); | ||||||
|  | @ -1363,6 +1364,19 @@ void MenuFactory::append_menu_item_center(wxMenu* menu) | ||||||
|         }, m_parent); |         }, m_parent); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void MenuFactory::append_menu_item_per_object_process(wxMenu* menu) | ||||||
|  | { | ||||||
|  |     const std::vector<wxString> names = {_L("Edit Object Process"), _L("Edit Object Process")}; | ||||||
|  |     append_menu_item(menu, wxID_ANY, names[0], names[1], | ||||||
|  |         [](wxCommandEvent&) { | ||||||
|  |             wxGetApp().obj_list()->switch_to_object_process(); | ||||||
|  |         }, "", nullptr, | ||||||
|  |         []() { | ||||||
|  |             Selection& selection = plater()->canvas3D()->get_selection(); | ||||||
|  |             return selection.is_single_full_object() || selection.is_single_full_instance() || selection.is_single_volume(); | ||||||
|  |         }, m_parent); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void MenuFactory::append_menu_item_per_object_settings(wxMenu* menu) | void MenuFactory::append_menu_item_per_object_settings(wxMenu* menu) | ||||||
| { | { | ||||||
|     const std::vector<wxString> names = { _L("Edit in Parameter Table"), _L("Edit print parameters for a single object") }; |     const std::vector<wxString> names = { _L("Edit in Parameter Table"), _L("Edit print parameters for a single object") }; | ||||||
|  |  | ||||||
|  | @ -140,6 +140,7 @@ private: | ||||||
|     void        append_menu_item_clone(wxMenu* menu); |     void        append_menu_item_clone(wxMenu* menu); | ||||||
|     void        append_menu_item_simplify(wxMenu* menu); |     void        append_menu_item_simplify(wxMenu* menu); | ||||||
|     void        append_menu_item_center(wxMenu* menu); |     void        append_menu_item_center(wxMenu* menu); | ||||||
|  |     void        append_menu_item_per_object_process(wxMenu* menu); | ||||||
|     void        append_menu_item_per_object_settings(wxMenu* menu); |     void        append_menu_item_per_object_settings(wxMenu* menu); | ||||||
|     void        append_menu_item_change_filament(wxMenu* menu); |     void        append_menu_item_change_filament(wxMenu* menu); | ||||||
|     void        append_menu_item_set_printable(wxMenu* menu); |     void        append_menu_item_set_printable(wxMenu* menu); | ||||||
|  |  | ||||||
|  | @ -1979,7 +1979,18 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode | ||||||
| 
 | 
 | ||||||
|     //Show Dialog
 |     //Show Dialog
 | ||||||
|     if (wxGetApp().app_config->get("do_not_show_modifer_tips").empty()) { |     if (wxGetApp().app_config->get("do_not_show_modifer_tips").empty()) { | ||||||
|         TipsDialog dlg(wxGetApp().mainframe, _L("Add Modifier")); |         TipsDialog dlg(wxGetApp().mainframe, _L("Add Modifier"), _L("Switch to per-object setting mode to edit modifier settings."), "do_not_show_modifer_tips"); | ||||||
|  |         dlg.ShowModal(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void ObjectList::switch_to_object_process() | ||||||
|  | { | ||||||
|  |     wxGetApp().params_panel()->switch_to_object(true); | ||||||
|  | 
 | ||||||
|  |     // Show Dialog
 | ||||||
|  |     if (wxGetApp().app_config->get("do_not_show_object_process_tips").empty()) { | ||||||
|  |         TipsDialog dlg(wxGetApp().mainframe, _L("Edit Object Process"), _L("Switch to per-object setting mode to edit object process."), "do_not_show_object_process_tips"); | ||||||
|         dlg.ShowModal(); |         dlg.ShowModal(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -282,6 +282,7 @@ public: | ||||||
|     void                load_shape_object(const std::string &type_name); |     void                load_shape_object(const std::string &type_name); | ||||||
|     void                load_mesh_object(const TriangleMesh &mesh, const wxString &name, bool center = true); |     void                load_mesh_object(const TriangleMesh &mesh, const wxString &name, bool center = true); | ||||||
|     // BBS
 |     // BBS
 | ||||||
|  |     void                switch_to_object_process(); | ||||||
|     void                load_mesh_part(const TriangleMesh& mesh, const wxString& name, bool center = true); |     void                load_mesh_part(const TriangleMesh& mesh, const wxString& name, bool center = true); | ||||||
|     void                del_object(const int obj_idx, bool refresh_immediately = true); |     void                del_object(const int obj_idx, bool refresh_immediately = true); | ||||||
|     void                del_subobject_item(wxDataViewItem& item); |     void                del_subobject_item(wxDataViewItem& item); | ||||||
|  |  | ||||||
|  | @ -22,8 +22,9 @@ namespace Slic3r { | ||||||
| namespace GUI { | namespace GUI { | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| TipsDialog::TipsDialog(wxWindow *parent, const wxString &title) | TipsDialog::TipsDialog(wxWindow *parent, const wxString &title, const wxString &description, std::string app_key) | ||||||
|     : DPIDialog(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) |     : DPIDialog(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX), | ||||||
|  |     m_app_key(app_key) | ||||||
| { | { | ||||||
|     SetBackgroundColour(*wxWHITE); |     SetBackgroundColour(*wxWHITE); | ||||||
|     std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % resources_dir()).str(); |     std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % resources_dir()).str(); | ||||||
|  | @ -38,7 +39,7 @@ TipsDialog::TipsDialog(wxWindow *parent, const wxString &title) | ||||||
| 
 | 
 | ||||||
|     m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(20)); |     m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(20)); | ||||||
| 
 | 
 | ||||||
|     m_msg = new wxStaticText(this, wxID_ANY, _L("Switch to per-object setting mode to edit modifier settings."), wxDefaultPosition, wxDefaultSize, 0); |     m_msg = new wxStaticText(this, wxID_ANY, description, wxDefaultPosition, wxDefaultSize, 0); | ||||||
|     m_msg->Wrap(-1); |     m_msg->Wrap(-1); | ||||||
|     m_msg->SetFont(::Label::Body_13); |     m_msg->SetFont(::Label::Body_13); | ||||||
|     m_msg->SetForegroundColour(wxColour(107, 107, 107)); |     m_msg->SetForegroundColour(wxColour(107, 107, 107)); | ||||||
|  | @ -51,7 +52,7 @@ TipsDialog::TipsDialog(wxWindow *parent, const wxString &title) | ||||||
|     wxBoxSizer *m_sizer_bottom = new wxBoxSizer(wxHORIZONTAL); |     wxBoxSizer *m_sizer_bottom = new wxBoxSizer(wxHORIZONTAL); | ||||||
|     wxBoxSizer *m_sizer_left   = new wxBoxSizer(wxHORIZONTAL); |     wxBoxSizer *m_sizer_left   = new wxBoxSizer(wxHORIZONTAL); | ||||||
| 
 | 
 | ||||||
|     auto dont_show_again = create_item_checkbox(_L("Don't show again"), this, _L("Don't show again"), "do_not_show_modifer_tips"); |     auto dont_show_again = create_item_checkbox(_L("Don't show again"), this, _L("Don't show again"), "do_not_show_tips"); | ||||||
|     m_sizer_left->Add(dont_show_again, 1, wxALL, FromDIP(5)); |     m_sizer_left->Add(dont_show_again, 1, wxALL, FromDIP(5)); | ||||||
| 
 | 
 | ||||||
|     m_sizer_bottom->Add(m_sizer_left, 1, wxEXPAND, FromDIP(5)); |     m_sizer_bottom->Add(m_sizer_left, 1, wxEXPAND, FromDIP(5)); | ||||||
|  | @ -119,7 +120,8 @@ void TipsDialog::on_dpi_changed(const wxRect &suggested_rect) | ||||||
| void TipsDialog::on_ok(wxMouseEvent &event) | void TipsDialog::on_ok(wxMouseEvent &event) | ||||||
| { | { | ||||||
|     if (m_show_again) { |     if (m_show_again) { | ||||||
|         wxGetApp().app_config->set_bool("do_not_show_modifer_tips", m_show_again); |         if (!m_app_key.empty()) | ||||||
|  |         wxGetApp().app_config->set_bool(m_app_key, m_show_again); | ||||||
|     } |     } | ||||||
|     EndModal(wxID_OK); |     EndModal(wxID_OK); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -43,9 +43,10 @@ class TipsDialog : public DPIDialog | ||||||
| { | { | ||||||
| private: | private: | ||||||
|     bool m_show_again{false}; |     bool m_show_again{false}; | ||||||
|  |     std::string m_app_key; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     TipsDialog(wxWindow *parent, const wxString &title); |     TipsDialog(wxWindow *parent, const wxString &title, const wxString &description, std::string app_key = ""); | ||||||
|     Button *m_confirm{nullptr}; |     Button *m_confirm{nullptr}; | ||||||
|     Button *m_cancel{nullptr}; |     Button *m_cancel{nullptr}; | ||||||
|     wxPanel *m_top_line{nullptr}; |     wxPanel *m_top_line{nullptr}; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Stone Li
						Stone Li