| 104 | } |
| 105 | |
| 106 | bool |
| 107 | set_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 |
no test coverage detected