|
@@ -215,6 +215,7 @@ void Tab::create_preset_tab()
|
|
|
|
|
|
add_scaled_button(panel, &m_btn_compare_preset, "compare");
|
|
|
add_scaled_button(panel, &m_btn_save_preset, "save");
|
|
|
+ add_scaled_button(panel, &m_btn_save_preset_as, "save_as");
|
|
|
add_scaled_button(panel, &m_btn_delete_preset, "cross");
|
|
|
if (m_type == Preset::Type::TYPE_PRINTER)
|
|
|
add_scaled_button(panel, &m_btn_edit_ph_printer, "cog");
|
|
@@ -228,8 +229,10 @@ void Tab::create_preset_tab()
|
|
|
m_btn_compare_preset->SetToolTip(_L("Compare this preset with some another"));
|
|
|
// TRN "Save current Settings"
|
|
|
m_btn_save_preset->SetToolTip(from_u8((boost::format(_utf8(L("Save current %s"))) % m_title).str()));
|
|
|
+ m_btn_save_preset_as->SetToolTip(from_u8((boost::format(_utf8(L("Save current %s as new preset"))) % m_title).str()));
|
|
|
+
|
|
|
m_btn_delete_preset->SetToolTip(_(L("Delete this preset")));
|
|
|
- m_btn_delete_preset->Hide();
|
|
|
+ m_btn_delete_preset->Enable(false);
|
|
|
|
|
|
add_scaled_button(panel, &m_question_btn, "question");
|
|
|
m_question_btn->SetToolTip(_(L("Hover the cursor over buttons to find more information \n"
|
|
@@ -280,6 +283,8 @@ void Tab::create_preset_tab()
|
|
|
m_hsizer->AddSpacer(int(4*scale_factor));
|
|
|
m_hsizer->Add(m_btn_save_preset, 0, wxALIGN_CENTER_VERTICAL);
|
|
|
m_hsizer->AddSpacer(int(4 * scale_factor));
|
|
|
+ m_hsizer->Add(m_btn_save_preset_as, 0, wxALIGN_CENTER_VERTICAL);
|
|
|
+ m_hsizer->AddSpacer(int(4 * scale_factor));
|
|
|
m_hsizer->Add(m_btn_delete_preset, 0, wxALIGN_CENTER_VERTICAL);
|
|
|
if (m_btn_edit_ph_printer) {
|
|
|
m_hsizer->AddSpacer(int(4 * scale_factor));
|
|
@@ -370,7 +375,10 @@ void Tab::create_preset_tab()
|
|
|
m_hsizer->Add(m_page_view, 1, wxEXPAND | wxLEFT, 5);
|
|
|
|
|
|
m_btn_compare_preset->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e) { compare_preset(); }));
|
|
|
- m_btn_save_preset->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e) { save_preset(); }));
|
|
|
+ m_btn_save_preset->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e) {
|
|
|
+ save_preset(this->get_presets()->get_selected_preset_name());
|
|
|
+ }));
|
|
|
+ m_btn_save_preset_as->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e) { save_preset(); }));
|
|
|
m_btn_delete_preset->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e) { delete_preset(); }));
|
|
|
m_btn_hide_incompatible_presets->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e) {
|
|
|
toggle_show_hide_incompatible();
|
|
@@ -957,6 +965,7 @@ void Tab::update_changed_tree_ui()
|
|
|
cur_item = next_item;
|
|
|
}
|
|
|
update_undo_buttons();
|
|
|
+ update_btns_enabling();
|
|
|
}
|
|
|
|
|
|
void Tab::update_undo_buttons()
|
|
@@ -3743,10 +3752,11 @@ void Tab::rebuild_page_tree()
|
|
|
|
|
|
void Tab::update_btns_enabling()
|
|
|
{
|
|
|
- // we can delete any preset from the physical printer
|
|
|
- // and any user preset
|
|
|
- const Preset& preset = m_presets->get_edited_preset();
|
|
|
- m_btn_delete_preset->Show((m_type == Preset::TYPE_PRINTER && m_preset_bundle->physical_printers.has_selection())
|
|
|
+ const Preset &preset = m_presets->get_edited_preset();
|
|
|
+ // we can save any preset taht is not default/system and is modified.
|
|
|
+ m_btn_save_preset->Enable(!preset.is_default && !preset.is_system && preset.is_dirty && !preset.name.empty());
|
|
|
+ // we can delete any preset from the physical printer and any user preset
|
|
|
+ m_btn_delete_preset->Enable((m_type == Preset::TYPE_PRINTER && m_preset_bundle->physical_printers.has_selection())
|
|
|
|| (!preset.is_default && !preset.is_system));
|
|
|
|
|
|
if (m_btn_edit_ph_printer)
|
|
@@ -4156,8 +4166,7 @@ void Tab::save_preset(std::string name /*= ""*/, bool detach)
|
|
|
// Update the selection boxes at the plater.
|
|
|
on_presets_changed();
|
|
|
// If current profile is saved, "delete preset" button have to be enabled
|
|
|
- m_btn_delete_preset->Show();
|
|
|
- m_btn_delete_preset->GetParent()->Layout();
|
|
|
+ update_btns_enabling();
|
|
|
|
|
|
if (m_type == Preset::TYPE_PRINTER)
|
|
|
static_cast<TabPrinter*>(this)->m_initial_extruders_count = static_cast<TabPrinter*>(this)->m_extruders_count;
|