diff --git a/src/lay/lay/SearchReplaceConfigPage.ui b/src/lay/lay/SearchReplaceConfigPage.ui index aea0d8731..dc8b0a25b 100644 --- a/src/lay/lay/SearchReplaceConfigPage.ui +++ b/src/lay/lay/SearchReplaceConfigPage.ui @@ -26,32 +26,27 @@ Search Result Browser Configuration - - 9 - 6 - - - - µm + + + + Qt::Horizontal - + + QSizePolicy::Minimum + + + + 10 + 21 + + + - - - - Maximum number of items to show - - - - - - - Window - - + + @@ -82,28 +77,23 @@ - - - - Qt::Horizontal + + + + Window - - QSizePolicy::Minimum - - - - 10 - 21 - - - - - - + + + + + Maximum number of items to show + + + diff --git a/src/layui/layui/BrowseInstancesConfigPage.ui b/src/layui/layui/BrowseInstancesConfigPage.ui index 56edd0638..3612a9411 100644 --- a/src/layui/layui/BrowseInstancesConfigPage.ui +++ b/src/layui/layui/BrowseInstancesConfigPage.ui @@ -1,53 +1,52 @@ - + + BrowseInstancesConfigPage - - + + 0 0 499 - 148 + 151 - - - 5 - 5 + + 0 0 - + Browse Cell Instances - - - 9 - - + + 6 + + 9 + - - + + Instance Browser Setup - - + + 9 - + 6 - + - + Qt::Horizontal - + QSizePolicy::Minimum - + 16 27 @@ -55,62 +54,62 @@ - - - + + + false - - - + + + Maximum number of instances to show - - + + - + Show in context of cell .. - + Show in context of any top cell - + Show in parent cell - - - + + + Context - - - + + + Window - + - + Qt::Horizontal - + QSizePolicy::Minimum - + 16 25 @@ -118,58 +117,55 @@ - - + + - + Don't change - + Fit whole context cell - + Fit marker with margin .. - + Center marker - + Center marker with size .. - - - - false - - + + - - - - - - - µm - - + + - + + + + lay::MarginWidget + QWidget +
layWidgets.h
+ 1 +
+
diff --git a/src/layui/layui/BrowseShapesConfigPage.ui b/src/layui/layui/BrowseShapesConfigPage.ui index f3a54544c..01cf9f264 100644 --- a/src/layui/layui/BrowseShapesConfigPage.ui +++ b/src/layui/layui/BrowseShapesConfigPage.ui @@ -1,7 +1,8 @@ - + + BrowseShapesConfigPage - - + + 0 0 @@ -9,61 +10,44 @@ 194 - + Browse Shapes - - - 9 - - + + 6 + + 9 + - - + + Shape Browser Setup - - + + 9 - + 6 - - - - µm - - - - - - + + + false - - - - false - - - - - - - + - + Qt::Horizontal - + QSizePolicy::Minimum - + 10 21 @@ -71,15 +55,15 @@ - + - + Qt::Horizontal - + QSizePolicy::Minimum - + 10 20 @@ -87,91 +71,105 @@ - - + + - + Show in context of cell .. - + Show in context of any top cell - + Show in context of local cell - - - - - - + + + Maximum number of shapes to show - - - + + + Context - - + + - + Don't change - + Fit context cell - + Fit marker with margin .. - + Center marker - + Center marker with size .. - - - + + + Maximum number of instances to show - - - + + + Window + + + + + + + + + - + + + + lay::MarginWidget + QWidget +
layWidgets.h
+ 1 +
+
diff --git a/src/layui/layui/layBrowseInstancesForm.cc b/src/layui/layui/layBrowseInstancesForm.cc index 8838f88ef..9caca2da6 100644 --- a/src/layui/layui/layBrowseInstancesForm.cc +++ b/src/layui/layui/layBrowseInstancesForm.cc @@ -200,9 +200,9 @@ BrowseInstancesConfigPage::setup (lay::Dispatcher *root) cbx_window->setCurrentIndex (int (wmode)); // window dimension - double wdim = 1.0; - root->config_get (cfg_cib_window_dim, wdim); - le_window->setText (tl::to_qstring (tl::to_string (wdim))); + std::string wdim_str; + root->config_get (cfg_cib_window_dim, wdim_str); + mrg_window->set_margin (lay::Margin::from_string (wdim_str)); // max. instance count unsigned int max_inst_count = 1000; @@ -223,22 +223,19 @@ BrowseInstancesConfigPage::context_changed (int m) void BrowseInstancesConfigPage::window_changed (int m) { - le_window->setEnabled (m == int (BrowseInstancesForm::FitMarker) || m == int (BrowseInstancesForm::CenterSize)); + mrg_window->setEnabled (m == int (BrowseInstancesForm::FitMarker) || m == int (BrowseInstancesForm::CenterSize)); } void BrowseInstancesConfigPage::commit (lay::Dispatcher *root) { - double dim = 1.0; - tl::from_string_ext (tl::to_string (le_window->text ()), dim); - unsigned int max_inst_count = 1000; tl::from_string_ext (tl::to_string (le_max_count->text ()), max_inst_count); root->config_set (cfg_cib_context_cell, tl::to_string (le_cell_name->text ())); root->config_set (cfg_cib_context_mode, BrowseInstancesForm::mode_type (cbx_context->currentIndex ()), BrowseInstancesContextModeConverter ()); root->config_set (cfg_cib_window_mode, BrowseInstancesForm::window_type (cbx_window->currentIndex ()), BrowseInstancesWindowModeConverter ()); - root->config_set (cfg_cib_window_dim, dim); + root->config_set (cfg_cib_window_dim, mrg_window->get_margin ().to_string ()); root->config_set (cfg_cib_max_inst_count, max_inst_count); } @@ -306,7 +303,7 @@ BrowseInstancesForm::BrowseInstancesForm (lay::Dispatcher *root, LayoutViewBase m_ef_enabled (true), m_mode (AnyTop), m_window (FitMarker), - m_window_dim (0.0), + m_window_dim (), m_max_inst_count (0), m_current_count (0) { @@ -390,9 +387,8 @@ BrowseInstancesForm::configure (const std::string &name, const std::string &valu } else if (name == cfg_cib_window_dim) { - double wdim = m_window_dim; - tl::from_string (value, wdim); - if (fabs (wdim - m_window_dim) > 1e-6) { + lay::Margin wdim = lay::Margin::from_string (value); + if (wdim != m_window_dim) { m_window_dim = wdim; need_update = true; } @@ -787,16 +783,18 @@ BrowseInstancesForm::highlight_current () if (index_set) { + double window_dim = m_window_dim.get (dbox); + view ()->select_cell (index, m_cv_index); if (m_window == FitCell) { view ()->zoom_fit (); } else if (m_window == FitMarker) { - view ()->zoom_box (dbox.enlarged (db::DVector (m_window_dim, m_window_dim))); + view ()->zoom_box (dbox.enlarged (db::DVector (window_dim, window_dim))); } else if (m_window == Center) { view ()->pan_center (dbox.p1 () + (dbox.p2 () - dbox.p1 ()) * 0.5); } else if (m_window == CenterSize) { - double w = std::max (dbox.width (), m_window_dim); - double h = std::max (dbox.height (), m_window_dim); + double w = std::max (dbox.width (), window_dim); + double h = std::max (dbox.height (), window_dim); db::DPoint center (dbox.p1 () + (dbox.p2 () - dbox.p1 ()) * 0.5); db::DVector d (w * 0.5, h * 0.5); view ()->zoom_box (db::DBox (center - d, center + d)); diff --git a/src/layui/layui/layBrowseInstancesForm.h b/src/layui/layui/layBrowseInstancesForm.h index e504cb56f..d31aa3e58 100644 --- a/src/layui/layui/layBrowseInstancesForm.h +++ b/src/layui/layui/layBrowseInstancesForm.h @@ -29,6 +29,7 @@ #include "ui_BrowseInstancesConfigPage.h" #include "layLayoutViewBase.h" +#include "layMargin.h" #include "layPluginConfigPage.h" #include "layBrowser.h" #include "layMarker.h" @@ -98,7 +99,7 @@ private: mode_type m_mode; window_type m_window; - double m_window_dim; + lay::Margin m_window_dim; std::string m_context_cell; unsigned int m_max_inst_count; diff --git a/src/layui/layui/layBrowseShapesForm.cc b/src/layui/layui/layBrowseShapesForm.cc index d3cbc4c75..8ceb2063a 100644 --- a/src/layui/layui/layBrowseShapesForm.cc +++ b/src/layui/layui/layBrowseShapesForm.cc @@ -202,9 +202,9 @@ BrowseShapesConfigPage::setup (lay::Dispatcher *root) cbx_window->setCurrentIndex (int (wmode)); // window dimension - double wdim = 1.0; - root->config_get (cfg_shb_window_dim, wdim); - le_window->setText (tl::to_qstring (tl::to_string (wdim))); + std::string wdim_str; + root->config_get (cfg_shb_window_dim, wdim_str); + mrg_window->set_margin (lay::Margin::from_string (wdim_str)); // max. instance count unsigned int max_inst_count = 1000; @@ -230,15 +230,12 @@ BrowseShapesConfigPage::context_changed (int m) void BrowseShapesConfigPage::window_changed (int m) { - le_window->setEnabled (m == int (BrowseShapesForm::FitMarker) || m == int (BrowseShapesForm::CenterSize)); + mrg_window->setEnabled (m == int (BrowseShapesForm::FitMarker) || m == int (BrowseShapesForm::CenterSize)); } void BrowseShapesConfigPage::commit (lay::Dispatcher *root) { - double dim = 1.0; - tl::from_string_ext (tl::to_string (le_window->text ()), dim); - unsigned int max_inst_count = 1000; tl::from_string_ext (tl::to_string (le_max_inst->text ()), max_inst_count); @@ -248,7 +245,7 @@ BrowseShapesConfigPage::commit (lay::Dispatcher *root) root->config_set (cfg_shb_context_cell, tl::to_string (le_cell_name->text ())); root->config_set (cfg_shb_context_mode, BrowseShapesForm::mode_type (cbx_context->currentIndex ()), BrowseShapesContextModeConverter ()); root->config_set (cfg_shb_window_mode, BrowseShapesForm::window_type (cbx_window->currentIndex ()), BrowseShapesWindowModeConverter ()); - root->config_set (cfg_shb_window_dim, dim); + root->config_set (cfg_shb_window_dim, mrg_window->get_margin ().to_string ()); root->config_set (cfg_shb_max_inst_count, max_inst_count); root->config_set (cfg_shb_max_shape_count, max_shape_count); } @@ -409,7 +406,7 @@ BrowseShapesForm::BrowseShapesForm (lay::Dispatcher *root, LayoutViewBase *vw) m_ef_enabled (true), m_mode (AnyTop), m_window (FitMarker), - m_window_dim (0.0), + m_window_dim (), m_max_inst_count (0), m_max_shape_count (0) { @@ -496,9 +493,8 @@ BrowseShapesForm::configure (const std::string &name, const std::string &value) } else if (name == cfg_shb_window_dim) { - double wdim = m_window_dim; - tl::from_string (value, wdim); - if (fabs (wdim - m_window_dim) > 1e-6) { + lay::Margin wdim = lay::Margin::from_string (value); + if (wdim != m_window_dim) { m_window_dim = wdim; need_update = true; } @@ -961,16 +957,18 @@ BrowseShapesForm::highlight_current () if (! dbox.empty ()) { + double window_dim = m_window_dim.get (dbox); + view ()->select_cell (cell_index, m_cv_index); if (m_window == FitCell) { view ()->zoom_fit (); } else if (m_window == FitMarker) { - view ()->zoom_box (dbox.enlarged (db::DVector (m_window_dim, m_window_dim))); + view ()->zoom_box (dbox.enlarged (db::DVector (window_dim, window_dim))); } else if (m_window == Center) { view ()->pan_center (dbox.p1 () + (dbox.p2 () - dbox.p1 ()) * 0.5); } else if (m_window == CenterSize) { - double w = std::max (dbox.width (), m_window_dim); - double h = std::max (dbox.height (), m_window_dim); + double w = std::max (dbox.width (), window_dim); + double h = std::max (dbox.height (), window_dim); db::DPoint center (dbox.p1 () + (dbox.p2 () - dbox.p1 ()) * 0.5); db::DVector d (w * 0.5, h * 0.5); view ()->zoom_box (db::DBox (center - d, center + d)); diff --git a/src/layui/layui/layBrowseShapesForm.h b/src/layui/layui/layBrowseShapesForm.h index b292bada2..8cbf89363 100644 --- a/src/layui/layui/layBrowseShapesForm.h +++ b/src/layui/layui/layBrowseShapesForm.h @@ -29,6 +29,7 @@ #include "ui_BrowseShapesConfigPage.h" #include "layLayoutViewBase.h" +#include "layMargin.h" #include "layPluginConfigPage.h" #include "layBrowser.h" #include "layMarker.h" @@ -99,7 +100,7 @@ private: mode_type m_mode; window_type m_window; - double m_window_dim; + lay::Margin m_window_dim; std::string m_context_cell; unsigned int m_max_inst_count; diff --git a/src/layui/layui/layWidgets.cc b/src/layui/layui/layWidgets.cc index ea442974c..ae9851843 100644 --- a/src/layui/layui/layWidgets.cc +++ b/src/layui/layui/layWidgets.cc @@ -1081,7 +1081,7 @@ ColorButton::browse_selected () // MarginWidget implementation MarginWidget::MarginWidget (QWidget *parent, const char *name) - : QFrame (parent) + : QFrame (parent), m_margin () { if (name) { setObjectName (name); @@ -1105,13 +1105,12 @@ MarginWidget::MarginWidget (QWidget *parent, const char *name) QComboBox *mode = new QComboBox (this); mode->addItem (tl::to_qstring ("µm")); mode->addItem (tl::to_qstring ("%")); - mode->setCurrentIndex (0); mp_mode_cb = mode; layout->addWidget (mode); connect (mode, SIGNAL (currentIndexChanged (int)), this, SLOT (mode_selection_changed ())); - mode_selection_changed (); + set_margin (lay::Margin ()); } lay::Margin @@ -1122,16 +1121,21 @@ MarginWidget::get_margin () const tl::from_string (tl::to_string (mp_rel_edit->text ()), rel); tl::from_string (tl::to_string (mp_abs_edit->text ()), abs); - lay::Margin m; + lay::Margin m = m_margin; m.set_relative_mode (rel_mode); - m.set_absolute_value (abs); - m.set_relative_value (rel * 0.01); + if (rel_mode) { + m.set_relative_value (rel * 0.01); + } else { + m.set_absolute_value (abs); + } return m; } void MarginWidget::set_margin (const lay::Margin &margin) { + m_margin = margin; + mp_abs_edit->setText (tl::to_qstring (tl::to_string (margin.absolute_value ()))); mp_rel_edit->setText (tl::to_qstring (tl::to_string (margin.relative_value () * 100.0))); mp_mode_cb->setCurrentIndex (margin.relative_mode () ? 1 : 0); diff --git a/src/layui/layui/layWidgets.h b/src/layui/layui/layWidgets.h index 27efab690..adfa708b6 100644 --- a/src/layui/layui/layWidgets.h +++ b/src/layui/layui/layWidgets.h @@ -341,6 +341,7 @@ private: QLineEdit *mp_abs_edit; QLineEdit *mp_rel_edit; QComboBox *mp_mode_cb; + lay::Margin m_margin; }; /**