FIX: enable edit and delete preset btn and fix issue

Jira: XXXX

Change-Id: I724d7236b28fcc4746698f094531948a8fbb5d93
Signed-off-by: maosheng.wei <maosheng.wei@bambulab.com>
This commit is contained in:
maosheng.wei 2023-11-08 12:06:34 +08:00 committed by Lane.Wei
parent 417d2eeb90
commit 901d6d2936
2 changed files with 46 additions and 35 deletions

View File

@ -14,6 +14,7 @@
#include "FileHelp.hpp"
#include "Tab.hpp"
#include "ParamsDialog.hpp"
#include "MainFrame.hpp"
#define NAME_OPTION_COMBOBOX_SIZE wxSize(FromDIP(200), FromDIP(24))
#define FILAMENT_PRESET_COMBOBOX_SIZE wxSize(FromDIP(300), FromDIP(24))
@ -4227,7 +4228,7 @@ void EditFilamentPresetDialog::update_preset_tree()
this->Freeze();
m_preset_tree_sizer->Clear(true);
for (std::pair<std::string, std::vector<std::shared_ptr<Preset>>> printer_and_presets : m_printer_compatible_presets) {
m_preset_tree_sizer->Add(m_preset_tree_creater->get_preset_tree(printer_and_presets), 0, wxEXPAND | wxALL, 5);
m_preset_tree_sizer->Add(m_preset_tree_creater->get_preset_tree(printer_and_presets), 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, 5);
}
m_preset_tree_panel->SetSizerAndFit(m_preset_tree_sizer);
@ -4260,9 +4261,13 @@ void EditFilamentPresetDialog::delete_preset()
return;
}
std::shared_ptr<Preset> need_delete_preset = filament_presets[m_need_delete_preset_index];
// is selecetd filament preset
if (need_delete_preset->name == wxGetApp().preset_bundle->filaments.get_selected_preset_name()) {
wxGetApp().get_tab(need_delete_preset->type)->delete_preset();
} else {
Preset *filament_preset = wxGetApp().preset_bundle->filaments.find_preset(need_delete_preset->name);
// is root preset ?
Preset *filament_preset = wxGetApp().preset_bundle->filaments.find_preset(need_delete_preset->name);
if (filament_preset && wxGetApp().preset_bundle->filaments.get_preset_base(*filament_preset) == filament_preset) {
int count = 0;
wxString presets;
@ -4283,14 +4288,11 @@ void EditFilamentPresetDialog::delete_preset()
return;
}
}
// remove preset shared_ptr from m_printer_compatible_presets
int last_index = filament_presets.size() - 1;
if (m_need_delete_preset_index != last_index) {
std::swap(filament_presets[m_need_delete_preset_index], filament_presets[last_index]);
if (wxID_YES != MessageDialog(this, _L("Are you sure to delete the selected preset?"), _L("Delete preset"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION).ShowModal()) {
m_selected_printer.clear();
m_need_delete_preset_index = -1;
return;
}
filament_presets.pop_back();
if (filament_presets.empty()) m_printer_compatible_presets.erase(iter);
// delete preset
std::string next_selected_preset_name = wxGetApp().preset_bundle->filaments.get_selected_preset().name;
@ -4302,6 +4304,15 @@ void EditFilamentPresetDialog::delete_preset()
auto preset = wxGetApp().preset_bundle->filaments.find_preset(wxGetApp().preset_bundle->filament_presets[i]);
if (preset == nullptr) wxGetApp().preset_bundle->filament_presets[i] = wxGetApp().preset_bundle->filaments.get_selected_preset_name();
}
}
// remove preset shared_ptr from m_printer_compatible_presets
int last_index = filament_presets.size() - 1;
if (m_need_delete_preset_index != last_index) {
std::swap(filament_presets[m_need_delete_preset_index], filament_presets[last_index]);
}
filament_presets.pop_back();
if (filament_presets.empty()) m_printer_compatible_presets.erase(iter);
update_preset_tree();
@ -4818,7 +4829,7 @@ wxPanel *PresetTree::get_child_item(wxPanel *parent, std::shared_ptr<Preset> pre
edit_preset_btn->SetBackgroundColor(flush_bg_col);
edit_preset_btn->SetBorderColor(flush_bd_col);
edit_preset_btn->SetTextColor(flush_fg_col);
edit_preset_btn->Hide();
//edit_preset_btn->Hide();
sizer->Add(edit_preset_btn, 0, wxALL | wxALIGN_CENTER_VERTICAL, 0);
sizer->Add(0, 0, 0, wxLEFT, 5);
@ -4829,7 +4840,7 @@ wxPanel *PresetTree::get_child_item(wxPanel *parent, std::shared_ptr<Preset> pre
del_preset_btn->SetBackgroundColor(flush_bg_col);
del_preset_btn->SetBorderColor(flush_bd_col);
del_preset_btn->SetTextColor(flush_fg_col);
del_preset_btn->Hide();
//del_preset_btn->Hide();
sizer->Add(del_preset_btn, 0, wxALL | wxALIGN_CENTER_VERTICAL, 0);
edit_preset_btn->Bind(wxEVT_BUTTON, [this, printer_name, preset_index](wxCommandEvent &e) {

View File

@ -178,10 +178,8 @@ wxDEFINE_EVENT(EVT_GLCANVAS_COLOR_MODE_CHANGED, SimpleEvent);
wxDEFINE_EVENT(EVT_PRINT_FROM_SDCARD_VIEW, SimpleEvent);
wxDEFINE_EVENT(EVT_CREATE_FILAMENT, SimpleEvent);
wxDEFINE_EVENT(EVT_MODIFY_FILAMENT, SimpleEvent);
bool Plater::has_illegal_filename_characters(const wxString& wxs_name)
{
std::string name = into_u8(wxs_name);
@ -1183,7 +1181,11 @@ void Sidebar::update_presets(Preset::Type preset_type)
preset_bundle.set_filament_preset(p->editing_filament, name);
} else if (filament_cnt == 1) {
// Single filament printer, synchronize the filament presets.
preset_bundle.set_filament_preset(0, name);
Preset *preset = preset_bundle.filaments.find_preset(name, false);
if (preset) {
if (preset->is_compatible) preset_bundle.set_filament_preset(0, name);
}
}
for (size_t i = 0; i < filament_cnt; i++)
@ -1848,7 +1850,6 @@ void Sidebar::auto_calc_flushing_volumes(const int modify_id) {
wxPostEvent(this, SimpleEvent(EVT_SCHEDULE_BACKGROUND_PROCESS, this));
}
// Plater::DropTarget
class PlaterDropTarget : public wxFileDropTarget
@ -7540,7 +7541,6 @@ void Plater::priv::on_modify_filament(SimpleEvent &evt)
FilamentInfomation * filament_info = static_cast<FilamentInfomation *>(evt.GetEventObject());
EditFilamentPresetDialog dlg(wxGetApp().mainframe, filament_info);
int res = dlg.ShowModal();
wxGetApp().mainframe->update_side_preset_ui();
update_ui_from_settings();
sidebar->update_all_preset_comboboxes();