mirror of https://github.com/KLayout/klayout.git
Implemented relative marker size for search & replace
This commit is contained in:
parent
3642cff120
commit
4a51365ef2
|
|
@ -1,7 +1,8 @@
|
|||
<ui version="4.0" >
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>SearchReplaceConfigPage</class>
|
||||
<widget class="QFrame" name="SearchReplaceConfigPage" >
|
||||
<property name="geometry" >
|
||||
<widget class="QFrame" name="SearchReplaceConfigPage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
|
|
@ -9,94 +10,87 @@
|
|||
<height>158</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
<property name="windowTitle">
|
||||
<string>Search Result Browser Configuration</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" >
|
||||
<property name="margin" >
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<layout class="QVBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="margin" stdset="0">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox" >
|
||||
<property name="title" >
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Search Result Browser Configuration</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" >
|
||||
<property name="margin" >
|
||||
<layout class="QGridLayout">
|
||||
<property name="margin" stdset="0">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="spacing" >
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<item row="0" column="4" >
|
||||
<widget class="QLabel" name="textLabel2" >
|
||||
<property name="text" >
|
||||
<item row="0" column="4">
|
||||
<widget class="QLabel" name="textLabel2">
|
||||
<property name="text">
|
||||
<string>µm</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3" >
|
||||
<widget class="QLineEdit" name="le_window" >
|
||||
<property name="enabled" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="3" >
|
||||
<widget class="QLabel" name="label" >
|
||||
<property name="text" >
|
||||
<item row="1" column="0" colspan="3">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Maximum number of items to show</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" >
|
||||
<widget class="QLabel" name="textLabel1_2" >
|
||||
<property name="text" >
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="textLabel1_2">
|
||||
<property name="text">
|
||||
<string>Window </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" >
|
||||
<widget class="QComboBox" name="cbx_window" >
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="cbx_window">
|
||||
<item>
|
||||
<property name="text" >
|
||||
<property name="text">
|
||||
<string>Don't change</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text" >
|
||||
<property name="text">
|
||||
<string>Fit context cell</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text" >
|
||||
<property name="text">
|
||||
<string>Fit marker with margin ..</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text" >
|
||||
<property name="text">
|
||||
<string>Center marker</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text" >
|
||||
<property name="text">
|
||||
<string>Center marker with size ..</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2" >
|
||||
<item row="0" column="2">
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType" >
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Minimum</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>10</width>
|
||||
<height>21</height>
|
||||
|
|
@ -104,18 +98,28 @@
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="3" >
|
||||
<widget class="QLineEdit" name="le_max_items" />
|
||||
<item row="1" column="3">
|
||||
<widget class="QLineEdit" name="le_max_items"/>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="lay::MarginWidget" name="mrg_window" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11" />
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>lay::MarginWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>layWidgets.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>cbx_window</tabstop>
|
||||
<tabstop>le_window</tabstop>
|
||||
<tabstop>le_max_items</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
|
|
|
|||
|
|
@ -87,9 +87,9 @@ SearchReplaceConfigPage::setup (lay::Dispatcher *root)
|
|||
cbx_window->setCurrentIndex (int (wmode));
|
||||
|
||||
// window dimension
|
||||
double wdim = 1.0;
|
||||
root->config_get (cfg_sr_window_dim, wdim);
|
||||
le_window->setText (tl::to_qstring (tl::to_string (wdim)));
|
||||
std::string wdim_str;
|
||||
root->config_get (cfg_sr_window_dim, wdim_str);
|
||||
mrg_window->set_margin (lay::Margin::from_string (wdim_str));
|
||||
|
||||
// max. instance count
|
||||
unsigned int max_item_count = 1000;
|
||||
|
|
@ -103,20 +103,19 @@ SearchReplaceConfigPage::setup (lay::Dispatcher *root)
|
|||
void
|
||||
SearchReplaceConfigPage::window_changed (int m)
|
||||
{
|
||||
le_window->setEnabled (m == int (SearchReplaceDialog::FitMarker) || m == int (SearchReplaceDialog::CenterSize));
|
||||
mrg_window->setEnabled (m == int (SearchReplaceDialog::FitMarker) || m == int (SearchReplaceDialog::CenterSize));
|
||||
}
|
||||
|
||||
void
|
||||
SearchReplaceConfigPage::commit (lay::Dispatcher *root)
|
||||
{
|
||||
double dim = 1.0;
|
||||
tl::from_string_ext (tl::to_string (le_window->text ()), dim);
|
||||
lay::Margin dim = mrg_window->get_margin ();
|
||||
|
||||
unsigned int max_item_count = 1000;
|
||||
tl::from_string_ext (tl::to_string (le_max_items->text ()), max_item_count);
|
||||
|
||||
root->config_set (cfg_sr_window_mode, SearchReplaceDialog::window_type (cbx_window->currentIndex ()), SearchReplaceWindowModeConverter ());
|
||||
root->config_set (cfg_sr_window_dim, dim);
|
||||
root->config_set (cfg_sr_window_dim, dim.to_string ());
|
||||
root->config_set (cfg_sr_max_item_count, max_item_count);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1125,9 +1125,8 @@ SearchReplaceDialog::configure (const std::string &name, const std::string &valu
|
|||
|
||||
} else if (name == cfg_sr_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;
|
||||
}
|
||||
|
|
@ -1754,15 +1753,17 @@ SearchReplaceDialog::result_selection_changed ()
|
|||
|
||||
if (! dbox.empty ()) {
|
||||
|
||||
double window_dim = m_window_dim.get (dbox);
|
||||
|
||||
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));
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#include "ui_SearchReplaceDialog.h"
|
||||
|
||||
#include "layBrowser.h"
|
||||
#include "layMargin.h"
|
||||
#include "rdb.h"
|
||||
#include "dbLayout.h"
|
||||
#include "dbShape.h"
|
||||
|
|
@ -180,7 +181,7 @@ private:
|
|||
int m_current_mode;
|
||||
|
||||
window_type m_window;
|
||||
double m_window_dim;
|
||||
lay::Margin m_window_dim;
|
||||
unsigned int m_max_item_count;
|
||||
std::vector<lay::MarkerBase *> mp_markers;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue