From 6666b2b68cf257967a6681fca56aeac1394a122e Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Wed, 14 Jan 2026 02:37:26 +0100 Subject: [PATCH] Implementing 'diagonal only' for rulers --- src/ant/ant/RulerConfigPage3.ui | 20 ++- src/ant/ant/RulerConfigPage4.ui | 5 + src/ant/ant/antConfig.cc | 41 ------ src/ant/ant/antConfig.h | 6 - src/ant/ant/antConfigPage.cc | 8 +- src/ant/ant/antObject.cc | 5 +- src/ant/ant/antPlugin.cc | 2 +- src/ant/ant/antService.cc | 2 +- src/ant/ant/antTemplate.cc | 5 +- src/ant/ant/gsiDeclAnt.cc | 6 + src/edt/edt/edtPartialService.cc | 159 ++++++++++------------ src/edt/edt/edtPartialService.h | 2 +- src/laybasic/laybasic/gsiDeclLayPlugin.cc | 4 + src/laybasic/laybasic/layConverters.cc | 16 +++ 14 files changed, 134 insertions(+), 147 deletions(-) diff --git a/src/ant/ant/RulerConfigPage3.ui b/src/ant/ant/RulerConfigPage3.ui index e9d90e434..4e7fed45d 100644 --- a/src/ant/ant/RulerConfigPage3.ui +++ b/src/ant/ant/RulerConfigPage3.ui @@ -7,7 +7,7 @@ 0 0 665 - 103 + 108 @@ -56,6 +56,13 @@ 0 + + + + Diagonal + + + @@ -77,17 +84,17 @@ - - + + - Diagonal + Vertical only - + - Vertical only + Diagonal only @@ -102,7 +109,6 @@ ruler_ortho_rb ruler_diag_rb ruler_hor_rb - ruler_vert_rb diff --git a/src/ant/ant/RulerConfigPage4.ui b/src/ant/ant/RulerConfigPage4.ui index 87e5dc3cc..1f5ec4a29 100644 --- a/src/ant/ant/RulerConfigPage4.ui +++ b/src/ant/ant/RulerConfigPage4.ui @@ -644,6 +644,11 @@ Orthogonal + + + Diagonal only + + Horizontal only diff --git a/src/ant/ant/antConfig.cc b/src/ant/ant/antConfig.cc index bec7c21f4..b2f4c239b 100644 --- a/src/ant/ant/antConfig.cc +++ b/src/ant/ant/antConfig.cc @@ -29,47 +29,6 @@ namespace ant // ------------------------------------------------------------ // Helper functions to get and set the configuration -std::string -ACConverter::to_string (const lay::angle_constraint_type &m) -{ - if (m == lay::AC_Any) { - return "any"; - } else if (m == lay::AC_Diagonal) { - return "diagonal"; - } else if (m == lay::AC_Ortho) { - return "ortho"; - } else if (m == lay::AC_Horizontal) { - return "horizontal"; - } else if (m == lay::AC_Vertical) { - return "vertical"; - } else if (m == lay::AC_Global) { - return "global"; - } else { - return ""; - } -} - -void -ACConverter::from_string (const std::string &tt, lay::angle_constraint_type &m) -{ - std::string t (tl::trim (tt)); - if (t == "any") { - m = lay::AC_Any; - } else if (t == "diagonal") { - m = lay::AC_Diagonal; - } else if (t == "ortho") { - m = lay::AC_Ortho; - } else if (t == "horizontal") { - m = lay::AC_Horizontal; - } else if (t == "vertical") { - m = lay::AC_Vertical; - } else if (t == "global") { - m = lay::AC_Global; - } else { - m = lay::AC_Any; - } -} - std::string StyleConverter::to_string (ant::Object::style_type s) { diff --git a/src/ant/ant/antConfig.h b/src/ant/ant/antConfig.h index cb1bb5e10..4c603ac37 100644 --- a/src/ant/ant/antConfig.h +++ b/src/ant/ant/antConfig.h @@ -51,12 +51,6 @@ extern ANT_PUBLIC const std::string cfg_current_ruler_template; // ------------------------------------------------------------ // Helper functions to get and set the configuration -struct ACConverter -{ - std::string to_string (const lay::angle_constraint_type &m); - void from_string (const std::string &s, lay::angle_constraint_type &m); -}; - struct StyleConverter { std::string to_string (ant::Object::style_type s); diff --git a/src/ant/ant/antConfigPage.cc b/src/ant/ant/antConfigPage.cc index 1dcd1cc69..6647035be 100644 --- a/src/ant/ant/antConfigPage.cc +++ b/src/ant/ant/antConfigPage.cc @@ -159,10 +159,11 @@ ConfigPage3::setup (lay::Dispatcher *root) { // snap mode lay::angle_constraint_type rm = lay::AC_Any; - root->config_get (cfg_ruler_snap_mode, rm, ACConverter ()); + root->config_get (cfg_ruler_snap_mode, rm, lay::ACConverter ()); mp_ui->ruler_any_angle_rb->setChecked (rm == lay::AC_Any); mp_ui->ruler_ortho_rb->setChecked (rm == lay::AC_Ortho); mp_ui->ruler_diag_rb->setChecked (rm == lay::AC_Diagonal); + mp_ui->ruler_diag_only_rb->setChecked (rm == lay::AC_DiagonalOnly); mp_ui->ruler_hor_rb->setChecked (rm == lay::AC_Horizontal); mp_ui->ruler_vert_rb->setChecked (rm == lay::AC_Vertical); } @@ -180,13 +181,16 @@ ConfigPage3::commit (lay::Dispatcher *root) if (mp_ui->ruler_diag_rb->isChecked ()) { rm = lay::AC_Diagonal; } + if (mp_ui->ruler_diag_only_rb->isChecked ()) { + rm = lay::AC_DiagonalOnly; + } if (mp_ui->ruler_hor_rb->isChecked ()) { rm = lay::AC_Horizontal; } if (mp_ui->ruler_vert_rb->isChecked ()) { rm = lay::AC_Vertical; } - root->config_set (cfg_ruler_snap_mode, rm, ACConverter ()); + root->config_set (cfg_ruler_snap_mode, rm, lay::ACConverter ()); } // ------------------------------------------------------------ diff --git a/src/ant/ant/antObject.cc b/src/ant/ant/antObject.cc index 9ce86eed3..de4af2cee 100644 --- a/src/ant/ant/antObject.cc +++ b/src/ant/ant/antObject.cc @@ -24,6 +24,7 @@ #include "antObject.h" #include "antTemplate.h" #include "antConfig.h" +#include "layConverters.h" #include "tlString.h" #include "tlExpression.h" @@ -713,7 +714,7 @@ Object::from_string (const char *s, const char * /*base_dir*/) std::string s; ex.read_word (s); - ant::ACConverter sc; + lay::ACConverter sc; lay::angle_constraint_type sm; sc.from_string (s, sm); angle_constraint (sm); @@ -817,7 +818,7 @@ Object::to_string () const r += ","; r += "angle_constraint="; - ant::ACConverter acc; + lay::ACConverter acc; r += acc.to_string (angle_constraint ()); return r; diff --git a/src/ant/ant/antPlugin.cc b/src/ant/ant/antPlugin.cc index ab21a915c..aaed7f8d6 100644 --- a/src/ant/ant/antPlugin.cc +++ b/src/ant/ant/antPlugin.cc @@ -102,7 +102,7 @@ PluginDeclaration::get_options (std::vector < std::pair (cfg_ruler_snap_range, "8")); options.push_back (std::pair (cfg_ruler_color, lay::ColorConverter ().to_string (tl::Color ()))); options.push_back (std::pair (cfg_ruler_halo, "true")); - options.push_back (std::pair (cfg_ruler_snap_mode, ACConverter ().to_string (lay::AC_Any))); + options.push_back (std::pair (cfg_ruler_snap_mode, lay::ACConverter ().to_string (lay::AC_Any))); options.push_back (std::pair (cfg_ruler_obj_snap, tl::to_string (true))); options.push_back (std::pair (cfg_ruler_grid_snap, tl::to_string (false))); options.push_back (std::pair (cfg_ruler_templates, std::string ())); diff --git a/src/ant/ant/antService.cc b/src/ant/ant/antService.cc index 2a66becba..188b092f0 100644 --- a/src/ant/ant/antService.cc +++ b/src/ant/ant/antService.cc @@ -1134,7 +1134,7 @@ Service::configure (const std::string &name, const std::string &value) } else if (name == cfg_ruler_snap_mode) { lay::angle_constraint_type sm = lay::AC_Any; - ACConverter ().from_string (value, sm); + lay::ACConverter ().from_string (value, sm); m_snap_mode = sm; } else if (name == cfg_ruler_templates) { diff --git a/src/ant/ant/antTemplate.cc b/src/ant/ant/antTemplate.cc index 58994d619..2c5c7d537 100644 --- a/src/ant/ant/antTemplate.cc +++ b/src/ant/ant/antTemplate.cc @@ -23,6 +23,7 @@ #include "antTemplate.h" #include "antConfig.h" +#include "layConverters.h" #include "tlInternational.h" #include "tlException.h" #include "tlLog.h" @@ -263,7 +264,7 @@ Template::from_string (const std::string &s) } else if (key == "angle_constraint") { - ant::ACConverter sc; + lay::ACConverter sc; lay::angle_constraint_type sm; sc.from_string (s, sm); r.back ().angle_constraint (sm); @@ -373,7 +374,7 @@ Template::to_string (const std::vector