Esempio n. 1
0
void QgsExpressionLineEdit::setMultiLine( bool multiLine )
{
  QString exp = expression();

  if ( multiLine && !mCodeEditor )
  {
    mCodeEditor = new QgsCodeEditorSQL();
    mCodeEditor->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
    delete mLineEdit;
    mLineEdit = nullptr;

    QHBoxLayout* newLayout = new QHBoxLayout();
    newLayout->setContentsMargins( 0, 0, 0, 0 );
    newLayout->addWidget( mCodeEditor );

    QVBoxLayout* vLayout = new QVBoxLayout();
    vLayout->addWidget( mButton );
    vLayout->addStretch();
    newLayout->addLayout( vLayout );

    delete layout();
    setLayout( newLayout );

    setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );

    setFocusProxy( mCodeEditor );
    connect( mCodeEditor, SIGNAL( textChanged() ), this, SLOT( expressionEdited() ) );

    setExpression( exp );
  }
  else if ( !multiLine && !mLineEdit )
  {
    delete mCodeEditor;
    mCodeEditor = nullptr;
    mLineEdit = new QgsFilterLineEdit();
    mLineEdit->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum );

    QHBoxLayout* newLayout = new QHBoxLayout();
    newLayout->setContentsMargins( 0, 0, 0, 0 );
    newLayout->addWidget( mLineEdit );
    newLayout->addWidget( mButton );

    delete layout();
    setLayout( newLayout );

    setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum );

    setFocusProxy( mLineEdit );
    connect( mLineEdit, SIGNAL( textChanged( QString ) ), this, SLOT( expressionEdited( QString ) ) );

    setExpression( exp );
  }
}
Esempio n. 2
0
ExpressionEditorWidget::ExpressionEditorWidget(const iscore::DocumentContext& doc, QWidget *parent) :
    QWidget(parent),
    m_context{doc}
{
    m_mainLayout = new iscore::MarginLess<QVBoxLayout>{this};

    auto btnWidg = new QWidget{this};
    auto btnLay = new iscore::MarginLess<QHBoxLayout>{btnWidg};

    auto validBtn = new QPushButton{tr("Ok"), btnWidg};
    auto cancelBtn = new QPushButton{tr("Cancel"),btnWidg};
    btnLay->addWidget(validBtn);
    btnLay->addWidget(cancelBtn);

    m_mainLayout->addWidget(btnWidg);

    connect(validBtn, &QPushButton::clicked,
            this, &ExpressionEditorWidget::on_editFinished);
    connect(cancelBtn, &QPushButton::clicked,
            this, [&] ()
    {
        if(m_expression.isEmpty()) {
            for(auto& elt : m_relations)
            {
                delete elt;
            }
            m_relations.clear();
            addNewTerm();
        }
        else
            setExpression(*State::parseExpression(m_expression));
    });
}
QgsFieldConditionalFormatWidget::QgsFieldConditionalFormatWidget( QWidget *parent )
    : QWidget( parent )
    , mLayer( 0 )
    , mEditIndex( 0 )
    , mEditing( false )
    , mSymbol( 0 )
{
  setupUi( this );
  mDeleteButton->hide();
  connect( mFieldCombo, SIGNAL( fieldChanged( QString ) ), SLOT( fieldChanged( QString ) ) );
  connect( fieldRadio, SIGNAL( clicked() ), SLOT( reloadStyles() ) );
  connect( rowRadio, SIGNAL( clicked() ), SLOT( reloadStyles() ) );
  connect( mNewButton, SIGNAL( clicked() ), SLOT( addNewRule() ) );
  connect( mSaveRule, SIGNAL( clicked() ), SLOT( saveRule() ) );
  connect( mCancelButton, SIGNAL( clicked() ), SLOT( cancelRule() ) );
  connect( mDeleteButton, SIGNAL( clicked() ), SLOT( deleteRule() ) );
  connect( listView, SIGNAL( clicked( QModelIndex ) ), SLOT( ruleClicked( QModelIndex ) ) );
  connect( btnChangeIcon , SIGNAL( clicked() ), SLOT( updateIcon() ) );
  connect( btnBuildExpression , SIGNAL( clicked() ), SLOT( setExpression() ) );
  connect( mPresetsList , SIGNAL( currentIndexChanged( int ) ), SLOT( presetSet( int ) ) );
  btnBackgroundColor->setAllowAlpha( true );
  btnBackgroundColor->setShowNoColor( true );
  btnTextColor->setAllowAlpha( true );
  btnTextColor->setShowNoColor( true );
  mPresetsModel = new QStandardItemModel( listView );
  mModel = new QStandardItemModel( listView );
  listView->setModel( mModel );
  mPresetsList->setModel( mPresetsModel );

  setPresets( defaultPresets() );
}
void QgsDefaultSearchWidgetWrapper::textChanged( const QString &text )
{
  if ( text.isEmpty() )
    emit valueCleared();

  setExpression( text );
}
Esempio n. 5
0
void PropertyEditorValue::setExpressionWithEmit(const QString &expression)
{
    if ( m_expression != expression) {
        setExpression(expression);
        emit expressionChanged(name());
    }
}
bool DlgSetRDRPropertyByExpressionEditor::loadWidget(QSettings *settings, const QString &prefix)
{
    setExpression(settings->value(prefix+"expression").toString());
    setType(settings->value(prefix+"type").toInt());
    setPropertyName(settings->value(prefix+"property").toString());
    return true;
}
Esempio n. 7
0
EVALOBJ::EVALOBJ(int num) : BASE_CL()
{
	outports = 1;
	inports=1;
    width = 70;
	strcpy(in_ports[0].in_name,"A");
	strcpy(in_ports[1].in_name,"B");
	strcpy(in_ports[2].in_name,"C");
	strcpy(in_ports[3].in_name,"D");
	strcpy(in_ports[4].in_name,"E");
	strcpy(in_ports[5].in_name,"F");

	strcpy(out_ports[0].out_name,"out");
 
	inputA = 0;
    inputB = 0;
    inputC = 0;
    inputD = 0;
    inputE = 0;
    inputF = 0;
    expression = NULL;    evaluator = NULL;
	setexp=FALSE;

	setExpression("A");
}
Esempio n. 8
0
void HStatement::keyPressEvent(Visualization::Item *target, QKeyEvent *event)
{
	Visualization::VList* lst = nullptr;
	auto p = target->parent();
	while (p && !(lst = dynamic_cast<Visualization::VList*>(p))) p = p->parent();

	bool processed = false;

	if (lst && event->modifiers() == Qt::NoModifier
			&& (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return))
	{
			processed = true;
			event->accept();

			int index = lst->focusedNodeIndex() + 1;

			auto empty = new OOModel::EmptyExpression();
			auto es = new OOModel::ExpressionStatement();
			es->setExpression(empty);
			lst->node()->model()->beginModification(lst->node(), "add empty statement");
			lst->node()->insert(index, es);
			lst->node()->model()->endModification();

			lst->setUpdateNeeded(Visualization::Item::StandardUpdate);
			target->scene()->addPostEventAction( new Interaction::SetCursorEvent(lst, empty));
	}

	if (!processed) GenericHandler::keyPressEvent(target, event);
}
Esempio n. 9
0
void EVALOBJ::load(HANDLE hFile) 
{
    char expr[MAXEXPRLENGTH];

	load_object_basics(this);
    load_property("expression",P_STRING,expr);
    setExpression(expr);
}
Esempio n. 10
0
Variable::Variable(const string& name, bool create_expression){
  assignNode(new VariableInternal(name));
  if(create_expression){
    setExpression(SX(name));
    setDerivative(SX("der_" + name));
    setBinding(var(),false);
    setBinding(der(),true);
  }
}
Esempio n. 11
0
FindMatch::FindMatch( char *_expression, U32 _maxMatches )
{
   VECTOR_SET_ASSOCIATION(matchList);

   expression = NULL;
   setExpression( _expression );
   maxMatches = _maxMatches;
   matchList.reserve( maxMatches );
}
Esempio n. 12
0
/*
 * If the expression of a simple query clause is query local, then
 * return the clause as is. Otherwise return a clone of the clause
 * with the expression rewritten to reference a query parameter.
 */
SimpleQueryClausePtr CaptureExtractor::rewriteSimpleClause(
    SimpleQueryClausePtr sc) {
  assert (sc != nullptr);
  auto expr = sc->getExpression();
  auto newExpr = rewrite(expr);
  if (expr == newExpr) return sc;
  auto rsc = static_pointer_cast<SimpleQueryClause>(sc->clone());
  rsc->setExpression(newExpr);
  return rsc;
}
Esempio n. 13
0
bool SglExprLex::run(const QStringList& script)
{
  int i = -1;
  bool result = true;
  while (result && ++i < script.size())
  {
    setExpression(script.at(i));
    result = Error(eval()) == Success;
  }
  return result;
}
void QgsCheckboxSearchWidgetWrapper::stateChanged( int )
{
  if ( mCheckBox )
  {
    mCheckBox->setTristate( false );
    QString exp = value().toString();
    setExpression( exp );
    emit valueChanged();
    emit expressionChanged( mExpression );
  }
}
Esempio n. 15
0
void HMethod::keyPressEvent(Visualization::Item *target, QKeyEvent *event)
{
	bool createDown = event->modifiers() == Qt::NoModifier &&
			(event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return);
	bool createRight = event->modifiers() == Qt::ShiftModifier &&
			(event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return);
	//bool switchVertical = event->modifiers() == Qt::NoModifier && event->key() == Qt::Key_Tab;
	bool switchHorizontal = event->modifiers() == Qt::ShiftModifier && event->key() == Qt::Key_Tab;

	bool processed = false;
	auto m = dynamic_cast<OOVisualization::VMethod*> ( target );
	if (m)
	{
		if ( (m->name()->itemOrChildHasFocus() || m->arguments()->itemOrChildHasFocus()) && createDown)
		{
			processed = true;
			if (m->node()->items()->size() > 0)
			{
				target->scene()->addPostEventAction( new Interaction::SetCursorEvent(target, m->node()->items()->at(0)));
			}
			else
			{
				auto empty = new OOModel::EmptyExpression();
				auto es = new OOModel::ExpressionStatement();
				es->setExpression(empty);
				m->node()->model()->beginModification(m->node(), "add empty statement");
				m->node()->items()->append(es);
				m->node()->model()->endModification();

				m->setUpdateNeeded(Visualization::Item::StandardUpdate);
				target->scene()->addPostEventAction( new Interaction::SetCursorEvent(target, empty));
			}
		}
		else if (m->name()->itemOrChildHasFocus() && switchHorizontal)
		{
			processed = true;

			if (m->node()->arguments()->size() > 0)
			{
				target->scene()->addPostEventAction( new Interaction::SetCursorEvent(target,
						m->node()->arguments()->at(0)));
			}
		}
		else if ( (m->name()->itemOrChildHasFocus()) && createRight)
		{
			processed = true;
			createNewArgument(m, 0);
		}
	}

	if (!processed) GenericHandler::keyPressEvent(target, event);
}
void QgsDateTimeSearchWidgetWrapper::dateTimeChanged( const QDateTime& dt )
{
  if ( mDateTimeEdit )
  {
    QString exp = value().toString();
    setExpression( exp );
    if ( dt.isValid() && !dt.isNull() )
      emit valueChanged();
    else
      emit valueCleared();
    emit expressionChanged( mExpression );
  }
}
void QgsDefaultSearchWidgetWrapper::initWidget( QWidget* widget )
{
  mContainer = widget;
  mContainer->setLayout( new QHBoxLayout() );
  mLineEdit = new QgsFilterLineEdit();
  mCheckbox = new QCheckBox( "Case sensitive" );
  mContainer->layout()->addWidget( mLineEdit );
  mContainer->layout()->addWidget( mCheckbox );
  connect( mLineEdit, SIGNAL( textChanged( QString ) ), this, SLOT( setExpression( QString ) ) );
  connect( mCheckbox, SIGNAL( stateChanged( int ) ), this, SLOT( setCaseString( int ) ) );
  mCheckbox->setChecked( Qt::Unchecked );
  mCaseString = "ILIKE";
}
void QgsDefaultSearchWidgetWrapper::setCaseString( int caseSensitiveCheckState )
{
  if ( caseSensitiveCheckState == Qt::Checked )
  {
    mCaseString = "LIKE";
  }
  else
  {
    mCaseString = "ILIKE";
  }
  // need to update also the line edit
  setExpression( mLineEdit->text() );
}
void QgsValueRelationSearchWidgetWrapper::valueChanged()
{
  QVariant vl = value();
  if ( !vl.isValid() )
  {
    clearExpression();
  }
  else
  {
    QSettings settings;
    setExpression( vl.isNull() ? settings.value( "qgis/nullValue", "NULL" ).toString() : vl.toString() );
  }
  emit expressionChanged( mExpression );
}
void QgsValueMapSearchWidgetWrapper::comboBoxIndexChanged( int idx )
{
  if ( mComboBox )
  {
    if ( idx == 0 )
    {
      clearExpression();
    }
    else
    {
      setExpression( mComboBox->itemData( idx ).toString() );
    }
    emit expressionChanged( mExpression );
  }
}
void QgsRelationReferenceSearchWidgetWrapper::onValueChanged( const QVariant &value )
{
  if ( !value.isValid() )
  {
    clearExpression();
    emit valueCleared();
  }
  else
  {
    QgsSettings settings;
    setExpression( value.isNull() ? QgsApplication::nullRepresentation() : value.toString() );
    emit valueChanged();
  }
  emit expressionChanged( mExpression );
}
void QgsValueRelationSearchWidgetWrapper::onValueChanged()
{
  QVariant vl = value();
  if ( !vl.isValid() )
  {
    clearExpression();
    emit valueCleared();
  }
  else
  {
    setExpression( vl.isNull() ? QgsApplication::nullRepresentation() : vl.toString() );
    emit valueChanged();
  }
  emit expressionChanged( mExpression );
}
void QgsRelationReferenceSearchWidgetWrapper::onValueChanged( const QVariant& value )
{
  if ( !value.isValid() )
  {
    clearExpression();
    emit valueCleared();
  }
  else
  {
    QSettings settings;
    setExpression( value.isNull() ? settings.value( QStringLiteral( "qgis/nullValue" ), "NULL" ).toString() : value.toString() );
    emit valueChanged();
  }
  emit expressionChanged( mExpression );
}
Esempio n. 24
0
CEventAssignment::CEventAssignment(const CEventAssignment & src,
                                   const CCopasiContainer * pParent):
  CCopasiContainer(src, pParent),
  mKey(CCopasiRootContainer::getKeyFactory()->add("EventAssignment", this)),
  mpModel(static_cast<CModel *>(getObjectAncestor("Model"))),
  mpTarget(src.mpTarget),
  mpExpression(NULL)
{
  if (mpModel != NULL)
    {
      mpModel->setCompileFlag(true);
    }

  setExpression(src.getExpression());
}
Esempio n. 25
0
void QgsDataDefinedButton::showExpressionDialog()
{
  QgsExpressionBuilderDialog d( const_cast<QgsVectorLayer*>( mVectorLayer ), getExpression() );
  if ( d.exec() == QDialog::Accepted )
  {
    QString newExp = d.expressionText();
    setExpression( d.expressionText().trimmed() );
    bool hasExp = !newExp.isEmpty();

    setUseExpression( hasExp );
    setActive( hasExp );
    updateGui();
  }
  activateWindow(); // reset focus to parent window
}
Esempio n. 26
0
bool CMathObject::setExpression(const std::string & infix,
                                const bool & isBoolean,
                                CMathContainer & container)
{
  bool success = true;
  CExpression Expression;
  Expression.setIsBoolean(isBoolean);

  success &= Expression.setInfix(infix);
  CObjectInterface::ContainerList ListOfContainer;
  ListOfContainer.push_back(&container);
  success &= Expression.compile(ListOfContainer);
  success &= setExpression(Expression, container);

  return success;
}
Esempio n. 27
0
void QgsDefaultSearchWidgetWrapper::setCaseString( int caseSensitiveCheckState )
{
  if ( caseSensitiveCheckState == Qt::Checked )
  {
    mCaseString = QStringLiteral( "LIKE" );
  }
  else
  {
    mCaseString = QStringLiteral( "ILIKE" );
  }
  // need to update also the line edit
  setExpression( mLineEdit->text() );

  if ( applyDirectly() )
    emit expressionChanged( mExpression );
}
Esempio n. 28
0
void QgsDataDefinedButton::showAssistant()
{
  if ( !mAssistant.data() )
    return;

  if ( mAssistant->exec() == QDialog::Accepted )
  {
    QgsDataDefined dd = mAssistant->dataDefined();
    setUseExpression( dd.useExpression() );
    setActive( dd.isActive() );
    if ( dd.isActive() && dd.useExpression() )
      setExpression( dd.expressionString() );
    else if ( dd.isActive() )
      setField( dd.field() );
    updateGui();
  }
  activateWindow(); // reset focus to parent window
}
Esempio n. 29
0
void QgsExpressionLineEdit::editExpression()
{
  QString currentExpression = expression();

  QgsExpressionContext context = mExpressionContextGenerator ? mExpressionContextGenerator->createExpressionContext() : mExpressionContext;

  QgsExpressionBuilderDialog dlg( mLayer, currentExpression, this, QStringLiteral( "generic" ), context );
  if ( !mDa.isNull() )
  {
    dlg.setGeomCalculator( *mDa );
  }
  dlg.setWindowTitle( mExpressionDialogTitle );

  if ( dlg.exec() )
  {
    QString newExpression = dlg.expressionText();
    setExpression( newExpression );
  }
}
Esempio n. 30
0
bool SglExprLex::autoFix(const QString& newexpr)
{
  int tokencnt = 0;
  int assignseqpos = -1;
  int lastToken;
  bool inText = false;

  setExpression(newexpr);
  reset();
  do
  {
    getNextScanResult();
    switch (lastScanResult.type)
    {
      case eol:
      case sot:
      case eot: inText = !inText;
      case whitespace: continue;
      case ASSIGN: if (assignseqpos < 0) assignseqpos = start; continue;
      case UNKNOWNTOKEN: return false;
      default: assignseqpos = -1; break;
    }
    lastToken = lastScanResult.type;
    ++tokencnt;
  } while ( lastScanResult.type != eol );
  // remove trailing '='
  if ( assignseqpos >= 0 )
    expr.truncate(assignseqpos);
  // supply 'ans' as parameter, if just a function name is given
/*  if ( tokencnt == 1 && lasttoken == FUNCTION )
    expr.append(revLookup(ans));*/
  // close all unmatched left paranthesis
  if (inText)
    expr.append(closePar.pop());
  while ( !closePar.isEmpty() )
    expr.append(addDelim(closePar.pop()));
  return true;
}