PhysicalPrinter. PhysicalPrinterDialog improvements
This commit is contained in:
parent
8ac839f427
commit
1a2926050f
10 changed files with 85 additions and 22 deletions
|
@ -1355,6 +1355,7 @@ const std::vector<std::string>& PhysicalPrinter::printer_options()
|
||||||
"print_host",
|
"print_host",
|
||||||
"printhost_apikey",
|
"printhost_apikey",
|
||||||
"printhost_cafile",
|
"printhost_cafile",
|
||||||
|
"authorization_type",
|
||||||
"login",
|
"login",
|
||||||
"password"
|
"password"
|
||||||
};
|
};
|
||||||
|
|
|
@ -150,6 +150,17 @@ void PrintConfigDef::init_common_params()
|
||||||
def->tooltip = L("Related printer preset name");
|
def->tooltip = L("Related printer preset name");
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionString(""));
|
def->set_default_value(new ConfigOptionString(""));
|
||||||
|
|
||||||
|
def = this->add("authorization_type", coEnum);
|
||||||
|
def->label = L("Authorization Type");
|
||||||
|
// def->tooltip = L("");
|
||||||
|
def->enum_keys_map = &ConfigOptionEnum<AuthorizationType>::get_enum_values();
|
||||||
|
def->enum_values.push_back("key");
|
||||||
|
def->enum_values.push_back("user");
|
||||||
|
def->enum_labels.push_back("KeyPassword");
|
||||||
|
def->enum_labels.push_back("UserPassword");
|
||||||
|
def->mode = comAdvanced;
|
||||||
|
def->set_default_value(new ConfigOptionEnum<AuthorizationType>(atKeyPassword));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintConfigDef::init_fff_params()
|
void PrintConfigDef::init_fff_params()
|
||||||
|
|
|
@ -33,6 +33,10 @@ enum PrintHostType {
|
||||||
htOctoPrint, htDuet, htFlashAir, htAstroBox
|
htOctoPrint, htDuet, htFlashAir, htAstroBox
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum AuthorizationType {
|
||||||
|
atKeyPassword, atUserPassword
|
||||||
|
};
|
||||||
|
|
||||||
enum InfillPattern : int {
|
enum InfillPattern : int {
|
||||||
ipRectilinear, ipMonotonous, ipGrid, ipTriangles, ipStars, ipCubic, ipLine, ipConcentric, ipHoneycomb, ip3DHoneycomb,
|
ipRectilinear, ipMonotonous, ipGrid, ipTriangles, ipStars, ipCubic, ipLine, ipConcentric, ipHoneycomb, ip3DHoneycomb,
|
||||||
ipGyroid, ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral, ipCount,
|
ipGyroid, ipHilbertCurve, ipArchimedeanChords, ipOctagramSpiral, ipCount,
|
||||||
|
@ -109,6 +113,15 @@ template<> inline const t_config_enum_values& ConfigOptionEnum<PrintHostType>::g
|
||||||
return keys_map;
|
return keys_map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<> inline const t_config_enum_values& ConfigOptionEnum<AuthorizationType>::get_enum_values() {
|
||||||
|
static t_config_enum_values keys_map;
|
||||||
|
if (keys_map.empty()) {
|
||||||
|
keys_map["key"] = atKeyPassword;
|
||||||
|
keys_map["user"] = atUserPassword;
|
||||||
|
}
|
||||||
|
return keys_map;
|
||||||
|
}
|
||||||
|
|
||||||
template<> inline const t_config_enum_values& ConfigOptionEnum<InfillPattern>::get_enum_values() {
|
template<> inline const t_config_enum_values& ConfigOptionEnum<InfillPattern>::get_enum_values() {
|
||||||
static t_config_enum_values keys_map;
|
static t_config_enum_values keys_map;
|
||||||
if (keys_map.empty()) {
|
if (keys_map.empty()) {
|
||||||
|
|
|
@ -1080,6 +1080,8 @@ boost::any& Choice::get_value()
|
||||||
m_value = static_cast<SLADisplayOrientation>(ret_enum);
|
m_value = static_cast<SLADisplayOrientation>(ret_enum);
|
||||||
else if (m_opt_id.compare("support_pillar_connection_mode") == 0)
|
else if (m_opt_id.compare("support_pillar_connection_mode") == 0)
|
||||||
m_value = static_cast<SLAPillarConnectionMode>(ret_enum);
|
m_value = static_cast<SLAPillarConnectionMode>(ret_enum);
|
||||||
|
else if (m_opt_id == "authorization_type")
|
||||||
|
m_value = static_cast<AuthorizationType>(ret_enum);
|
||||||
}
|
}
|
||||||
else if (m_opt.gui_type == "f_enum_open") {
|
else if (m_opt.gui_type == "f_enum_open") {
|
||||||
const int ret_enum = field->GetSelection();
|
const int ret_enum = field->GetSelection();
|
||||||
|
|
|
@ -151,6 +151,8 @@ public:
|
||||||
virtual wxSizer* getSizer() { return nullptr; }
|
virtual wxSizer* getSizer() { return nullptr; }
|
||||||
virtual wxWindow* getWindow() { return nullptr; }
|
virtual wxWindow* getWindow() { return nullptr; }
|
||||||
|
|
||||||
|
wxStaticText* getLabel() { return m_Label; }
|
||||||
|
|
||||||
bool is_matched(const std::string& string, const std::string& pattern);
|
bool is_matched(const std::string& string, const std::string& pattern);
|
||||||
void get_value_by_opt_type(wxString& str, const bool check_value = true);
|
void get_value_by_opt_type(wxString& str, const bool check_value = true);
|
||||||
|
|
||||||
|
|
|
@ -194,6 +194,8 @@ void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt
|
||||||
config.set_key_value(opt_key, new ConfigOptionEnum<SLADisplayOrientation>(boost::any_cast<SLADisplayOrientation>(value)));
|
config.set_key_value(opt_key, new ConfigOptionEnum<SLADisplayOrientation>(boost::any_cast<SLADisplayOrientation>(value)));
|
||||||
else if(opt_key.compare("support_pillar_connection_mode") == 0)
|
else if(opt_key.compare("support_pillar_connection_mode") == 0)
|
||||||
config.set_key_value(opt_key, new ConfigOptionEnum<SLAPillarConnectionMode>(boost::any_cast<SLAPillarConnectionMode>(value)));
|
config.set_key_value(opt_key, new ConfigOptionEnum<SLAPillarConnectionMode>(boost::any_cast<SLAPillarConnectionMode>(value)));
|
||||||
|
else if(opt_key == "authorization_type")
|
||||||
|
config.set_key_value(opt_key, new ConfigOptionEnum<AuthorizationType>(boost::any_cast<AuthorizationType>(value)));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case coPoints:{
|
case coPoints:{
|
||||||
|
|
|
@ -729,31 +729,34 @@ boost::any ConfigOptionsGroup::get_config_value(const DynamicPrintConfig& config
|
||||||
opt_key == "fill_pattern" ) {
|
opt_key == "fill_pattern" ) {
|
||||||
ret = static_cast<int>(config.option<ConfigOptionEnum<InfillPattern>>(opt_key)->value);
|
ret = static_cast<int>(config.option<ConfigOptionEnum<InfillPattern>>(opt_key)->value);
|
||||||
}
|
}
|
||||||
else if (opt_key.compare("ironing_type") == 0 ) {
|
else if (opt_key == "ironing_type") {
|
||||||
ret = static_cast<int>(config.option<ConfigOptionEnum<IroningType>>(opt_key)->value);
|
ret = static_cast<int>(config.option<ConfigOptionEnum<IroningType>>(opt_key)->value);
|
||||||
}
|
}
|
||||||
else if (opt_key.compare("gcode_flavor") == 0 ) {
|
else if (opt_key == "gcode_flavor") {
|
||||||
ret = static_cast<int>(config.option<ConfigOptionEnum<GCodeFlavor>>(opt_key)->value);
|
ret = static_cast<int>(config.option<ConfigOptionEnum<GCodeFlavor>>(opt_key)->value);
|
||||||
}
|
}
|
||||||
else if (opt_key.compare("support_material_pattern") == 0) {
|
else if (opt_key == "support_material_pattern") {
|
||||||
ret = static_cast<int>(config.option<ConfigOptionEnum<SupportMaterialPattern>>(opt_key)->value);
|
ret = static_cast<int>(config.option<ConfigOptionEnum<SupportMaterialPattern>>(opt_key)->value);
|
||||||
}
|
}
|
||||||
else if (opt_key.compare("seam_position") == 0) {
|
else if (opt_key == "seam_position") {
|
||||||
ret = static_cast<int>(config.option<ConfigOptionEnum<SeamPosition>>(opt_key)->value);
|
ret = static_cast<int>(config.option<ConfigOptionEnum<SeamPosition>>(opt_key)->value);
|
||||||
}
|
}
|
||||||
else if (opt_key.compare("host_type") == 0) {
|
else if (opt_key == "host_type") {
|
||||||
ret = static_cast<int>(config.option<ConfigOptionEnum<PrintHostType>>(opt_key)->value);
|
ret = static_cast<int>(config.option<ConfigOptionEnum<PrintHostType>>(opt_key)->value);
|
||||||
}
|
}
|
||||||
else if (opt_key.compare("display_orientation") == 0) {
|
else if (opt_key == "display_orientation") {
|
||||||
ret = static_cast<int>(config.option<ConfigOptionEnum<SLADisplayOrientation>>(opt_key)->value);
|
ret = static_cast<int>(config.option<ConfigOptionEnum<SLADisplayOrientation>>(opt_key)->value);
|
||||||
}
|
}
|
||||||
else if (opt_key.compare("support_pillar_connection_mode") == 0) {
|
else if (opt_key == "support_pillar_connection_mode") {
|
||||||
ret = static_cast<int>(config.option<ConfigOptionEnum<SLAPillarConnectionMode>>(opt_key)->value);
|
ret = static_cast<int>(config.option<ConfigOptionEnum<SLAPillarConnectionMode>>(opt_key)->value);
|
||||||
}
|
}
|
||||||
|
else if (opt_key == "authorization_type") {
|
||||||
|
ret = static_cast<int>(config.option<ConfigOptionEnum<AuthorizationType>>(opt_key)->value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case coPoints:
|
case coPoints:
|
||||||
if (opt_key.compare("bed_shape") == 0)
|
if (opt_key == "bed_shape")
|
||||||
ret = config.option<ConfigOptionPoints>(opt_key)->values;
|
ret = config.option<ConfigOptionPoints>(opt_key)->values;
|
||||||
else
|
else
|
||||||
ret = config.option<ConfigOptionPoints>(opt_key)->get_at(idx);
|
ret = config.option<ConfigOptionPoints>(opt_key)->get_at(idx);
|
||||||
|
|
|
@ -149,6 +149,13 @@ public:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void show_field(const t_config_option_key& opt_key, bool show = true) {
|
||||||
|
Field* field = get_field(opt_key);
|
||||||
|
field->getWindow()->Show(show);
|
||||||
|
field->getLabel()->Show(show);
|
||||||
|
}
|
||||||
|
void hide_field(const t_config_option_key& opt_key) { show_field(opt_key, false); }
|
||||||
|
|
||||||
void set_name(const wxString& new_name) {
|
void set_name(const wxString& new_name) {
|
||||||
stb->SetLabel(new_name);
|
stb->SetLabel(new_name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -837,7 +837,7 @@ void TabPresetComboBox::update_dirty()
|
||||||
|
|
||||||
|
|
||||||
PhysicalPrinterDialog::PhysicalPrinterDialog(wxString printer_name)
|
PhysicalPrinterDialog::PhysicalPrinterDialog(wxString printer_name)
|
||||||
: DPIDialog(NULL, wxID_ANY, _L("PhysicalPrinter"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
: DPIDialog(NULL, wxID_ANY, _L("Physical Printer"), wxDefaultPosition, wxSize(45 * wxGetApp().em_unit(), -1), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
||||||
{
|
{
|
||||||
SetFont(wxGetApp().normal_font());
|
SetFont(wxGetApp().normal_font());
|
||||||
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
||||||
|
@ -856,7 +856,7 @@ PhysicalPrinterDialog::PhysicalPrinterDialog(wxString printer_name)
|
||||||
|
|
||||||
// update values
|
// update values
|
||||||
m_optgroup->reload_config();
|
m_optgroup->reload_config();
|
||||||
update_octoprint_visible();
|
update();
|
||||||
});
|
});
|
||||||
m_printer_presets->update();
|
m_printer_presets->update();
|
||||||
|
|
||||||
|
@ -898,6 +898,11 @@ PhysicalPrinterDialog::PhysicalPrinterDialog(wxString printer_name)
|
||||||
|
|
||||||
void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgroup)
|
void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgroup)
|
||||||
{
|
{
|
||||||
|
m_optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value) {
|
||||||
|
if (opt_key == "authorization_type")
|
||||||
|
this->update();
|
||||||
|
};
|
||||||
|
|
||||||
m_optgroup->append_single_option_line("host_type");
|
m_optgroup->append_single_option_line("host_type");
|
||||||
|
|
||||||
auto create_sizer_with_btn = [this](wxWindow* parent, ScalableButton** btn, const std::string& icon_name, const wxString& label) {
|
auto create_sizer_with_btn = [this](wxWindow* parent, ScalableButton** btn, const std::string& icon_name, const wxString& label) {
|
||||||
|
@ -952,6 +957,9 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr
|
||||||
host_line.append_widget(printhost_browse);
|
host_line.append_widget(printhost_browse);
|
||||||
host_line.append_widget(print_host_test);
|
host_line.append_widget(print_host_test);
|
||||||
m_optgroup->append_line(host_line);
|
m_optgroup->append_line(host_line);
|
||||||
|
|
||||||
|
m_optgroup->append_single_option_line("authorization_type");
|
||||||
|
|
||||||
option = m_optgroup->get_option("printhost_apikey");
|
option = m_optgroup->get_option("printhost_apikey");
|
||||||
option.opt.width = Field::def_width_wider();
|
option.opt.width = Field::def_width_wider();
|
||||||
m_optgroup->append_single_option_line(option);
|
m_optgroup->append_single_option_line(option);
|
||||||
|
@ -999,7 +1007,8 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr
|
||||||
(boost::format(_u8L("On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain.")) % SLIC3R_APP_NAME).str() +
|
(boost::format(_u8L("On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain.")) % SLIC3R_APP_NAME).str() +
|
||||||
"\n\t" + _u8L("To use a custom CA file, please import your CA file into Certificate Store / Keychain.");
|
"\n\t" + _u8L("To use a custom CA file, please import your CA file into Certificate Store / Keychain.");
|
||||||
|
|
||||||
auto txt = new wxStaticText(parent, wxID_ANY, from_u8((boost::format("%1%\n\n\t%2%") % info % ca_file_hint).str()));
|
//auto txt = new wxStaticText(parent, wxID_ANY, from_u8((boost::format("%1%\n\n\t%2%") % info % ca_file_hint).str()));
|
||||||
|
auto txt = new wxStaticText(parent, wxID_ANY, from_u8((boost::format("%1%\n\t%2%") % info % ca_file_hint).str()));
|
||||||
txt->SetFont(wxGetApp().normal_font());
|
txt->SetFont(wxGetApp().normal_font());
|
||||||
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
sizer->Add(txt, 1, wxEXPAND);
|
sizer->Add(txt, 1, wxEXPAND);
|
||||||
|
@ -1015,20 +1024,33 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr
|
||||||
m_optgroup->append_single_option_line(option);
|
m_optgroup->append_single_option_line(option);
|
||||||
}
|
}
|
||||||
|
|
||||||
update_octoprint_visible();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicalPrinterDialog::update_octoprint_visible()
|
void PhysicalPrinterDialog::update()
|
||||||
{
|
{
|
||||||
const PrinterTechnology tech = Preset::printer_technology(m_printer.config);
|
const PrinterTechnology tech = Preset::printer_technology(m_printer.config);
|
||||||
// Only offer the host type selection for FFF, for SLA it's always the SL1 printer (at the moment)
|
// Only offer the host type selection for FFF, for SLA it's always the SL1 printer (at the moment)
|
||||||
Field* host_type = m_optgroup->get_field("host_type");
|
if (tech == ptFFF) {
|
||||||
if (tech == ptFFF)
|
m_optgroup->show_field("host_type");
|
||||||
host_type->enable();
|
m_optgroup->hide_field("authorization_type");
|
||||||
else {
|
for (const std::string& opt_key : std::vector<std::string>{ "login", "password" })
|
||||||
host_type->set_value(int(PrintHostType::htOctoPrint), false);
|
m_optgroup->hide_field(opt_key);
|
||||||
host_type->disable();
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
m_optgroup->set_value("host_type", int(PrintHostType::htOctoPrint), false);
|
||||||
|
m_optgroup->hide_field("host_type");
|
||||||
|
|
||||||
|
m_optgroup->show_field("authorization_type");
|
||||||
|
|
||||||
|
AuthorizationType auth_type = m_config->option<ConfigOptionEnum<AuthorizationType>>("authorization_type")->value;
|
||||||
|
m_optgroup->show_field("printhost_apikey", auth_type == AuthorizationType::atKeyPassword);
|
||||||
|
|
||||||
|
for (const std::string& opt_key : std::vector<std::string>{ "login", "password" })
|
||||||
|
m_optgroup->show_field(opt_key, auth_type == AuthorizationType::atUserPassword);
|
||||||
|
}
|
||||||
|
|
||||||
|
this->Layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicalPrinterDialog::on_dpi_changed(const wxRect& suggested_rect)
|
void PhysicalPrinterDialog::on_dpi_changed(const wxRect& suggested_rect)
|
||||||
|
@ -1044,7 +1066,7 @@ void PhysicalPrinterDialog::on_dpi_changed(const wxRect& suggested_rect)
|
||||||
|
|
||||||
msw_buttons_rescale(this, em, { wxID_OK, wxID_CANCEL });
|
msw_buttons_rescale(this, em, { wxID_OK, wxID_CANCEL });
|
||||||
|
|
||||||
const wxSize& size = wxSize(40 * em, 30 * em);
|
const wxSize& size = wxSize(45 * em, 35 * em);
|
||||||
SetMinSize(size);
|
SetMinSize(size);
|
||||||
|
|
||||||
Fit();
|
Fit();
|
||||||
|
|
|
@ -177,7 +177,7 @@ class PhysicalPrinterDialog : public DPIDialog
|
||||||
ScalableButton* m_printhost_cafile_browse_btn {nullptr};
|
ScalableButton* m_printhost_cafile_browse_btn {nullptr};
|
||||||
|
|
||||||
void build_printhost_settings(ConfigOptionsGroup* optgroup);
|
void build_printhost_settings(ConfigOptionsGroup* optgroup);
|
||||||
void update_octoprint_visible();
|
void update();
|
||||||
void OnOK(wxEvent& event);
|
void OnOK(wxEvent& event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
Loading…
Reference in a new issue