mirror of https://github.com/KLayout/klayout.git
Clear layer is applied to all selected layers now.
This commit is contained in:
parent
ff4e99f2a2
commit
b024e0ffd6
|
|
@ -638,7 +638,7 @@ ClearLayerModeDialog::~ClearLayerModeDialog ()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ClearLayerModeDialog::exec_dialog (int &clear_mode, const lay::CellView & /*cv*/)
|
ClearLayerModeDialog::exec_dialog (int &clear_mode)
|
||||||
{
|
{
|
||||||
QRadioButton *buttons [3] = { local_rb, hierarchically_rb, layout_rb };
|
QRadioButton *buttons [3] = { local_rb, hierarchically_rb, layout_rb };
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -261,7 +261,7 @@ public:
|
||||||
*
|
*
|
||||||
* The mode is either 0 (for locally), 1 (for hierarchically) and 2 (for all)
|
* The mode is either 0 (for locally), 1 (for hierarchically) and 2 (for all)
|
||||||
*/
|
*/
|
||||||
bool exec_dialog (int &clear_mode, const lay::CellView &cv);
|
bool exec_dialog (int &clear_mode);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -6930,46 +6930,46 @@ LayoutView::cm_delete_layer ()
|
||||||
void
|
void
|
||||||
LayoutView::cm_clear_layer ()
|
LayoutView::cm_clear_layer ()
|
||||||
{
|
{
|
||||||
int layer_index = -1;
|
std::vector<lay::LayerPropertiesConstIterator> sel = selected_layers ();
|
||||||
int cv_index = -1;
|
if (sel.empty ()) {
|
||||||
|
throw tl::Exception (tl::to_string (QObject::tr ("No layer selected for clearing")));
|
||||||
lay::LayerPropertiesConstIterator sel = current_layer ();
|
|
||||||
if (! sel.is_null ()) {
|
|
||||||
if (!sel->has_children () && sel->layer_index () >= 0 && cellview (sel->cellview_index ()).is_valid ()) {
|
|
||||||
layer_index = int (sel->layer_index ());
|
|
||||||
cv_index = int (sel->cellview_index ());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const lay::CellView &cv = cellview (cv_index);
|
|
||||||
if (! cv.is_valid ()) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lay::ClearLayerModeDialog mode_dialog (this);
|
lay::ClearLayerModeDialog mode_dialog (this);
|
||||||
if (mode_dialog.exec_dialog (m_layer_hier_mode, cv)) {
|
if (mode_dialog.exec_dialog (m_layer_hier_mode)) {
|
||||||
|
|
||||||
cancel_edits ();
|
cancel_edits ();
|
||||||
clear_selection ();
|
clear_selection ();
|
||||||
|
|
||||||
if (manager ()) {
|
if (manager ()) {
|
||||||
manager ()->transaction (tl::to_string (QObject::tr ("Clear layer")));
|
manager ()->transaction (tl::to_string (QObject::tr ("Clear layer")));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_layer_hier_mode == 0) {
|
for (std::vector<lay::LayerPropertiesConstIterator>::const_iterator si = sel.begin (); si != sel.end (); ++si) {
|
||||||
cv.cell ()->clear ((unsigned int) layer_index);
|
|
||||||
} else if (m_layer_hier_mode == 1) {
|
|
||||||
|
|
||||||
cv.cell ()->clear ((unsigned int) layer_index);
|
if (! (*si)->has_children () && (*si)->layer_index () >= 0 && cellview ((*si)->cellview_index ()).is_valid ()) {
|
||||||
|
|
||||||
|
int layer_index = (*si)->layer_index ();
|
||||||
|
const lay::CellView &cv = cellview ((*si)->cellview_index ());
|
||||||
|
|
||||||
|
if (m_layer_hier_mode == 0) {
|
||||||
|
cv.cell ()->clear ((unsigned int) layer_index);
|
||||||
|
} else if (m_layer_hier_mode == 1) {
|
||||||
|
|
||||||
|
cv.cell ()->clear ((unsigned int) layer_index);
|
||||||
|
|
||||||
|
std::set <db::cell_index_type> called_cells;
|
||||||
|
cv.cell ()->collect_called_cells (called_cells);
|
||||||
|
for (std::set <db::cell_index_type>::const_iterator cc = called_cells.begin (); cc != called_cells.end (); ++cc) {
|
||||||
|
cv->layout ().cell (*cc).clear ((unsigned int) layer_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
cv->layout ().clear_layer ((unsigned int) layer_index);
|
||||||
|
}
|
||||||
|
|
||||||
std::set <db::cell_index_type> called_cells;
|
|
||||||
cv.cell ()->collect_called_cells (called_cells);
|
|
||||||
for (std::set <db::cell_index_type>::const_iterator cc = called_cells.begin (); cc != called_cells.end (); ++cc) {
|
|
||||||
cv->layout ().cell (*cc).clear ((unsigned int) layer_index);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
|
||||||
cv->layout ().clear_layer ((unsigned int) layer_index);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (manager ()) {
|
if (manager ()) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue