mirror of
https://git.mirrors.martin98.com/https://github.com/bambulab/BambuStudio.git
synced 2025-08-20 01:29:04 +08:00
FIX: [5159 5165 5171 5172] create printer and filament issue
Jira: 5159 5165 5171 5172 5159 create printer dialog no refresh 5165 create printer 2 step dialog no refersh 5171 change font 5172 edit filament dialog darkUI issue input special character is prohibited '/' in preset name translate to '-' update printer combobox Change-Id: I5fa27836dab7f604f1a065c65efa099c7a2f0f96 Signed-off-by: maosheng.wei <maosheng.wei@bambulab.com>
This commit is contained in:
parent
e9661f3fdd
commit
cb11021a56
@ -2154,7 +2154,9 @@ bool PresetCollection::clone_presets(std::vector<Preset const *> const &presets,
|
|||||||
bool PresetCollection::clone_presets_for_printer(std::vector<Preset const *> const &presets, std::vector<std::string> &failures, std::string const &printer, bool force_rewritten)
|
bool PresetCollection::clone_presets_for_printer(std::vector<Preset const *> const &presets, std::vector<std::string> &failures, std::string const &printer, bool force_rewritten)
|
||||||
{
|
{
|
||||||
return clone_presets(presets, failures, [printer](Preset &preset, Preset::Type &type) {
|
return clone_presets(presets, failures, [printer](Preset &preset, Preset::Type &type) {
|
||||||
preset.name = preset.name.substr(0, preset.name.find(" @")) + " @" + printer;
|
std::string prefix = preset.name.substr(0, preset.name.find(" @"));
|
||||||
|
std::replace(prefix.begin(), prefix.end(), '/', '-');
|
||||||
|
preset.name = prefix + " @" + printer;
|
||||||
//preset.alias = "";
|
//preset.alias = "";
|
||||||
auto *compatible_printers = dynamic_cast<ConfigOptionStrings *>(preset.config.option("compatible_printers"));
|
auto *compatible_printers = dynamic_cast<ConfigOptionStrings *>(preset.config.option("compatible_printers"));
|
||||||
compatible_printers->values = std::vector<std::string>{ printer };
|
compatible_printers->values = std::vector<std::string>{ printer };
|
||||||
@ -2169,6 +2171,7 @@ bool PresetCollection::create_presets_from_template_for_printer(std::vector<Pres
|
|||||||
{
|
{
|
||||||
return clone_presets(templates, failures, [printer, create_filament_id](Preset &preset, Preset::Type &type) {
|
return clone_presets(templates, failures, [printer, create_filament_id](Preset &preset, Preset::Type &type) {
|
||||||
std::string prefix = preset.name.substr(0, preset.name.find(" @"));
|
std::string prefix = preset.name.substr(0, preset.name.find(" @"));
|
||||||
|
std::replace(prefix.begin(), prefix.end(), '/', '-');
|
||||||
preset.name = prefix + " @" + printer;
|
preset.name = prefix + " @" + printer;
|
||||||
auto *compatible_printers = dynamic_cast<ConfigOptionStrings *>(preset.config.option("compatible_printers"));
|
auto *compatible_printers = dynamic_cast<ConfigOptionStrings *>(preset.config.option("compatible_printers"));
|
||||||
compatible_printers->values = std::vector<std::string>{printer};
|
compatible_printers->values = std::vector<std::string>{printer};
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "CreatePresetsDialog.hpp"
|
#include "CreatePresetsDialog.hpp"
|
||||||
#include <regex>
|
#include <regex>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <set>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
#include <openssl/md5.h>
|
#include <openssl/md5.h>
|
||||||
@ -55,28 +56,25 @@ static const std::unordered_map<std::string, std::string> system_filament_types_
|
|||||||
{"HIPS", "HIPS"}, {"PPS", "PPS"}, {"PPS-CF", "PPS-CF"},
|
{"HIPS", "HIPS"}, {"PPS", "PPS"}, {"PPS-CF", "PPS-CF"},
|
||||||
{"PVA", "PVA"}};*/
|
{"PVA", "PVA"}};*/
|
||||||
|
|
||||||
static const std::vector<std::string> printer_vendors = {"AnkerMake", "Anycubic", "Artillery", "BIBO", "BIQU", "Creality ENDER", "Creality CR", "Creality SERMOON",
|
static const std::vector<std::string> printer_vendors = {"Anycubic", "Artillery", "BIBO", "BIQU", "Creality ENDER", "Creality CR", "Creality SERMOON",
|
||||||
"Elegoo", "FLSun", "gCreate", "Geeetech", "INAT", "Infinity3D", "Jubilee", "LNL3D",
|
"FLSun", "gCreate", "Geeetech", "INAT", "Infinity3D", "Jubilee", "LNL3D",
|
||||||
"LulzBot", "MakerGear", "Papapiu", "Print4Taste", "RatRig", "Rigid3D", "Snapmaker", "Sovol",
|
"LulzBot", "MakerGear", "Papapiu", "Print4Taste", "RatRig", "Rigid3D", "Snapmaker", "Sovol",
|
||||||
"TriLAB", "Trimaker", "Ultimaker", "Voron", "Zonestar"};
|
"TriLAB", "Trimaker", "Ultimaker", "Voron", "Zonestar"};
|
||||||
|
|
||||||
static const std::unordered_map<std::string, std::vector<std::string>> printer_model_map =
|
static const std::unordered_map<std::string, std::vector<std::string>> printer_model_map =
|
||||||
{{"AnkerMake", {"M5"}},
|
{{"Anycubic", {"Kossel Linear Plus", "Kossel Pulley(Linear)", "Mega Zero", "i3 Mega", "Predator"}},
|
||||||
{"Anycubic", {"Kossel Linear Plus", "Kossel Pulley(Linear)", "Mega Zero", "i3 Mega", "i3 Mega S", "4Max Pro 2.0", "Predator"}},
|
|
||||||
{"Artillery", {"sidewinder X1", "Genius", "Hornet"}},
|
{"Artillery", {"sidewinder X1", "Genius", "Hornet"}},
|
||||||
{"BIBO", {"BIBO2 Touch"}},
|
{"BIBO", {"BIBO2 Touch"}},
|
||||||
{"BIQU", {"BX"}},
|
{"BIQU", {"BX"}},
|
||||||
{"Creality ENDER", {"Ender-3", "Ender-3 BLTouch", "Ender-3 Pro", "Ender-3 Neo", "Ender-3 V2",
|
{"Creality ENDER", {"Ender-3", "Ender-3 BLTouch", "Ender-3 Pro", "Ender-3 Neo",
|
||||||
"Ender-3 V2 Neo", "Ender-3 S1", "Ender-3 S1 Pro", "Ender-3 S1 Plus", "Ender-3 Max", "Ender-3 Max Neo",
|
"Ender-3 V2 Neo", "Ender-3 S1 Plus", "Ender-3 Max", "Ender-3 Max Neo",
|
||||||
"Ender-4", "Ender-5", "Ender-5 Pro", "Ender-5 Pro", "Ender-5 S1", "Ender-6",
|
"Ender-4", "Ender-5 Pro", "Ender-5 Pro",
|
||||||
"Ender-7", "Ender-2", "Ender-2 Pro"}},
|
"Ender-7", "Ender-2", "Ender-2 Pro"}},
|
||||||
{"Creality CR", {"CR-5 Pro", "CR-5 Pro H", "CR-6 SE", "CR-6 Max", "CR-10 SMART", "CR-10 SMART Pro", "CR-10 Mini",
|
{"Creality CR", {"CR-5 Pro", "CR-5 Pro H", "CR-10 SMART", "CR-10 SMART Pro", "CR-10 Mini",
|
||||||
"CR-10 Max", "CR-10", "CR-10 v2", "CR-10 v3", "CR-10 S", "CR-10 v2", "CR-10 v2",
|
"CR-10", "CR-10 v3", "CR-10 S", "CR-10 v2", "CR-10 v2",
|
||||||
"CR-10 S Pro", "CR-10 S Pro v2", "CR-10 S4", "CR-10 S5", "CR-20", "CR-20 Pro", "CR-200B",
|
"CR-10 S Pro", "CR-10 S Pro v2", "CR-10 S4", "CR-10 S5", "CR-20", "CR-20 Pro", "CR-200B",
|
||||||
"CR-8"}},
|
"CR-8"}},
|
||||||
{"Creality SERMOON",{"Sermoon-D1", "Sermoon-V1", "Sermoon-V1 Pro"}},
|
{"Creality SERMOON",{"Sermoon-D1", "Sermoon-V1", "Sermoon-V1 Pro"}},
|
||||||
{"Elegoo", {"Neptune-1", "Neptune-2", "Neptune-2D", "Neptune-2s", "Neptune-3", "Neptune-3 Max", "Neptune-3 Plus",
|
|
||||||
"Neptune-3 Pro", "Neptune-x"}},
|
|
||||||
{"FLSun", {"FLSun QQs Pro", "FLSun Q5"}},
|
{"FLSun", {"FLSun QQs Pro", "FLSun Q5"}},
|
||||||
{"gCreate", {"gMax 1.5XT Plus", "gMax 2", "gMax 2 Pro", "gMax 2 Dual 2in1", "gMax 2 Dual Chimera"}},
|
{"gCreate", {"gMax 1.5XT Plus", "gMax 2", "gMax 2 Pro", "gMax 2 Dual 2in1", "gMax 2 Dual Chimera"}},
|
||||||
{"Geeetech", {"Thunder", "Thunder Pro", "Mizar s", "Mizar Pro", "Mizar", "Mizar Max",
|
{"Geeetech", {"Thunder", "Thunder Pro", "Mizar s", "Mizar Pro", "Mizar", "Mizar Max",
|
||||||
@ -100,10 +98,25 @@ static const std::unordered_map<std::string, std::vector<std::string>> printer_m
|
|||||||
"DeltiQ 2 Plus + FlexPrint", "DeltiQ M", "DeltiQ L", "DeltiQ XL"}},
|
"DeltiQ 2 Plus + FlexPrint", "DeltiQ M", "DeltiQ L", "DeltiQ XL"}},
|
||||||
{"Trimaker", {"Nebula cloud", "Nebula", "Cosmos ll"}},
|
{"Trimaker", {"Nebula cloud", "Nebula", "Cosmos ll"}},
|
||||||
{"Ultimaker", {"Ultimaker 2"}},
|
{"Ultimaker", {"Ultimaker 2"}},
|
||||||
{"Voron", {"v2 250mm3", "v2 300mm3", "v2 350mm3", "v2 250mm3", "v2 300mm3", "v2 350mm3", "v1 250mm3", "v1 300mm3", "v1 350mm3",
|
{"Voron", {"v2 250mm3", "v2 300mm3", "v2 350mm3", "v1 250mm3", "v1 300mm3", "v1 350mm3",
|
||||||
"Zero 120mm3", "Switchwire"}},
|
"Zero 120mm3", "Switchwire"}},
|
||||||
{"Zonestar", {"Z5", "Z6", "Z5x", "Z8", "Z9"}}};
|
{"Zonestar", {"Z5", "Z6", "Z5x", "Z8", "Z9"}}};
|
||||||
|
|
||||||
|
static std::set<int> cannot_input_key = {9, 10, 13, 33, 35, 36, 37, 38, 40, 41, 42, 43, 44, 46, 47, 59, 60, 62, 63, 64, 92, 94, 95, 124, 126};
|
||||||
|
|
||||||
|
static std::set<char> special_key = {'\n', '\t', '\r', '\v', '@', ';'};
|
||||||
|
|
||||||
|
static std::string remove_special_key(const std::string &str)
|
||||||
|
{
|
||||||
|
std::string res_str;
|
||||||
|
for (char c : str) {
|
||||||
|
if (special_key.find(c) == special_key.end()) {
|
||||||
|
res_str.push_back(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res_str;
|
||||||
|
}
|
||||||
|
|
||||||
static bool delete_filament_preset_by_name(std::string delete_preset_name, std::string &selected_preset_name)
|
static bool delete_filament_preset_by_name(std::string delete_preset_name, std::string &selected_preset_name)
|
||||||
{
|
{
|
||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("select preset, name %1%") % delete_preset_name;
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("select preset, name %1%") % delete_preset_name;
|
||||||
@ -627,7 +640,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_vendor_item()
|
|||||||
m_filament_custom_vendor_input->GetTextCtrl()->SetHint(_L("Input custom vendor"));
|
m_filament_custom_vendor_input->GetTextCtrl()->SetHint(_L("Input custom vendor"));
|
||||||
m_filament_custom_vendor_input->GetTextCtrl()->Bind(wxEVT_CHAR, [this](wxKeyEvent &event) {
|
m_filament_custom_vendor_input->GetTextCtrl()->Bind(wxEVT_CHAR, [this](wxKeyEvent &event) {
|
||||||
int key = event.GetKeyCode();
|
int key = event.GetKeyCode();
|
||||||
if (key == 64 || key == 59) { //@ ;
|
if (cannot_input_key.find(key) != cannot_input_key.end()) {
|
||||||
event.Skip(false);
|
event.Skip(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -739,7 +752,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_serial_item()
|
|||||||
comboBoxSizer->Add(m_filament_serial_input, 0, wxEXPAND | wxALL, 0);
|
comboBoxSizer->Add(m_filament_serial_input, 0, wxEXPAND | wxALL, 0);
|
||||||
m_filament_serial_input->GetTextCtrl()->Bind(wxEVT_CHAR, [this](wxKeyEvent &event) {
|
m_filament_serial_input->GetTextCtrl()->Bind(wxEVT_CHAR, [this](wxKeyEvent &event) {
|
||||||
int key = event.GetKeyCode();
|
int key = event.GetKeyCode();
|
||||||
if (key == 64) {
|
if (cannot_input_key.find(key) != cannot_input_key.end()) {
|
||||||
event.Skip(false);
|
event.Skip(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -924,6 +937,29 @@ wxBoxSizer *CreateFilamentPresetDialog::create_button_item()
|
|||||||
} else {
|
} else {
|
||||||
serial_name = into_u8(serial_str);
|
serial_name = into_u8(serial_str);
|
||||||
}
|
}
|
||||||
|
vendor_name = remove_special_key(vendor_name);
|
||||||
|
serial_name = remove_special_key(serial_name);
|
||||||
|
|
||||||
|
if (vendor_name.empty() || serial_name.empty()) {
|
||||||
|
MessageDialog dlg(this, _L("There may be escape characters in the vendor or serial input of filament. Please delete and re-enter."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"),
|
||||||
|
wxYES | wxYES_DEFAULT | wxCENTRE);
|
||||||
|
dlg.ShowModal();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
boost::algorithm::trim(vendor_name);
|
||||||
|
boost::algorithm::trim(serial_name);
|
||||||
|
if (vendor_name.empty() || serial_name.empty()) {
|
||||||
|
MessageDialog dlg(this, _L("All inputs in the custom vendor or serial are spaces. Please re-enter."),
|
||||||
|
wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES | wxYES_DEFAULT | wxCENTRE);
|
||||||
|
dlg.ShowModal();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (m_can_not_find_vendor_checkbox->GetValue() && vendor_name[0] >= '0' && vendor_name[0] <= '9') {
|
||||||
|
MessageDialog dlg(this, _L("The beginning of the vendor can not be a number. Please re-enter."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"),
|
||||||
|
wxYES | wxYES_DEFAULT | wxCENTRE);
|
||||||
|
dlg.ShowModal();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!is_check_box_selected()) {
|
if (!is_check_box_selected()) {
|
||||||
MessageDialog dlg(this, _L("You have not selected a printer or preset yet. Please select at least one."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"),
|
MessageDialog dlg(this, _L("You have not selected a printer or preset yet. Please select at least one."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"),
|
||||||
@ -1502,7 +1538,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_printer_item(wxWindow *parent)
|
|||||||
m_custom_vendor_text_ctrl->SetHint(_L("Input custom vendor"));
|
m_custom_vendor_text_ctrl->SetHint(_L("Input custom vendor"));
|
||||||
m_custom_vendor_text_ctrl->Bind(wxEVT_CHAR, [this](wxKeyEvent &event) {
|
m_custom_vendor_text_ctrl->Bind(wxEVT_CHAR, [this](wxKeyEvent &event) {
|
||||||
int key = event.GetKeyCode();
|
int key = event.GetKeyCode();
|
||||||
if (key == 64) { // "@" can not be inputed
|
if (cannot_input_key.find(key) != cannot_input_key.end()) { // "@" can not be inputed
|
||||||
event.Skip(false);
|
event.Skip(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1514,7 +1550,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_printer_item(wxWindow *parent)
|
|||||||
m_custom_model_text_ctrl->SetHint(_L("Input custom model"));
|
m_custom_model_text_ctrl->SetHint(_L("Input custom model"));
|
||||||
m_custom_model_text_ctrl->Bind(wxEVT_CHAR, [this](wxKeyEvent &event) {
|
m_custom_model_text_ctrl->Bind(wxEVT_CHAR, [this](wxKeyEvent &event) {
|
||||||
int key = event.GetKeyCode();
|
int key = event.GetKeyCode();
|
||||||
if (key == 64) { // "@" can not be inputed
|
if (cannot_input_key.find(key) != cannot_input_key.end()) { // "@" can not be inputed
|
||||||
event.Skip(false);
|
event.Skip(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -2111,6 +2147,7 @@ void CreatePrinterPresetDialog::update_preset_list_size()
|
|||||||
m_page2->SetSizerAndFit(m_page2_sizer);
|
m_page2->SetSizerAndFit(m_page2_sizer);
|
||||||
Layout();
|
Layout();
|
||||||
Fit();
|
Fit();
|
||||||
|
Refresh();
|
||||||
m_scrolled_preset_window->Thaw();
|
m_scrolled_preset_window->Thaw();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2431,6 +2468,11 @@ wxBoxSizer *CreatePrinterPresetDialog::create_page2_btns_item(wxWindow *parent)
|
|||||||
show_page1();
|
show_page1();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
custom_vendor = remove_special_key(custom_vendor);
|
||||||
|
custom_model = remove_special_key(custom_model);
|
||||||
|
boost::algorithm::trim(custom_vendor);
|
||||||
|
boost::algorithm::trim(custom_model);
|
||||||
|
|
||||||
printer_preset_name = custom_vendor + " " + custom_model + " " + nozzle_diameter;
|
printer_preset_name = custom_vendor + " " + custom_model + " " + nozzle_diameter;
|
||||||
printer_model_name = custom_vendor + " " + custom_model;
|
printer_model_name = custom_vendor + " " + custom_model;
|
||||||
} else {
|
} else {
|
||||||
@ -2933,7 +2975,8 @@ bool CreatePrinterPresetDialog::validate_input_valid()
|
|||||||
std::string vendor_name, model_name;
|
std::string vendor_name, model_name;
|
||||||
if (m_can_not_find_vendor_combox->GetValue()) {
|
if (m_can_not_find_vendor_combox->GetValue()) {
|
||||||
vendor_name = into_u8(m_custom_vendor_text_ctrl->GetValue());
|
vendor_name = into_u8(m_custom_vendor_text_ctrl->GetValue());
|
||||||
model_name = into_u8(m_custom_vendor_text_ctrl->GetValue());
|
model_name = into_u8(m_custom_model_text_ctrl->GetValue());
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
vendor_name = into_u8(m_select_vendor->GetStringSelection());
|
vendor_name = into_u8(m_select_vendor->GetStringSelection());
|
||||||
model_name = into_u8(m_select_model->GetStringSelection());
|
model_name = into_u8(m_select_model->GetStringSelection());
|
||||||
@ -2944,6 +2987,24 @@ bool CreatePrinterPresetDialog::validate_input_valid()
|
|||||||
dlg.ShowModal();
|
dlg.ShowModal();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vendor_name = remove_special_key(vendor_name);
|
||||||
|
model_name = remove_special_key(model_name);
|
||||||
|
if (vendor_name.empty() || model_name.empty()) {
|
||||||
|
MessageDialog dlg(this, _L("There may be escape characters in the custom printer or model. Please delete and re-enter."),
|
||||||
|
wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES | wxYES_DEFAULT | wxCENTRE);
|
||||||
|
dlg.ShowModal();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
boost::algorithm::trim(vendor_name);
|
||||||
|
boost::algorithm::trim(model_name);
|
||||||
|
if (vendor_name.empty() || model_name.empty()) {
|
||||||
|
MessageDialog dlg(this, _L("All inputs in the custom printer or model are spaces. Please re-enter."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"),
|
||||||
|
wxYES | wxYES_DEFAULT | wxCENTRE);
|
||||||
|
dlg.ShowModal();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (check_printable_area() == false) {
|
if (check_printable_area() == false) {
|
||||||
MessageDialog dlg(this, _L("Please check bed shape input."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES | wxYES_DEFAULT | wxCENTRE);
|
MessageDialog dlg(this, _L("Please check bed shape input."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES | wxYES_DEFAULT | wxCENTRE);
|
||||||
dlg.ShowModal();
|
dlg.ShowModal();
|
||||||
@ -3040,7 +3101,7 @@ CreatePresetSuccessfulDialog::CreatePresetSuccessfulDialog(wxWindow *parent, con
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
success_text->SetFont(Label::Head_18);
|
success_text->SetFont(Label::Head_18);
|
||||||
next_step_text->SetFont(Label::Body_16);
|
//next_step_text->SetFont(Label::Body_14);
|
||||||
success_text_sizer->Add(success_text, 0, wxEXPAND, 0);
|
success_text_sizer->Add(success_text, 0, wxEXPAND, 0);
|
||||||
success_text_sizer->Add(next_step_text, 0, wxEXPAND | wxTOP, FromDIP(5));
|
success_text_sizer->Add(next_step_text, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
horizontal_sizer->Add(success_text_sizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
horizontal_sizer->Add(success_text_sizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
@ -4107,10 +4168,11 @@ void EditFilamentPresetDialog::update_preset_tree()
|
|||||||
}
|
}
|
||||||
m_preset_tree_window->SetSizerAndFit(m_preset_tree_window_sizer);
|
m_preset_tree_window->SetSizerAndFit(m_preset_tree_window_sizer);
|
||||||
|
|
||||||
this->Thaw();
|
|
||||||
this->Layout();
|
this->Layout();
|
||||||
this->Fit();
|
this->Fit();
|
||||||
this->Refresh();
|
this->Refresh();
|
||||||
|
wxGetApp().UpdateDlgDarkUI(this);
|
||||||
|
this->Thaw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditFilamentPresetDialog::delete_preset()
|
void EditFilamentPresetDialog::delete_preset()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user