Customizable association of .3mf, .stl and .gcode files on Windows
This commit is contained in:
parent
7da1622e76
commit
e2b4de455b
7 changed files with 292 additions and 111 deletions
|
@ -68,6 +68,15 @@ void AppConfig::set_defaults()
|
|||
if (get("export_sources_full_pathnames").empty())
|
||||
set("export_sources_full_pathnames", "0");
|
||||
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef _WIN32
|
||||
if (get("associate_3mf").empty())
|
||||
set("associate_3mf", "0");
|
||||
if (get("associate_stl").empty())
|
||||
set("associate_stl", "0");
|
||||
#endif // _WIN32
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
|
||||
// remove old 'use_legacy_opengl' parameter from this config, if present
|
||||
if (!get("use_legacy_opengl").empty())
|
||||
erase("", "use_legacy_opengl");
|
||||
|
@ -109,6 +118,14 @@ void AppConfig::set_defaults()
|
|||
if (get("use_inches").empty())
|
||||
set("use_inches", "0");
|
||||
}
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
else {
|
||||
#ifdef _WIN32
|
||||
if (get("associate_gcode").empty())
|
||||
set("associate_gcode", "0");
|
||||
#endif // _WIN32
|
||||
}
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
|
||||
if (get("seq_top_layer_only").empty())
|
||||
set("seq_top_layer_only", "1");
|
||||
|
|
|
@ -80,6 +80,7 @@
|
|||
|
||||
#define ENABLE_SHOW_WIPE_MOVES (1 && ENABLE_2_3_0_BETA1)
|
||||
#define ENABLE_DRAG_AND_DROP_FIX (1 && ENABLE_2_3_0_BETA1)
|
||||
#define ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN (1 && ENABLE_2_3_0_BETA1)
|
||||
|
||||
|
||||
#endif // _prusaslicer_technologies_h_
|
||||
|
|
|
@ -238,7 +238,7 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt
|
|||
: from_u8(model.name);
|
||||
|
||||
if (i == 1) {
|
||||
auto *alt_label = new wxStaticText(variants_panel, wxID_ANY, _(L("Alternate nozzles:")));
|
||||
auto *alt_label = new wxStaticText(variants_panel, wxID_ANY, _L("Alternate nozzles:"));
|
||||
alt_label->SetFont(font_alt_nozzle);
|
||||
variants_sizer->Add(alt_label, 0, wxBOTTOM, 3);
|
||||
is_variants = true;
|
||||
|
@ -302,9 +302,9 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt
|
|||
if (/*titles.size() > 1*/is_variants) {
|
||||
// It only makes sense to add the All / None buttons if there's multiple printers
|
||||
|
||||
auto *sel_all_std = new wxButton(this, wxID_ANY, titles.size() > 1 ? _(L("All standard")) : _(L("Standard")));
|
||||
auto *sel_all = new wxButton(this, wxID_ANY, _(L("All")));
|
||||
auto *sel_none = new wxButton(this, wxID_ANY, _(L("None")));
|
||||
auto *sel_all_std = new wxButton(this, wxID_ANY, titles.size() > 1 ? _L("All standard") : _L("Standard"));
|
||||
auto *sel_all = new wxButton(this, wxID_ANY, _L("All"));
|
||||
auto *sel_none = new wxButton(this, wxID_ANY, _L("None"));
|
||||
sel_all_std->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &event) { this->select_all(true, false); });
|
||||
sel_all->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &event) { this->select_all(true, true); });
|
||||
sel_none->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &event) { this->select_all(false); });
|
||||
|
@ -444,14 +444,14 @@ PageWelcome::PageWelcome(ConfigWizard *parent)
|
|||
#else
|
||||
_utf8(L("Welcome to the %s Configuration Wizard"))
|
||||
#endif
|
||||
) % SLIC3R_APP_NAME).str()), _(L("Welcome")))
|
||||
) % SLIC3R_APP_NAME).str()), _L("Welcome"))
|
||||
, welcome_text(append_text(from_u8((boost::format(
|
||||
_utf8(L("Hello, welcome to %s! This %s helps you with the initial configuration; just a few settings and you will be ready to print.")))
|
||||
% SLIC3R_APP_NAME
|
||||
% _utf8(ConfigWizard::name())).str())
|
||||
))
|
||||
, cbox_reset(append(
|
||||
new wxCheckBox(this, wxID_ANY, _(L("Remove user profiles (a snapshot will be taken beforehand)")))
|
||||
new wxCheckBox(this, wxID_ANY, _L("Remove user profiles (a snapshot will be taken beforehand)"))
|
||||
))
|
||||
{
|
||||
welcome_text->Hide();
|
||||
|
@ -582,10 +582,10 @@ PageMaterials::PageMaterials(ConfigWizard *parent, Materials *materials, wxStrin
|
|||
grid->AddGrowableCol(3, 1);
|
||||
grid->AddGrowableRow(1, 1);
|
||||
|
||||
grid->Add(new wxStaticText(this, wxID_ANY, _(L("Printer:"))));
|
||||
grid->Add(new wxStaticText(this, wxID_ANY, _L("Printer:")));
|
||||
grid->Add(new wxStaticText(this, wxID_ANY, list1name));
|
||||
grid->Add(new wxStaticText(this, wxID_ANY, _(L("Vendor:"))));
|
||||
grid->Add(new wxStaticText(this, wxID_ANY, _(L("Profile:"))));
|
||||
grid->Add(new wxStaticText(this, wxID_ANY, _L("Vendor:")));
|
||||
grid->Add(new wxStaticText(this, wxID_ANY, _L("Profile:")));
|
||||
|
||||
grid->Add(list_printer, 0, wxEXPAND);
|
||||
grid->Add(list_type, 0, wxEXPAND);
|
||||
|
@ -593,8 +593,8 @@ PageMaterials::PageMaterials(ConfigWizard *parent, Materials *materials, wxStrin
|
|||
grid->Add(list_profile, 1, wxEXPAND);
|
||||
|
||||
auto *btn_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto *sel_all = new wxButton(this, wxID_ANY, _(L("All")));
|
||||
auto *sel_none = new wxButton(this, wxID_ANY, _(L("None")));
|
||||
auto *sel_all = new wxButton(this, wxID_ANY, _L("All"));
|
||||
auto *sel_none = new wxButton(this, wxID_ANY, _L("None"));
|
||||
btn_sizer->Add(sel_all, 0, wxRIGHT, em / 2);
|
||||
btn_sizer->Add(sel_none);
|
||||
|
||||
|
@ -657,7 +657,7 @@ void PageMaterials::reload_presets()
|
|||
{
|
||||
clear();
|
||||
|
||||
list_printer->append(_(L("(All)")), &EMPTY);
|
||||
list_printer->append(_L("(All)"), &EMPTY);
|
||||
//list_printer->SetLabelMarkup("<b>bald</b>");
|
||||
for (const Preset* printer : materials->printers) {
|
||||
list_printer->append(printer->name, &printer->name);
|
||||
|
@ -686,10 +686,10 @@ void PageMaterials::set_compatible_printers_html_window(const std::vector<std::s
|
|||
const auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue());
|
||||
const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
|
||||
const auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue());
|
||||
wxString first_line = _(L("Filaments marked with <b>*</b> are <b>not</b> compatible with some installed printers."));
|
||||
wxString first_line = _L("Filaments marked with <b>*</b> are <b>not</b> compatible with some installed printers.");
|
||||
wxString text;
|
||||
if (all_printers) {
|
||||
wxString second_line = _(L("All installed printers are compatible with the selected filament."));
|
||||
wxString second_line = _L("All installed printers are compatible with the selected filament.");
|
||||
text = wxString::Format(
|
||||
"<html>"
|
||||
"<style>"
|
||||
|
@ -709,7 +709,7 @@ void PageMaterials::set_compatible_printers_html_window(const std::vector<std::s
|
|||
, second_line
|
||||
);
|
||||
} else {
|
||||
wxString second_line = _(L("Only the following installed printers are compatible with the selected filament:"));
|
||||
wxString second_line = _L("Only the following installed printers are compatible with the selected filament:");
|
||||
text = wxString::Format(
|
||||
"<html>"
|
||||
"<style>"
|
||||
|
@ -807,7 +807,7 @@ void PageMaterials::update_lists(int sel_printer, int sel_type, int sel_vendor)
|
|||
if (sel_printers_count != sel_printer_count_prev || (sel_printers_count == 1 && sel_printer_item_prev != sel_printer && sel_printer != -1)) {
|
||||
// Refresh type list
|
||||
list_type->Clear();
|
||||
list_type->append(_(L("(All)")), &EMPTY);
|
||||
list_type->append(_L("(All)"), &EMPTY);
|
||||
if (sel_printers_count > 0) {
|
||||
// If all is selected with other printers
|
||||
// unselect "all" or all printers depending on last value
|
||||
|
@ -868,7 +868,7 @@ void PageMaterials::update_lists(int sel_printer, int sel_type, int sel_vendor)
|
|||
// but the number of vendors is going to be very small this shouldn't be a problem.
|
||||
|
||||
list_vendor->Clear();
|
||||
list_vendor->append(_(L("(All)")), &EMPTY);
|
||||
list_vendor->append(_L("(All)"), &EMPTY);
|
||||
if (sel_printers_count != 0 && sel_type != wxNOT_FOUND) {
|
||||
const std::string& type = list_type->get_data(sel_type);
|
||||
// find printer preset
|
||||
|
@ -1005,7 +1005,7 @@ void PageMaterials::sort_list_data(StringList* list, bool add_All_item, bool mat
|
|||
|
||||
list->Clear();
|
||||
if (add_All_item)
|
||||
list->append(_(L("(All)")), &EMPTY);
|
||||
list->append(_L("(All)"), &EMPTY);
|
||||
for (const auto& item : prusa_profiles)
|
||||
list->append(item, &const_cast<std::string&>(item.get()));
|
||||
for (const auto& item : other_profiles)
|
||||
|
@ -1095,11 +1095,11 @@ void PageMaterials::on_activate()
|
|||
const char *PageCustom::default_profile_name = "My Settings";
|
||||
|
||||
PageCustom::PageCustom(ConfigWizard *parent)
|
||||
: ConfigWizardPage(parent, _(L("Custom Printer Setup")), _(L("Custom Printer")))
|
||||
: ConfigWizardPage(parent, _L("Custom Printer Setup"), _L("Custom Printer"))
|
||||
{
|
||||
cb_custom = new wxCheckBox(this, wxID_ANY, _(L("Define a custom printer profile")));
|
||||
cb_custom = new wxCheckBox(this, wxID_ANY, _L("Define a custom printer profile"));
|
||||
tc_profile_name = new wxTextCtrl(this, wxID_ANY, default_profile_name);
|
||||
auto *label = new wxStaticText(this, wxID_ANY, _(L("Custom profile name:")));
|
||||
auto *label = new wxStaticText(this, wxID_ANY, _L("Custom profile name:"));
|
||||
|
||||
tc_profile_name->Enable(false);
|
||||
tc_profile_name->Bind(wxEVT_KILL_FOCUS, [this](wxFocusEvent &evt) {
|
||||
|
@ -1124,7 +1124,7 @@ PageCustom::PageCustom(ConfigWizard *parent)
|
|||
}
|
||||
|
||||
PageUpdate::PageUpdate(ConfigWizard *parent)
|
||||
: ConfigWizardPage(parent, _(L("Automatic updates")), _(L("Updates")))
|
||||
: ConfigWizardPage(parent, _L("Automatic updates"), _L("Updates"))
|
||||
, version_check(true)
|
||||
, preset_update(true)
|
||||
{
|
||||
|
@ -1132,60 +1132,76 @@ PageUpdate::PageUpdate(ConfigWizard *parent)
|
|||
auto boldfont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
|
||||
boldfont.SetWeight(wxFONTWEIGHT_BOLD);
|
||||
|
||||
auto *box_slic3r = new wxCheckBox(this, wxID_ANY, _(L("Check for application updates")));
|
||||
auto *box_slic3r = new wxCheckBox(this, wxID_ANY, _L("Check for application updates"));
|
||||
box_slic3r->SetValue(app_config->get("version_check") == "1");
|
||||
append(box_slic3r);
|
||||
append_text(wxString::Format(_(L(
|
||||
append_text(wxString::Format(_L(
|
||||
"If enabled, %s checks for new application versions online. When a new version becomes available, "
|
||||
"a notification is displayed at the next application startup (never during program usage). "
|
||||
"This is only a notification mechanisms, no automatic installation is done.")), SLIC3R_APP_NAME));
|
||||
"This is only a notification mechanisms, no automatic installation is done."), SLIC3R_APP_NAME));
|
||||
|
||||
append_spacer(VERTICAL_SPACING);
|
||||
|
||||
auto *box_presets = new wxCheckBox(this, wxID_ANY, _(L("Update built-in Presets automatically")));
|
||||
auto *box_presets = new wxCheckBox(this, wxID_ANY, _L("Update built-in Presets automatically"));
|
||||
box_presets->SetValue(app_config->get("preset_update") == "1");
|
||||
append(box_presets);
|
||||
append_text(wxString::Format(_(L(
|
||||
append_text(wxString::Format(_L(
|
||||
"If enabled, %s downloads updates of built-in system presets in the background."
|
||||
"These updates are downloaded into a separate temporary location."
|
||||
"When a new preset version becomes available it is offered at application startup.")), SLIC3R_APP_NAME));
|
||||
const auto text_bold = _(L("Updates are never applied without user's consent and never overwrite user's customized settings."));
|
||||
"When a new preset version becomes available it is offered at application startup."), SLIC3R_APP_NAME));
|
||||
const auto text_bold = _L("Updates are never applied without user's consent and never overwrite user's customized settings.");
|
||||
auto *label_bold = new wxStaticText(this, wxID_ANY, text_bold);
|
||||
label_bold->SetFont(boldfont);
|
||||
label_bold->Wrap(WRAP_WIDTH);
|
||||
append(label_bold);
|
||||
append_text(_(L("Additionally a backup snapshot of the whole configuration is created before an update is applied.")));
|
||||
append_text(_L("Additionally a backup snapshot of the whole configuration is created before an update is applied."));
|
||||
|
||||
box_slic3r->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent &event) { this->version_check = event.IsChecked(); });
|
||||
box_presets->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent &event) { this->preset_update = event.IsChecked(); });
|
||||
}
|
||||
|
||||
PageReloadFromDisk::PageReloadFromDisk(ConfigWizard* parent)
|
||||
: ConfigWizardPage(parent, _(L("Reload from disk")), _(L("Reload from disk")))
|
||||
: ConfigWizardPage(parent, _L("Reload from disk"), _L("Reload from disk"))
|
||||
, full_pathnames(false)
|
||||
{
|
||||
auto* box_pathnames = new wxCheckBox(this, wxID_ANY, _(L("Export full pathnames of models and parts sources into 3mf and amf files")));
|
||||
auto* box_pathnames = new wxCheckBox(this, wxID_ANY, _L("Export full pathnames of models and parts sources into 3mf and amf files"));
|
||||
box_pathnames->SetValue(wxGetApp().app_config->get("export_sources_full_pathnames") == "1");
|
||||
append(box_pathnames);
|
||||
append_text(_(L(
|
||||
append_text(_L(
|
||||
"If enabled, allows the Reload from disk command to automatically find and load the files when invoked.\n"
|
||||
"If not enabled, the Reload from disk command will ask to select each file using an open file dialog."
|
||||
)));
|
||||
));
|
||||
|
||||
box_pathnames->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent& event) { this->full_pathnames = event.IsChecked(); });
|
||||
}
|
||||
|
||||
PageMode::PageMode(ConfigWizard *parent)
|
||||
: ConfigWizardPage(parent, _(L("View mode")), _(L("View mode")))
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef _WIN32
|
||||
PageFilesAssociation::PageFilesAssociation(ConfigWizard* parent)
|
||||
: ConfigWizardPage(parent, _L("Files association"), _L("Files association"))
|
||||
{
|
||||
append_text(_(L("PrusaSlicer's user interfaces comes in three variants:\nSimple, Advanced, and Expert.\n"
|
||||
cb_3mf = new wxCheckBox(this, wxID_ANY, _L("Associate .3mf files to PrusaSlicer"));
|
||||
cb_stl = new wxCheckBox(this, wxID_ANY, _L("Associate .stl files to PrusaSlicer"));
|
||||
// cb_gcode = new wxCheckBox(this, wxID_ANY, _L("Associate .gcode files to PrusaSlicer G-code Viewer"));
|
||||
|
||||
append(cb_3mf);
|
||||
append(cb_stl);
|
||||
// append(cb_gcode);
|
||||
}
|
||||
#endif // _WIN32
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
|
||||
PageMode::PageMode(ConfigWizard *parent)
|
||||
: ConfigWizardPage(parent, _L("View mode"), _L("View mode"))
|
||||
{
|
||||
append_text(_L("PrusaSlicer's user interfaces comes in three variants:\nSimple, Advanced, and Expert.\n"
|
||||
"The Simple mode shows only the most frequently used settings relevant for regular 3D printing. "
|
||||
"The other two offer progressively more sophisticated fine-tuning, "
|
||||
"they are suitable for advanced and expert users, respectively.")));
|
||||
"they are suitable for advanced and expert users, respectively."));
|
||||
|
||||
radio_simple = new wxRadioButton(this, wxID_ANY, _(L("Simple mode")));
|
||||
radio_advanced = new wxRadioButton(this, wxID_ANY, _(L("Advanced mode")));
|
||||
radio_expert = new wxRadioButton(this, wxID_ANY, _(L("Expert mode")));
|
||||
radio_simple = new wxRadioButton(this, wxID_ANY, _L("Simple mode"));
|
||||
radio_advanced = new wxRadioButton(this, wxID_ANY, _L("Advanced mode"));
|
||||
radio_expert = new wxRadioButton(this, wxID_ANY, _L("Expert mode"));
|
||||
|
||||
append(radio_simple);
|
||||
append(radio_advanced);
|
||||
|
@ -1226,11 +1242,11 @@ void PageMode::serialize_mode(AppConfig *app_config) const
|
|||
}
|
||||
|
||||
PageVendors::PageVendors(ConfigWizard *parent)
|
||||
: ConfigWizardPage(parent, _(L("Other Vendors")), _(L("Other Vendors")))
|
||||
: ConfigWizardPage(parent, _L("Other Vendors"), _L("Other Vendors"))
|
||||
{
|
||||
const AppConfig &appconfig = this->wizard_p()->appconfig_new;
|
||||
|
||||
append_text(wxString::Format(_(L("Pick another vendor supported by %s")), SLIC3R_APP_NAME) + ":");
|
||||
append_text(wxString::Format(_L("Pick another vendor supported by %s"), SLIC3R_APP_NAME) + ":");
|
||||
|
||||
auto boldfont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
|
||||
boldfont.SetWeight(wxFONTWEIGHT_BOLD);
|
||||
|
@ -1261,11 +1277,11 @@ PageVendors::PageVendors(ConfigWizard *parent)
|
|||
}
|
||||
|
||||
PageFirmware::PageFirmware(ConfigWizard *parent)
|
||||
: ConfigWizardPage(parent, _(L("Firmware Type")), _(L("Firmware")), 1)
|
||||
: ConfigWizardPage(parent, _L("Firmware Type"), _L("Firmware"), 1)
|
||||
, gcode_opt(*print_config_def.get("gcode_flavor"))
|
||||
, gcode_picker(nullptr)
|
||||
{
|
||||
append_text(_(L("Choose the type of firmware used by your printer.")));
|
||||
append_text(_L("Choose the type of firmware used by your printer."));
|
||||
append_text(_(gcode_opt.tooltip));
|
||||
|
||||
wxArrayString choices;
|
||||
|
@ -1299,10 +1315,10 @@ void PageFirmware::apply_custom_config(DynamicPrintConfig &config)
|
|||
}
|
||||
|
||||
PageBedShape::PageBedShape(ConfigWizard *parent)
|
||||
: ConfigWizardPage(parent, _(L("Bed Shape and Size")), _(L("Bed Shape")), 1)
|
||||
: ConfigWizardPage(parent, _L("Bed Shape and Size"), _L("Bed Shape"), 1)
|
||||
, shape_panel(new BedShapePanel(this))
|
||||
{
|
||||
append_text(_(L("Set the shape of your printer's bed.")));
|
||||
append_text(_L("Set the shape of your printer's bed."));
|
||||
|
||||
shape_panel->build_panel(*wizard_p()->custom_config->option<ConfigOptionPoints>("bed_shape"),
|
||||
*wizard_p()->custom_config->option<ConfigOptionString>("bed_custom_texture"),
|
||||
|
@ -1322,7 +1338,7 @@ void PageBedShape::apply_custom_config(DynamicPrintConfig &config)
|
|||
}
|
||||
|
||||
PageDiameters::PageDiameters(ConfigWizard *parent)
|
||||
: ConfigWizardPage(parent, _(L("Filament and Nozzle Diameters")), _(L("Print Diameters")), 1)
|
||||
: ConfigWizardPage(parent, _L("Filament and Nozzle Diameters"), _L("Print Diameters"), 1)
|
||||
, spin_nozzle(new wxSpinCtrlDouble(this, wxID_ANY))
|
||||
, spin_filam(new wxSpinCtrlDouble(this, wxID_ANY))
|
||||
{
|
||||
|
@ -1336,11 +1352,11 @@ PageDiameters::PageDiameters(ConfigWizard *parent)
|
|||
auto *default_filam = print_config_def.get("filament_diameter")->get_default_value<ConfigOptionFloats>();
|
||||
spin_filam->SetValue(default_filam != nullptr && default_filam->size() > 0 ? default_filam->get_at(0) : 3.0);
|
||||
|
||||
append_text(_(L("Enter the diameter of your printer's hot end nozzle.")));
|
||||
append_text(_L("Enter the diameter of your printer's hot end nozzle."));
|
||||
|
||||
auto *sizer_nozzle = new wxFlexGridSizer(3, 5, 5);
|
||||
auto *text_nozzle = new wxStaticText(this, wxID_ANY, _(L("Nozzle Diameter:")));
|
||||
auto *unit_nozzle = new wxStaticText(this, wxID_ANY, _(L("mm")));
|
||||
auto *text_nozzle = new wxStaticText(this, wxID_ANY, _L("Nozzle Diameter:"));
|
||||
auto *unit_nozzle = new wxStaticText(this, wxID_ANY, _L("mm"));
|
||||
sizer_nozzle->AddGrowableCol(0, 1);
|
||||
sizer_nozzle->Add(text_nozzle, 0, wxALIGN_CENTRE_VERTICAL);
|
||||
sizer_nozzle->Add(spin_nozzle);
|
||||
|
@ -1349,12 +1365,12 @@ PageDiameters::PageDiameters(ConfigWizard *parent)
|
|||
|
||||
append_spacer(VERTICAL_SPACING);
|
||||
|
||||
append_text(_(L("Enter the diameter of your filament.")));
|
||||
append_text(_(L("Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average.")));
|
||||
append_text(_L("Enter the diameter of your filament."));
|
||||
append_text(_L("Good precision is required, so use a caliper and do multiple measurements along the filament, then compute the average."));
|
||||
|
||||
auto *sizer_filam = new wxFlexGridSizer(3, 5, 5);
|
||||
auto *text_filam = new wxStaticText(this, wxID_ANY, _(L("Filament Diameter:")));
|
||||
auto *unit_filam = new wxStaticText(this, wxID_ANY, _(L("mm")));
|
||||
auto *text_filam = new wxStaticText(this, wxID_ANY, _L("Filament Diameter:"));
|
||||
auto *unit_filam = new wxStaticText(this, wxID_ANY, _L("mm"));
|
||||
sizer_filam->AddGrowableCol(0, 1);
|
||||
sizer_filam->Add(text_filam, 0, wxALIGN_CENTRE_VERTICAL);
|
||||
sizer_filam->Add(spin_filam);
|
||||
|
@ -1387,7 +1403,7 @@ void PageDiameters::apply_custom_config(DynamicPrintConfig &config)
|
|||
}
|
||||
|
||||
PageTemperatures::PageTemperatures(ConfigWizard *parent)
|
||||
: ConfigWizardPage(parent, _(L("Nozzle and Bed Temperatures")), _(L("Temperatures")), 1)
|
||||
: ConfigWizardPage(parent, _L("Nozzle and Bed Temperatures"), _L("Temperatures"), 1)
|
||||
, spin_extr(new wxSpinCtrlDouble(this, wxID_ANY))
|
||||
, spin_bed(new wxSpinCtrlDouble(this, wxID_ANY))
|
||||
{
|
||||
|
@ -1403,12 +1419,12 @@ PageTemperatures::PageTemperatures(ConfigWizard *parent)
|
|||
auto *default_bed = def_bed.get_default_value<ConfigOptionInts>();
|
||||
spin_bed->SetValue(default_bed != nullptr && default_bed->size() > 0 ? default_bed->get_at(0) : 0);
|
||||
|
||||
append_text(_(L("Enter the temperature needed for extruding your filament.")));
|
||||
append_text(_(L("A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS.")));
|
||||
append_text(_L("Enter the temperature needed for extruding your filament."));
|
||||
append_text(_L("A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS."));
|
||||
|
||||
auto *sizer_extr = new wxFlexGridSizer(3, 5, 5);
|
||||
auto *text_extr = new wxStaticText(this, wxID_ANY, _(L("Extrusion Temperature:")));
|
||||
auto *unit_extr = new wxStaticText(this, wxID_ANY, _(L("°C")));
|
||||
auto *text_extr = new wxStaticText(this, wxID_ANY, _L("Extrusion Temperature:"));
|
||||
auto *unit_extr = new wxStaticText(this, wxID_ANY, _L("°C"));
|
||||
sizer_extr->AddGrowableCol(0, 1);
|
||||
sizer_extr->Add(text_extr, 0, wxALIGN_CENTRE_VERTICAL);
|
||||
sizer_extr->Add(spin_extr);
|
||||
|
@ -1417,12 +1433,12 @@ PageTemperatures::PageTemperatures(ConfigWizard *parent)
|
|||
|
||||
append_spacer(VERTICAL_SPACING);
|
||||
|
||||
append_text(_(L("Enter the bed temperature needed for getting your filament to stick to your heated bed.")));
|
||||
append_text(_(L("A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed.")));
|
||||
append_text(_L("Enter the bed temperature needed for getting your filament to stick to your heated bed."));
|
||||
append_text(_L("A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have no heated bed."));
|
||||
|
||||
auto *sizer_bed = new wxFlexGridSizer(3, 5, 5);
|
||||
auto *text_bed = new wxStaticText(this, wxID_ANY, _(L("Bed Temperature:")));
|
||||
auto *unit_bed = new wxStaticText(this, wxID_ANY, _(L("°C")));
|
||||
auto *text_bed = new wxStaticText(this, wxID_ANY, _L("Bed Temperature:"));
|
||||
auto *unit_bed = new wxStaticText(this, wxID_ANY, _L("°C"));
|
||||
sizer_bed->AddGrowableCol(0, 1);
|
||||
sizer_bed->Add(text_bed, 0, wxALIGN_CENTRE_VERTICAL);
|
||||
sizer_bed->Add(spin_bed);
|
||||
|
@ -1780,6 +1796,11 @@ void ConfigWizard::priv::load_pages()
|
|||
|
||||
index->add_page(page_update);
|
||||
index->add_page(page_reload_from_disk);
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef _WIN32
|
||||
index->add_page(page_files_association);
|
||||
#endif // _WIN32
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
index->add_page(page_mode);
|
||||
|
||||
index->go_to(former_active); // Will restore the active item/page if possible
|
||||
|
@ -1876,7 +1897,7 @@ void ConfigWizard::priv::load_vendors()
|
|||
|
||||
void ConfigWizard::priv::add_page(ConfigWizardPage *page)
|
||||
{
|
||||
const int proportion = (page->shortname == _(L("Filaments"))) || (page->shortname == _(L("SLA Materials"))) ? 1 : 0;
|
||||
const int proportion = (page->shortname == _L("Filaments")) || (page->shortname == _L("SLA Materials")) ? 1 : 0;
|
||||
hscroll_sizer->Add(page, proportion, wxEXPAND);
|
||||
all_pages.push_back(page);
|
||||
}
|
||||
|
@ -1930,12 +1951,12 @@ void ConfigWizard::priv::create_3rdparty_pages()
|
|||
PagePrinters* pageSLA = nullptr;
|
||||
|
||||
if (is_fff_technology) {
|
||||
pageFFF = new PagePrinters(q, vendor->name + " " +_(L("FFF Technology Printers")), vendor->name+" FFF", *vendor, 1, T_FFF);
|
||||
pageFFF = new PagePrinters(q, vendor->name + " " +_L("FFF Technology Printers"), vendor->name+" FFF", *vendor, 1, T_FFF);
|
||||
add_page(pageFFF);
|
||||
}
|
||||
|
||||
if (is_sla_technology) {
|
||||
pageSLA = new PagePrinters(q, vendor->name + " " + _(L("SLA Technology Printers")), vendor->name+" MSLA", *vendor, 1, T_SLA);
|
||||
pageSLA = new PagePrinters(q, vendor->name + " " + _L("SLA Technology Printers"), vendor->name+" MSLA", *vendor, 1, T_SLA);
|
||||
add_page(pageSLA);
|
||||
}
|
||||
|
||||
|
@ -2241,7 +2262,7 @@ bool ConfigWizard::priv::check_and_install_missing_materials(Technology technolo
|
|||
|
||||
const auto ask_and_select_default_materials = [this](const wxString &message, const std::set<const VendorProfile::PrinterModel*> &printer_models, Technology technology)
|
||||
{
|
||||
wxMessageDialog msg(q, message, _(L("Notice")), wxYES_NO);
|
||||
wxMessageDialog msg(q, message, _L("Notice"), wxYES_NO);
|
||||
if (msg.ShowModal() == wxID_YES)
|
||||
select_default_materials_for_printer_models(technology, printer_models);
|
||||
};
|
||||
|
@ -2372,6 +2393,26 @@ void ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese
|
|||
app_config->set("preset_update", page_update->preset_update ? "1" : "0");
|
||||
app_config->set("export_sources_full_pathnames", page_reload_from_disk->full_pathnames ? "1" : "0");
|
||||
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef _WIN32
|
||||
app_config->set("associate_3mf", page_files_association->associate_3mf() ? "1" : "0");
|
||||
app_config->set("associate_stl", page_files_association->associate_stl() ? "1" : "0");
|
||||
// app_config->set("associate_gcode", page_files_association->associate_gcode() ? "1" : "0");
|
||||
|
||||
if (wxGetApp().is_editor()) {
|
||||
if (page_files_association->associate_3mf())
|
||||
wxGetApp().associate_3mf_files();
|
||||
if (page_files_association->associate_stl())
|
||||
wxGetApp().associate_stl_files();
|
||||
}
|
||||
// else {
|
||||
// if (page_files_association->associate_gcode())
|
||||
// wxGetApp().associate_gcode_files();
|
||||
// }
|
||||
|
||||
#endif // _WIN32
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
|
||||
page_mode->serialize_mode(app_config);
|
||||
|
||||
std::string preferred_model;
|
||||
|
@ -2491,13 +2532,13 @@ ConfigWizard::ConfigWizard(wxWindow *parent)
|
|||
topsizer->AddSpacer(INDEX_MARGIN);
|
||||
topsizer->Add(p->hscroll, 1, wxEXPAND);
|
||||
|
||||
p->btn_sel_all = new wxButton(this, wxID_ANY, _(L("Select all standard printers")));
|
||||
p->btn_sel_all = new wxButton(this, wxID_ANY, _L("Select all standard printers"));
|
||||
p->btnsizer->Add(p->btn_sel_all);
|
||||
|
||||
p->btn_prev = new wxButton(this, wxID_ANY, _(L("< &Back")));
|
||||
p->btn_next = new wxButton(this, wxID_ANY, _(L("&Next >")));
|
||||
p->btn_finish = new wxButton(this, wxID_APPLY, _(L("&Finish")));
|
||||
p->btn_cancel = new wxButton(this, wxID_CANCEL, _(L("Cancel"))); // Note: The label needs to be present, otherwise we get accelerator bugs on Mac
|
||||
p->btn_prev = new wxButton(this, wxID_ANY, _L("< &Back"));
|
||||
p->btn_next = new wxButton(this, wxID_ANY, _L("&Next >"));
|
||||
p->btn_finish = new wxButton(this, wxID_APPLY, _L("&Finish"));
|
||||
p->btn_cancel = new wxButton(this, wxID_CANCEL, _L("Cancel")); // Note: The label needs to be present, otherwise we get accelerator bugs on Mac
|
||||
p->btnsizer->AddStretchSpacer();
|
||||
p->btnsizer->Add(p->btn_prev, 0, wxLEFT, BTN_SPACING);
|
||||
p->btnsizer->Add(p->btn_next, 0, wxLEFT, BTN_SPACING);
|
||||
|
@ -2510,10 +2551,10 @@ ConfigWizard::ConfigWizard(wxWindow *parent)
|
|||
|
||||
p->add_page(p->page_welcome = new PageWelcome(this));
|
||||
|
||||
p->page_fff = new PagePrinters(this, _(L("Prusa FFF Technology Printers")), "Prusa FFF", *vendor_prusa, 0, T_FFF);
|
||||
p->page_fff = new PagePrinters(this, _L("Prusa FFF Technology Printers"), "Prusa FFF", *vendor_prusa, 0, T_FFF);
|
||||
p->add_page(p->page_fff);
|
||||
|
||||
p->page_msla = new PagePrinters(this, _(L("Prusa MSLA Technology Printers")), "Prusa MSLA", *vendor_prusa, 0, T_SLA);
|
||||
p->page_msla = new PagePrinters(this, _L("Prusa MSLA Technology Printers"), "Prusa MSLA", *vendor_prusa, 0, T_SLA);
|
||||
p->add_page(p->page_msla);
|
||||
|
||||
// Pages for 3rd party vendors
|
||||
|
@ -2528,13 +2569,18 @@ ConfigWizard::ConfigWizard(wxWindow *parent)
|
|||
p->update_materials(T_ANY);
|
||||
|
||||
p->add_page(p->page_filaments = new PageMaterials(this, &p->filaments,
|
||||
_(L("Filament Profiles Selection")), _(L("Filaments")), _(L("Type:")) ));
|
||||
_L("Filament Profiles Selection"), _L("Filaments"), _L("Type:") ));
|
||||
p->add_page(p->page_sla_materials = new PageMaterials(this, &p->sla_materials,
|
||||
_(L("SLA Material Profiles Selection")) + " ", _(L("SLA Materials")), _(L("Type:")) ));
|
||||
_L("SLA Material Profiles Selection") + " ", _L("SLA Materials"), _L("Type:") ));
|
||||
|
||||
|
||||
p->add_page(p->page_update = new PageUpdate(this));
|
||||
p->add_page(p->page_reload_from_disk = new PageReloadFromDisk(this));
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef _WIN32
|
||||
p->add_page(p->page_files_association = new PageFilesAssociation(this));
|
||||
#endif // _WIN32
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
p->add_page(p->page_mode = new PageMode(this));
|
||||
p->add_page(p->page_firmware = new PageFirmware(this));
|
||||
p->add_page(p->page_bed = new PageBedShape(this));
|
||||
|
|
|
@ -392,6 +392,25 @@ struct PageReloadFromDisk : ConfigWizardPage
|
|||
PageReloadFromDisk(ConfigWizard* parent);
|
||||
};
|
||||
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef _WIN32
|
||||
struct PageFilesAssociation : ConfigWizardPage
|
||||
{
|
||||
private:
|
||||
wxCheckBox* cb_3mf{ nullptr };
|
||||
wxCheckBox* cb_stl{ nullptr };
|
||||
// wxCheckBox* cb_gcode;
|
||||
|
||||
public:
|
||||
PageFilesAssociation(ConfigWizard* parent);
|
||||
|
||||
bool associate_3mf() const { return cb_3mf->IsChecked(); }
|
||||
bool associate_stl() const { return cb_stl->IsChecked(); }
|
||||
// bool associate_gcode() const { return cb_gcode->IsChecked(); }
|
||||
};
|
||||
#endif // _WIN32
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
|
||||
struct PageMode: ConfigWizardPage
|
||||
{
|
||||
wxRadioButton *radio_simple;
|
||||
|
@ -550,6 +569,11 @@ struct ConfigWizard::priv
|
|||
PageCustom *page_custom = nullptr;
|
||||
PageUpdate *page_update = nullptr;
|
||||
PageReloadFromDisk *page_reload_from_disk = nullptr;
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef _WIN32
|
||||
PageFilesAssociation* page_files_association = nullptr;
|
||||
#endif // _WIN32
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
PageMode *page_mode = nullptr;
|
||||
PageVendors *page_vendors = nullptr;
|
||||
Pages3rdparty pages_3rdparty;
|
||||
|
|
|
@ -804,7 +804,14 @@ bool GUI_App::on_init_inner()
|
|||
|
||||
if (is_editor()) {
|
||||
#ifdef __WXMSW__
|
||||
associate_3mf_files();
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
if (app_config->get("associate_3mf") == "1")
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
associate_3mf_files();
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
if (app_config->get("associate_stl") == "1")
|
||||
associate_stl_files();
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#endif // __WXMSW__
|
||||
|
||||
preset_updater = new PresetUpdater();
|
||||
|
@ -820,7 +827,10 @@ bool GUI_App::on_init_inner()
|
|||
}
|
||||
else {
|
||||
#ifdef __WXMSW__
|
||||
associate_gcode_files();
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
if (app_config->get("associate_gcode") == "1")
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
associate_gcode_files();
|
||||
#endif // __WXMSW__
|
||||
}
|
||||
|
||||
|
@ -1577,6 +1587,20 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
|
|||
app_layout_changed = dlg.settings_layout_changed();
|
||||
if (dlg.seq_top_layer_only_changed())
|
||||
this->plater_->refresh_print();
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef _WIN32
|
||||
if (is_editor()) {
|
||||
if (app_config->get("associate_3mf") == "1")
|
||||
associate_3mf_files();
|
||||
if (app_config->get("associate_stl") == "1")
|
||||
associate_stl_files();
|
||||
}
|
||||
else {
|
||||
if (app_config->get("associate_gcode") == "1")
|
||||
associate_gcode_files();
|
||||
}
|
||||
#endif // _WIN32
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
}
|
||||
if (app_layout_changed) {
|
||||
// hide full main_sizer for mainFrame
|
||||
|
@ -2112,6 +2136,32 @@ void GUI_App::associate_3mf_files()
|
|||
::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nullptr, nullptr);
|
||||
}
|
||||
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
void GUI_App::associate_stl_files()
|
||||
{
|
||||
wchar_t app_path[MAX_PATH];
|
||||
::GetModuleFileNameW(nullptr, app_path, sizeof(app_path));
|
||||
|
||||
std::wstring prog_path = L"\"" + std::wstring(app_path) + L"\"";
|
||||
std::wstring prog_id = L"Prusa.Slicer.1";
|
||||
std::wstring prog_desc = L"PrusaSlicer";
|
||||
std::wstring prog_command = prog_path + L" \"%1\"";
|
||||
std::wstring reg_base = L"Software\\Classes";
|
||||
std::wstring reg_extension = reg_base + L"\\.stl";
|
||||
std::wstring reg_prog_id = reg_base + L"\\" + prog_id;
|
||||
std::wstring reg_prog_id_command = reg_prog_id + L"\\Shell\\Open\\Command";
|
||||
|
||||
bool is_new = false;
|
||||
is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_extension.c_str(), prog_id.c_str());
|
||||
is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_prog_id.c_str(), prog_desc.c_str());
|
||||
is_new |= set_into_win_registry(HKEY_CURRENT_USER, reg_prog_id_command.c_str(), prog_command.c_str());
|
||||
|
||||
if (is_new)
|
||||
// notify Windows only when any of the values gets changed
|
||||
::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nullptr, nullptr);
|
||||
}
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
|
||||
void GUI_App::associate_gcode_files()
|
||||
{
|
||||
wchar_t app_path[MAX_PATH];
|
||||
|
|
|
@ -274,6 +274,14 @@ public:
|
|||
bool is_gl_version_greater_or_equal_to(unsigned int major, unsigned int minor) const { return m_opengl_mgr.get_gl_info().is_version_greater_or_equal_to(major, minor); }
|
||||
bool is_glsl_version_greater_or_equal_to(unsigned int major, unsigned int minor) const { return m_opengl_mgr.get_gl_info().is_glsl_version_greater_or_equal_to(major, minor); }
|
||||
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef __WXMSW__
|
||||
void associate_3mf_files();
|
||||
void associate_stl_files();
|
||||
void associate_gcode_files();
|
||||
#endif // __WXMSW__
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
|
||||
private:
|
||||
bool on_init_inner();
|
||||
void init_app_config();
|
||||
|
@ -285,11 +293,14 @@ private:
|
|||
bool config_wizard_startup();
|
||||
void check_updates(const bool verbose);
|
||||
|
||||
#if !ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef __WXMSW__
|
||||
void associate_3mf_files();
|
||||
void associate_gcode_files();
|
||||
#endif // __WXMSW__
|
||||
#endif // !ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
};
|
||||
|
||||
DECLARE_APP(GUI_App)
|
||||
|
||||
} // GUI
|
||||
|
|
|
@ -85,6 +85,25 @@ void PreferencesDialog::build()
|
|||
option = Option(def, "export_sources_full_pathnames");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef _WIN32
|
||||
// Please keep in sync with ConfigWizard
|
||||
def.label = L("Associate .3mf files to PrusaSlicer");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("If enabled, sets PrusaSlicer as default application to open .3mf files.");
|
||||
def.set_default_value(new ConfigOptionBool(app_config->get("associate_3mf") == "1"));
|
||||
option = Option(def, "associate_3mf");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
|
||||
def.label = L("Associate .stl files to PrusaSlicer");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("If enabled, sets PrusaSlicer as default application to open .stl files.");
|
||||
def.set_default_value(new ConfigOptionBool(app_config->get("associate_stl") == "1"));
|
||||
option = Option(def, "associate_stl");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
#endif // _WIN32
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
|
||||
// Please keep in sync with ConfigWizard
|
||||
def.label = L("Update built-in Presets automatically");
|
||||
def.type = coBool;
|
||||
|
@ -126,7 +145,44 @@ void PreferencesDialog::build()
|
|||
def.set_default_value(new ConfigOptionBool{ app_config->has("single_instance") ? app_config->get("single_instance") == "1" : false });
|
||||
option = Option(def, "single_instance");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
|
||||
/* // ysFIXME THis part is temporary commented
|
||||
// The using of inches is implemented just for object's size and position
|
||||
|
||||
def.label = L("Use inches instead of millimeters");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("Use inches instead of millimeters for the object's size");
|
||||
def.set_default_value(new ConfigOptionBool{ app_config->get("use_inches") == "1" });
|
||||
option = Option(def, "use_inches");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
*/
|
||||
|
||||
def.label = L("Ask for unsaved changes when closing application");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("When closing the application, always ask for unsaved changes");
|
||||
def.set_default_value(new ConfigOptionBool{ app_config->get("default_action_on_close_application") == "none" });
|
||||
option = Option(def, "default_action_on_close_application");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
|
||||
def.label = L("Ask for unsaved changes when selecting new preset");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("Always ask for unsaved changes when selecting new preset");
|
||||
def.set_default_value(new ConfigOptionBool{ app_config->get("default_action_on_select_preset") == "none" });
|
||||
option = Option(def, "default_action_on_select_preset");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
}
|
||||
#if ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
#ifdef _WIN32
|
||||
else {
|
||||
def.label = L("Associate .gcode files to PrusaSlicer G-code Viewer");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("If enabled, sets PrusaSlicer G-code Viewer as default application to open .gcode files.");
|
||||
def.set_default_value(new ConfigOptionBool(app_config->get("associate_gcode") == "1"));
|
||||
option = Option(def, "associate_gcode");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
}
|
||||
#endif // _WIN32
|
||||
#endif // ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN
|
||||
|
||||
#if __APPLE__
|
||||
def.label = L("Use Retina resolution for the 3D scene");
|
||||
|
@ -137,30 +193,6 @@ void PreferencesDialog::build()
|
|||
option = Option (def, "use_retina_opengl");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
#endif
|
||||
/* // ysFIXME THis part is temporary commented
|
||||
// The using of inches is implemented just for object's size and position
|
||||
|
||||
def.label = L("Use inches instead of millimeters");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("Use inches instead of millimeters for the object's size");
|
||||
def.set_default_value(new ConfigOptionBool{ app_config->get("use_inches") == "1" });
|
||||
option = Option(def, "use_inches");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
*/
|
||||
|
||||
def.label = L("Ask for unsaved changes when closing application");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("When closing the application, always ask for unsaved changes");
|
||||
def.set_default_value(new ConfigOptionBool{ app_config->get("default_action_on_close_application") == "none" });
|
||||
option = Option(def, "default_action_on_close_application");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
|
||||
def.label = L("Ask for unsaved changes when selecting new preset");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("Always ask for unsaved changes when selecting new preset");
|
||||
def.set_default_value(new ConfigOptionBool{ app_config->get("default_action_on_select_preset") == "none" });
|
||||
option = Option(def, "default_action_on_select_preset");
|
||||
m_optgroup_general->append_single_option_line(option);
|
||||
|
||||
// Show/Hide splash screen
|
||||
def.label = L("Show splash screen");
|
||||
|
@ -229,6 +261,14 @@ void PreferencesDialog::build()
|
|||
def.set_default_value(new ConfigOptionBool{ app_config->get("use_custom_toolbar_size") == "1" });
|
||||
option = Option(def, "use_custom_toolbar_size");
|
||||
m_optgroup_gui->append_single_option_line(option);
|
||||
|
||||
def.label = L("Suppress to open hyperlink in browser");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("If enabled, the descriptions of configuration parameters in settings tabs woldn't work as hyperlinks. "
|
||||
"If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks.");
|
||||
def.set_default_value(new ConfigOptionBool{ app_config->get("suppress_hyperlinks") == "1" });
|
||||
option = Option(def, "suppress_hyperlinks");
|
||||
m_optgroup_gui->append_single_option_line(option);
|
||||
}
|
||||
|
||||
def.label = L("Sequential slider applied only to top layer");
|
||||
|
@ -239,14 +279,6 @@ void PreferencesDialog::build()
|
|||
option = Option(def, "seq_top_layer_only");
|
||||
m_optgroup_gui->append_single_option_line(option);
|
||||
|
||||
def.label = L("Suppress to open hyperlink in browser");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("If enabled, the descriptions of configuration parameters in settings tabs woldn't work as hyperlinks. "
|
||||
"If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks.");
|
||||
def.set_default_value(new ConfigOptionBool{ app_config->get("suppress_hyperlinks") == "1" });
|
||||
option = Option(def, "suppress_hyperlinks");
|
||||
m_optgroup_gui->append_single_option_line(option);
|
||||
|
||||
m_optgroup_gui->activate();
|
||||
|
||||
if (is_editor) {
|
||||
|
|
Loading…
Add table
Reference in a new issue