Skip to content

Commit 99be8f1

Browse files
authored
Merge pull request #7846 from gadfort/show-hide-guides
gui: update actions in inspector and change button for route guides based on visibility
2 parents c1d3b43 + fc7c376 commit 99be8f1

6 files changed

Lines changed: 48 additions & 32 deletions

File tree

src/gui/src/dbDescriptors.cpp

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1598,24 +1598,32 @@ Descriptor::Actions DbNetDescriptor::getActions(std::any object) const
15981598
}});
15991599
}
16001600
if (!net->getGuides().empty()) {
1601-
actions.push_back(Descriptor::Action{"Route Guides", [this, gui, net]() {
1602-
if (guide_nets_.count(net) == 0) {
1603-
gui->addRouteGuides(net);
1604-
} else {
1605-
gui->removeRouteGuides(net);
1606-
}
1607-
return makeSelected(net);
1608-
}});
1601+
if (guide_nets_.count(net) == 0) {
1602+
actions.push_back(
1603+
Descriptor::Action{"Show Route Guides", [this, gui, net]() {
1604+
gui->addRouteGuides(net);
1605+
return makeSelected(net);
1606+
}});
1607+
} else {
1608+
actions.push_back(
1609+
Descriptor::Action{"Hide Route Guides", [this, gui, net]() {
1610+
gui->removeRouteGuides(net);
1611+
return makeSelected(net);
1612+
}});
1613+
}
16091614
}
16101615
if (!net->getTracks().empty()) {
1611-
actions.push_back(Descriptor::Action{"Tracks", [this, gui, net]() {
1612-
if (tracks_nets_.count(net) == 0) {
1616+
if (tracks_nets_.count(net) == 0) {
1617+
actions.push_back(Descriptor::Action{"Show Tracks", [this, gui, net]() {
16131618
gui->addNetTracks(net);
1614-
} else {
1619+
return makeSelected(net);
1620+
}});
1621+
} else {
1622+
actions.push_back(Descriptor::Action{"Hide Tracks", [this, gui, net]() {
16151623
gui->removeNetTracks(net);
1616-
}
1617-
return makeSelected(net);
1618-
}});
1624+
return makeSelected(net);
1625+
}});
1626+
}
16191627
}
16201628
return actions;
16211629
}

src/gui/src/inspector.cpp

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -836,16 +836,6 @@ void Inspector::unsetReadOnly()
836836
reload();
837837
}
838838

839-
void Inspector::highlightChanged()
840-
{
841-
loadActions();
842-
}
843-
844-
void Inspector::focusNetsChanged()
845-
{
846-
loadActions();
847-
}
848-
849839
void Inspector::loadActions()
850840
{
851841
// remove action buttons and ensure delete
@@ -1057,6 +1047,7 @@ void Inspector::handleAction(QWidget* action)
10571047
}
10581048

10591049
if (new_selection && new_selection == selection_) {
1050+
loadActions();
10601051
return;
10611052
}
10621053

src/gui/src/inspector.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,6 @@ class Inspector : public QDockWidget
194194
void clicked(const QModelIndex& index);
195195
void doubleClicked(const QModelIndex& index);
196196
void update(const Selected& object = Selected());
197-
void highlightChanged();
198-
void focusNetsChanged();
199197

200198
int selectNext();
201199
int selectPrevious();
@@ -206,6 +204,7 @@ class Inspector : public QDockWidget
206204
void unsetReadOnly();
207205

208206
void reload();
207+
void loadActions();
209208

210209
private slots:
211210
void focusIndex(const QModelIndex& index);
@@ -218,7 +217,6 @@ class Inspector : public QDockWidget
218217

219218
private:
220219
void handleAction(QWidget* action);
221-
void loadActions();
222220

223221
void adjustHeaders();
224222

src/gui/src/layoutTabs.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ void LayoutTabs::addRouteGuides(odb::dbNet* net)
258258
{
259259
const auto& [itr, inserted] = route_guides_.insert(net);
260260
if (inserted) {
261+
emit routeGuidesChanged();
261262
fullRepaint();
262263
}
263264
}
@@ -266,6 +267,7 @@ void LayoutTabs::addNetTracks(odb::dbNet* net)
266267
{
267268
const auto& [itr, inserted] = net_tracks_.insert(net);
268269
if (inserted) {
270+
emit netTracksChanged();
269271
fullRepaint();
270272
}
271273
}
@@ -281,13 +283,15 @@ void LayoutTabs::removeFocusNet(odb::dbNet* net)
281283
void LayoutTabs::removeRouteGuides(odb::dbNet* net)
282284
{
283285
if (route_guides_.erase(net) > 0) {
286+
emit routeGuidesChanged();
284287
fullRepaint();
285288
}
286289
}
287290

288291
void LayoutTabs::removeNetTracks(odb::dbNet* net)
289292
{
290293
if (net_tracks_.erase(net) > 0) {
294+
emit netTracksChanged();
291295
fullRepaint();
292296
}
293297
}
@@ -305,6 +309,7 @@ void LayoutTabs::clearRouteGuides()
305309
{
306310
if (!route_guides_.empty()) {
307311
route_guides_.clear();
312+
emit routeGuidesChanged();
308313
fullRepaint();
309314
}
310315
}
@@ -313,6 +318,7 @@ void LayoutTabs::clearNetTracks()
313318
{
314319
if (!net_tracks_.empty()) {
315320
net_tracks_.clear();
321+
emit netTracksChanged();
316322
fullRepaint();
317323
}
318324
}

src/gui/src/layoutTabs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ class LayoutTabs : public QTabWidget
7676
void addSelected(const SelectionSet& selected);
7777
void addRuler(int x0, int y0, int x1, int y1);
7878
void focusNetsChanged();
79+
void routeGuidesChanged();
80+
void netTracksChanged();
7981

8082
public slots:
8183
void tabChange(int index);

src/gui/src/mainWindow.cpp

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,19 @@ MainWindow::MainWindow(bool load_settings, QWidget* parent)
184184
addRuler(x0, y0, x1, y1, "", "", default_ruler_style_->isChecked());
185185
});
186186

187+
connect(viewers_,
188+
&LayoutTabs::focusNetsChanged,
189+
inspector_,
190+
&Inspector::loadActions);
191+
connect(viewers_,
192+
&LayoutTabs::routeGuidesChanged,
193+
inspector_,
194+
&Inspector::loadActions);
195+
connect(viewers_,
196+
&LayoutTabs::netTracksChanged,
197+
inspector_,
198+
&Inspector::loadActions);
199+
187200
connect(
188201
this, &MainWindow::selectionChanged, viewers_, &LayoutTabs::fullRepaint);
189202
connect(
@@ -223,14 +236,12 @@ MainWindow::MainWindow(bool load_settings, QWidget* parent)
223236
connect(inspector_, &Inspector::focus, viewers_, &LayoutTabs::selectionFocus);
224237
connect(
225238
drc_viewer_, &DRCWidget::focus, viewers_, &LayoutTabs::selectionFocus);
226-
connect(this,
227-
&MainWindow::highlightChanged,
228-
inspector_,
229-
&Inspector::highlightChanged);
239+
connect(
240+
this, &MainWindow::highlightChanged, inspector_, &Inspector::loadActions);
230241
connect(viewers_,
231242
&LayoutTabs::focusNetsChanged,
232243
inspector_,
233-
&Inspector::focusNetsChanged);
244+
&Inspector::loadActions);
234245
connect(inspector_,
235246
&Inspector::removeHighlight,
236247
[=](const QList<const Selected*>& selected) {

0 commit comments

Comments
 (0)