From 85717beca6c0da283cf5e59d8e404693b3dd21b1 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Fri, 12 Jul 2019 17:29:44 +0200 Subject: [PATCH] Allow saving LVS DB files from netlist browser. --- .../laybasic/layNetlistBrowserDialog.cc | 18 +++++++++++++++++- src/laybasic/laybasic/layNetlistBrowserPage.cc | 6 ++++++ src/laybasic/laybasic/layNetlistBrowserPage.h | 5 +++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/laybasic/laybasic/layNetlistBrowserDialog.cc b/src/laybasic/laybasic/layNetlistBrowserDialog.cc index 216ab98f4..f06e66714 100644 --- a/src/laybasic/laybasic/layNetlistBrowserDialog.cc +++ b/src/laybasic/laybasic/layNetlistBrowserDialog.cc @@ -371,7 +371,23 @@ BEGIN_PROTECTED if (m_l2n_index < int (view ()->num_l2ndbs ()) && m_l2n_index >= 0) { db::LayoutToNetlist *l2ndb = view ()->get_l2ndb (m_l2n_index); - if (l2ndb) { + db::LayoutVsSchematic *lvsdb = dynamic_cast (l2ndb); + + if (lvsdb && ! browser_page->is_netlist_mode ()) { + + // prepare and open the file dialog + lay::FileDialog save_dialog (this, tl::to_string (QObject::tr ("Save LVS Database")), "KLayout LVS DB files (*.lvsdb)"); + std::string fn (lvsdb->filename ()); + if (save_dialog.get_save (fn)) { + + tl::log << tl::to_string (QObject::tr ("Saving file: ")) << fn; + tl::SelfTimer timer (tl::verbosity () >= 11, tl::to_string (QObject::tr ("Saving"))); + + lvsdb->save (fn, true); + + } + + } else if (l2ndb) { // prepare and open the file dialog lay::FileDialog save_dialog (this, tl::to_string (QObject::tr ("Save Netlist Database")), "KLayout L2N DB files (*.l2n)"); diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.cc b/src/laybasic/laybasic/layNetlistBrowserPage.cc index b55527db1..2a58ea516 100644 --- a/src/laybasic/laybasic/layNetlistBrowserPage.cc +++ b/src/laybasic/laybasic/layNetlistBrowserPage.cc @@ -209,6 +209,12 @@ NetlistBrowserPage::~NetlistBrowserPage () clear_markers (); } +bool +NetlistBrowserPage::is_netlist_mode () +{ + return show_netlist->isChecked (); +} + void NetlistBrowserPage::set_plugin_root (lay::PluginRoot *pr) { diff --git a/src/laybasic/laybasic/layNetlistBrowserPage.h b/src/laybasic/laybasic/layNetlistBrowserPage.h index 784ddb914..03db3b29d 100644 --- a/src/laybasic/laybasic/layNetlistBrowserPage.h +++ b/src/laybasic/laybasic/layNetlistBrowserPage.h @@ -68,6 +68,11 @@ public: */ ~NetlistBrowserPage (); + /** + * @brief Returns true if netlist mode is selected + */ + bool is_netlist_mode (); + /** * @brief Sets the plugin root object for this object */