Robust configuration of new ruler settings

This commit is contained in:
Koefferlein Matthias (IFAG DES TCP FLP) 2022-12-09 16:07:31 +01:00
parent 8d6508f69c
commit c10cb86b68
2 changed files with 31 additions and 73 deletions

View File

@ -298,7 +298,7 @@ const std::string cfg_ruler_snap_mode ("ruler-snap-mode");
const std::string cfg_ruler_obj_snap ("ruler-obj-snap"); const std::string cfg_ruler_obj_snap ("ruler-obj-snap");
const std::string cfg_ruler_grid_snap ("ruler-grid-snap"); const std::string cfg_ruler_grid_snap ("ruler-grid-snap");
const std::string cfg_ruler_grid_micron ("grid-micron"); const std::string cfg_ruler_grid_micron ("grid-micron");
const std::string cfg_ruler_templates ("ruler-templates"); const std::string cfg_ruler_templates ("ruler-templates-v2");
const std::string cfg_current_ruler_template ("current-ruler-template"); const std::string cfg_current_ruler_template ("current-ruler-template");
} // namespace ant } // namespace ant

View File

@ -154,168 +154,126 @@ Template::from_string (const std::string &s)
while (! ex.at_end ()) { while (! ex.at_end ()) {
if (ex.test ("version=")) { std::string key, s;
ex.read_word_or_quoted (key);
ex.expect ("=");
ex.read_word_or_quoted (s);
if (key == "version") {
int v = 0; int v = 0;
ex.read (v); tl::from_string (s, v);
r.back ().version (v); r.back ().version (v);
ex.test (",");
} else if (ex.test ("mode=")) { } else if (key == "mode") {
std::string s;
ex.read_word_or_quoted (s);
ant::RulerModeConverter mc; ant::RulerModeConverter mc;
ant::Template::ruler_mode_type mode; ant::Template::ruler_mode_type mode;
mc.from_string (s, mode); mc.from_string (s, mode);
r.back ().set_mode (mode); r.back ().set_mode (mode);
ex.test (",");
} else if (ex.test ("title=")) { } else if (key == "title") {
std::string s;
ex.read_word_or_quoted (s);
r.back ().title (s); r.back ().title (s);
ex.test (",");
} else if (ex.test ("category=")) { } else if (key == "category") {
std::string s;
ex.read_word_or_quoted (s);
r.back ().category (s); r.back ().category (s);
ex.test (",");
} else if (ex.test ("fmt=")) { } else if (key == "fmt") {
std::string s;
ex.read_word_or_quoted (s);
r.back ().fmt (s); r.back ().fmt (s);
ex.test (",");
} else if (ex.test ("fmt_x=")) { } else if (key == "fmt_x") {
std::string s;
ex.read_word_or_quoted (s);
r.back ().fmt_x (s); r.back ().fmt_x (s);
ex.test (",");
} else if (ex.test ("fmt_y=")) { } else if (key == "fmt_y") {
std::string s;
ex.read_word_or_quoted (s);
r.back ().fmt_y (s); r.back ().fmt_y (s);
ex.test (",");
} else if (ex.test ("position=")) { } else if (key == "position") {
std::string s;
ex.read_word (s);
ant::PositionConverter pc; ant::PositionConverter pc;
ant::Object::position_type pos; ant::Object::position_type pos;
pc.from_string (s, pos); pc.from_string (s, pos);
r.back ().set_main_position (pos); r.back ().set_main_position (pos);
ex.test (",");
} else if (ex.test ("xalign=")) { } else if (key == "xalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac; ant::AlignmentConverter ac;
ant::Object::alignment_type a; ant::Object::alignment_type a;
ac.from_string (s, a); ac.from_string (s, a);
r.back ().set_main_xalign (a); r.back ().set_main_xalign (a);
ex.test (",");
} else if (ex.test ("yalign=")) { } else if (key == "yalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac; ant::AlignmentConverter ac;
ant::Object::alignment_type a; ant::Object::alignment_type a;
ac.from_string (s, a); ac.from_string (s, a);
r.back ().set_main_yalign (a); r.back ().set_main_yalign (a);
ex.test (",");
} else if (ex.test ("xlabel_xalign=")) { } else if (key == "xlabel_xalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac; ant::AlignmentConverter ac;
ant::Object::alignment_type a; ant::Object::alignment_type a;
ac.from_string (s, a); ac.from_string (s, a);
r.back ().set_xlabel_xalign (a); r.back ().set_xlabel_xalign (a);
ex.test (",");
} else if (ex.test ("xlabel_yalign=")) { } else if (key == "xlabel_yalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac; ant::AlignmentConverter ac;
ant::Object::alignment_type a; ant::Object::alignment_type a;
ac.from_string (s, a); ac.from_string (s, a);
r.back ().set_xlabel_yalign (a); r.back ().set_xlabel_yalign (a);
ex.test (",");
} else if (ex.test ("ylabel_xalign=")) { } else if (key == "ylabel_xalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac; ant::AlignmentConverter ac;
ant::Object::alignment_type a; ant::Object::alignment_type a;
ac.from_string (s, a); ac.from_string (s, a);
r.back ().set_ylabel_xalign (a); r.back ().set_ylabel_xalign (a);
ex.test (",");
} else if (ex.test ("ylabel_yalign=")) { } else if (key == "ylabel_yalign") {
std::string s;
ex.read_word (s);
ant::AlignmentConverter ac; ant::AlignmentConverter ac;
ant::Object::alignment_type a; ant::Object::alignment_type a;
ac.from_string (s, a); ac.from_string (s, a);
r.back ().set_ylabel_yalign (a); r.back ().set_ylabel_yalign (a);
ex.test (",");
} else if (ex.test ("style=")) { } else if (key == "style") {
std::string s;
ex.read_word (s);
ant::StyleConverter sc; ant::StyleConverter sc;
ant::Object::style_type st; ant::Object::style_type st;
sc.from_string (s, st); sc.from_string (s, st);
r.back ().style (st); r.back ().style (st);
ex.test (",");
} else if (ex.test ("outline=")) { } else if (key == "outline") {
std::string s;
ex.read_word (s);
ant::OutlineConverter oc; ant::OutlineConverter oc;
ant::Object::outline_type ot; ant::Object::outline_type ot;
oc.from_string (s, ot); oc.from_string (s, ot);
r.back ().outline (ot); r.back ().outline (ot);
ex.test (",");
} else if (ex.test ("snap=")) { } else if (key == "snap") {
bool f = false; bool f = false;
ex.read (f); tl::from_string (s, f);
r.back ().snap (f); r.back ().snap (f);
ex.test (",");
} else if (ex.test ("angle_constraint=")) { } else if (key == "angle_constraint") {
std::string s;
ex.read_word (s);
ant::ACConverter sc; ant::ACConverter sc;
lay::angle_constraint_type sm; lay::angle_constraint_type sm;
sc.from_string (s, sm); sc.from_string (s, sm);
r.back ().angle_constraint (sm); r.back ().angle_constraint (sm);
}
ex.test (","); ex.test (",");
} else { if (ex.test (";")) {
ex.expect (";");
r.push_back (Template ()); r.push_back (Template ());
r.back ().version (0); r.back ().version (0);