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
+
+ 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
+
+ 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;
};
/**