void PlaceholderParser::apply_config(const DynamicPrintConfig &config) { t_config_option_keys opt_keys = config.keys(); for (t_config_option_keys::const_iterator i = opt_keys.begin(); i != opt_keys.end(); ++i) { const t_config_option_key &opt_key = *i; const ConfigOptionDef* def = config.def->get(opt_key); if (def->multiline) continue; const ConfigOption* opt = config.option(opt_key); if (const ConfigOptionVectorBase* optv = dynamic_cast<const ConfigOptionVectorBase*>(opt)) { // set placeholders for options with multiple values // TODO: treat [bed_shape] as single, not multiple this->set(opt_key, optv->vserialize()); } else if (const ConfigOptionPoint* optp = dynamic_cast<const ConfigOptionPoint*>(opt)) { this->set(opt_key, optp->serialize()); Pointf val = *optp; this->set(opt_key + "_X", val.x); this->set(opt_key + "_Y", val.y); } else { // set single-value placeholders this->set(opt_key, opt->serialize()); } } }
void PlaceholderParser::apply_config(DynamicPrintConfig &config) { // options that are set and aren't text-boxes t_config_option_keys opt_keys; for (t_optiondef_map::iterator i = config.def->begin(); i != config.def->end(); ++i) { const t_config_option_key &key = i->first; const ConfigOptionDef &def = i->second; if (config.has(key) && !def.multiline) { opt_keys.push_back(key); } } for (t_config_option_keys::iterator i = opt_keys.begin(); i != opt_keys.end(); ++i) { const t_config_option_key &key = *i; // set placeholders for options with multiple values const ConfigOptionDef &def = (*config.def)[key]; switch (def.type) { case coFloats: this->set_multiple_from_vector(key, *(ConfigOptionFloats*)config.option(key)); break; case coInts: this->set_multiple_from_vector(key, *(ConfigOptionInts*)config.option(key)); break; case coStrings: this->set_multiple_from_vector(key, *(ConfigOptionStrings*)config.option(key)); break; case coPoints: this->set_multiple_from_vector(key, *(ConfigOptionPoints*)config.option(key)); break; case coBools: this->set_multiple_from_vector(key, *(ConfigOptionBools*)config.option(key)); break; case coPoint: { const ConfigOptionPoint &opt = *(ConfigOptionPoint*)config.option(key); this->_single[key] = opt.serialize(); Pointf val = opt; this->_multiple[key + "_X"] = val.x; this->_multiple[key + "_Y"] = val.y; } break; default: // set single-value placeholders this->_single[key] = config.serialize(key); break; } } }