mirror of https://github.com/KLayout/klayout.git
WIP: completer for cell name (for <10k cells) in instance editor options
This commit is contained in:
parent
04f2d3a8c0
commit
9a2c091f65
|
|
@ -44,6 +44,7 @@
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QTabWidget>
|
#include <QTabWidget>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
|
#include <QCompleter>
|
||||||
|
|
||||||
namespace edt
|
namespace edt
|
||||||
{
|
{
|
||||||
|
|
@ -623,16 +624,16 @@ EditorOptionsInst::library_changed ()
|
||||||
edited ();
|
edited ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
// Maximum number of cells for which to offer a cell name completer
|
||||||
EditorOptionsInst::cell_name_changed ()
|
const static size_t max_cells = 10000;
|
||||||
{
|
|
||||||
update_cell_edits ();
|
|
||||||
edited ();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
EditorOptionsInst::update_cell_edits ()
|
EditorOptionsInst::update_cell_edits ()
|
||||||
{
|
{
|
||||||
|
if (mp_ui->cell_le->completer ()) {
|
||||||
|
mp_ui->cell_le->completer ()->deleteLater ();
|
||||||
|
}
|
||||||
|
|
||||||
db::Layout *layout = 0;
|
db::Layout *layout = 0;
|
||||||
lay::LayoutView *view = lay::LayoutView::current ();
|
lay::LayoutView *view = lay::LayoutView::current ();
|
||||||
|
|
||||||
|
|
@ -648,6 +649,24 @@ EditorOptionsInst::update_cell_edits ()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStringList cellnames;
|
||||||
|
if (layout->cells () < max_cells) {
|
||||||
|
for (db::Layout::iterator c = layout->begin (); c != layout->end (); ++c) {
|
||||||
|
cellnames.push_back (tl::to_qstring (layout->cell_name (c->cell_index ())));
|
||||||
|
}
|
||||||
|
for (db::Layout::pcell_iterator pc = layout->begin_pcells (); pc != layout->end_pcells () && size_t (cellnames.size ()) < max_cells; ++pc) {
|
||||||
|
cellnames.push_back (tl::to_qstring (pc->first));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (size_t (cellnames.size ()) < max_cells) {
|
||||||
|
QCompleter *completer = new QCompleter (cellnames, this);
|
||||||
|
completer->setCaseSensitivity (Qt::CaseSensitive);
|
||||||
|
mp_ui->cell_le->setCompleter (completer);
|
||||||
|
} else {
|
||||||
|
mp_ui->cell_le->setCompleter (0);
|
||||||
|
}
|
||||||
|
|
||||||
std::pair<bool, db::pcell_id_type> pc = layout->pcell_by_name (tl::to_string (mp_ui->cell_le->text ()).c_str ());
|
std::pair<bool, db::pcell_id_type> pc = layout->pcell_by_name (tl::to_string (mp_ui->cell_le->text ()).c_str ());
|
||||||
std::pair<bool, db::cell_index_type> cc = layout->cell_by_name (tl::to_string (mp_ui->cell_le->text ()).c_str ());
|
std::pair<bool, db::cell_index_type> cc = layout->cell_by_name (tl::to_string (mp_ui->cell_le->text ()).c_str ());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -235,7 +235,6 @@ private slots:
|
||||||
void browse_cell ();
|
void browse_cell ();
|
||||||
void update_pcell_parameters ();
|
void update_pcell_parameters ();
|
||||||
void library_changed ();
|
void library_changed ();
|
||||||
void cell_name_changed ();
|
|
||||||
void update_cell_edits ();
|
void update_cell_edits ();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue