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 ); }
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", ¤tVar,&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", ¤tVar,localIL); } free (key); } else { printf ("nt_var_def\n"); errorHandler (errSyn); } }
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; }
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); } }
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); } }
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; }