Beispiel #1
0
int buildemin ()
{
    saveSymbol (&rootTS, "Flength", "length", sym_fok_int, 1, true);
    saveSymbol (&rootTS, "Fcopy",   "copy",   sym_fok_str, 3, true);
    saveSymbol (&rootTS, "Ffind",   "find",   sym_fok_int, 2, true);
    saveSymbol (&rootTS, "Fsort",   "sort",   sym_fok_str, 1, true);
    return 0;
}
QgsSymbolV2SelectorDialog::QgsSymbolV2SelectorDialog( QgsSymbolV2* symbol, QgsStyleV2* style, const QgsVectorLayer* vl, QWidget* parent, bool embedded )
    : QDialog( parent )
    , mAdvancedMenu( NULL )
    , mVectorLayer( vl )
    , mMapCanvas( 0 )
{
#ifdef Q_OS_MAC
  setWindowModality( Qt::WindowModal );
#endif
  mStyle = style;
  mSymbol = symbol;
  mPresentWidget = NULL;

  setupUi( this );

  QSettings settings;
  restoreGeometry( settings.value( "/Windows/SymbolSelectorDialog/geometry" ).toByteArray() );

  // can be embedded in renderer properties dialog
  if ( embedded )
  {
    buttonBox->hide();
    layout()->setContentsMargins( 0, 0, 0, 0 );
  }
  // setup icons
  btnAddLayer->setIcon( QIcon( QgsApplication::iconPath( "symbologyAdd.svg" ) ) );
  btnRemoveLayer->setIcon( QIcon( QgsApplication::iconPath( "symbologyRemove.svg" ) ) );
  QIcon iconLock;
  iconLock.addFile( QgsApplication::iconPath( "locked.svg" ), QSize(), QIcon::Normal, QIcon::On );
  iconLock.addFile( QgsApplication::iconPath( "unlocked.svg" ), QSize(), QIcon::Normal, QIcon::Off );
  btnLock->setIcon( iconLock );
  btnUp->setIcon( QIcon( QgsApplication::iconPath( "symbologyUp.svg" ) ) );
  btnDown->setIcon( QIcon( QgsApplication::iconPath( "symbologyDown.svg" ) ) );

  model = new QStandardItemModel( layersTree );
  // Set the symbol
  layersTree->setModel( model );
  layersTree->setHeaderHidden( true );

  QItemSelectionModel* selModel = layersTree->selectionModel();
  connect( selModel, SIGNAL( currentChanged( const QModelIndex&, const QModelIndex& ) ), this, SLOT( layerChanged() ) );

  loadSymbol( symbol, static_cast<SymbolLayerItem*>( model->invisibleRootItem() ) );
  updatePreview();

  connect( btnUp, SIGNAL( clicked() ), this, SLOT( moveLayerUp() ) );
  connect( btnDown, SIGNAL( clicked() ), this, SLOT( moveLayerDown() ) );
  connect( btnAddLayer, SIGNAL( clicked() ), this, SLOT( addLayer() ) );
  connect( btnRemoveLayer, SIGNAL( clicked() ), this, SLOT( removeLayer() ) );
  connect( btnLock, SIGNAL( clicked() ), this, SLOT( lockLayer() ) );
  connect( btnSaveSymbol, SIGNAL( clicked() ), this, SLOT( saveSymbol() ) );

  updateUi();

  // set symbol as active item in the tree
  QModelIndex newIndex = layersTree->model()->index( 0, 0 );
  layersTree->setCurrentIndex( newIndex );
}
Beispiel #3
0
void nt_var_def (token tok)
{
    ///////////////////////////////////////////////////////////////////////RULE6
    
    if (tok -> type == t_var_id)
    {
        /* Pripravím si key pre ukladanie */

        char * key = createKey ("V", tok -> val_str);

        /* Rozhodnem sa s ktorou tabulkou idem pracovať */

        tNodePtr * currTS = NULL;
        currTS = (searchGlobalOnly == true) ? &rootTS : &localTS;

        /* Uložím premennú do odpovedajúcej tabulky symbolov */

        saveSymbol (&*currTS, key, tok -> val_str, t_var_id, 0, true);

        /* Porovnanie terminálov */

        match (tok, t_var_id);
        match (tok, t_colon);

        /* Priradenie typu práve uloženej premennej */
        /* searchType=1 hovorí, že ide o premennú   */

        nt_type (tok, key);

        /* Porovnanie zvyšného terminálu */

        match (tok, t_semicolon);

        //Sem pride instrukcia
        tData currentVar = searchSymbol(&*currTS, key)->data;

        if (localIL==NULL){
            insertInst (&IL, I_VAR, currentVar, NULL, NULL);
            printf("GLOBAL\n");printf("Vlozil som instrukciu I_VAR s ukazatelom %u do IL %u\n", &currentVar,&IL);
        }

        else{
            insertInst (localIL, I_VAR, currentVar, NULL, NULL);
            printf("LOCAL\n");printf("Vlozil som instrukciu I_VAR s ukazatelom %u do IL %u\n", &currentVar,localIL);
        }
        free (key);

    }
    else
    {    
        printf ("nt_var_def\n");
        errorHandler (errSyn);
    }

}
Beispiel #4
0
bool QgsStyleV2::addSymbol( QString name, QgsSymbolV2* symbol, bool update )
{
  if ( !symbol || name.isEmpty() )
    return false;

  // delete previous symbol (if any)
  if ( mSymbols.contains( name ) )
  {
    // TODO remove groups and tags?
    delete mSymbols.value( name );
    mSymbols.insert( name, symbol );
    if ( update )
      updateSymbol( SymbolEntity, name );
  }
  else
  {
    mSymbols.insert( name, symbol );
    if ( update )
      saveSymbol( name, symbol, 0, QStringList() );
  }

  return true;
}
Beispiel #5
0
void nt_fun_def_list (token tok)
{
    if (tok->type == t_function || tok->type == t_begin)
    {   

        /* Premenná ktorá rozhoduje či môže prísť forward deklarácia alebo nie*/

        bool nextMustBeBody    = false;
        char * rememberVarName =  NULL;
        ///////////////////////////////////////////////////////////////////RULE7

        if (tok -> type == t_function)
        {
            match (tok, t_function);

            char * key = createKey ("F", tok -> val_str);

            /* Ak podmienka je true, znamená to, že funkcia ešte nebola de-   */
            /* klarovaná a teda jej deklarácia prebehla v poriadku. Dodatočne */
            /* sa k nej dodeklarovala lokálna premenná s rovnakým menom v lo- */
            /* kálnej tabulke                                                 */

            if (saveSymbol (&rootTS, key, tok -> val_str, t_fun_id, 0, false) == true)
            {
                //Kedze vytvaram novu funkciu potrebujem novu lokalnu tabulku
                tNodePtr newLocalTS;
                init(&newLocalTS);
                //musel som tam nieco vloyit lebo nad prazdnou to blblo
                saveSymbol(&newLocalTS, "placeholder", "testname", 0,0,true);
                localTS=newLocalTS;
                //Do funkcie ulozim jej lokalnuTS
                //printf("localTS je teraz %d\n",&*localTS );
                searchSymbol(&rootTS, key)->data->localTSadr=newLocalTS;

                /*Uloženie lokálnej premennej patriacej k práve uloženej fun.*/

                char *funVarKey = createKey ("V", tok -> val_str);
                rememberVarName = createKey ("V", tok -> val_str);
                saveSymbol (&localTS, funVarKey, tok->val_str, t_var_id, 0, true);
                //printf("vnorena kokotina nasla %s\n",searchSymbol(&(searchSymbol(&rootTS, key)->data->localTSadr),funVarKey)->data->name);
                free (funVarKey);
            }

            /* V opačnom prípade ide buď o redeklaráciu alebo doplnenie for-  */
            /* ward deklarácie                                                */

            else
            {   
                localTS = searchSymbol (&rootTS, key) -> data -> localTSadr;
                //printf("kotrola priradil som %d\n",&*localTS ); //printf("Som v inej a nasiel som%s\n",searchSymbol(&localTS, "test")->data->name);
                /* Ak v rámci programu bola aspoň jedna forward deklarácia, */
                /* tak v tejto deklarácií už musí byť telo funkcie, inak by */
                /* šlo o redeklaráciu                                       */

                if (fwdDeclarations != 0)
                {
                    nextMustBeBody = true;
                }

                /* Ak podmienka nebola splnená, znamená to, že ide o redef. */

                else
                {
                    printf ("Redefinition of function %s\n", tok->val_str);
                    errorHandler (errSemDef);
                }
            }


            match (tok, t_fun_id);
            match (tok, t_l_parrent);

            /* Spracovanie parametrov funkcie */

            nt_param_list (tok, nextMustBeBody, key);
            
            /* Nulujem počítadlo aktuálneho param, lebo skončili parametre */
//bolo tu povodne argsRead
            //pocetArg = 0;

            /* Ak ide o prvú delkaráciu funkcie, uložím počet jej argumentov **
            ** do jej symbolu do premennej argCount                          */

            if (nextMustBeBody == false)
            {
                searchSymbol (&rootTS, key) -> data -> argCount = pocetArg;
                printf("uloil som %d\n",searchSymbol(&rootTS, key)->data->argCount );

                /* Vynulujem počítadlo argumentov lebo som skončil paramlist */

                
            }
pocetArg = 0;
            /* ) : */

            match (tok, t_r_parrent);
            match (tok, t_colon);

            /* Priradím alebo skontrolujem typ funkcie, viac info v nt_type */

            nt_type (tok, key);

            /* Nakoniec priradím správny typ rovnomennej lokálnej premennej   **
            ** rovnomennej funkcie. V case som musel použiť magické čísla,    **
            ** pretože case nepodporuje konštanty. Čísla 5 až 8 predstavujú   **
            ** funkciu, ktorá už má priradený typ, ale ešte neprišlo telo.    **
            ** Čísla 9 až 12 sú pre funkcie ktoré majú zatiaľ len forward de- **
            ** klaráciu a čísla 13 až 16 sú pre funkcie ktoré už majú aj typ, **
            ** aj riadne telo. Typy idú v poradí INTEGER, REAL, STRING, BOO-  **
            ** LEAN.                                                          */

            if (rememberVarName != NULL)
                switch (searchSymbol (&rootTS, key) -> data -> type)
                {
                    case 5:
                    case 9:
                    case 13:    searchSymbol (&localTS, rememberVarName) -> data -> type = sym_var_int;
                                break;
                    case 6:
                    case 10:
                    case 14:    searchSymbol (&localTS, rememberVarName) -> data -> type = sym_var_rea;
                                break;
                    case 7:
                    case 11:
                    case 15:    searchSymbol (&localTS, rememberVarName) -> data -> type = sym_var_str;
                                break;
                    case 8:
                    case 12:
                    case 16:    searchSymbol (&localTS, rememberVarName) -> data -> type = sym_var_boo;
                                break;
                    default:    errorHandler (errSemTypArg);
                                break;
                }

            /* ; */
            
            match (tok, t_semicolon);

            /* Do symbolu funkcie uložím ukazateľ na jej lokálnu tabuľku sym. */

            //searchSymbol (&rootTS, key) -> data -> localTSadr = localTS;


            /* Spracovanie tela funkcie. nextMustBeBody mi hovorí či už musí **
            ** prísť telo funkcie (true) alebo môže byť forward (false)      **
            ** premenná key sa predáva aby som vedel názov aktuálne funkcie  */

            nt_fun_body (tok, nextMustBeBody, key);

            /* Vynulujem globálnu TS, pre istotu */

            localTS = NULL;

            /* Uvoľnenie alokovaných stringov */

            free (key);
            free (rememberVarName);

            /* ; */

            match (tok, t_semicolon);

            /* Rekurzívne volanie tejto istej funkcie pre prípad, že by v kó- **
            ** de bolo viac deklarácií funkcií po sebe                        */

            nt_fun_def_list(tok);

        }
        ///////////////////////////////////////////////////////////////////RULE8
        else

            /* Eps. pravidlo - Deklarácie užívateľských funkcií niesú povinné */

            return;
    }

    /* Prípad keď prišiel nesprávny terminál */

    else
    {    
        printf ("nt_fun_def_list\n");
        errorHandler (errSyn);
    }
}
Beispiel #6
0
void nt_param (token tok, bool testOnly, char * currentFunctionKey)
{
    if (tok->type == t_var_id)
    {   
        pocetArg++;
        //pvoodne argsRead++;
        char *key = createKey("V",tok->val_str);

        //printf("PRAMETER key je %s\n",key );
        //char *key = createKey ()

        ////////////////////////////////////////////SPRACOVANIE Parametru
        if (testOnly==false)//ak sa idu nove ukladat
        {  
            saveSymbol (&localTS, key, tok->val_str, t_var_id, pocetArg /*povodne argsRead*/, true);
            //printf("&&&&&&&&&&&&&&&&&&& ulozil som %s s argcountom %d\n",key,argsRead );
            match (tok, t_var_id);
            match (tok, t_colon);
            bool temp=searchGlobalOnly;
            searchGlobalOnly=false;
            nt_type(tok, key);
            searchGlobalOnly=temp;
            //pocetArg++;



            //tuna ide ulozenie ukazatela na parameter dalsi

            tNodePtr currentFunction = searchSymbol(&rootTS, currentFunctionKey);
            if (currentFunction->data->nextArg==NULL)
                currentFunction->data->nextArg=searchSymbol(&localTS, key);
            else
            {
                while (currentFunction->data->nextArg!=NULL)
                {
                    currentFunction=currentFunction->data->nextArg;
                }
                currentFunction->data->nextArg=searchSymbol(&localTS, key);
            }



        }
        else // ak sa len kontroluju z minulej fwd hlavicky
        {
            tNodePtr hledam=searchSymbol(&localTS, key);
            if (hledam==0)
            {
                printf("Error hlavicky sa lisia ty kokot\n");
                errorHandler(errSemTypArg);
            }
            else
            {
                match (tok, t_var_id);
                match (tok, t_colon);
                match (tok, hledam->data->type+25);
            }
        }
        ///////////////////////////////////////////////Premenna ulozena
        //searchSymbol(&rootTS, currentFunctionKey)->data->nextArg=key;
        //printf("podarilo sa \n");
        free(key);
    }
    else
    {
        printf("synerror in nt_param\n");
        errorHandler(errSyn);
    }
}
Beispiel #7
0
QWidget* FiPage::makeMainTab()
{
  // Start on the right with the symbol area
  mProvider = new QComboBox;
  mProvider->setSizeAdjustPolicy(QComboBox::AdjustToContents);
  mSymbol = new QLineEdit;
  mMarket = new QComboBox;
  mMarket->setSizeAdjustPolicy(QComboBox::AdjustToContents);

  QToolButton* saveBtn = new QToolButton;
  saveBtn->setToolTip(tr("Save Symbol Changes"));
  saveBtn->setAutoRaise(true);
  saveBtn->setIcon(QIcon::fromTheme("document-save"));
//   saveBtn->setShortcut(QKeySequence(QKeySequence::Save));
  connect(saveBtn, SIGNAL(clicked()), this, SLOT(saveSymbol()));

  QToolButton* newBtn = new QToolButton;
  newBtn->setToolTip(tr("Add New Symbol"));
  newBtn->setAutoRaise(true);
  newBtn->setIcon(QIcon::fromTheme("list-add"));
//   newBtn->setShortcut(QKeySequence(QKeySequence::Save));
  connect(newBtn, SIGNAL(clicked()), this, SLOT(newSymbol()));

  QToolButton* delBtn = new QToolButton;
  delBtn->setToolTip(tr("Delete Symbol"));
  delBtn->setAutoRaise(true);
  delBtn->setIcon(QIcon::fromTheme("edit-delete"));
//   delBtn->setShortcut(QKeySequence("Ctrl+Del"));
  connect(delBtn, SIGNAL(clicked()), this, SLOT(deleteSymbol()));

  QHBoxLayout* hbox = new QHBoxLayout; // Symbol Edit Line
  hbox->setMargin(0);
  hbox->addWidget(saveBtn);
  hbox->addWidget(newBtn);
  hbox->addWidget(mSymbol);
  hbox->addWidget(mMarket);
  hbox->addWidget(mProvider);
  hbox->addWidget(delBtn);
  hbox->addStretch(1);

  mSymbolView = new SymbolTableView(mSymbols);
  connect(mSymbolView, SIGNAL(newSelection(const QModelIndex &)),
          this, SLOT(symbolClicked(const QModelIndex &)));

  QVBoxLayout* vbox = new QVBoxLayout; // That's all with the symbols..
  vbox->setMargin(0);
  vbox->addLayout(hbox);
  vbox->addWidget(mSymbolView);

  hbox = new QHBoxLayout;              // ..but add a stretch to the right
  hbox->setMargin(0);
  hbox->addLayout(vbox);
  hbox->addStretch(1);

  QWidget* widget = new QWidget;       // Place all on a widget needed by the splitter
  widget->setLayout(hbox);

  mLookUp = new SearchFiWidget(this);  // No more to do on the left
  connect(mLookUp, SIGNAL(selected(int, int)),
          this, SLOT(fiClicked(int, int)));

  QSplitter* splitter = new QSplitter(Qt::Horizontal);
  splitter->addWidget(mLookUp);
  splitter->addWidget(widget);

  // Build the FI edit line
  saveBtn = new QToolButton;
  saveBtn->setToolTip(tr("Save FI Changes"));
  saveBtn->setAutoRaise(true);
  saveBtn->setIcon(QIcon::fromTheme("document-save"));
//   saveBtn->setShortcut(QKeySequence(QKeySequence::Save));
  connect(saveBtn, SIGNAL(clicked()), this, SLOT(saveFi()));

  delBtn = new QToolButton;
  delBtn->setToolTip(tr("Delete FI"));
  delBtn->setAutoRaise(true);
  delBtn->setIcon(QIcon::fromTheme("edit-delete"));
//   delBtn->setShortcut(QKeySequence("Ctrl+Del"));
  connect(delBtn, SIGNAL(clicked()), this, SLOT(deleteFi()));

  QToolButton* mLockBtn = new QToolButton;
  mLockBtn->setToolTip(tr("Lock FI, don't download bars"));
  mLockBtn->setAutoRaise(true);
  mLockBtn->setIcon(QIcon::fromTheme("object-unlocked"));
//   mLockBtn->setShortcut(QKeySequence(QKeySequence::Save));
  connect(mLockBtn, SIGNAL(clicked()), this, SLOT(lockFi()));

  QFontMetrics f(font());
  int w = f.width("X");
  mFiName = new QLineEdit;
  mFiName->setToolTip(tr("FI Name"));
  mFiName->setMinimumWidth(w * 40);

  mFiType = new QComboBox;
  mFiType->setSizeAdjustPolicy(QComboBox::AdjustToContents);
//   mFiType->addItems(mFilu->getFiTypeNames());
//   mFiType->setCurrentIndex(-1);
  mFiType->setToolTip(tr("FI Type"));

  mExpiryDate = new QLineEdit;
  mExpiryDate->setToolTip(tr("FI Expiry Date"));
  mExpiryDate->setMinimumWidth(w * 15);

  hbox = new QHBoxLayout;
  hbox->addWidget(saveBtn);
  hbox->addWidget(mFiName);
  hbox->addWidget(mFiType);
  hbox->addWidget(mLockBtn);
  hbox->addWidget(mExpiryDate);
  hbox->addWidget(delBtn);
  hbox->addStretch(1);

  widget = new QWidget;
  widget->setLayout(hbox);

  vbox = new QVBoxLayout;
  vbox->addWidget(splitter); // SearchFiWidget + SymbolTableView
  vbox->addWidget(widget);   // FI edit line
  vbox->setStretch(0, 1);

  widget = new QWidget;      // Complete Main Tab Widget
  widget->setLayout(vbox);

  setFocusWidget(mLookUp);

  return widget;
}