Skip to content

Commit 295ce2a

Browse files
Merge pull request #2186 from KLayout/feature/issue-2174
Fixed issue #2174 - two new events
2 parents 397bae0 + 3ca88eb commit 295ce2a

File tree

7 files changed

+44
-1
lines changed

7 files changed

+44
-1
lines changed

src/laybasic/laybasic/gsiDeclLayLayoutViewBase.cc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1782,6 +1782,21 @@ LAYBASIC_PUBLIC Class<lay::LayoutViewBase> decl_LayoutViewBase (decl_Dispatcher,
17821782
"\n"
17831783
"This event was introduced in version 0.25.\n"
17841784
) +
1785+
gsi::event ("on_current_layer_changed", static_cast<tl::event<const lay::LayerPropertiesConstIterator &> (lay::LayoutViewBase::*)> (&lay::LayoutViewBase::current_layer_changed_event), gsi::arg ("new_layer"),
1786+
"@brief An event indicating the current layer has changed\n"
1787+
"@param new_layer The layer iterator of the new current layer\n"
1788+
"\n"
1789+
"This event is triggered after the current layer was changed - i.e. a new layer is selected in the layer list.\n"
1790+
"\n"
1791+
"This event was introduced in version 0.30.5.\n"
1792+
) +
1793+
gsi::event ("on_selected_layers_changed", static_cast<tl::Event (lay::LayoutViewBase::*)> (&lay::LayoutViewBase::selected_layers_changed_event),
1794+
"@brief An event indicating the layer selection has changed\n"
1795+
"\n"
1796+
"This event is triggered after the layer selection was changed - i.e. layers got selected or unselected.\n"
1797+
"\n"
1798+
"This event was introduced in version 0.30.5.\n"
1799+
) +
17851800
gsi::event ("on_cell_visibility_changed", static_cast<tl::Event (lay::LayoutViewBase::*)> (&lay::LayoutViewBase::cell_visibility_changed_event),
17861801
"@brief An event indicating that the visibility of one or more cells has changed\n"
17871802
"\n"

src/laybasic/laybasic/layLayoutViewBase.cc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5662,7 +5662,13 @@ LayoutViewBase::current_layer_changed_slot (const lay::LayerPropertiesConstItera
56625662
current_layer_changed_event (iter);
56635663
}
56645664

5665-
void
5665+
void
5666+
LayoutViewBase::selected_layers_changed_slot ()
5667+
{
5668+
selected_layers_changed_event ();
5669+
}
5670+
5671+
void
56665672
LayoutViewBase::add_new_layers (const LayerState &state)
56675673
{
56685674
std::vector <lay::ParsedLayerSource> actual;

src/laybasic/laybasic/layLayoutViewBase.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,9 +786,17 @@ class LAYBASIC_PUBLIC LayoutViewBase :
786786

787787
/**
788788
* @brief An event signalling that the current layer has changed
789+
*
790+
* The event is emitted when the user changes the current layer.
789791
*/
790792
tl::event<const lay::LayerPropertiesConstIterator &> current_layer_changed_event;
791793

794+
/**
795+
* @brief An event signalling that the selected layers have changed
796+
*
797+
* The event is emitted when the user changes the selection.
798+
*/
799+
tl::Event selected_layers_changed_event;
792800

793801
/**
794802
* @brief An event signalling that the visibility of some cells has changed
@@ -2800,6 +2808,11 @@ class LAYBASIC_PUBLIC LayoutViewBase :
28002808
*/
28012809
void current_layer_changed_slot (const lay::LayerPropertiesConstIterator &iter);
28022810

2811+
/**
2812+
* @brief Called when the layer selection changed
2813+
*/
2814+
void selected_layers_changed_slot ();
2815+
28032816
// zoom slots
28042817
void zoom_fit ();
28052818
void zoom_fit_sel ();

src/layui/layui/layLayerControlPanel.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2165,6 +2165,7 @@ LayerControlPanel::selection_changed (const QItemSelection &, const QItemSelecti
21652165
if (m_layer_visibility_follows_selection) {
21662166
m_do_update_visibility_dm ();
21672167
}
2168+
emit selected_layers_changed ();
21682169
}
21692170

21702171
void

src/layui/layui/layLayerControlPanel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ Q_OBJECT
296296
void order_changed ();
297297
void tab_changed ();
298298
void current_layer_changed (const lay::LayerPropertiesConstIterator &iter);
299+
void selected_layers_changed ();
299300

300301
public slots:
301302
void cm_new_tab ();

src/layview/layview/layLayoutView_qt.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,11 @@ void LayoutViewSignalConnector::current_layer_changed_slot (const lay::LayerProp
358358
mp_view->current_layer_changed_slot (iter);
359359
}
360360

361+
void LayoutViewSignalConnector::selected_layers_changed_slot ()
362+
{
363+
mp_view->selected_layers_changed_slot ();
364+
}
365+
361366
void LayoutViewSignalConnector::timer ()
362367
{
363368
mp_view->timer ();
@@ -603,6 +608,7 @@ LayoutView::init_ui (db::Manager *mgr)
603608
QObject::connect (mp_control_panel, SIGNAL (tab_changed ()), mp_connector, SLOT (layer_tab_changed ()));
604609
QObject::connect (mp_control_panel, SIGNAL (order_changed ()), mp_connector, SLOT (layer_order_changed ()));
605610
QObject::connect (mp_control_panel, SIGNAL (current_layer_changed (const lay::LayerPropertiesConstIterator &)), mp_connector, SLOT (current_layer_changed_slot (const lay::LayerPropertiesConstIterator &)));
611+
QObject::connect (mp_control_panel, SIGNAL (selected_layers_changed ()), mp_connector, SLOT (selected_layers_changed_slot ()));
606612

607613
mp_toolbox_frame = new QFrame (0);
608614
mp_toolbox_frame->setObjectName (QString::fromUtf8 ("lt_frame"));

src/layview/layview/layLayoutView_qt.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ public slots:
109109
void active_library_changed (int index);
110110
void side_panel_destroyed ();
111111
void current_layer_changed_slot (const lay::LayerPropertiesConstIterator &iter);
112+
void selected_layers_changed_slot ();
112113
void layer_tab_changed ();
113114
void layer_order_changed ();
114115
void select_cell_dispatch (const cell_path_type &path, int cellview_index);

0 commit comments

Comments
 (0)