HAL
state_wizardpage.cpp
Go to the documentation of this file.
4 
5 namespace hal
6 {
8  {
9  setTitle("State");
10  setSubTitle("Enter parameters for state component");
11  mLayout = new QGridLayout(this);
12 
13  mStateIdentifier = new QLineEdit(this);
14  mNegStateIdentifier = new QLineEdit(this);
15 
16  mLabStateIdentifier = new QLabel("State identifier: ");
17  mLabNegStateIdentifier = new QLabel("Negative state identifier: ");
18 
19  mLayout->addWidget(mLabStateIdentifier, 0, 0);
20  mLayout->addWidget(mStateIdentifier, 0, 1);
21  mLayout->addWidget(mLabNegStateIdentifier, 1, 0);
22  mLayout->addWidget(mNegStateIdentifier, 1, 1);
23 
24  setLayout(mLayout);
25 
26  connect(mStateIdentifier, &QLineEdit::textChanged, this, &StateWizardPage::handleTextChanged);
27  connect(mNegStateIdentifier, &QLineEdit::textChanged, this, &StateWizardPage::handleNegTextChanged);
28 
29  QRegExp rx("[A-z]([A-z]|\\d|_)*");
30  mValidator = new QRegExpValidator(rx, this);
31  mStateIdentifier->setValidator(mValidator);
32  mNegStateIdentifier->setValidator(mValidator);
33  }
34 
36  {
37  mWizard = static_cast<GateLibraryWizard*>(wizard());
38  mPinGroups = mWizard->getPingroups();
39  }
40 
43  {
44  auto stat = gate->get_component_as<StateComponent>([](const GateTypeComponent* c) { return StateComponent::is_class_of(c); });
45 
46  if(stat != nullptr)
47  {
48  mStateIdentifier->setText(QString::fromStdString(stat->get_state_identifier()));
49  mNegStateIdentifier->setText(QString::fromStdString(stat->get_neg_state_identifier()));
50  }
51  }
52  }
53 
54  void StateWizardPage::handleTextChanged(const QString &text)
55  {
56  mNegStateIdentifier->setText(QString("%1N").arg(mStateIdentifier->text()));
57  Q_UNUSED(text);
59  }
60 
61  void StateWizardPage::handleNegTextChanged(const QString &text)
62  {
63  Q_UNUSED(text);
65  }
66 
68  {
69  if(mStateIdentifier->text().isEmpty()) return false;
70  for (auto pingroup : mPinGroups) { //check if pins name is used as a state identifier name
71  QString groupName = pingroup->getName();
72  if(mStateIdentifier->text() == groupName || mNegStateIdentifier->text() == groupName) return false;
73  for(auto it : pingroup->getChildren())
74  {
75  PinItem* pin = static_cast<PinItem*>(it);
76  QString pinName = pin->getName();
77  if(mStateIdentifier->text() == pinName || mNegStateIdentifier->text() == pinName) return false;
78  }
79  }
80  return true;
81  }
82 }
QList< PinItem * > getPingroups()
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
An item in the PinModel.
Definition: pin_item.h:48
QString getName() const
Definition: pin_item.cpp:81
static bool is_class_of(const GateTypeComponent *component)
void initializePage() override
bool isComplete() const override
void setData(GateType *gate)
StateWizardPage(QWidget *parent=nullptr)
void addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment)
void setValidator(const QValidator *v)
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 fromStdString(const std::string &str)
void setLayout(QLayout *layout)
void completeChanged()
void setSubTitle(const QString &subTitle)
void setTitle(const QString &title)
QWizard * wizard() const const