Grey out the compatible_printers_condition edit field in case

the compatible_printers list is non empty.
Changed the precendence of compatible_printers_condition over
compatible_printers. Now compatible_printers has precedence.
This commit is contained in:
bubnikv 2017-12-20 13:32:02 +01:00
parent c8d14fb617
commit 7142126609
2 changed files with 8 additions and 5 deletions

View file

@ -144,8 +144,10 @@ std::string Preset::label() const
bool Preset::is_compatible_with_printer(const Preset &active_printer, const DynamicPrintConfig *extra_config) const
{
auto *condition = dynamic_cast<const ConfigOptionString*>(this->config.option("compatible_printers_condition"));
if (condition != nullptr && ! condition->value.empty()) {
auto *condition = dynamic_cast<const ConfigOptionString*>(this->config.option("compatible_printers_condition"));
auto *compatible_printers = dynamic_cast<const ConfigOptionStrings*>(this->config.option("compatible_printers"));
bool has_compatible_printers = compatible_printers != nullptr && ! compatible_printers->values.empty();
if (! has_compatible_printers && condition != nullptr && ! condition->value.empty()) {
try {
return PlaceholderParser::evaluate_boolean_expression(condition->value, active_printer.config, extra_config);
} catch (const std::runtime_error &err) {
@ -154,9 +156,7 @@ bool Preset::is_compatible_with_printer(const Preset &active_printer, const Dyna
return true;
}
}
auto *compatible_printers = dynamic_cast<const ConfigOptionStrings*>(this->config.option("compatible_printers"));
return this->is_default || active_printer.name.empty() ||
compatible_printers == nullptr || compatible_printers->values.empty() ||
return this->is_default || active_printer.name.empty() || ! has_compatible_printers ||
std::find(compatible_printers->values.begin(), compatible_printers->values.end(), active_printer.name) !=
compatible_printers->values.end();
}