Example #1
0
  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()));
      }
    }
  }
Example #2
0
  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();
  }
Example #3
0
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();
  
}