mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	Billet for the part of the expert view mode
This commit is contained in:
		
							parent
							
								
									622c613b41
								
							
						
					
					
						commit
						6e2d72f35c
					
				
					 4 changed files with 67 additions and 44 deletions
				
			
		|  | @ -886,35 +886,28 @@ wxString from_u8(const std::string &str) | |||
| 	return wxString::FromUTF8(str.c_str()); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| void add_expert_mode_part(wxWindow* parent, wxBoxSizer* sizer) | ||||
| // add PrusaCollapsiblePane to sizer
 | ||||
| void add_prusa_collapsible_pane(wxWindow* parent, wxBoxSizer* sizer_parent, const wxString& name, std::function<wxSizer *(wxWindow *)> content_function) | ||||
| { | ||||
|  	sizer->SetMinSize(-1, 150); | ||||
| 	auto main_sizer = new wxBoxSizer(wxVERTICAL); | ||||
| 	auto main_page = new wxScrolledWindow(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); | ||||
| 	main_page->SetSizer(main_sizer); | ||||
| 	main_page->SetScrollbars(1, 1, 1, 1); | ||||
| 	sizer->Add(main_page, 1, wxEXPAND | wxALL, 1); | ||||
| 
 | ||||
| 	// Experiments with new UI
 | ||||
| // 	wxSizer *paneSz = new wxBoxSizer(wxVERTICAL);
 | ||||
| // 	paneSz->Add(m_optgroup->sizer, 1, wxGROW | wxEXPAND | wxLEFT | wxRIGHT, 5);
 | ||||
| // 	win->SetSizer(paneSz);
 | ||||
| // 	paneSz->SetSizeHints(win);
 | ||||
| 
 | ||||
| 	// *** Objects List ***
 | ||||
| 	auto *collpane_objects = new PrusaCollapsiblePane(main_page, wxID_ANY, "Objects List:"); | ||||
| 	auto *collpane = new PrusaCollapsiblePane(parent, wxID_ANY, name); | ||||
| 	// add the pane with a zero proportion value to the sizer which contains it
 | ||||
| 	main_sizer->Add(collpane_objects, 0, wxGROW | wxALL, 0); | ||||
| 	sizer_parent->Add(collpane, 0, wxGROW | wxALL, 0); | ||||
| 
 | ||||
| 	wxWindow *win_objects = collpane_objects->GetPane(); | ||||
| 	wxWindow *win = collpane->GetPane(); | ||||
| 
 | ||||
| 	// **********************************************************************************************
 | ||||
| 	auto objects_ctrl = new wxDataViewCtrl(win_objects, wxID_ANY, wxDefaultPosition, wxDefaultSize); | ||||
| 	wxSizer *objects_sz = new wxBoxSizer(wxVERTICAL); | ||||
| 	objects_ctrl->SetBestFittingSize(wxSize(-1, 200));  | ||||
| 	// TODO - Set correct height according to the opened/closed objects
 | ||||
| //	objects_ctrl->SetMinSize(wxSize(-1, 200));
 | ||||
| 	wxSizer *sizer = content_function(win); | ||||
| 
 | ||||
| 	wxSizer *sizer_pane = new wxBoxSizer(wxVERTICAL); | ||||
| 	sizer_pane->Add(sizer, 1, wxGROW | wxEXPAND | wxBOTTOM, 2); | ||||
| 	win->SetSizer(sizer_pane); | ||||
| 	sizer_pane->SetSizeHints(win); | ||||
| } | ||||
| 
 | ||||
| wxBoxSizer* content_objects_list(wxWindow *win) | ||||
| { | ||||
| 	auto objects_ctrl = new wxDataViewCtrl(win, wxID_ANY, wxDefaultPosition, wxDefaultSize); | ||||
| 	objects_ctrl->SetBestFittingSize(wxSize(-1, 150)); // TODO - Set correct height according to the opened/closed objects
 | ||||
| 	auto objects_sz = new wxBoxSizer(wxVERTICAL); | ||||
| 	objects_sz->Add(objects_ctrl, 1, wxGROW | wxALL, 5); | ||||
| 
 | ||||
| 	auto objects_model = new MyObjectTreeModel; | ||||
|  | @ -945,19 +938,44 @@ void add_expert_mode_part(wxWindow* parent, wxBoxSizer* sizer) | |||
| 		wxDATAVIEW_COL_SORTABLE | wxDATAVIEW_COL_RESIZABLE); | ||||
| 	objects_ctrl->AppendColumn(column02); | ||||
| 
 | ||||
| // 	common_sizer->Add(objects_sz, 0, wxEXPAND | wxALL, 1);
 | ||||
| 	return objects_sz; | ||||
| } | ||||
| 
 | ||||
| 	wxSizer *paneSz_objects = new wxBoxSizer(wxVERTICAL); | ||||
| 	paneSz_objects->Add(objects_sz, 1, wxGROW | wxEXPAND | wxBOTTOM, 2); | ||||
| 	win_objects->SetSizer(paneSz_objects); | ||||
| 	paneSz_objects->SetSizeHints(win_objects); | ||||
| wxBoxSizer* content_object_settings(wxWindow *win) | ||||
| { | ||||
| 	auto sizer = new wxBoxSizer(wxVERTICAL); | ||||
| 	sizer->Add(new wxStaticText(win, wxID_ANY, "Some object text")); | ||||
| 	return sizer; | ||||
| } | ||||
| 
 | ||||
| wxBoxSizer* content_part_settings(wxWindow *win) | ||||
| { | ||||
| 	auto sizer = new wxBoxSizer(wxVERTICAL); | ||||
| 	sizer->Add(new wxStaticText(win, wxID_ANY, "Some part text")); | ||||
| 	return sizer; | ||||
| } | ||||
| 
 | ||||
| void add_expert_mode_part(wxWindow* parent, wxBoxSizer* sizer) | ||||
| { | ||||
|  	sizer->SetMinSize(-1, 150); | ||||
| 	auto main_sizer = new wxBoxSizer(wxVERTICAL); | ||||
| 	auto main_page = new wxScrolledWindow(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); | ||||
| 	main_page->SetSizer(main_sizer); | ||||
| 	main_page->SetScrollbars(1, 1, 1, 1); | ||||
| 	sizer->Add(main_page, 1, wxEXPAND | wxALL, 1); | ||||
| 
 | ||||
| 	// Experiments with new UI
 | ||||
| 
 | ||||
| 	// *** Objects List ***	
 | ||||
|  	add_prusa_collapsible_pane(main_page, main_sizer, "Objects List:", content_objects_list); | ||||
| 	// *** Object Settings ***
 | ||||
| 	add_prusa_collapsible_pane(main_page, main_sizer, "Object Settings:", content_object_settings); | ||||
| 	// *** Part Settings ***
 | ||||
| 	add_prusa_collapsible_pane(main_page, main_sizer, "Part Settings:", content_part_settings); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // 	auto common_sizer = new wxBoxSizer(wxVERTICAL);
 | ||||
| // 	common_sizer->Add(m_optgroup->sizer);
 | ||||
| 
 | ||||
| // 	auto listctrl = new wxDataViewListCtrl(win, wxID_ANY, wxDefaultPosition, wxSize(-1, 100));
 | ||||
| 	// More experiments with UI
 | ||||
| // 	auto listctrl = new wxDataViewListCtrl(main_page, wxID_ANY, wxDefaultPosition, wxSize(-1, 100));
 | ||||
| // 	listctrl->AppendToggleColumn("Toggle");
 | ||||
| // 	listctrl->AppendTextColumn("Text");
 | ||||
| // 	wxVector<wxVariant> data;
 | ||||
|  | @ -972,9 +990,7 @@ void add_expert_mode_part(wxWindow* parent, wxBoxSizer* sizer) | |||
| // 	data.push_back(wxVariant(false));
 | ||||
| // 	data.push_back(wxVariant("row 2"));
 | ||||
| // 	listctrl->AppendItem(data);
 | ||||
| // 	common_sizer->Add(listctrl, 0, wxEXPAND | wxALL, 1);
 | ||||
| 
 | ||||
| 
 | ||||
| // 	main_sizer->Add(listctrl, 0, wxEXPAND | wxALL, 1);
 | ||||
| } | ||||
| 
 | ||||
| void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer) | ||||
|  |  | |||
|  | @ -47,6 +47,11 @@ class TabIface; | |||
| 
 | ||||
| namespace GUI { | ||||
| 
 | ||||
| enum ogDrawFlag{ | ||||
| 	ogDEFAULT, | ||||
| 	ogSIDE_OPTIONS_TO_GRID | ||||
| }; | ||||
| 
 | ||||
| class Tab; | ||||
| class ConfigOptionsGroup; | ||||
| // Map from an file_type name to full file wildcard name.
 | ||||
|  |  | |||
|  | @ -173,7 +173,9 @@ void OptionsGroup::append_line(const Line& line, wxStaticText**	colored_Label/* | |||
| 		return; | ||||
| 	} | ||||
| 	 | ||||
| 	// if we have a single option with no sidetext just add it directly to the grid sizer
 | ||||
| 	// If we're here, we have more than one option or a single option with sidetext
 | ||||
|     // so we need a horizontal sizer to arrange these things
 | ||||
| 	// If we have a single option with no sidetext just add it directly to the grid sizer
 | ||||
| 	auto sizer = new wxBoxSizer(wxHORIZONTAL); | ||||
| 	grid_sizer->Add(sizer, 0, wxEXPAND | wxALL, 0); | ||||
| 	if (option_set.size() == 1 && option_set.front().opt.sidetext.size() == 0 && | ||||
|  | @ -190,9 +192,7 @@ void OptionsGroup::append_line(const Line& line, wxStaticText**	colored_Label/* | |||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
|     // if we're here, we have more than one option or a single option with sidetext
 | ||||
|     // so we need a horizontal sizer to arrange these things
 | ||||
| 	for (auto opt : option_set) { | ||||
|     for (auto opt : option_set) { | ||||
| 		ConfigOptionDef option = opt.opt; | ||||
| 		// add label if any
 | ||||
| 		if (option.label != "") { | ||||
|  |  | |||
|  | @ -127,8 +127,8 @@ public: | |||
| 	inline void		enable() { for (auto& field : m_fields) field.second->enable(); } | ||||
|     inline void		disable() { for (auto& field : m_fields) field.second->disable(); } | ||||
| 
 | ||||
|     OptionsGroup(wxWindow* _parent, const wxString& title, bool is_tab_opt=false) :  | ||||
| 		m_parent(_parent), title(title), m_is_tab_opt(is_tab_opt), staticbox(title!="") { | ||||
|     OptionsGroup(wxWindow* _parent, const wxString& title, bool is_tab_opt=false, ogDrawFlag flag = ogDEFAULT) :  | ||||
| 		m_parent(_parent), title(title), m_is_tab_opt(is_tab_opt), staticbox(title!=""), m_flag(flag) { | ||||
|         sizer = (staticbox ? new wxStaticBoxSizer(new wxStaticBox(_parent, wxID_ANY, title), wxVERTICAL) : new wxBoxSizer(wxVERTICAL)); | ||||
|         auto num_columns = 1U; | ||||
|         if (label_width != 0) num_columns++; | ||||
|  | @ -158,6 +158,8 @@ protected: | |||
| 	// "true" if option is created in preset tabs
 | ||||
| 	bool					m_is_tab_opt{ false }; | ||||
| 
 | ||||
| 	ogDrawFlag				m_flag{ ogDEFAULT }; | ||||
| 
 | ||||
| 	// This panel is needed for correct showing of the ToolTips for Button, StaticText and CheckBox
 | ||||
| 	// Tooltips on GTK doesn't work inside wxStaticBoxSizer unless you insert a panel 
 | ||||
| 	// inside it before you insert the other controls.
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 YuSanka
						YuSanka