diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.cc b/src/laybasic/laybasic/layNetlistBrowserPage.cc
index 6a8313ec0..7da3111f6 100644
--- a/src/laybasic/laybasic/layNetlistBrowserPage.cc
+++ b/src/laybasic/laybasic/layNetlistBrowserPage.cc
@@ -604,6 +604,17 @@ NetlistBrowserModel::make_link_to (const db::Net *net) const
}
}
+QString
+NetlistBrowserModel::make_link_to (const db::Device *device) const
+{
+ if (! device) {
+ return QString ();
+ } else {
+ void *id = make_id_circuit_device (circuit_index (device->circuit ()), device_index (device));
+ return tl::to_qstring (tl::sprintf ("%s", tl::to_string (reinterpret_cast (id)), device->expanded_name ()));
+ }
+}
+
QString
NetlistBrowserModel::make_link_to (const db::Pin *pin, const db::Circuit *circuit) const
{
@@ -834,7 +845,7 @@ NetlistBrowserModel::text (const QModelIndex &index) const
if (index.column () == 0) {
return tl::to_qstring (ref->terminal_def ()->name () + " - " + device_string (ref->device ()));
} else {
- return tl::to_qstring (ref->device ()->expanded_name ());
+ return make_link_to (ref->device ());
}
}
@@ -1269,7 +1280,7 @@ NetlistBrowserModel::headerData (int section, Qt::Orientation /*orientation*/, i
if (section == 0) {
return tr ("Object");
} else if (section == 1) {
- return tr ("Attribute");
+ return tr ("Name (Items)");
}
}
@@ -1728,6 +1739,13 @@ NetlistBrowserModel::subcircuit_index (const db::SubCircuit *sub_circuit) const
return index_from_attr (sub_circuit, circuit->begin_subcircuits (), circuit->end_subcircuits (), m_subcircuit_index_by_object);
}
+size_t
+NetlistBrowserModel::device_index (const db::Device *device) const
+{
+ const db::Circuit *circuit = device->circuit ();
+ return index_from_attr (device, circuit->begin_devices (), circuit->end_devices (), m_device_index_by_object);
+}
+
// ----------------------------------------------------------------------------------
// NetlistBrowserPage implementation
@@ -2201,6 +2219,7 @@ NetlistBrowserPage::set_l2ndb (db::LayoutToNetlist *database)
connect (directory_tree->selectionModel (), SIGNAL (currentChanged (const QModelIndex &, const QModelIndex &)), this, SLOT (current_index_changed (const QModelIndex &)));
connect (directory_tree->selectionModel (), SIGNAL (selectionChanged (const QItemSelection &, const QItemSelection &)), this, SLOT (net_selection_changed ()));
+ directory_tree->header ()->show ();
directory_tree->header ()->setSortIndicatorShown (true);
find_text->setText (QString ());
diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.h b/src/laybasic/laybasic/layNetlistBrowserPage.h
index 76e7df965..8aa5873b1 100644
--- a/src/laybasic/laybasic/layNetlistBrowserPage.h
+++ b/src/laybasic/laybasic/layNetlistBrowserPage.h
@@ -181,9 +181,11 @@ private:
QIcon icon (const QModelIndex &index) const;
size_t circuit_index (const db::Circuit *circuit) const;
size_t net_index (const db::Net *net) const;
+ size_t device_index (const db::Device *device) const;
size_t pin_index (const db::Pin *pin, const db::Circuit *circuit) const;
size_t subcircuit_index (const db::SubCircuit *subcircuit) const;
QString make_link_to (const db::Net *net) const;
+ QString make_link_to (const db::Device *device) const;
QString make_link_to (const db::Pin *pin, const db::Circuit *circuit) const;
QString make_link_to (const db::Circuit *circuit) const;
QString make_link_to (const db::SubCircuit *sub_circuit) const;
@@ -210,6 +212,7 @@ private:
mutable std::map m_net_index_by_object;
mutable std::map m_pin_index_by_object;
mutable std::map m_subcircuit_index_by_object;
+ mutable std::map m_device_index_by_object;
mutable std::map m_net_icon_per_color;
mutable std::map m_connection_icon_per_color;
};