mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-05-29 01:27:38 +08:00
Correct printer pages updating according to the printer_technology
This commit is contained in:
parent
2af2b05bd6
commit
709b898eba
@ -239,9 +239,8 @@ Slic3r::GUI::PageShp Tab::add_options_page(const wxString& title, const std::str
|
|||||||
page->Hide();
|
page->Hide();
|
||||||
m_hsizer->Add(page.get(), 1, wxEXPAND | wxLEFT, 5);
|
m_hsizer->Add(page.get(), 1, wxEXPAND | wxLEFT, 5);
|
||||||
|
|
||||||
std::vector<PageShp> & pages = name() != "printer" ? m_pages : *static_cast<TabPrinter*>(this)->m_current_pages;
|
|
||||||
if (!is_extruder_pages)
|
if (!is_extruder_pages)
|
||||||
pages.push_back(page);
|
m_pages.push_back(page);
|
||||||
|
|
||||||
page->set_config(m_config);
|
page->set_config(m_config);
|
||||||
return page;
|
return page;
|
||||||
@ -1418,15 +1417,15 @@ void TabPrinter::build()
|
|||||||
m_presets = &m_preset_bundle->printers;
|
m_presets = &m_preset_bundle->printers;
|
||||||
load_initial_data();
|
load_initial_data();
|
||||||
|
|
||||||
m_printer_technology_old = m_presets->get_selected_preset().printer_technology();
|
m_printer_technology = m_presets->get_selected_preset().printer_technology();
|
||||||
|
|
||||||
if (m_presets->get_selected_preset().printer_technology() == ptSLA){
|
m_presets->get_selected_preset().printer_technology() == ptSLA ? build_sla() : build_fff();
|
||||||
build_sla();
|
}
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_current_pages = &m_pages;
|
|
||||||
|
|
||||||
|
void TabPrinter::build_fff()
|
||||||
|
{
|
||||||
|
if (!m_pages.empty())
|
||||||
|
m_pages.resize(0);
|
||||||
// to avoid redundant memory allocation / deallocation during extruders count changing
|
// to avoid redundant memory allocation / deallocation during extruders count changing
|
||||||
m_pages.reserve(30);
|
m_pages.reserve(30);
|
||||||
|
|
||||||
@ -1709,11 +1708,8 @@ void TabPrinter::build()
|
|||||||
|
|
||||||
void TabPrinter::build_sla()
|
void TabPrinter::build_sla()
|
||||||
{
|
{
|
||||||
// m_presets = &m_preset_bundle->printers;
|
if (!m_pages.empty())
|
||||||
// load_initial_data();
|
m_pages.resize(0);
|
||||||
|
|
||||||
m_current_pages = &m_sla_pages;
|
|
||||||
|
|
||||||
auto page = add_options_page(_(L("General")), "printer_empty.png");
|
auto page = add_options_page(_(L("General")), "printer_empty.png");
|
||||||
auto optgroup = page->new_optgroup(_(L("Size and coordinates")));
|
auto optgroup = page->new_optgroup(_(L("Size and coordinates")));
|
||||||
|
|
||||||
@ -1962,7 +1958,6 @@ void TabPrinter::build_extruder_pages()
|
|||||||
// this gets executed after preset is loaded and before GUI fields are updated
|
// this gets executed after preset is loaded and before GUI fields are updated
|
||||||
void TabPrinter::on_preset_loaded()
|
void TabPrinter::on_preset_loaded()
|
||||||
{
|
{
|
||||||
return; // ys_FIXME
|
|
||||||
// update the extruders count field
|
// update the extruders count field
|
||||||
auto *nozzle_diameter = dynamic_cast<const ConfigOptionFloats*>(m_config->option("nozzle_diameter"));
|
auto *nozzle_diameter = dynamic_cast<const ConfigOptionFloats*>(m_config->option("nozzle_diameter"));
|
||||||
int extruders_count = nozzle_diameter->values.size();
|
int extruders_count = nozzle_diameter->values.size();
|
||||||
@ -1971,8 +1966,36 @@ void TabPrinter::on_preset_loaded()
|
|||||||
extruders_count_changed(extruders_count);
|
extruders_count_changed(extruders_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabPrinter::update(){
|
void TabPrinter::update_pages()
|
||||||
return; // ys_FIXME
|
{
|
||||||
|
// update m_pages ONLY if printer technology is changed
|
||||||
|
if (m_presets->get_edited_preset().printer_technology() == m_printer_technology)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// hide all old pages
|
||||||
|
for (auto& el : m_pages)
|
||||||
|
el.get()->Hide();
|
||||||
|
|
||||||
|
// set m_pages to m_pages_(technology before changing)
|
||||||
|
m_printer_technology == ptFFF ? m_pages.swap(m_pages_fff) : m_pages.swap(m_pages_sla);
|
||||||
|
|
||||||
|
// build Tab according to the technology, if it's not exist jet OR
|
||||||
|
// set m_pages_(technology after changing) to m_pages
|
||||||
|
if (m_presets->get_edited_preset().printer_technology() == ptFFF)
|
||||||
|
m_pages_fff.empty() ? build_fff() : m_pages.swap(m_pages_fff);
|
||||||
|
else
|
||||||
|
m_pages_sla.empty() ? build_sla() : m_pages.swap(m_pages_sla);
|
||||||
|
|
||||||
|
rebuild_page_tree(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TabPrinter::update()
|
||||||
|
{
|
||||||
|
m_presets->get_edited_preset().printer_technology() == ptFFF ? update_fff() : update_sla();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TabPrinter::update_fff()
|
||||||
|
{
|
||||||
Freeze();
|
Freeze();
|
||||||
|
|
||||||
bool en;
|
bool en;
|
||||||
@ -2071,6 +2094,8 @@ void TabPrinter::update(){
|
|||||||
Thaw();
|
Thaw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabPrinter::update_sla(){ ; }
|
||||||
|
|
||||||
// Initialize the UI from the current preset
|
// Initialize the UI from the current preset
|
||||||
void Tab::load_current_preset()
|
void Tab::load_current_preset()
|
||||||
{
|
{
|
||||||
@ -2078,14 +2103,12 @@ void Tab::load_current_preset()
|
|||||||
|
|
||||||
(preset.is_default || preset.is_system) ? m_btn_delete_preset->Disable() : m_btn_delete_preset->Enable(true);
|
(preset.is_default || preset.is_system) ? m_btn_delete_preset->Disable() : m_btn_delete_preset->Enable(true);
|
||||||
|
|
||||||
if (m_name == "printer" && m_presets->get_edited_preset().printer_technology() == ptSLA) {} // ys_FIXME
|
|
||||||
else {
|
|
||||||
update();
|
update();
|
||||||
// For the printer profile, generate the extruder pages.
|
// For the printer profile, generate the extruder pages.
|
||||||
|
if (preset.printer_technology() == ptFFF)
|
||||||
on_preset_loaded();
|
on_preset_loaded();
|
||||||
// Reload preset pages with the new configuration values.
|
// Reload preset pages with the new configuration values.
|
||||||
reload_config();
|
reload_config();
|
||||||
}
|
|
||||||
|
|
||||||
m_bmp_non_system = m_presets->get_selected_preset_parent() ? &m_bmp_value_unlock : &m_bmp_white_bullet;
|
m_bmp_non_system = m_presets->get_selected_preset_parent() ? &m_bmp_value_unlock : &m_bmp_white_bullet;
|
||||||
m_ttg_non_system = m_presets->get_selected_preset_parent() ? &m_ttg_value_unlock : &m_ttg_white_bullet_ns;
|
m_ttg_non_system = m_presets->get_selected_preset_parent() ? &m_ttg_value_unlock : &m_ttg_white_bullet_ns;
|
||||||
@ -2105,8 +2128,8 @@ void Tab::load_current_preset()
|
|||||||
|
|
||||||
// update show/hide tabs
|
// update show/hide tabs
|
||||||
if (m_name == "printer"){
|
if (m_name == "printer"){
|
||||||
bool printer_technology = m_presets->get_edited_preset().printer_technology();
|
PrinterTechnology& printer_technology = m_presets->get_edited_preset().printer_technology();
|
||||||
if (printer_technology != static_cast<TabPrinter*>(this)->m_printer_technology_old)
|
if (printer_technology != static_cast<TabPrinter*>(this)->m_printer_technology)
|
||||||
{
|
{
|
||||||
wxWindow* del_page = printer_technology == ptFFF ? get_material_tab() : get_print_tab();
|
wxWindow* del_page = printer_technology == ptFFF ? get_material_tab() : get_print_tab();
|
||||||
int del_page_id = get_tab_panel()->FindPage(del_page);
|
int del_page_id = get_tab_panel()->FindPage(del_page);
|
||||||
@ -2126,7 +2149,7 @@ void Tab::load_current_preset()
|
|||||||
}
|
}
|
||||||
get_tab_panel()->InsertPage(del_page_id, get_material_tab(), static_cast<Tab*>(get_material_tab())->title());
|
get_tab_panel()->InsertPage(del_page_id, get_material_tab(), static_cast<Tab*>(get_material_tab())->title());
|
||||||
}
|
}
|
||||||
static_cast<TabPrinter*>(this)->m_printer_technology_old = printer_technology;
|
static_cast<TabPrinter*>(this)->m_printer_technology = printer_technology;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2148,7 +2171,7 @@ void Tab::load_current_preset()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Regerenerate content of the page tree.
|
//Regerenerate content of the page tree.
|
||||||
void Tab::rebuild_page_tree()
|
void Tab::rebuild_page_tree(bool tree_sel_change_event /*= false*/)
|
||||||
{
|
{
|
||||||
Freeze();
|
Freeze();
|
||||||
// get label of the currently selected item
|
// get label of the currently selected item
|
||||||
@ -2163,9 +2186,9 @@ void Tab::rebuild_page_tree()
|
|||||||
m_treectrl->SetItemTextColour(itemId, p->get_item_colour());
|
m_treectrl->SetItemTextColour(itemId, p->get_item_colour());
|
||||||
if (p->title() == selected) {
|
if (p->title() == selected) {
|
||||||
if (!(p->title() == _(L("Machine limits")) || p->title() == _(L("Single extruder MM setup")))) // These Pages have to be updated inside OnTreeSelChange
|
if (!(p->title() == _(L("Machine limits")) || p->title() == _(L("Single extruder MM setup")))) // These Pages have to be updated inside OnTreeSelChange
|
||||||
m_disable_tree_sel_changed_event = 1;
|
m_disable_tree_sel_changed_event = !tree_sel_change_event;
|
||||||
m_treectrl->SelectItem(itemId);
|
m_treectrl->SelectItem(itemId);
|
||||||
m_disable_tree_sel_changed_event = 0;
|
m_disable_tree_sel_changed_event = false;
|
||||||
have_selection = 1;
|
have_selection = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2245,6 +2268,8 @@ void Tab::select_preset(std::string preset_name /*= ""*/)
|
|||||||
if (current_dirty || printer_tab)
|
if (current_dirty || printer_tab)
|
||||||
m_preset_bundle->update_compatible_with_printer(true);
|
m_preset_bundle->update_compatible_with_printer(true);
|
||||||
// Initialize the UI from the current preset.
|
// Initialize the UI from the current preset.
|
||||||
|
if (printer_tab)
|
||||||
|
static_cast<TabPrinter*>(this)->update_pages();
|
||||||
load_current_preset();
|
load_current_preset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2299,11 +2324,9 @@ void Tab::OnTreeSelChange(wxTreeEvent& event)
|
|||||||
wxWindowUpdateLocker noUpdates(this);
|
wxWindowUpdateLocker noUpdates(this);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::vector<PageShp> & pages = name() != "printer" ? m_pages : *static_cast<TabPrinter*>(this)->m_current_pages;
|
|
||||||
|
|
||||||
Page* page = nullptr;
|
Page* page = nullptr;
|
||||||
auto selection = m_treectrl->GetItemText(m_treectrl->GetSelection());
|
auto selection = m_treectrl->GetItemText(m_treectrl->GetSelection());
|
||||||
for (auto p : pages)
|
for (auto p : m_pages)
|
||||||
if (p->title() == selection)
|
if (p->title() == selection)
|
||||||
{
|
{
|
||||||
page = p.get();
|
page = p.get();
|
||||||
@ -2313,7 +2336,7 @@ void Tab::OnTreeSelChange(wxTreeEvent& event)
|
|||||||
}
|
}
|
||||||
if (page == nullptr) return;
|
if (page == nullptr) return;
|
||||||
|
|
||||||
for (auto& el : pages)
|
for (auto& el : m_pages)
|
||||||
el.get()->Hide();
|
el.get()->Hide();
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
|
@ -218,7 +218,7 @@ public:
|
|||||||
|
|
||||||
void create_preset_tab(PresetBundle *preset_bundle);
|
void create_preset_tab(PresetBundle *preset_bundle);
|
||||||
void load_current_preset();
|
void load_current_preset();
|
||||||
void rebuild_page_tree();
|
void rebuild_page_tree(bool tree_sel_change_event = false);
|
||||||
void select_preset(std::string preset_name = "");
|
void select_preset(std::string preset_name = "");
|
||||||
bool may_discard_current_dirty_preset(PresetCollection* presets = nullptr, const std::string& new_printer_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);
|
wxSizer* compatible_printers_widget(wxWindow* parent, wxCheckBox** checkbox, wxButton** btn);
|
||||||
@ -320,7 +320,8 @@ class TabPrinter : public Tab
|
|||||||
void append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key);
|
void append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key);
|
||||||
bool m_rebuild_kinematics_page = false;
|
bool m_rebuild_kinematics_page = false;
|
||||||
|
|
||||||
std::vector<PageShp> m_sla_pages;
|
std::vector<PageShp> m_pages_fff;
|
||||||
|
std::vector<PageShp> m_pages_sla;
|
||||||
public:
|
public:
|
||||||
wxButton* m_serial_test_btn;
|
wxButton* m_serial_test_btn;
|
||||||
wxButton* m_octoprint_host_test_btn;
|
wxButton* m_octoprint_host_test_btn;
|
||||||
@ -330,17 +331,19 @@ public:
|
|||||||
size_t m_initial_extruders_count;
|
size_t m_initial_extruders_count;
|
||||||
size_t m_sys_extruders_count;
|
size_t m_sys_extruders_count;
|
||||||
|
|
||||||
bool m_printer_technology_old = ptFFF;
|
PrinterTechnology m_printer_technology = ptFFF;
|
||||||
|
|
||||||
std::vector<PageShp> *m_current_pages;
|
|
||||||
|
|
||||||
TabPrinter() {}
|
TabPrinter() {}
|
||||||
TabPrinter(wxNotebook* parent, bool no_controller) : Tab(parent, _(L("Printer Settings")), "printer", no_controller) {}
|
TabPrinter(wxNotebook* parent, bool no_controller) : Tab(parent, _(L("Printer Settings")), "printer", no_controller) {}
|
||||||
~TabPrinter(){}
|
~TabPrinter(){}
|
||||||
|
|
||||||
void build() override;
|
void build() override;
|
||||||
void build_sla() ;
|
void build_fff();
|
||||||
|
void build_sla();
|
||||||
void update() override;
|
void update() override;
|
||||||
|
void update_fff();
|
||||||
|
void update_sla();
|
||||||
|
void update_pages(); // update m_pages according to printer technology
|
||||||
void update_serial_ports();
|
void update_serial_ports();
|
||||||
void extruders_count_changed(size_t extruders_count);
|
void extruders_count_changed(size_t extruders_count);
|
||||||
PageShp build_kinematics_page();
|
PageShp build_kinematics_page();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user