QgsAttributeActionDialog::QgsAttributeActionDialog( QgsAttributeAction* actions, const QgsFields& fields, QWidget* parent ): QWidget( parent ), mActions( actions ) { setupUi( this ); QHeaderView *header = attributeActionTable->horizontalHeader(); header->setHighlightSections( false ); header->setStretchLastSection( true ); attributeActionTable->setColumnWidth( 0, 100 ); attributeActionTable->setColumnWidth( 1, 230 ); attributeActionTable->setCornerButtonEnabled( false ); connect( attributeActionTable, SIGNAL( itemSelectionChanged() ), this, SLOT( itemSelectionChanged() ) ); connect( actionName, SIGNAL( textChanged( QString ) ), this, SLOT( updateButtons() ) ); connect( actionAction, SIGNAL( textChanged() ), this, SLOT( updateButtons() ) ); connect( moveUpButton, SIGNAL( clicked() ), this, SLOT( moveUp() ) ); connect( moveDownButton, SIGNAL( clicked() ), this, SLOT( moveDown() ) ); connect( removeButton, SIGNAL( clicked() ), this, SLOT( remove() ) ); connect( addDefaultActionsButton, SIGNAL( clicked() ), this, SLOT( addDefaultActions() ) ); connect( browseButton, SIGNAL( clicked() ), this, SLOT( browse() ) ); connect( insertButton, SIGNAL( clicked() ), this, SLOT( insert() ) ); connect( updateButton, SIGNAL( clicked() ), this, SLOT( update() ) ); connect( insertFieldButton, SIGNAL( clicked() ), this, SLOT( insertField() ) ); connect( insertExpressionButton, SIGNAL( clicked() ), this, SLOT( insertExpression() ) ); connect( chooseIconButton, SIGNAL( clicked() ), this, SLOT( chooseIcon() ) ); init(); // Populate the combo box with the field names. Will the field names // change? If so, they need to be passed into the init() call, or // some access to them retained in this class. for ( int idx = 0; idx < fields.count(); ++idx ) fieldComboBox->addItem( fields[idx].name() ); }
QgsVectorLayerProperties::QgsVectorLayerProperties( QgsVectorLayer *lyr, QWidget * parent, Qt::WindowFlags fl ) : QgsOptionsDialogBase( "VectorLayerProperties", parent, fl ) , layer( lyr ) , mMetadataFilled( false ) , mSaveAsMenu( 0 ) , mLoadStyleMenu( 0 ) , mRendererDialog( 0 ) , labelingDialog( 0 ) , labelDialog( 0 ) , actionDialog( 0 ) , diagramPropertiesDialog( 0 ) , mFieldsPropertiesDialog( 0 ) { setupUi( this ); // QgsOptionsDialogBase handles saving/restoring of geometry, splitter and current tab states, // switching vertical tabs between icon/text to icon-only modes (splitter collapsed to left), // and connecting QDialogButtonBox's accepted/rejected signals to dialog's accept/reject slots initOptionsBase( false ); QPushButton* b = new QPushButton( tr( "Style" ) ); QMenu* m = new QMenu( this ); mActionLoadStyle = m->addAction( tr( "Load Style..." ), this, SLOT( loadStyle_clicked() ) ); mActionSaveStyleAs = m->addAction( tr( "Save Style..." ), this, SLOT( saveStyleAs_clicked() ) ); m->addSeparator(); m->addAction( tr( "Save As Default" ), this, SLOT( saveDefaultStyle_clicked() ) ); m->addAction( tr( "Restore Default" ), this, SLOT( loadDefaultStyle_clicked() ) ); b->setMenu( m ); connect( m, SIGNAL( aboutToShow() ), this, SLOT( aboutToShowStyleMenu() ) ); buttonBox->addButton( b, QDialogButtonBox::ResetRole ); connect( lyr->styleManager(), SIGNAL( currentStyleChanged( QString ) ), this, SLOT( syncToLayer() ) ); connect( buttonBox->button( QDialogButtonBox::Apply ), SIGNAL( clicked() ), this, SLOT( apply() ) ); connect( this, SIGNAL( accepted() ), this, SLOT( apply() ) ); connect( this, SIGNAL( rejected() ), this, SLOT( onCancel() ) ); connect( mOptionsStackedWidget, SIGNAL( currentChanged( int ) ), this, SLOT( mOptionsStackedWidget_CurrentChanged( int ) ) ); connect( insertFieldButton, SIGNAL( clicked() ), this, SLOT( insertField() ) ); connect( insertExpressionButton, SIGNAL( clicked() ), this, SLOT( insertExpression() ) ); // connections for Map Tip display connect( htmlRadio, SIGNAL( toggled( bool ) ), htmlMapTip, SLOT( setEnabled( bool ) ) ); connect( htmlRadio, SIGNAL( toggled( bool ) ), insertFieldButton, SLOT( setEnabled( bool ) ) ); connect( htmlRadio, SIGNAL( toggled( bool ) ), fieldComboBox, SLOT( setEnabled( bool ) ) ); connect( htmlRadio, SIGNAL( toggled( bool ) ), insertExpressionButton, SLOT( setEnabled( bool ) ) ); connect( fieldComboRadio, SIGNAL( toggled( bool ) ), displayFieldComboBox, SLOT( setEnabled( bool ) ) ); if ( !layer ) return; QVBoxLayout *layout; if ( layer->hasGeometryType() ) { // Create the Labeling dialog tab layout = new QVBoxLayout( labelingFrame ); layout->setMargin( 0 ); labelingDialog = new QgsLabelingGui( layer, QgisApp::instance()->mapCanvas(), labelingFrame ); labelingDialog->layout()->setContentsMargins( -1, 0, -1, 0 ); layout->addWidget( labelingDialog ); labelingFrame->setLayout( layout ); // Create the Labeling (deprecated) dialog tab layout = new QVBoxLayout( labelOptionsFrame ); layout->setMargin( 0 ); labelDialog = new QgsLabelDialog( layer->label(), labelOptionsFrame ); labelDialog->layout()->setMargin( 0 ); layout->addWidget( labelDialog ); labelOptionsFrame->setLayout( layout ); connect( labelDialog, SIGNAL( labelSourceSet() ), this, SLOT( setLabelCheckBox() ) ); } else { labelingDialog = 0; labelDialog = 0; mOptsPage_Labels->setEnabled( false ); // disable labeling item mOptsPage_LabelsOld->setEnabled( false ); // disable labeling (deprecated) item } // Create the Actions dialog tab QVBoxLayout *actionLayout = new QVBoxLayout( actionOptionsFrame ); actionLayout->setMargin( 0 ); const QgsFields &fields = layer->pendingFields(); actionDialog = new QgsAttributeActionDialog( layer->actions(), fields, actionOptionsFrame ); actionDialog->layout()->setMargin( 0 ); actionLayout->addWidget( actionDialog ); // Create the menu for the save style button to choose the output format mSaveAsMenu = new QMenu( this ); mSaveAsMenu->addAction( tr( "QGIS Layer Style File" ) ); mSaveAsMenu->addAction( tr( "SLD File" ) ); //Only if the provider support loading & saving styles to db add new choices if ( layer->dataProvider()->isSaveAndLoadStyleToDBSupported() ) { //for loading mLoadStyleMenu = new QMenu(); mLoadStyleMenu->addAction( tr( "Load from file" ) ); mLoadStyleMenu->addAction( tr( "Load from database" ) ); //mActionLoadStyle->setContextMenuPolicy( Qt::PreventContextMenu ); mActionLoadStyle->setMenu( mLoadStyleMenu ); QObject::connect( mLoadStyleMenu, SIGNAL( triggered( QAction * ) ), this, SLOT( loadStyleMenuTriggered( QAction * ) ) ); //for saving mSaveAsMenu->addAction( tr( "Save in database (%1)" ).arg( layer->providerType() ) ); }
QgsVectorLayerProperties::QgsVectorLayerProperties( QgsVectorLayer *lyr, QWidget * parent, Qt::WFlags fl ) : QDialog( parent, fl ) , layer( lyr ) , mMetadataFilled( false ) , mRendererDialog( 0 ) { setupUi( this ); setupEditTypes(); connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) ); connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) ); connect( buttonBox->button( QDialogButtonBox::Apply ), SIGNAL( clicked() ), this, SLOT( apply() ) ); connect( this, SIGNAL( accepted() ), this, SLOT( apply() ) ); connect( mAddAttributeButton, SIGNAL( clicked() ), this, SLOT( addAttribute() ) ); connect( mDeleteAttributeButton, SIGNAL( clicked() ), this, SLOT( deleteAttribute() ) ); connect( mToggleEditingButton, SIGNAL( clicked() ), this, SLOT( toggleEditing() ) ); connect( this, SIGNAL( toggleEditing( QgsMapLayer* ) ), QgisApp::instance(), SLOT( toggleEditing( QgsMapLayer* ) ) ); connect( layer, SIGNAL( editingStarted() ), this, SLOT( editingToggled() ) ); connect( layer, SIGNAL( editingStopped() ), this, SLOT( editingToggled() ) ); connect( layer, SIGNAL( attributeAdded( int ) ), this, SLOT( attributeAdded( int ) ) ); connect( layer, SIGNAL( attributeDeleted( int ) ), this, SLOT( attributeDeleted( int ) ) ); connect( insertFieldButton, SIGNAL( clicked() ), this, SLOT( insertField() ) ); connect( insertExpressionButton, SIGNAL( clicked() ), this, SLOT( insertExpression() ) ); mAddAttributeButton->setIcon( QgsApplication::getThemeIcon( "/mActionNewAttribute.png" ) ); mDeleteAttributeButton->setIcon( QgsApplication::getThemeIcon( "/mActionDeleteAttribute.png" ) ); mToggleEditingButton->setIcon( QgsApplication::getThemeIcon( "/mActionToggleEditing.png" ) ); mCalculateFieldButton->setIcon( QgsApplication::getThemeIcon( "/mActionCalculateField.png" ) ); connect( btnUseNewSymbology, SIGNAL( clicked() ), this, SLOT( useNewSymbology() ) ); QVBoxLayout *layout; if ( layer->hasGeometryType() ) { // Create the Labeling dialog tab layout = new QVBoxLayout( labelingFrame ); layout->setMargin( 0 ); labelingDialog = new QgsLabelingGui( QgisApp::instance()->palLabeling(), layer, QgisApp::instance()->mapCanvas(), labelingFrame ); layout->addWidget( labelingDialog ); labelingFrame->setLayout( layout ); // Create the Labeling (deprecated) dialog tab layout = new QVBoxLayout( labelOptionsFrame ); layout->setMargin( 0 ); labelDialog = new QgsLabelDialog( layer->label(), labelOptionsFrame ); layout->addWidget( labelDialog ); labelOptionsFrame->setLayout( layout ); connect( labelDialog, SIGNAL( labelSourceSet() ), this, SLOT( setLabelCheckBox() ) ); } else { tabWidget->setTabEnabled( 1, false ); // hide labeling item tabWidget->setTabEnabled( 2, false ); // hide labeling (deprecated) item } // Create the Actions dialog tab QVBoxLayout *actionLayout = new QVBoxLayout( actionOptionsFrame ); actionLayout->setMargin( 0 ); const QgsFieldMap &fields = layer->pendingFields(); actionDialog = new QgsAttributeActionDialog( layer->actions(), fields, actionOptionsFrame ); actionLayout->addWidget( actionDialog ); // Create the menu for the save style button to choose the output format mSaveAsMenu = new QMenu( pbnSaveStyleAs ); mSaveAsMenu->addAction( tr( "QGIS Layer Style File" ) ); mSaveAsMenu->addAction( tr( "SLD File" ) ); QObject::connect( mSaveAsMenu, SIGNAL( triggered( QAction * ) ), this, SLOT( saveStyleAsMenuTriggered( QAction * ) ) ); reset(); if ( layer->dataProvider() )//enable spatial index button group if supported by provider { int capabilities = layer->dataProvider()->capabilities(); if ( !( capabilities&QgsVectorDataProvider::CreateSpatialIndex ) ) { pbnIndex->setEnabled( false ); } if ( capabilities & QgsVectorDataProvider::SetEncoding ) { cboProviderEncoding->addItems( QgsVectorDataProvider::availableEncodings() ); QString enc = layer->dataProvider()->encoding(); int encindex = cboProviderEncoding->findText( enc ); if ( encindex < 0 ) { cboProviderEncoding->insertItem( 0, enc ); encindex = 0; } cboProviderEncoding->setCurrentIndex( encindex ); } else { // currently only encoding can be set in this group, so hide it completely grpProviderOptions->hide(); } } updateButtons(); leSpatialRefSys->setText( layer->crs().authid() + " - " + layer->crs().description() ); leSpatialRefSys->setCursorPosition( 0 ); leEditForm->setText( layer->editForm() ); leEditFormInit->setText( layer->editFormInit() ); connect( sliderTransparency, SIGNAL( valueChanged( int ) ), this, SLOT( sliderTransparency_valueChanged( int ) ) ); //insert existing join info const QList< QgsVectorJoinInfo >& joins = layer->vectorJoins(); for ( int i = 0; i < joins.size(); ++i ) { addJoinToTreeWidget( joins[i] ); } diagramPropertiesDialog = new QgsDiagramProperties( layer, mDiagramFrame ); mDiagramFrame->setLayout( new QVBoxLayout( mDiagramFrame ) ); mDiagramFrame->layout()->addWidget( diagramPropertiesDialog ); //for each overlay plugin create a new tab int position; QList<QgsVectorOverlayPlugin*> overlayPluginList = overlayPlugins(); QList<QgsVectorOverlayPlugin*>::const_iterator it = overlayPluginList.constBegin(); for ( ; it != overlayPluginList.constEnd(); ++it ) { QgsApplyDialog* d = ( *it )->dialog( lyr ); position = tabWidget->insertTab( tabWidget->count(), qobject_cast<QDialog*>( d ), QgsApplication::getThemeIcon( "propertyicons/diagram.png" ), tr( "Overlay" ) ); tabWidget->setCurrentIndex( position ); //ugly, but otherwise the properties dialog is a mess mOverlayDialogs.push_back( d ); } //layer title and abstract if ( layer ) { mLayerTitleLineEdit->setText( layer->title() ); mLayerAbstractTextEdit->setPlainText( layer->abstract() ); } QSettings settings; restoreGeometry( settings.value( "/Windows/VectorLayerProperties/geometry" ).toByteArray() ); int tabIndex = settings.value( "/Windows/VectorLayerProperties/row", 0 ).toInt(); // if the last used tab is not enabled display the first enabled one if ( !tabWidget->isTabEnabled( tabIndex ) ) { tabIndex = 0; for ( int i = 0; i < tabWidget->count(); i++ ) { if ( tabWidget->isTabEnabled( i ) ) { tabIndex = i; break; } } } tabWidget->setCurrentIndex( tabIndex ); setWindowTitle( tr( "Layer Properties - %1" ).arg( layer->name() ) ); } // QgsVectorLayerProperties ctor
uint32_t transfer(char **arguments, assembler *instState,table_t *t){ int P_Bit; char *Rd = arguments[0]; char *address = arguments[1]; uint32_t rd = getConst(Rd); int addrlen = strlen(address); if(*address == '='){ //numeric constant; int val = getConst(address); if(val <= 0xFF){ //mov instruction; isMov = 1; char **inst = malloc(sizeof(char*)*3); for(int i=0; i<3; i++){ inst[i] = malloc(sizeof(char)*20); } strcpy(inst[0],"mov"); strcpy(inst[1],Rd); strcpy(inst[2],(address+1)); inst[2] = prepend(inst[2],'#'); return ass_data_process(inst,t); }else{ strip(arguments[1]); insertExpression(instState->BigVals,arguments[1],val,instState->counter); rd <<= 12; uint32_t val_mask = 0xE59F0000; return val_mask | rd; } } char **splitAddress = tokeniser(address,","); if(address[0] == '[' && address[4] != ']' && address[3] != ']'){ //PRE instruction; P_Bit = 1; char *pre_address = removeBrackets(address); char **expression = tokeniser(pre_address,"."); uint32_t rn = getConst(expression[0]); uint32_t transfer_mask1 = 0xE5900000; uint32_t incVal = getConst(expression[1]); uint32_t offset = incVal; //TODO: ONCE MOV is fixed replace this with the val generated by mov rn <<= 16; rd <<= 12; return transfer_mask1 | rn | rd | offset; }else if(addrlen <= 5){ //PRE instruction; P_Bit = 1; char *Rn = removeBrackets(splitAddress[0]); uint32_t rn = getConst(Rn); uint32_t transfer_mask2 = 0xE5900000; rn <<= 16; rd <<= 12; return transfer_mask2 | rn | rd; }else{ //Post instruction; P_Bit = 0; uint32_t transfer_mask3 = 0xE6900000; char **expression = tokeniser(address,"."); uint32_t rn = getConst(removeBrackets(expression[0])); uint32_t offset = getConst(expression[1]); rn <<= 16; rd <<= 12; return transfer_mask3 | rn | rd | offset; } }