Merge pull request #1686 from KLayout/feature/issue-1666

Feature/issue 1666
This commit is contained in:
Matthias Köfferlein 2024-04-17 22:38:27 +02:00 committed by GitHub
commit 840beea152
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 41 additions and 3 deletions

View File

@ -619,6 +619,14 @@ See here for more information: <a href="int:/about/25d_view.xml"&gt
<string>Hide Selected</string>
</property>
</action>
<action name="visibility_follows_selection_action">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Visibility Follows Selection</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>

View File

@ -43,7 +43,8 @@ const double initial_elevation = 15.0;
D25View::D25View (Dispatcher *root, LayoutViewBase *view)
: lay::Browser (root, view, "d25_view"),
dm_rerun_macro (this, &D25View::rerun_macro),
dm_fit (this, &D25View::fit)
dm_fit (this, &D25View::fit),
m_visibility_follows_selection (false)
{
mp_ui = new Ui::D25View ();
mp_ui->setupUi (this);
@ -69,6 +70,8 @@ D25View::D25View (Dispatcher *root, LayoutViewBase *view)
connect (mp_ui->hide_selected_action, SIGNAL (triggered()), this, SLOT (hide_selected_triggered()));
connect (mp_ui->show_all_action, SIGNAL (triggered()), this, SLOT (show_all_triggered()));
connect (mp_ui->show_selected_action, SIGNAL (triggered()), this, SLOT (show_selected_triggered()));
connect (mp_ui->visibility_follows_selection_action, SIGNAL (toggled(bool)), this, SLOT (visibility_follows_selection_changed(bool)));
connect (mp_ui->material_list, SIGNAL (itemSelectionChanged()), this, SLOT (update_visibility()));
mp_ui->gl_stack->setCurrentIndex (2);
mp_ui->rerun_button->setEnabled (false);
@ -85,10 +88,14 @@ D25View::D25View (Dispatcher *root, LayoutViewBase *view)
mp_ui->material_list->addAction (mp_ui->select_all_action);
mp_ui->material_list->addAction (mp_ui->unselect_all_action);
mp_ui->material_list->addAction (mp_ui->show_all_action);
mp_ui->material_list->addAction (mp_ui->show_selected_action);
QAction *sep = new QAction (this);
sep->setSeparator (true);
mp_ui->material_list->addAction (sep);
mp_ui->material_list->addAction (mp_ui->visibility_follows_selection_action);
mp_ui->material_list->addAction (mp_ui->hide_all_action);
mp_ui->material_list->addAction (mp_ui->hide_selected_action);
mp_ui->material_list->addAction (mp_ui->show_all_action);
mp_ui->material_list->addAction (mp_ui->show_selected_action);
mp_ui->material_list->setContextMenuPolicy (Qt::ActionsContextMenu);
connect (mp_ui->material_list, SIGNAL (itemChanged(QListWidgetItem *)), this, SLOT (material_item_changed(QListWidgetItem *)));
@ -515,6 +522,26 @@ D25View::show_selected_triggered ()
}
}
void
D25View::visibility_follows_selection_changed (bool checked)
{
m_visibility_follows_selection = checked;
update_visibility ();
}
void
D25View::update_visibility ()
{
if (! m_visibility_follows_selection) {
return;
}
for (int i = 0; i < mp_ui->material_list->count (); ++i) {
QListWidgetItem *item = mp_ui->material_list->item (i);
item->setCheckState (item->isSelected () ? Qt::Checked : Qt::Unchecked);
}
}
void
D25View::accept ()
{

View File

@ -95,12 +95,15 @@ private slots:
void hide_selected_triggered ();
void show_all_triggered ();
void show_selected_triggered ();
void visibility_follows_selection_changed (bool checked);
void update_visibility ();
private:
Ui::D25View *mp_ui;
tl::DeferredMethod<D25View> dm_rerun_macro;
tl::DeferredMethod<D25View> dm_fit;
std::string m_generator;
bool m_visibility_follows_selection;
void cellviews_changed ();
void layer_properties_changed (int);