HAL  v4.5.0-254-g8f9f6a423
The Hardware Analyzer - a comprehensive reverse engineering and manipulation framework for gate-level netlists.
init_wizardpage.cpp
Go to the documentation of this file.
5 
6 namespace hal
7 {
9  {
10  setTitle("Init from Data Field");
11  setSubTitle("Enter parameters for init component");
12  mLayout = new QGridLayout(this);
13 
14  mCategory = new QLineEdit(this);
15  mCategory->setText("generic");
16  mIdentifiers = new QTextEdit(this);
17 
18  mLabCategory = new QLabel("Category: ");
19  mLabIdentifiers = new QLabel("Identifiers: ");
20 
21  mLayout->addWidget(mLabCategory, 0, 0);
22  mLayout->addWidget(mCategory, 0, 1);
23  mLayout->addWidget(mLabIdentifiers, 1, 0);
24  mLayout->addWidget(mIdentifiers, 1, 1);
25 
26  setLayout(mLayout);
27 
28  connect(mCategory, &QLineEdit::textChanged, this, &InitWizardPage::handleTextChanged);
29  connect(mIdentifiers, &QTextEdit::textChanged, this, &InitWizardPage::handleTextEditChanged);
30  }
31 
33  {
34  mWizard = static_cast<GateLibraryWizard*>(wizard());
35  mWizard->mEditMode = true;
36 
37  if (mWizard->generalInfoPage->getProperties().contains(GateTypeProperty::c_lut)
38  && mIdentifiers->toPlainText().trimmed().isEmpty())
39  {
40  QStringList ids;
41  for (const auto& entry : mWizard->lutPage->getOutputPinConfigs())
42  if (!ids.contains(entry.initIdentifier))
43  ids << entry.initIdentifier;
44  mIdentifiers->setText(ids.join('\n'));
45  }
46  }
47 
50  {
51  auto init = gate->get_component_as<InitComponent>([](const GateTypeComponent* c) { return InitComponent::is_class_of(c); });
52 
53  if(init != nullptr)
54  {
55  mCategory->setText(QString::fromStdString(init->get_init_category()));
56  QString ids = "";
57 
58  bool first = true;
59  for (std::string i : init->get_init_identifiers()) {
60  if(first)
61  first = false;
62  else
63  ids.append("\n");
64 
66  }
67  mIdentifiers->setText(ids);
68  }
69  }
70  }
71 
72  void InitWizardPage::handleTextChanged(const QString& txt)
73  {
74  Q_UNUSED(txt);
75  mWizard = static_cast<GateLibraryWizard*>(wizard());
76 
77  //explicitly needed here because isComplete() is called
78  //before mWasEdited is changed in the wizard
79  if(mWizard->mEditMode) mWizard->mWasEdited = true;
80 
82  }
83 
84  void InitWizardPage::handleTextEditChanged()
85  {
86  mWizard = static_cast<GateLibraryWizard*>(wizard());
87 
88  //explicitly needed here because isComplete() is called
89  //before mWasEdited is changed in the wizard
90  if(mWizard->mEditMode) mWizard->mWasEdited = true;
91 
93  }
94 
96  {
97  if(isFinalPage() && !mWizard->mWasEdited) return false;
98  mWizard->mEditMode = false;
99  return true;
100  }
101 }
bool has_component_of_type(const GateTypeComponent::ComponentType type) const
Definition: gate_type.cpp:54
T * get_component_as(const std::function< bool(const GateTypeComponent *)> &filter=nullptr) const
Definition: gate_type.h:89
QList< GateTypeProperty > getProperties() const
static bool is_class_of(const GateTypeComponent *component)
InitWizardPage(QWidget *parent=nullptr)
friend class GateLibraryWizard
void initializePage() override
void setData(GateType *gate)
bool isComplete() const override
QVector< OutputPinEntry > getOutputPinConfigs() const
Definition: defines.h:45
void addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment)
void setText(const QString &)
void textChanged(const QString &text)
Q_EMITQ_EMIT
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QString & append(QChar ch)
QString fromStdString(const std::string &str)
bool isEmpty() const const
QString trimmed() const const
bool contains(const QString &str, Qt::CaseSensitivity cs) const const
QString join(const QString &separator) const const
void setText(const QString &text)
void textChanged()
QString toPlainText() const const
void setLayout(QLayout *layout)
void completeChanged()
bool isFinalPage() const const
void setSubTitle(const QString &subTitle)
void setTitle(const QString &title)
QWizard * wizard() const const