void VariablesList::onRemoved(const WorkspaceObject&, const openstudio::IddObjectType& type, const openstudio::UUID&) { LOG(Debug, "onRemoved " << type.valueName()); /// \todo if the user is remove to add an output variable through some other means it will not show up here and now if (type != openstudio::IddObjectType::OS_Output_Variable) { if (!m_dirty){ m_dirty = true; QTimer::singleShot(0, this, SLOT(updateVariableList())); } } }
VariablesList::VariablesList(openstudio::model::Model t_model) : m_model(t_model), m_dirty(true) { connect(t_model.getImpl<openstudio::model::detail::Model_Impl>().get(), static_cast<void (model::detail::Model_Impl::*)(const WorkspaceObject &, const IddObjectType &, const UUID &) const>(&model::detail::Model_Impl::addWorkspaceObject), this, &VariablesList::onAdded); connect(t_model.getImpl<openstudio::model::detail::Model_Impl>().get(), static_cast<void (model::detail::Model_Impl::*)(const WorkspaceObject &, const IddObjectType &, const UUID &) const>(&model::detail::Model_Impl::removeWorkspaceObject), this, &VariablesList::onRemoved); auto vbox = new QVBoxLayout(); vbox->setContentsMargins(10,10,10,10); vbox->setSpacing(10); setLayout(vbox); vbox->addWidget(new QLabel("<b>Possible Output Variables</b>")); auto innerbox = new QVBoxLayout(); m_allOnBtn = new QPushButton("All On"); m_allOnBtn->setFlat(true); m_allOnBtn->setObjectName("StandardGrayButton"); m_allOffBtn = new QPushButton("All Off"); m_allOffBtn->setFlat(true); m_allOffBtn->setObjectName("StandardGrayButton"); innerbox->addWidget(m_allOnBtn); innerbox->addWidget(m_allOffBtn); connect(m_allOnBtn, &QPushButton::clicked, this, &VariablesList::allOnClicked); connect(m_allOffBtn, &QPushButton::clicked, this, &VariablesList::allOffClicked); auto outerbox = new QHBoxLayout(); outerbox->addLayout(innerbox); outerbox->addStretch(); vbox->addLayout(outerbox); m_listLayout = new QVBoxLayout(); vbox->addLayout(m_listLayout); updateVariableList(); }
QString Calculator::processInput(const QString & user_input) { // processes user input basis.changeRank(Fn_MaxRank); // remove extra white space QString input = user_input.trimmed(); // check previous output if (input == PreviousOutput) return previousOutput.toOutput(); // echo after processing input if (stringRegExp.exactMatch(input)) { FnData output = compute(input); previousOutput = output; return output.toOutput(); } // assignment processed input to variable if (assignmentRegExp.exactMatch(input)) { // varName = anything to left of first equal sign QString varName = input.section(QChar('='),0,0).trimmed(); // check that varName is an appropriate name for a variable if (varName == Id) { previousOutput.setFailMessage(tr("Name Error: %1 is a protected character").arg(IdString)); return previousOutput.toOutput(); } if (varName == PreviousOutput){ previousOutput.setFailMessage(tr("Name Error: %1 is a protected character").arg(PreviousOutput)); return previousOutput.toOutput(); } if (!varName.contains(QRegExp("[A-Za-z]"))) { previousOutput.setFailMessage(tr("Name Error: variable names must contain a letter")); return previousOutput.toOutput(); } // varValue = everything to the right of the first equal sign QString varValue = input.section(QChar('='),1).trimmed(); // check previous output if (varValue == PreviousOutput) { variableList.insert(varName,previousOutput); emit updateVariableList(variableList); return previousOutput.toOutput(); } FnData output = compute(varValue); previousOutput = output; if (output.type() != FailMessage) { variableList.insert(varName,output); emit updateVariableList(variableList); } return output.toOutput(); } previousOutput.setFailMessage(tr("Input Error: unknown input %1").arg(input)); return previousOutput.toOutput(); }