mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	Fixed filament/material sorting in the lists of ConfigWizard
This commit is contained in:
		
							parent
							
								
									cac64576c5
								
							
						
					
					
						commit
						e2f859c3b2
					
				
					 2 changed files with 24 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -655,14 +655,6 @@ void PageMaterials::update_lists(int sel1, int sel2)
 | 
			
		|||
 | 
			
		||||
        sel2_prev = sel2;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // for the very begining
 | 
			
		||||
    if ((wizard_p()->run_reason == ConfigWizard::RR_DATA_EMPTY || wizard_p()->run_reason == ConfigWizard::RR_DATA_LEGACY)
 | 
			
		||||
        && list_l3->size() > 0 )
 | 
			
		||||
    {
 | 
			
		||||
        list_l3->Check(0, true);
 | 
			
		||||
        wizard_p()->update_presets_in_config(materials->appconfig_section(), list_l3->get_data(0), true);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PageMaterials::select_material(int i)
 | 
			
		||||
| 
						 | 
				
			
			@ -1254,7 +1246,7 @@ const std::string Materials::UNKNOWN = "(Unknown)";
 | 
			
		|||
 | 
			
		||||
void Materials::push(const Preset *preset)
 | 
			
		||||
{
 | 
			
		||||
    presets.insert(preset);
 | 
			
		||||
    presets.push_back(preset);
 | 
			
		||||
    types.insert(technology & T_FFF
 | 
			
		||||
        ? Materials::get_filament_type(preset)
 | 
			
		||||
        : Materials::get_material_type(preset));
 | 
			
		||||
| 
						 | 
				
			
			@ -1527,6 +1519,10 @@ void ConfigWizard::priv::update_materials(Technology technology)
 | 
			
		|||
                        }
 | 
			
		||||
 | 
			
		||||
                        if (filament.is_compatible_with_printer(printer)) {
 | 
			
		||||
                            // Check if filament is already added
 | 
			
		||||
                            if (filaments.containts(&filament)) 
 | 
			
		||||
                                continue;
 | 
			
		||||
 | 
			
		||||
                            filaments.push(&filament);
 | 
			
		||||
                            if (!filament.alias.empty())
 | 
			
		||||
                                aliases_fff[filament.alias].insert(filament.name);
 | 
			
		||||
| 
						 | 
				
			
			@ -1556,6 +1552,10 @@ void ConfigWizard::priv::update_materials(Technology technology)
 | 
			
		|||
                        }
 | 
			
		||||
 | 
			
		||||
                        if (material.is_compatible_with_printer(printer)) {
 | 
			
		||||
                            // Check if material is already added
 | 
			
		||||
                            if (sla_materials.containts(&material))
 | 
			
		||||
                                continue;
 | 
			
		||||
 | 
			
		||||
                            sla_materials.push(&material);
 | 
			
		||||
                            if (!material.alias.empty())
 | 
			
		||||
                                aliases_sla[material.alias].insert(material.name);
 | 
			
		||||
| 
						 | 
				
			
			@ -1905,14 +1905,23 @@ ConfigWizard::ConfigWizard(wxWindow *parent)
 | 
			
		|||
    });
 | 
			
		||||
 | 
			
		||||
    p->btn_prev->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) { this->p->index->go_prev(); });
 | 
			
		||||
    p->btn_next->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) { this->p->index->go_next(); });
 | 
			
		||||
 | 
			
		||||
    p->btn_next->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &)
 | 
			
		||||
    {
 | 
			
		||||
        // check, that there is selected at least one filament/material
 | 
			
		||||
        ConfigWizardPage* active_page = this->p->index->active_page();
 | 
			
		||||
        if ( (active_page == p->page_filaments || active_page == p->page_sla_materials)
 | 
			
		||||
            && !p->check_material_config())
 | 
			
		||||
            return;
 | 
			
		||||
        this->p->index->go_next();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    p->btn_finish->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &)
 | 
			
		||||
    {
 | 
			
		||||
        if (!p->check_material_config())
 | 
			
		||||
            return;
 | 
			
		||||
        this->EndModal(wxID_OK);
 | 
			
		||||
    });
 | 
			
		||||
//    p->btn_finish->Hide();
 | 
			
		||||
 | 
			
		||||
    p->btn_sel_all->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) {
 | 
			
		||||
        p->any_sla_selected = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -1925,7 +1934,6 @@ ConfigWizard::ConfigWizard(wxWindow *parent)
 | 
			
		|||
    p->index->Bind(EVT_INDEX_PAGE, [this](const wxCommandEvent &) {
 | 
			
		||||
        const bool is_last = p->index->active_is_last();
 | 
			
		||||
        p->btn_next->Show(! is_last);
 | 
			
		||||
//        p->btn_finish->Show(is_last);
 | 
			
		||||
        if (is_last)
 | 
			
		||||
            p->btn_finish->SetFocus();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,15 +58,16 @@ enum Technology {
 | 
			
		|||
struct Materials
 | 
			
		||||
{
 | 
			
		||||
    Technology technology;
 | 
			
		||||
    std::set<const Preset*> presets;
 | 
			
		||||
    // use vector for the presets to purpose of save of presets sorting in the bundle
 | 
			
		||||
    std::vector<const Preset*> presets;
 | 
			
		||||
    std::set<std::string> types;
 | 
			
		||||
 | 
			
		||||
    Materials(Technology technology) : technology(technology) {}
 | 
			
		||||
 | 
			
		||||
    void push(const Preset *preset);
 | 
			
		||||
    void clear();
 | 
			
		||||
    bool containts(const Preset *preset) {
 | 
			
		||||
        return presets.find(preset) != presets.end(); 
 | 
			
		||||
    bool containts(const Preset *preset) const {
 | 
			
		||||
        return std::find(presets.begin(), presets.end(), preset) != presets.end(); 
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const std::string& appconfig_section() const;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue