QgsHelpViewer::QgsHelpViewer( const QString &contextId, QWidget *parent, Qt::WFlags fl ) : QDialog( parent, fl ) { setupUi( this ); restorePosition(); loadContext( contextId ); }
QgsGrassTools::QgsGrassTools( QgisInterface *iface, QWidget * parent, const char * name, Qt::WindowFlags f ) : QDockWidget( parent, f ) , mModulesListModel( 0 ) , mModelProxy( 0 ) , mDirectModulesListModel( 0 ) , mDirectModelProxy( 0 ) { Q_UNUSED( name ); setupUi( this ); QgsDebugMsg( "QgsGrassTools()" ); qRegisterMetaType<QgsDetailedItemData>(); setWindowTitle( tr( "GRASS Tools" ) ); // setupUi(this); mIface = iface; mCanvas = mIface->mapCanvas(); //statusBar()->hide(); // set the dialog title QString title = tr( "GRASS Tools: %1/%2" ).arg( QgsGrass::getDefaultLocation() ).arg( QgsGrass::getDefaultMapset() ); setWindowTitle( title ); // Tree view code. mModulesTree->header()->hide(); connect( mModulesTree, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), this, SLOT( moduleClicked( QTreeWidgetItem *, int ) ) ); mDirectModulesTree->header()->hide(); connect( mDirectModulesTree, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), this, SLOT( directModuleClicked( QTreeWidgetItem *, int ) ) ); // List view with filter mModulesListModel = new QStandardItemModel( 0, 1 ); mModelProxy = new QSortFilterProxyModel( this ); mModelProxy->setSourceModel( mModulesListModel ); mModelProxy->setFilterRole( Qt::UserRole + 2 ); mListView->setModel( mModelProxy ); connect( mListView, SIGNAL( clicked( const QModelIndex ) ), this, SLOT( listItemClicked( const QModelIndex ) ) ); mDirectModulesListModel = new QStandardItemModel( 0, 1 ); mDirectModelProxy = new QSortFilterProxyModel( this ); mDirectModelProxy->setSourceModel( mDirectModulesListModel ); mDirectModelProxy->setFilterRole( Qt::UserRole + 2 ); mDirectListView->setModel( mDirectModelProxy ); connect( mDirectListView, SIGNAL( clicked( const QModelIndex ) ), this, SLOT( directListItemClicked( const QModelIndex ) ) ); connect( QgsGrass::instance(), SIGNAL( modulesConfigChanged() ), SLOT( loadConfig() ) ); // Show before loadConfig() so that user can see loading restorePosition(); showTabs(); }
QgsHelpViewer::QgsHelpViewer( QWidget *parent, Qt::WindowFlags fl ) : QDialog( parent, fl ) { setupUi( this ); restorePosition(); mThread = new QgsReaderThread(); mThread->start(); connect( mThread, SIGNAL( helpRead( QString ) ), this, SLOT( showHelp( QString ) ) ); }
QgsBookmarks::QgsBookmarks( QWidget *parent, Qt::WFlags fl ) : QDialog( parent, fl ), mParent( parent ) { setupUi( this ); restorePosition(); // user database is created at QGIS startup in QgisApp::createDB // we just check whether there is our database [MD] QFileInfo myFileInfo; myFileInfo.setFile( QgsApplication::qgisSettingsDirPath() ); if ( !myFileInfo.exists( ) ) { QgsDebugMsg( "The qgis.db does not exist" ); } // Note proper queens english on next line initialise(); // // Create the zoomto and delete buttons and add them to the // toolbar // QPushButton * btnUpdate = new QPushButton( tr( "&Update" ) ); QPushButton * btnDelete = new QPushButton( tr( "&Delete" ) ); QPushButton * btnZoomTo = new QPushButton( tr( "&Zoom to" ) ); btnZoomTo->setDefault( true ); buttonBox->addButton( btnUpdate, QDialogButtonBox::ActionRole ); buttonBox->addButton( btnDelete, QDialogButtonBox::ActionRole ); buttonBox->addButton( btnZoomTo, QDialogButtonBox::ActionRole ); // connect the slot up to catch when a bookmark is updated connect( btnUpdate, SIGNAL( clicked() ), this, SLOT( on_btnUpdate_clicked() ) ); // connect the slot up to catch when a bookmark is deleted connect( btnDelete, SIGNAL( clicked() ), this, SLOT( on_btnDelete_clicked() ) ); // connect the slot up to catch when a bookmark is zoomed to connect( btnZoomTo, SIGNAL( clicked() ), this, SLOT( on_btnZoomTo_clicked() ) ); // connect the slot up to catch when a new bookmark is added connect( mParent, SIGNAL( bookmarkAdded() ), this, SLOT( refreshBookmarks() ) ); }
QgsBookmarks::QgsBookmarks( QWidget *parent ) : QgsDockWidget( parent ) , mQgisModel( nullptr ) , mProjectModel( nullptr ) { setupUi( this ); restorePosition(); bookmarksDockContents->layout()->setMargin( 0 ); bookmarksDockContents->layout()->setContentsMargins( 0, 0, 0, 0 ); static_cast< QGridLayout* >( bookmarksDockContents->layout() )->setVerticalSpacing( 0 ); QToolButton* btnImpExp = new QToolButton; btnImpExp->setAutoRaise( true ); btnImpExp->setToolTip( tr( "Import/Export Bookmarks" ) ); btnImpExp->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionSharing.svg" ) ) ); btnImpExp->setPopupMode( QToolButton::InstantPopup ); QMenu *share = new QMenu( this ); QAction *btnExport = share->addAction( tr( "&Export" ) ); QAction *btnImport = share->addAction( tr( "&Import" ) ); btnExport->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionSharingExport.svg" ) ) ); btnImport->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionSharingImport.svg" ) ) ); connect( btnExport, SIGNAL( triggered() ), this, SLOT( exportToXml() ) ); connect( btnImport, SIGNAL( triggered() ), this, SLOT( importFromXml() ) ); btnImpExp->setMenu( share ); connect( actionAdd, SIGNAL( triggered() ), this, SLOT( addClicked() ) ); connect( actionDelete, SIGNAL( triggered() ), this, SLOT( deleteClicked() ) ); connect( actionZoomTo, SIGNAL( triggered() ), this, SLOT( zoomToBookmark() ) ); mBookmarkToolbar->addWidget( btnImpExp ); // open the database QSqlDatabase db = QSqlDatabase::addDatabase( QStringLiteral( "QSQLITE" ), QStringLiteral( "bookmarks" ) ); db.setDatabaseName( QgsApplication::qgisUserDbFilePath() ); if ( !db.open() ) { QMessageBox::warning( this, tr( "Error" ), tr( "Unable to open bookmarks database.\nDatabase: %1\nDriver: %2\nDatabase: %3" ) .arg( QgsApplication::qgisUserDbFilePath(), db.lastError().driverText(), db.lastError().databaseText() ) ); deleteLater(); return; } mQgisModel = new QSqlTableModel( this, db ); mQgisModel->setTable( QStringLiteral( "tbl_bookmarks" ) ); mQgisModel->setSort( 0, Qt::AscendingOrder ); mQgisModel->select(); mQgisModel->setEditStrategy( QSqlTableModel::OnFieldChange ); // set better headers then column names from table mQgisModel->setHeaderData( 0, Qt::Horizontal, tr( "ID" ) ); mQgisModel->setHeaderData( 1, Qt::Horizontal, tr( "Name" ) ); mQgisModel->setHeaderData( 2, Qt::Horizontal, tr( "Project" ) ); mQgisModel->setHeaderData( 3, Qt::Horizontal, tr( "xMin" ) ); mQgisModel->setHeaderData( 4, Qt::Horizontal, tr( "yMin" ) ); mQgisModel->setHeaderData( 5, Qt::Horizontal, tr( "xMax" ) ); mQgisModel->setHeaderData( 6, Qt::Horizontal, tr( "yMax" ) ); mQgisModel->setHeaderData( 7, Qt::Horizontal, tr( "SRID" ) ); mProjectModel = new QgsProjectBookmarksTableModel(); mModel.reset( new QgsMergedBookmarksTableModel( *mQgisModel, *mProjectModel, lstBookmarks ) ); lstBookmarks->setModel( mModel.data() ); QSettings settings; lstBookmarks->header()->restoreState( settings.value( QStringLiteral( "/Windows/Bookmarks/headerstate" ) ).toByteArray() ); #ifndef QGISDEBUG lstBookmarks->setColumnHidden( 0, true ); #endif }
void QgsGrassEdit::init() { if ( !( mProvider->isGrassEditable() ) ) { QMessageBox::warning( 0, tr( "Warning" ), tr( "You are not owner of the mapset, cannot open the vector for editing." ) ); return; } if ( !( mProvider->startEdit() ) ) { QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot open vector for update." ) ); return; } mRubberBandLine = new QgsRubberBand( mCanvas ); mRubberBandIcon = new QgsVertexMarker( mCanvas ); mRubberBandLine->setZValue( 20 ); mRubberBandIcon->setZValue( 20 ); connect( mCanvas, SIGNAL( keyPressed( QKeyEvent * ) ), this, SLOT( keyPress( QKeyEvent * ) ) ); mToolBar = addToolBar( tr( "Edit tools" ) ); mNewPointAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_new_point.png" ), tr( "New point" ), this ); mNewPointAction->setShortcut( QKeySequence( Qt::Key_F1 ) ); mToolBar->addAction( mNewPointAction ); connect( mNewPointAction, SIGNAL( triggered() ), this, SLOT( newPoint() ) ); mNewLineAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_new_line.png" ), tr( "New line" ), this ); mNewLineAction->setShortcut( QKeySequence( Qt::Key_F2 ) ); mToolBar->addAction( mNewLineAction ); connect( mNewLineAction, SIGNAL( triggered() ), this, SLOT( newLine() ) ); mNewBoundaryAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_new_boundary.png" ), tr( "New boundary" ), this ); mNewBoundaryAction->setShortcut( QKeySequence( Qt::Key_F3 ) ); mToolBar->addAction( mNewBoundaryAction ); connect( mNewBoundaryAction, SIGNAL( triggered() ), this, SLOT( newBoundary() ) ); mNewCentroidAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_new_centroid.png" ), tr( "New centroid" ), this ); mNewCentroidAction->setShortcut( QKeySequence( Qt::Key_F4 ) ); mToolBar->addAction( mNewCentroidAction ); connect( mNewCentroidAction, SIGNAL( triggered() ), this, SLOT( newCentroid() ) ); mMoveVertexAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_move_vertex.png" ), tr( "Move vertex" ), this ); mMoveVertexAction->setShortcut( QKeySequence( Qt::Key_F5 ) ); mToolBar->addAction( mMoveVertexAction ); connect( mMoveVertexAction, SIGNAL( triggered() ), this, SLOT( moveVertex() ) ); mAddVertexAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_add_vertex.png" ), tr( "Add vertex" ), this ); mAddVertexAction->setShortcut( QKeySequence( Qt::Key_F6 ) ); mToolBar->addAction( mAddVertexAction ); connect( mAddVertexAction, SIGNAL( triggered() ), this, SLOT( addVertex() ) ); mDeleteVertexAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_delete_vertex.png" ), tr( "Delete vertex" ), this ); mDeleteVertexAction->setShortcut( QKeySequence( Qt::Key_F7 ) ); mToolBar->addAction( mDeleteVertexAction ); connect( mDeleteVertexAction, SIGNAL( triggered() ), this, SLOT( deleteVertex() ) ); mMoveLineAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_move_line.png" ), tr( "Move element" ), this ); mMoveLineAction->setShortcut( QKeySequence( Qt::Key_F9 ) ); mToolBar->addAction( mMoveLineAction ); connect( mMoveLineAction, SIGNAL( triggered() ), this, SLOT( moveLine() ) ); mSplitLineAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_split_line.png" ), tr( "Split line" ), this ); mSplitLineAction->setShortcut( QKeySequence( Qt::Key_F10 ) ); mToolBar->addAction( mSplitLineAction ); connect( mSplitLineAction, SIGNAL( triggered() ), this, SLOT( splitLine() ) ); mDeleteLineAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_delete_line.png" ), tr( "Delete element" ), this ); mDeleteLineAction->setShortcut( QKeySequence( Qt::Key_F11 ) ); mToolBar->addAction( mDeleteLineAction ); connect( mDeleteLineAction, SIGNAL( triggered() ), this, SLOT( deleteLine() ) ); mEditAttributesAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_edit_attributes.png" ), tr( "Edit attributes" ), this ); mToolBar->addAction( mEditAttributesAction ); connect( mEditAttributesAction, SIGNAL( triggered() ), this, SLOT( editAttributes() ) ); mCloseEditAction = new QAction( QgsGrassPlugin::getThemeIcon( "grass_close_edit.png" ), tr( "Close" ), this ); mToolBar->addAction( mCloseEditAction ); connect( mCloseEditAction, SIGNAL( triggered() ), this, SLOT( closeEdit() ) ); mNewPointAction->setCheckable( true ); mNewLineAction->setCheckable( true ); mNewBoundaryAction->setCheckable( true ); mNewCentroidAction->setCheckable( true ); mMoveVertexAction->setCheckable( true ); mAddVertexAction->setCheckable( true ); mDeleteVertexAction->setCheckable( true ); mMoveLineAction->setCheckable( true ); mSplitLineAction->setCheckable( true ); mDeleteLineAction->setCheckable( true ); mEditAttributesAction->setCheckable( true ); QActionGroup *ag = new QActionGroup( this ); ag->addAction( mNewPointAction ); ag->addAction( mNewLineAction ); ag->addAction( mNewBoundaryAction ); ag->addAction( mNewCentroidAction ); ag->addAction( mMoveVertexAction ); ag->addAction( mAddVertexAction ); ag->addAction( mDeleteVertexAction ); ag->addAction( mMoveLineAction ); ag->addAction( mSplitLineAction ); ag->addAction( mDeleteLineAction ); ag->addAction( mEditAttributesAction ); mEditPoints = Vect_new_line_struct(); mPoints = Vect_new_line_struct(); mCats = Vect_new_cats_struct(); // Set lines symbology from map int nlines = mProvider->numLines(); mLineSymb.resize( nlines + 1000 ); for ( int line = 1; line <= nlines; line++ ) { mLineSymb[line] = lineSymbFromMap( line ); } // Set nodes symbology from map int nnodes = mProvider->numNodes(); mNodeSymb.resize( nnodes + 1000 ); for ( int node = 1; node <= nnodes; node++ ) { mNodeSymb[node] = nodeSymbFromMap( node ); } // Set default colors mSymb.resize( SYMB_COUNT ); mSymb[SYMB_BACKGROUND].setColor( QColor( 255, 255, 255 ) ); // white mSymb[SYMB_HIGHLIGHT].setColor( QColor( 255, 255, 0 ) ); // yellow mSymb[SYMB_DYNAMIC].setColor( QColor( 125, 125, 125 ) ); // grey mSymb[SYMB_POINT].setColor( QColor( 0, 0, 0 ) ); // black mSymb[SYMB_LINE].setColor( QColor( 0, 0, 0 ) ); // black mSymb[SYMB_BOUNDARY_0].setColor( QColor( 255, 0, 0 ) ); // red mSymb[SYMB_BOUNDARY_1].setColor( QColor( 255, 125, 0 ) ); // orange mSymb[SYMB_BOUNDARY_2].setColor( QColor( 0, 255, 0 ) ); // green mSymb[SYMB_CENTROID_IN].setColor( QColor( 0, 255, 0 ) ); // green mSymb[SYMB_CENTROID_OUT].setColor( QColor( 255, 0, 0 ) ); // red mSymb[SYMB_CENTROID_DUPL].setColor( QColor( 255, 0, 255 ) ); // magenta mSymb[SYMB_NODE_1].setColor( QColor( 255, 0, 0 ) ); // red mSymb[SYMB_NODE_2].setColor( QColor( 0, 255, 0 ) ); // green // Set mSymbDisplay mSymbDisplay.resize( SYMB_COUNT ); mSymbDisplay[SYMB_BACKGROUND] = true; mSymbDisplay[SYMB_HIGHLIGHT] = true; mSymbDisplay[SYMB_DYNAMIC] = true; mSymbDisplay[SYMB_POINT] = true; mSymbDisplay[SYMB_LINE] = true; mSymbDisplay[SYMB_BOUNDARY_0] = true; mSymbDisplay[SYMB_BOUNDARY_1] = true; mSymbDisplay[SYMB_BOUNDARY_2] = true; mSymbDisplay[SYMB_CENTROID_IN] = true; mSymbDisplay[SYMB_CENTROID_OUT] = true; mSymbDisplay[SYMB_CENTROID_DUPL] = true; mSymbDisplay[SYMB_NODE_1] = true; mSymbDisplay[SYMB_NODE_2] = true; // Set symbology names mSymbName.resize( SYMB_COUNT ); mSymbName[SYMB_BACKGROUND] = tr( "Background" ); mSymbName[SYMB_HIGHLIGHT] = tr( "Highlight" ); mSymbName[SYMB_DYNAMIC] = tr( "Dynamic" ); mSymbName[SYMB_POINT] = tr( "Point" ); mSymbName[SYMB_LINE] = tr( "Line" ); mSymbName[SYMB_BOUNDARY_0] = tr( "Boundary (no area)" ); mSymbName[SYMB_BOUNDARY_1] = tr( "Boundary (1 area)" ); mSymbName[SYMB_BOUNDARY_2] = tr( "Boundary (2 areas)" ); mSymbName[SYMB_CENTROID_IN] = tr( "Centroid (in area)" ); mSymbName[SYMB_CENTROID_OUT] = tr( "Centroid (outside area)" ); mSymbName[SYMB_CENTROID_DUPL] = tr( "Centroid (duplicate in area)" ); mSymbName[SYMB_NODE_1] = tr( "Node (1 line)" ); mSymbName[SYMB_NODE_2] = tr( "Node (2 lines)" ); // Restore symbology QString spath = "/GRASS/edit/symb/"; QSettings settings; mLineWidth = settings.value( spath + "lineWidth", 1 ).toInt(); mSize = settings.value( spath + "markerSize", 9 ).toInt(); mLineWidthSpinBox->setValue( mLineWidth ); mMarkerSizeSpinBox->setValue( mSize ); for ( int i = 0; i < SYMB_COUNT; i++ ) { bool ok = settings.contains( spath + "display/" + QString::number( i ) ); bool displ = settings.value( spath + "display/" + QString::number( i ), true ).toBool(); if ( ok ) { mSymbDisplay[i] = displ; } ok = settings.contains( spath + "color/" + QString::number( i ) ); QString colorName = settings.value( spath + "color/" + QString::number( i ), "" ).toString(); if ( ok ) { QColor color( colorName ); mSymb[i].setColor( color ); // Use the 'dynamic' color for mRubberBand if ( i == SYMB_DYNAMIC ) { mRubberBandLine->setColor( QColor( colorName ) ); } } mSymb[i].setWidth( mLineWidth ); } // Set Symbology in dialog symbologyList->setColumnWidth( 0, 40 ); symbologyList->setColumnWidth( 1, 50 ); symbologyList->setColumnWidth( 2, 200 ); for ( int i = 0; i < SYMB_COUNT; i++ ) { if ( i == SYMB_NODE_0 ) continue; QPixmap pm( 40, 15 ); pm.fill( mSymb[i].color() ); QString index; index.sprintf( "%d", i ); QTreeWidgetItem *item = new QTreeWidgetItem( symbologyList ); if ( !( i == SYMB_BACKGROUND || i == SYMB_HIGHLIGHT || i == SYMB_DYNAMIC ) ) { item->setCheckState( 0, mSymbDisplay[i] ? Qt::Checked : Qt::Unchecked ); } item->setIcon( 1, pm ); item->setText( 2, mSymbName[i] ); item->setText( 3, index ); } connect( symbologyList, SIGNAL( itemPressed( QTreeWidgetItem *, int ) ), this, SLOT( changeSymbology( QTreeWidgetItem *, int ) ) ); // Init table tab mAttributeTable->setItemDelegate( new QgsGrassEditAttributeTableItemDelegate( this ) ); mAttributeTable->verticalHeader()->hide(); int ndblinks = mProvider->numDbLinks(); if ( ndblinks > 0 ) { for ( int i = 0; i < ndblinks; i++ ) { int f = mProvider->dbLinkField( i ); QString str; str.sprintf( "%d", f ); mTableField->addItem( str ); mFieldBox->addItem( str ); if ( i == 0 ) { setAttributeTable( f ); } } mTableField->setCurrentIndex( 0 ); mFieldBox->setCurrentIndex( 0 ); } else { mTableField->addItem( "1" ); setAttributeTable( 1 ); mFieldBox->addItem( "1" ); } connect( mAttributeTable, SIGNAL( cellChanged( int, int ) ), this, SLOT( columnTypeChanged( int, int ) ) ); // Set variables mSelectedLine = 0; mAttributes = 0; // Read max cats for ( int i = 0; i < mProvider->cidxGetNumFields(); i++ ) { int field = mProvider->cidxGetFieldNumber( i ); if ( field > 0 ) { int cat = mProvider->cidxGetMaxCat( i ); MaxCat mc; mc.field = field; mc.maxCat = cat; mMaxCats.push_back( mc ); } } connect( mCanvas, SIGNAL( renderComplete( QPainter * ) ), this, SLOT( postRender( QPainter * ) ) ); mCanvasEdit = new QgsGrassEditLayer( mCanvas ); mPixmap = &mCanvasEdit->pixmap(); // Init GUI values mCatModeBox->addItem( tr( "Next not used" ), CAT_MODE_NEXT ); mCatModeBox->addItem( tr( "Manual entry" ), CAT_MODE_MANUAL ); mCatModeBox->addItem( tr( "No category" ), CAT_MODE_NOCAT ); catModeChanged( ); // TODO: how to get keyboard events from canvas (shortcuts) restorePosition(); mValid = true; mInited = true; }
QgsGrassRegion::QgsGrassRegion( QgsGrassPlugin *plugin, QgisInterface *iface, QWidget * parent, Qt::WFlags f ) : QDialog( parent, f ), QgsGrassRegionBase( ) { QgsDebugMsg( "QgsGrassRegion()" ); setupUi( this ); setAttribute( Qt::WA_DeleteOnClose ); connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) ); connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) ); mPlugin = plugin; mInterface = iface; mCanvas = mInterface->mapCanvas(); restorePosition(); mUpdatingGui = false; // Set input validators QDoubleValidator *dv = new QDoubleValidator( 0 ); QIntValidator *iv = new QIntValidator( 0 ); mNorth->setValidator( dv ); mSouth->setValidator( dv ); mEast->setValidator( dv ); mWest->setValidator( dv ); mNSRes->setValidator( dv ); mEWRes->setValidator( dv ); mRows->setValidator( iv ); mCols->setValidator( iv ); // Group radio buttons mRadioGroup = new QButtonGroup(); mRadioGroup->addButton( mCellResRadio ); mRadioGroup->addButton( mRowsColsRadio ); mCellResRadio->setChecked( true ); radioChanged(); connect( mRadioGroup, SIGNAL( buttonClicked( int ) ), this, SLOT( radioChanged() ) ); // Set values to current region QString gisdbase = QgsGrass::getDefaultGisdbase(); QString location = QgsGrass::getDefaultLocation(); QString mapset = QgsGrass::getDefaultMapset(); if ( gisdbase.isEmpty() || location.isEmpty() || mapset.isEmpty() ) { QMessageBox::warning( 0, tr( "Warning" ), tr( "GISDBASE, LOCATION_NAME or MAPSET is not set, cannot display current region." ) ); } QgsGrass::setLocation( gisdbase, location ); char *err = G__get_window( &mWindow, ( char * ) "", ( char * ) "WIND", mapset.toLatin1().data() ); if ( err ) { QMessageBox::warning( 0, tr( "Warning" ), tr( "Cannot read current region: %1" ).arg( QString::fromUtf8( err ) ) ); return; } mRegionEdit = new QgsGrassRegionEdit( mCanvas ); connect( mRegionEdit, SIGNAL( captureStarted() ), this, SLOT( hide() ) ); connect( mRegionEdit, SIGNAL( captureEnded() ), this, SLOT( onCaptureFinished() ) ); mCanvas->setMapTool( mRegionEdit ); refreshGui(); connect( mCanvas, SIGNAL( renderComplete( QPainter * ) ), this, SLOT( postRender( QPainter * ) ) ); // Connect entries connect( mNorth, SIGNAL( editingFinished() ), this, SLOT( northChanged() ) ); connect( mSouth, SIGNAL( editingFinished() ), this, SLOT( southChanged() ) ); connect( mEast, SIGNAL( editingFinished() ), this, SLOT( eastChanged() ) ); connect( mWest, SIGNAL( editingFinished() ), this, SLOT( westChanged() ) ); connect( mNSRes, SIGNAL( editingFinished() ), this, SLOT( NSResChanged() ) ); connect( mEWRes, SIGNAL( editingFinished() ), this, SLOT( EWResChanged() ) ); connect( mRows, SIGNAL( editingFinished() ), this, SLOT( rowsChanged() ) ); connect( mCols, SIGNAL( editingFinished() ), this, SLOT( colsChanged() ) ); // Symbology QPen pen = mPlugin->regionPen(); mColorButton->setColor( pen.color() ); connect( mColorButton, SIGNAL( clicked() ), this, SLOT( changeColor() ) ); mWidthSpinBox->setValue( pen.width() ); connect( mWidthSpinBox, SIGNAL( valueChanged( int ) ), this, SLOT( changeWidth() ) ); }
QgsGrassTools::QgsGrassTools( QgisInterface *iface, QWidget * parent, const char * name, Qt::WFlags f ) : QDialog( parent, f ), QgsGrassToolsBase() { setupUi( this ); QgsDebugMsg( "QgsGrassTools()" ); qRegisterMetaType<QgsDetailedItemData>(); setWindowTitle( tr( "GRASS Tools" ) ); // setupUi(this); mIface = iface; mCanvas = mIface->mapCanvas(); connect( qApp, SIGNAL( aboutToQuit() ), this, SLOT( closeTools() ) ); // // Radims original tree view code. // mModulesTree->header()->hide(); connect( mModulesTree, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), this, SLOT( moduleClicked( QTreeWidgetItem *, int ) ) ); // // Tims experimental list view with filter // mModelTools = new QStandardItemModel( 0, 1 ); mModelProxy = new QSortFilterProxyModel( this ); mModelProxy->setSourceModel( mModelTools ); mModelProxy->setFilterRole( Qt::UserRole + 2 ); mListView->setModel( mModelProxy ); mListView->setItemDelegateForColumn( 0, new QgsDetailedItemDelegate() ); mListView->setUniformItemSizes( false ); //mListView2 = new QListView(this); //mDockWidget = new QDockWidget(tr("Grass Tools"), 0); //mDockWidget->setWidget(mListView2); //mDockWidget->setObjectName("GrassTools"); //mDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); //mIface->addDockWidget(Qt::LeftDockWidgetArea, mDockWidget); connect( mListView, SIGNAL( clicked( const QModelIndex ) ), this, SLOT( listItemClicked( const QModelIndex ) ) ); // // End of Tims experimental bit // // // Load the modules lists // // Show before loadConfig() so that user can see loading QString conf = QgsApplication::pkgDataPath() + "/grass/config/default.qgc"; restorePosition(); QApplication::setOverrideCursor( Qt::WaitCursor ); loadConfig( conf ); QApplication::restoreOverrideCursor(); //statusBar()->hide(); // set the dialog title QString title = tr( "GRASS Tools: " ) + QgsGrass::getDefaultLocation() + "/" + QgsGrass::getDefaultMapset(); setWindowTitle( title ); // Add map browser mBrowser = new QgsGrassBrowser( mIface, this ); mTabWidget->addTab( mBrowser, tr( "Browser" ) ); connect( mBrowser, SIGNAL( regionChanged() ), this, SLOT( emitRegionChanged() ) ); }
QgsBookmarks::QgsBookmarks( QWidget *parent, Qt::WindowFlags fl ) : QDialog( parent, fl ) { setupUi( this ); restorePosition(); // // Create the zoomto and delete buttons and add them to the // toolbar // QPushButton *btnAdd = new QPushButton( tr( "&Add" ) ); QPushButton *btnDelete = new QPushButton( tr( "&Delete" ) ); QPushButton *btnZoomTo = new QPushButton( tr( "&Zoom to" ) ); QPushButton *btnImpExp = new QPushButton( tr( "&Share" ) ); btnZoomTo->setDefault( true ); buttonBox->addButton( btnAdd, QDialogButtonBox::ActionRole ); buttonBox->addButton( btnDelete, QDialogButtonBox::ActionRole ); buttonBox->addButton( btnZoomTo, QDialogButtonBox::ActionRole ); buttonBox->addButton( btnImpExp, QDialogButtonBox::ActionRole ); QMenu *share = new QMenu(); QAction *btnExport = share->addAction( tr( "&Export" ) ); QAction *btnImport = share->addAction( tr( "&Import" ) ); connect( btnExport, SIGNAL( triggered() ), this, SLOT( exportToXML() ) ); connect( btnImport, SIGNAL( triggered() ), this, SLOT( importFromXML() ) ); btnImpExp->setMenu( share ); connect( btnAdd, SIGNAL( clicked() ), this, SLOT( addClicked() ) ); connect( btnDelete, SIGNAL( clicked() ), this, SLOT( deleteClicked() ) ); connect( btnZoomTo, SIGNAL( clicked() ), this, SLOT( zoomToBookmark() ) ); // open the database QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE", "bookmarks" ); db.setDatabaseName( QgsApplication::qgisUserDbFilePath() ); if ( !db.open() ) { QMessageBox::warning( this, tr( "Error" ), tr( "Unable to open bookmarks database.\nDatabase: %1\nDriver: %2\nDatabase: %3" ) .arg( QgsApplication::qgisUserDbFilePath() ) .arg( db.lastError().driverText() ) .arg( db.lastError().databaseText() ) ); deleteLater(); return; } QSqlTableModel *model = new QSqlTableModel( this, db ); model->setTable( "tbl_bookmarks" ); model->setSort( 0, Qt::AscendingOrder ); model->setEditStrategy( QSqlTableModel::OnFieldChange ); model->select(); // set better headers then column names from table model->setHeaderData( 0, Qt::Horizontal, tr( "ID" ) ); model->setHeaderData( 1, Qt::Horizontal, tr( "Name" ) ); model->setHeaderData( 2, Qt::Horizontal, tr( "Project" ) ); model->setHeaderData( 3, Qt::Horizontal, tr( "xMin" ) ); model->setHeaderData( 4, Qt::Horizontal, tr( "yMin" ) ); model->setHeaderData( 5, Qt::Horizontal, tr( "xMax" ) ); model->setHeaderData( 6, Qt::Horizontal, tr( "yMax" ) ); model->setHeaderData( 7, Qt::Horizontal, tr( "SRID" ) ); lstBookmarks->setModel( model ); QSettings settings; lstBookmarks->header()->restoreState( settings.value( "/Windows/Bookmarks/headerstate" ).toByteArray() ); #ifndef QGISDEBUG lstBookmarks->setColumnHidden( 0, true ); #endif }