MCPcopy Create free account
hub / github.com/KLayout/klayout / set_or_request_current_layer

Function set_or_request_current_layer

src/laybasic/laybasic/layEditorUtils.cc:106–140  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

104}
105
106bool
107set_or_request_current_layer (lay::LayoutViewBase *view, const db::LayerProperties &lp, unsigned int cv_index, bool make_current)
108{
109 // try to find an existing layer
110 if (make_current) {
111 if (view->set_current_layer (cv_index, lp)) {
112 return true;
113 }
114 } else {
115 if (! view->find_layer (cv_index, lp).is_null ()) {
116 return true;
117 }
118 }
119
120 const lay::CellView &cv = view->cellview (cv_index);
121 if (! cv.is_valid ()) {
122 return false;
123 }
124
125 lay::LayerPropertiesNode lpn;
126 lpn.set_source (lay::ParsedLayerSource (lp, cv_index));
127 view->init_layer_properties (lpn);
128
129 {
130 db::Transaction transaction (! view->manager ()->transacting () ? view->manager () : 0, tl::to_string (tr ("Create new layer")));
131
132 lay::LayerPropertiesConstIterator lpi = lay::LayerPropertiesConstIterator (& view->insert_layer (view->end_layers (), lpn));
133 if (make_current) {
134 view->set_current_layer (lpi);
135 }
136 lpi->realize_source ();
137 }
138
139 return true;
140}
141
142// -------------------------------------------------------------
143// TransformationsVariants implementation

Callers 3

item_clickedMethod · 0.85
make_viaMethod · 0.85
change_edit_layerMethod · 0.85

Calls 14

find_layerMethod · 0.80
cellviewMethod · 0.80
init_layer_propertiesMethod · 0.80
managerMethod · 0.80
end_layersMethod · 0.80
realize_sourceMethod · 0.80
to_stringFunction · 0.50
trFunction · 0.50
set_current_layerMethod · 0.45
is_nullMethod · 0.45
is_validMethod · 0.45

Tested by

no test coverage detected