diff --git a/src/layui/layui/layNetlistBrowserModel.cc b/src/layui/layui/layNetlistBrowserModel.cc index c70e6455d..68b2e5e90 100644 --- a/src/layui/layui/layNetlistBrowserModel.cc +++ b/src/layui/layui/layNetlistBrowserModel.cc @@ -2377,6 +2377,19 @@ CircuitDeviceTerminalItemData::search_text () // ---------------------------------------------------------------------------------- // NetlistBrowserModel implementation +NetlistBrowserModel::NetlistBrowserModel (QWidget *parent, db::Netlist *netlist, NetColorizer *colorizer) + : QAbstractItemModel (parent), mp_l2ndb (0), mp_lvsdb (0), mp_colorizer (colorizer) +{ + mp_root.reset (new RootItemData ()); + mp_indexer.reset (new SingleIndexedNetlistModel (netlist)); + mp_colorizer->colors_changed.add (this, &NetlistBrowserModel::colors_changed); + + m_object_column = 0; + m_status_column = -1; + m_first_column = 2; + m_second_column = -1; +} + NetlistBrowserModel::NetlistBrowserModel (QWidget *parent, db::LayoutToNetlist *l2ndb, NetColorizer *colorizer) : QAbstractItemModel (parent), mp_l2ndb (l2ndb), mp_lvsdb (0), mp_colorizer (colorizer) { diff --git a/src/layui/layui/layNetlistBrowserModel.h b/src/layui/layui/layNetlistBrowserModel.h index 9fd6a0a98..e904bb405 100644 --- a/src/layui/layui/layNetlistBrowserModel.h +++ b/src/layui/layui/layNetlistBrowserModel.h @@ -229,6 +229,7 @@ class LAYUI_PUBLIC NetlistBrowserModel Q_OBJECT public: + NetlistBrowserModel (QWidget *parent, db::Netlist *netlist, NetColorizer *colorizer); NetlistBrowserModel (QWidget *parent, db::LayoutToNetlist *l2ndb, NetColorizer *colorizer); NetlistBrowserModel (QWidget *parent, db::LayoutVsSchematic *lvsdb, NetColorizer *colorizer); ~NetlistBrowserModel (); diff --git a/src/layui/layui/layNetlistBrowserPage.cc b/src/layui/layui/layNetlistBrowserPage.cc index abd0ae71b..302cc8470 100644 --- a/src/layui/layui/layNetlistBrowserPage.cc +++ b/src/layui/layui/layNetlistBrowserPage.cc @@ -216,9 +216,6 @@ NetlistBrowserPage::NetlistBrowserPage (QWidget * /*parent*/) connect (forward, SIGNAL (clicked ()), this, SLOT (navigate_forward ())); connect (backward, SIGNAL (clicked ()), this, SLOT (navigate_back ())); -// @@@ connect (show_netlist, SIGNAL (clicked ()), this, SLOT (mode_changed ())); -// @@@ connect (show_xref, SIGNAL (clicked ()), this, SLOT (mode_changed ())); - connect (actionExportAll, SIGNAL (triggered ()), this, SLOT (export_all ())); connect (actionExportSelected, SIGNAL (triggered ()), this, SLOT (export_selected ())); @@ -489,16 +486,25 @@ NetlistBrowserPage::select_path (const lay::NetlistObjectsPath &path) NetlistBrowserModel *model; model = dynamic_cast (nl_directory_tree->model ()); - tl_assert (model != 0); - nl_directory_tree->setCurrentIndex (model->index_from_path (path)); + if (model) { + nl_directory_tree->setCurrentIndex (model->index_from_path (path)); + } + +/* + TODO: to support path selection in schematic, we had to translate the netlist circuits + into reference circuits first using the xref translation (if available) + This does not work: model = dynamic_cast (sch_directory_tree->model ()); - tl_assert (model != 0); - sch_directory_tree->setCurrentIndex (model->index_from_path (path)); + if (model) { + sch_directory_tree->setCurrentIndex (model->index_from_path (path)); + } +*/ model = dynamic_cast (xref_directory_tree->model ()); - tl_assert (model != 0); - xref_directory_tree->setCurrentIndex (model->index_from_path (path)); + if (model) { + xref_directory_tree->setCurrentIndex (model->index_from_path (path)); + } } } @@ -821,12 +827,6 @@ NetlistBrowserPage::info_button_pressed () mp_info_dialog->show (); } -void -NetlistBrowserPage::mode_changed () -{ - // @@@ setup_trees (); -} - static QModelIndex find_next (QTreeView *view, QAbstractItemModel *model, const QRegExp &to_find, const QModelIndex &from) { QModelIndex index = from; @@ -1094,8 +1094,7 @@ NetlistBrowserPage::setup_trees () if (lvsdb) { // NOTE: with the tree as the parent, the tree will take over ownership of the model - // @@@ should be schematic - NetlistBrowserModel *new_model = new NetlistBrowserModel (sch_directory_tree, l2ndb, &m_colorizer); + NetlistBrowserModel *new_model = new NetlistBrowserModel (sch_directory_tree, lvsdb->reference_netlist (), &m_colorizer); set_tree_model (sch_directory_tree, new_model); diff --git a/src/layui/layui/layNetlistBrowserPage.h b/src/layui/layui/layNetlistBrowserPage.h index 73cf003d6..2f2fc4cef 100644 --- a/src/layui/layui/layNetlistBrowserPage.h +++ b/src/layui/layui/layNetlistBrowserPage.h @@ -213,7 +213,6 @@ private slots: void xref_selection_changed (); void browse_color_for_net (); void select_color_for_net (); - void mode_changed (); protected: bool eventFilter (QObject *watched, QEvent *event); diff --git a/src/layui/layui/layNetlistBrowserTreeModel.cc b/src/layui/layui/layNetlistBrowserTreeModel.cc index cc13503c0..4cf123eb2 100644 --- a/src/layui/layui/layNetlistBrowserTreeModel.cc +++ b/src/layui/layui/layNetlistBrowserTreeModel.cc @@ -122,6 +122,15 @@ static std::string search_string_from_names (const std::pair