7 const char* BooleanFunctionEdit::STATE_EMPTY =
"Empty";
8 const char* BooleanFunctionEdit::STATE_VALID =
"Valid";
9 const char* BooleanFunctionEdit::STATE_INVALID =
"Invalid";
12 :
QLineEdit(parent), mState(STATE_VALID), mLegalVariables(legalVar)
22 if (s == mState)
return;
33 mLegalVariables = legalVar;
37 void BooleanFunctionEdit::handleEditingFinished()
45 QString nextState = STATE_VALID;
49 nextState = STATE_INVALID;
52 BooleanFunction bf = bfres.get();
53 std::set<std::string> var_names = bf.get_variable_names();
54 std::set<std::string> leg = mLegalVariables;
55 for(std::string vname : var_names)
57 if (mLegalVariables.find(vname) == mLegalVariables.end())
59 nextState = STATE_INVALID;
64 if (mState != nextState)
83 std::set<std::string> legVars;
85 legVars.insert(pi->getName().toStdString());
87 if (!mEditFunctions.isEmpty())
91 mEditFunctions.clear();
106 legVars.
insert(mWizard->statePage->mStateIdentifier->
text().toStdString());
107 legVars.insert(mWizard->statePage->mNegStateIdentifier->
text().toStdString());
110 mLayout->
addWidget(label, boolFuncCnt, 0);
111 mLayout->
addWidget(lineEdit, boolFuncCnt, 1);
113 if(
auto bf = boolFunctions.find(pi->getName().toStdString()); bf != boolFunctions.end())
119 mEditFunctions.append(lineEdit);
125 if(!pinGroups.
empty())
128 for(
PinItem* pinGroup : pinGroups){
130 for(
auto item : pinGroup->getChildren())
141 legVars.
insert(mWizard->statePage->mStateIdentifier->
text().toStdString());
142 legVars.insert(mWizard->statePage->mNegStateIdentifier->
text().toStdString());
147 mLayout->
addWidget(lineEdit, rowCount, 1);
150 mEditFunctions.append(lineEdit);
162 mWizard->mEditMode =
true;
170 void BoolWizardPage::handleStateChanged(
const QString& stat)
177 void BoolWizardPage::handleTextChanged(
const QString& txt)
185 if(mWizard->mEditMode)
187 mWizard->mWasEdited =
true;
197 if(!lineEdit->isValid())
202 if(
isFinalPage() && !mWizard->mWasEdited)
return false;
203 mWizard->mEditMode =
false;
208 std::unordered_map<std::string, BooleanFunction> retval;
209 for(
int i = 0; i<mEditFunctions.length(); i++)
215 retval.insert({mOutputPins[i].toStdString(), bfres.get()});
BoolWizardPage(QWidget *parent=nullptr)
std::unordered_map< std::string, BooleanFunction > getBoolFunctions()
void setData(GateType *gate)
void initializePage() override
bool isComplete() const override
void setState(const QString &s)
void setLegalVariables(std::set< std::string > &legalVar)
void legalVariablesChanged(std::set< std::string > legalVar)
BooleanFunctionEdit(std::set< std::string > &legalVar, QWidget *parent=nullptr)
void stateChanged(QString s)
static Result< BooleanFunction > from_string(const std::string &expression)
QList< PinItem * > getPingroups()
const std::unordered_map< std::string, BooleanFunction > & get_boolean_functions() const
QList< GateTypeProperty > getProperties() const
TreeItemType getItemType() const
QList< PinItem * > getInputPins()
QList< PinItem * > getOutputPins()
void insert(const QString &newText)
void textChanged(const QString &text)
void append(const T &value)
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QString fromStdString(const std::string &str)
virtual void polish(QWidget *widget)
virtual void unpolish(QWidget *widget)
bool isFinalPage() const const
void setSubTitle(const QString &subTitle)
void setTitle(const QString &title)
QWizard * wizard() const const