mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	Completed settings hiding according to view mode
This commit is contained in:
		
							parent
							
								
									f47949504e
								
							
						
					
					
						commit
						70f4ca3f5b
					
				
					 6 changed files with 80 additions and 16 deletions
				
			
		| 
						 | 
				
			
			@ -97,6 +97,7 @@ void PrintConfigDef::init_fff_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 50;
 | 
			
		||||
    def->mode = comExpert;
 | 
			
		||||
    def->default_value = new ConfigOptionString("");
 | 
			
		||||
 | 
			
		||||
    def = this->add("between_objects_gcode", coString);
 | 
			
		||||
| 
						 | 
				
			
			@ -106,6 +107,7 @@ void PrintConfigDef::init_fff_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 120;
 | 
			
		||||
    def->mode = comExpert;
 | 
			
		||||
    def->default_value = new ConfigOptionString("");
 | 
			
		||||
 | 
			
		||||
    def = this->add("bottom_solid_layers", coInt);
 | 
			
		||||
| 
						 | 
				
			
			@ -314,6 +316,7 @@ void PrintConfigDef::init_fff_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 120;
 | 
			
		||||
    def->mode = comExpert;
 | 
			
		||||
    def->default_value = new ConfigOptionString("M104 S0 ; turn off temperature\nG28 X0  ; home X axis\nM84     ; disable motors\n");
 | 
			
		||||
 | 
			
		||||
    def = this->add("end_filament_gcode", coStrings);
 | 
			
		||||
| 
						 | 
				
			
			@ -325,6 +328,7 @@ void PrintConfigDef::init_fff_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 120;
 | 
			
		||||
    def->mode = comExpert;
 | 
			
		||||
    def->default_value = new ConfigOptionStrings { "; Filament-specific end gcode \n;END gcode for filament\n" };
 | 
			
		||||
 | 
			
		||||
    def = this->add("ensure_vertical_shell_thickness", coBool);
 | 
			
		||||
| 
						 | 
				
			
			@ -519,6 +523,7 @@ void PrintConfigDef::init_fff_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 130;
 | 
			
		||||
    def->mode = comMiddle;
 | 
			
		||||
    def->default_value = new ConfigOptionStrings { "" };
 | 
			
		||||
 | 
			
		||||
    def = this->add("filament_max_volumetric_speed", coFloats);
 | 
			
		||||
| 
						 | 
				
			
			@ -1012,6 +1017,7 @@ void PrintConfigDef::init_fff_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 50;
 | 
			
		||||
    def->mode = comExpert;
 | 
			
		||||
    def->default_value = new ConfigOptionString("");
 | 
			
		||||
 | 
			
		||||
    def = this->add("remaining_times", coBool);
 | 
			
		||||
| 
						 | 
				
			
			@ -1238,6 +1244,7 @@ void PrintConfigDef::init_fff_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 130;
 | 
			
		||||
    def->mode = comMiddle;
 | 
			
		||||
    def->default_value = new ConfigOptionString("");
 | 
			
		||||
 | 
			
		||||
    def = this->add("nozzle_diameter", coFloats);
 | 
			
		||||
| 
						 | 
				
			
			@ -1422,6 +1429,7 @@ void PrintConfigDef::init_fff_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 130;
 | 
			
		||||
    def->mode = comMiddle;
 | 
			
		||||
    def->default_value = new ConfigOptionString("");
 | 
			
		||||
 | 
			
		||||
    def = this->add("printer_vendor", coString);
 | 
			
		||||
| 
						 | 
				
			
			@ -1787,6 +1795,7 @@ void PrintConfigDef::init_fff_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 120;
 | 
			
		||||
    def->mode = comExpert;
 | 
			
		||||
    def->default_value = new ConfigOptionString("G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n");
 | 
			
		||||
 | 
			
		||||
    def = this->add("start_filament_gcode", coStrings);
 | 
			
		||||
| 
						 | 
				
			
			@ -1803,6 +1812,7 @@ void PrintConfigDef::init_fff_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 120;
 | 
			
		||||
    def->mode = comExpert;
 | 
			
		||||
    def->default_value = new ConfigOptionStrings { "; Filament gcode\n" };
 | 
			
		||||
 | 
			
		||||
    def = this->add("single_extruder_multi_material", coBool);
 | 
			
		||||
| 
						 | 
				
			
			@ -2075,6 +2085,7 @@ void PrintConfigDef::init_fff_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 50;
 | 
			
		||||
    def->mode = comExpert;
 | 
			
		||||
    def->default_value = new ConfigOptionString("");
 | 
			
		||||
 | 
			
		||||
    def = this->add("top_infill_extrusion_width", coFloatOrPercent);
 | 
			
		||||
| 
						 | 
				
			
			@ -2406,6 +2417,7 @@ void PrintConfigDef::init_sla_params()
 | 
			
		|||
    def->multiline = true;
 | 
			
		||||
    def->full_width = true;
 | 
			
		||||
    def->height = 130;
 | 
			
		||||
    def->mode = comMiddle;
 | 
			
		||||
    def->default_value = new ConfigOptionString("");
 | 
			
		||||
 | 
			
		||||
    def = this->add("default_sla_material_profile", coString);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,10 +54,13 @@ public:
 | 
			
		|||
	virtual bool
 | 
			
		||||
		AcceptsFocusFromKeyboard() const { return false; }
 | 
			
		||||
 | 
			
		||||
    void set_as_hidden() {
 | 
			
		||||
        Hide();
 | 
			
		||||
        hidden = true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    virtual bool Show(bool show = true) override {
 | 
			
		||||
        if (!show)
 | 
			
		||||
            hidden = true;
 | 
			
		||||
        return wxButton::Show(!hidden);
 | 
			
		||||
        return wxButton::Show(hidden ? false : show);
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -97,8 +97,8 @@ const t_field& OptionsGroup::build_field(const t_config_option_key& id, const Co
 | 
			
		|||
void OptionsGroup::add_undo_buttuns_to_sizer(wxSizer* sizer, const t_field& field)
 | 
			
		||||
{
 | 
			
		||||
	if (!m_show_modified_btns) {
 | 
			
		||||
		field->m_Undo_btn->Hide();
 | 
			
		||||
		field->m_Undo_to_sys_btn->Hide();
 | 
			
		||||
        field->m_Undo_btn->set_as_hidden();
 | 
			
		||||
		field->m_Undo_to_sys_btn->set_as_hidden();
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -123,6 +123,10 @@ void OptionsGroup::append_line(const Line& line, wxStaticText**	colored_Label/*
 | 
			
		|||
	for (auto opt : option_set) 
 | 
			
		||||
		m_options.emplace(opt.opt_id, opt);
 | 
			
		||||
 | 
			
		||||
    // add mode value for current line to m_options_mode
 | 
			
		||||
    if (!option_set.empty())
 | 
			
		||||
        m_options_mode.push_back(option_set[0].opt.mode);
 | 
			
		||||
 | 
			
		||||
	// if we have a single option with no label, no sidetext just add it directly to sizer
 | 
			
		||||
	if (option_set.size() == 1 && label_width == 0 && option_set.front().opt.full_width &&
 | 
			
		||||
		option_set.front().opt.sidetext.size() == 0 && option_set.front().side_widget == nullptr && 
 | 
			
		||||
| 
						 | 
				
			
			@ -383,16 +387,17 @@ void ConfigOptionsGroup::reload_config(){
 | 
			
		|||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ConfigOptionsGroup::update_visibility(ConfigOptionMode mode) {
 | 
			
		||||
    int rows = m_grid_sizer->GetEffectiveRowsCount();
 | 
			
		||||
    if (rows != m_options.size())
 | 
			
		||||
        return;
 | 
			
		||||
bool ConfigOptionsGroup::update_visibility(ConfigOptionMode mode) {
 | 
			
		||||
    if (m_grid_sizer->GetEffectiveRowsCount() != m_options_mode.size() &&
 | 
			
		||||
        m_options_mode.size() == 1)
 | 
			
		||||
        return m_options_mode[0] <= mode;
 | 
			
		||||
 | 
			
		||||
    sizer->ShowItems(true);
 | 
			
		||||
 | 
			
		||||
    int coef = 0;
 | 
			
		||||
    const int cols = m_grid_sizer->GetCols();
 | 
			
		||||
    for (std::map<t_config_option_key, Option>::iterator it = m_options.begin(); it != m_options.end(); ++it) {
 | 
			
		||||
		const bool show = it->second.opt.mode <= mode;
 | 
			
		||||
    for (auto opt_mode : m_options_mode) {
 | 
			
		||||
		const bool show = opt_mode <= mode;
 | 
			
		||||
        if (!show) {
 | 
			
		||||
            for (int i = 0; i < cols; ++i)
 | 
			
		||||
                m_grid_sizer->Show(coef + i, show);
 | 
			
		||||
| 
						 | 
				
			
			@ -400,8 +405,11 @@ void ConfigOptionsGroup::update_visibility(ConfigOptionMode mode) {
 | 
			
		|||
        coef+= cols;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    if (!sizer->IsShown(m_grid_sizer))
 | 
			
		||||
    if (!sizer->IsShown(m_grid_sizer)) {
 | 
			
		||||
        sizer->ShowItems(false);
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
boost::any ConfigOptionsGroup::config_value(const std::string& opt_key, int opt_index, bool deserialize){
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -182,6 +182,7 @@ public:
 | 
			
		|||
protected:
 | 
			
		||||
	std::map<t_config_option_key, Option>	m_options;
 | 
			
		||||
    wxWindow*				m_parent {nullptr};
 | 
			
		||||
    std::vector<ConfigOptionMode>           m_options_mode;
 | 
			
		||||
 | 
			
		||||
    /// Field list, contains unique_ptrs of the derived type.
 | 
			
		||||
    /// using types that need to know what it is beyond the public interface 
 | 
			
		||||
| 
						 | 
				
			
			@ -245,7 +246,8 @@ public:
 | 
			
		|||
	void		back_to_config_value(const DynamicPrintConfig& config, const std::string& opt_key);
 | 
			
		||||
	void		on_kill_focus() override{ reload_config();}
 | 
			
		||||
	void		reload_config();
 | 
			
		||||
    void        update_visibility(ConfigOptionMode mode);
 | 
			
		||||
    // return value shows visibility : false => all options are hidden
 | 
			
		||||
    bool        update_visibility(ConfigOptionMode mode);
 | 
			
		||||
	boost::any	config_value(const std::string& opt_key, int opt_index, bool deserialize);
 | 
			
		||||
	// return option value from config 
 | 
			
		||||
	boost::any	get_config_value(const DynamicPrintConfig& config, const std::string& opt_key, int opt_index = -1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -635,9 +635,15 @@ void Tab::reload_config(){
 | 
			
		|||
void Tab::update_visibility(ConfigOptionMode mode)
 | 
			
		||||
{
 | 
			
		||||
    Freeze();
 | 
			
		||||
 | 
			
		||||
	for (auto page : m_pages)
 | 
			
		||||
        page->update_visibility(mode);
 | 
			
		||||
 	Thaw();
 | 
			
		||||
    update_page_tree_visibility();
 | 
			
		||||
 | 
			
		||||
    m_hsizer->Layout();
 | 
			
		||||
    Refresh();
 | 
			
		||||
 | 
			
		||||
	Thaw();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Field* Tab::get_field(const t_config_option_key& opt_key, int opt_index/* = -1*/) const
 | 
			
		||||
| 
						 | 
				
			
			@ -2264,6 +2270,33 @@ void Tab::rebuild_page_tree(bool tree_sel_change_event /*= false*/)
 | 
			
		|||
	Thaw();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Tab::update_page_tree_visibility()
 | 
			
		||||
{
 | 
			
		||||
    const auto sel_item = m_treectrl->GetSelection();
 | 
			
		||||
    const auto selected = sel_item ? m_treectrl->GetItemText(sel_item) : "";
 | 
			
		||||
    const auto rootItem = m_treectrl->GetRootItem();
 | 
			
		||||
 | 
			
		||||
    auto have_selection = 0;
 | 
			
		||||
    m_treectrl->DeleteChildren(rootItem);
 | 
			
		||||
    for (auto p : m_pages)
 | 
			
		||||
    {
 | 
			
		||||
        if (!p->get_show())
 | 
			
		||||
            continue;
 | 
			
		||||
        auto itemId = m_treectrl->AppendItem(rootItem, p->title(), p->iconID());
 | 
			
		||||
        m_treectrl->SetItemTextColour(itemId, p->get_item_colour());
 | 
			
		||||
        if (p->title() == selected) {
 | 
			
		||||
            m_treectrl->SelectItem(itemId);
 | 
			
		||||
            have_selection = 1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!have_selection) {
 | 
			
		||||
        // this is triggered on first load, so we don't disable the sel change event
 | 
			
		||||
        m_treectrl->SelectItem(m_treectrl->GetFirstVisibleItem());//! (treectrl->GetFirstChild(rootItem));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Called by the UI combo box when the user switches profiles.
 | 
			
		||||
// Select a preset by a name.If !defined(name), then the default preset is selected.
 | 
			
		||||
// If the current profile is modified, user is asked to save the changes.
 | 
			
		||||
| 
						 | 
				
			
			@ -2692,8 +2725,11 @@ void Page::reload_config()
 | 
			
		|||
 | 
			
		||||
void Page::update_visibility(ConfigOptionMode mode)
 | 
			
		||||
{
 | 
			
		||||
	for (auto group : m_optgroups)
 | 
			
		||||
		group->update_visibility(mode);
 | 
			
		||||
    bool ret_val = false;
 | 
			
		||||
    for (auto group : m_optgroups)
 | 
			
		||||
        ret_val = group->update_visibility(mode) || ret_val;
 | 
			
		||||
 | 
			
		||||
    m_show = ret_val;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Field* Page::get_field(const t_config_option_key& opt_key, int opt_index /*= -1*/) const
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,6 +47,7 @@ class Page : public wxScrolledWindow
 | 
			
		|||
	wxString		m_title;
 | 
			
		||||
	size_t			m_iconID;
 | 
			
		||||
	wxBoxSizer*		m_vsizer;
 | 
			
		||||
    bool            m_show = true;
 | 
			
		||||
public:
 | 
			
		||||
	Page(wxWindow* parent, const wxString title, const int iconID) :
 | 
			
		||||
			m_parent(parent),
 | 
			
		||||
| 
						 | 
				
			
			@ -89,6 +90,7 @@ public:
 | 
			
		|||
	const wxColour	get_item_colour() {
 | 
			
		||||
			return *m_item_color;
 | 
			
		||||
	}
 | 
			
		||||
    bool get_show() const { return m_show; }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
	// Color of TreeCtrlItem. The wxColour will be updated only if the new wxColour pointer differs from the currently rendered one.
 | 
			
		||||
| 
						 | 
				
			
			@ -215,6 +217,7 @@ public:
 | 
			
		|||
	void		create_preset_tab();
 | 
			
		||||
	void		load_current_preset();
 | 
			
		||||
	void        rebuild_page_tree(bool tree_sel_change_event = false);
 | 
			
		||||
	void        update_page_tree_visibility();
 | 
			
		||||
	void		select_preset(std::string preset_name = "");
 | 
			
		||||
	bool		may_discard_current_dirty_preset(PresetCollection* presets = nullptr, const std::string& new_printer_name = "");
 | 
			
		||||
	wxSizer*	compatible_printers_widget(wxWindow* parent, wxCheckBox** checkbox, wxButton** btn);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue