Index: /usr/local/src/qgis_ossim_pan/python/gui/qgstabwidget.sip =================================================================== --- /usr/local/src/qgis_ossim_pan/python/gui/qgstabwidget.sip (revision 0) +++ /usr/local/src/qgis_ossim_pan/python/gui/qgstabwidget.sip (revision 0) @@ -0,0 +1,24 @@ +/** \class QgsMapCanvasLayer + * Class provides a stack of tabbed widgets +*/ +%ModuleHeaderCode +#include +#include +#include +%End + +class QgsTabWidget: QTabWidget +{ +%TypeHeaderCode +#include +%End + +public: + QgsTabWidget(QWidget *parent); + void addTab(QWidget *widget, const QIcon &icon, const QString &label); + void addTab(QWidget *widget, const QString &label); + void insertTab(int index, QWidget *widget, const QIcon &icon, const QString &label); + void insertTab(int index, QWidget *widget, const QString &label); + void removeTab(int index); +}; + Index: /usr/local/src/qgis_ossim_pan/python/gui/qgisinterface.sip =================================================================== --- /usr/local/src/qgis_ossim_pan/python/gui/qgisinterface.sip (revision 10648) +++ /usr/local/src/qgis_ossim_pan/python/gui/qgisinterface.sip (working copy) @@ -72,6 +72,9 @@ /** Return a pointer to the map canvas */ virtual QgsMapCanvas * mapCanvas()=0; + /** Return a pointer to the main tab widget */ + virtual QgsTabWidget * tabWidget() = 0; + /** Return a pointer to the main window (instance of QgisApp in case of QGIS) */ virtual QWidget * mainWindow()=0; @@ -92,6 +95,21 @@ /** Remove specified dock widget from main window (doesn't delete it). Added in QGIS 1.1. */ virtual void removeDockWidget ( QDockWidget * dockwidget )=0; + /** Add a tab widget to the main window */ + virtual void addTabWidget( QWidget *page, const QString &label )=0; + + /** Add a tab widget to the main window with icon */ + virtual void addTabWidget( QWidget *page, const QIcon &icon, const QString &label )=0; + + /** Insert a tab widget to the main window with label */ + virtual void insertTabWidget( int index, QWidget *page, const QString &label )=0; + + /** Insert a tab widget to the main window with icon and label */ + virtual void insertTabWidget( int index, QWidget *page, const QIcon &icon, const QString &label )=0; + + /** Remove specified tab widget from main window (doesn't delete it) */ + virtual void removeTabWidget( int index )=0; + /** refresh legend of a layer */ virtual void refreshLegend( QgsMapLayer * layer )=0; Index: /usr/local/src/qgis_ossim_pan/python/gui/gui.sip =================================================================== --- /usr/local/src/qgis_ossim_pan/python/gui/gui.sip (revision 10648) +++ /usr/local/src/qgis_ossim_pan/python/gui/gui.sip (working copy) @@ -25,5 +25,6 @@ %Include qgsprojectionselector.sip %Include qgsquickprint.sip %Include qgsrubberband.sip +%Include qgstabwidget.sip %Include qgsvertexmarker.sip Index: /usr/local/src/qgis_ossim_pan/src/app/qgisappinterface.h =================================================================== --- /usr/local/src/qgis_ossim_pan/src/app/qgisappinterface.h (revision 10648) +++ /usr/local/src/qgis_ossim_pan/src/app/qgisappinterface.h (working copy) @@ -87,6 +87,9 @@ /** Return a pointer to the map canvas used by qgisapp */ QgsMapCanvas * mapCanvas(); + /** Return a pointer to the main tab widget that containing map canvas */ + QgsTabWidget * tabWidget(); + /** Gives access to main QgisApp object Plugins don't need to know about QgisApp, as we pass it as QWidget, @@ -107,6 +110,21 @@ /** Remove specified dock widget from main window (doesn't delete it). Added in QGIS 1.1. */ void removeDockWidget( QDockWidget * dockwidget ); + /** Add a tab widget to the main window */ + void addTabWidget( QWidget *page, const QString &label ); + + /** Add a tab widget to the main window with icon */ + void addTabWidget( QWidget *page, const QIcon &icon, const QString &label ); + + /** Insert a tab widget to the main window with label */ + void insertTabWidget( int index, QWidget *page, const QString &label ); + + /** Insert a tab widget to the main window with icon and label */ + void insertTabWidget( int index, QWidget *page, const QIcon &icon, const QString &label ); + + /** Remove specified tab widget from main window (doesn't delete it). */ + void removeTabWidget( int index ); + virtual void refreshLegend( QgsMapLayer *l ); /** Add window to Window menu. The action title is the window title Index: /usr/local/src/qgis_ossim_pan/src/app/qgisapp.h =================================================================== --- /usr/local/src/qgis_ossim_pan/src/app/qgisapp.h (revision 10648) +++ /usr/local/src/qgis_ossim_pan/src/app/qgisapp.h (working copy) @@ -54,6 +54,7 @@ class QgsRasterLayer; class QgsRectangle; class QgsVectorLayer; +class QgsTabWidget; #include #include @@ -137,8 +138,11 @@ //!Overloaded version of the private function with same name that takes the imagename as a parameter void saveMapAsImage( QString, QPixmap * ); /** Get the mapcanvas object from the app */ - QgsMapCanvas * mapCanvas() { return mMapCanvas; }; + QgsMapCanvas * mapCanvas() { return mMapCanvas; } + /** Get the tabwidget object from the app */ + QgsTabWidget *tabWidget() { return mTabWidget; } + QgsComposer* printComposer() {return mComposer;} //! Set theme (icons) @@ -180,6 +184,22 @@ * After adding the dock widget to the ui (by delegating to the QMainWindow * parent class, it will also add it to the View menu list of docks.*/ void addDockWidget( Qt::DockWidgetArea area, QDockWidget * dockwidget ); + + /** Add a tab widget to the main window with label */ + void addTabWidget( QWidget *page, const QString &label ); + + /** Add a tab widget to the main window with icon and label */ + void addTabWidget( QWidget *page, const QIcon &icon, const QString &label ); + + /** Insert a tab widget to the main window with label */ + void insertTabWidget( int index, QWidget *page, const QString &label ); + + /** Insert a tab widget to the main window with icon and label */ + void insertTabWidget( int index, QWidget *page, const QIcon &icon, const QString &label ); + + /** Remove specified dock widget from main window (doesn't delete it). Added in QGIS 1.1. */ + void removeTabWidget( int index ); + /** Add a toolbar to the main window. Overloaded from QMainWindow. * After adding the toolbar to the ui (by delegating to the QMainWindow * parent class, it will also add it to the View menu list of toolbars.*/ @@ -850,6 +870,8 @@ QMenu *toolPopupCapture; //! Map canvas QgsMapCanvas *mMapCanvas; + //! Tab widget + QgsTabWidget *mTabWidget; //! Table of contents (legend) for the map QgsLegend *mMapLegend; //! Cursor for the overview map Index: /usr/local/src/qgis_ossim_pan/src/app/qgisapp.cpp =================================================================== --- /usr/local/src/qgis_ossim_pan/src/app/qgisapp.cpp (revision 10648) +++ /usr/local/src/qgis_ossim_pan/src/app/qgisapp.cpp (working copy) @@ -129,6 +129,7 @@ #include "qgsrectangle.h" #include "qgsrenderer.h" #include "qgsserversourceselect.h" +#include "qgstabwidget.h" #include "qgsvectordataprovider.h" #include "qgsvectorlayer.h" #include "ogr/qgsopenvectorlayerdialog.h" @@ -1563,7 +1564,12 @@ mMapCanvas->setWhatsThis( tr( "Map canvas. This is where raster and vector " "layers are displayed when added to the map" ) ); - setCentralWidget( mMapCanvas ); + mTabWidget = new QgsTabWidget(this); + mTabWidget->setTabPosition(QTabWidget::East); + mTabWidget->addTab(mMapCanvas, tr("2D view")); + + setCentralWidget( mTabWidget ); + // set the focus to the map canvas mMapCanvas->setFocus(); @@ -1659,6 +1665,31 @@ mMapCanvas->refresh(); } +void QgisApp::addTabWidget( QWidget *page, const QString &label ) +{ + mTabWidget->addTab( page, label ); +} + +void QgisApp::addTabWidget( QWidget *page, const QIcon &icon, const QString &label ) +{ + mTabWidget->addTab( page, icon, label ); +} + +void QgisApp::insertTabWidget( int index, QWidget *page, const QString &label ) +{ + mTabWidget->insertTab( index, page, label ); +} + +void QgisApp::insertTabWidget( int index, QWidget *page, const QIcon &icon, const QString &label ) +{ + mTabWidget->insertTab( index, page, icon, label ); +} + +void QgisApp::removeTabWidget( int index ) +{ + mTabWidget->removeTab( index ); +} + QToolBar *QgisApp::addToolBar( QString name ) { QToolBar *toolBar = QMainWindow::addToolBar( name ); Index: /usr/local/src/qgis_ossim_pan/src/app/qgisappinterface.cpp =================================================================== --- /usr/local/src/qgis_ossim_pan/src/app/qgisappinterface.cpp (revision 10648) +++ /usr/local/src/qgis_ossim_pan/src/app/qgisappinterface.cpp (working copy) @@ -29,6 +29,7 @@ #include "qgsmaplayerregistry.h" #include "qgsmapcanvas.h" #include "qgslegend.h" +#include "qgstabwidget.h" QgisAppInterface::QgisAppInterface( QgisApp * _qgis ) : qgis( _qgis ) @@ -141,6 +142,11 @@ return qgis->mapCanvas(); } +QgsTabWidget * QgisAppInterface::tabWidget() +{ + return qgis->tabWidget(); +} + QWidget * QgisAppInterface::mainWindow() { return qgis; @@ -174,6 +180,31 @@ qgis->removeDockWidget( dockwidget ); } +void QgisAppInterface::addTabWidget( QWidget *page, const QString &label ) +{ + qgis->addTabWidget( page, label ); +} + +void QgisAppInterface::addTabWidget( QWidget *page, const QIcon &icon, const QString &label ) +{ + qgis->addTabWidget( page, icon, label ); +} + +void QgisAppInterface::insertTabWidget( int index, QWidget *page, const QString &label ) +{ + qgis->insertTabWidget( index, page, label ); +} + +void QgisAppInterface::insertTabWidget( int index, QWidget *page, const QIcon &icon, const QString &label ) +{ + qgis->insertTabWidget( index, page, icon, label ); +} + +void QgisAppInterface::removeTabWidget( int index ) +{ + qgis->removeTabWidget( index ); +} + void QgisAppInterface::refreshLegend( QgsMapLayer *l ) { if ( l && qgis && qgis->legend() ) Index: /usr/local/src/qgis_ossim_pan/src/gui/qgstabwidget.cpp =================================================================== --- /usr/local/src/qgis_ossim_pan/src/gui/qgstabwidget.cpp (revision 0) +++ /usr/local/src/qgis_ossim_pan/src/gui/qgstabwidget.cpp (revision 0) @@ -0,0 +1,33 @@ +#include "qgstabwidget.h" + +void QgsTabWidget::addTab(QWidget *widget, const QIcon &icon, const QString &label) +{ + QTabWidget::addTab(widget, icon, label); + if (count() > 1) tabBar()->show(); +} + +void QgsTabWidget::addTab(QWidget *widget, const QString &label) +{ + QTabWidget::addTab(widget, label); + if (count() > 1) tabBar()->show(); +} + +void QgsTabWidget::insertTab(int index, QWidget *widget, const QIcon &icon, const QString &label) +{ + QTabWidget::insertTab(index, widget, icon, label); + if (count() > 1) tabBar()->show(); +} + +void QgsTabWidget::insertTab(int index, QWidget *widget, const QString &label) +{ + QTabWidget::insertTab(index, widget, label); + if (count() > 1) tabBar()->show(); +} + +void QgsTabWidget::removeTab(int index) +{ + if (count() != 1) { + QTabWidget::removeTab(index); + if (count() == 1) tabBar()->hide(); + } +} Index: /usr/local/src/qgis_ossim_pan/src/gui/CMakeLists.txt =================================================================== --- /usr/local/src/qgis_ossim_pan/src/gui/CMakeLists.txt (revision 10648) +++ /usr/local/src/qgis_ossim_pan/src/gui/CMakeLists.txt (working copy) @@ -12,6 +12,7 @@ qgsfiledropedit.cpp qgsgenericprojectionselector.cpp qgsmapcanvas.cpp +qgstabwidget.cpp qgsmapcanvasitem.cpp qgsmapcanvasmap.cpp qgsmapcanvassnapper.cpp @@ -121,6 +122,7 @@ qgsrubberband.h qgsvertexmarker.h qgsmaptip.h +qgstabwidget.h ${CMAKE_CURRENT_BINARY_DIR}/../ui/ui_qgsdetaileditemwidgetbase.h ${CMAKE_CURRENT_BINARY_DIR}/../ui/ui_qgsgenericprojectionselectorbase.h Index: /usr/local/src/qgis_ossim_pan/src/gui/qgisinterface.h =================================================================== --- /usr/local/src/qgis_ossim_pan/src/gui/qgisinterface.h (revision 10648) +++ /usr/local/src/qgis_ossim_pan/src/gui/qgisinterface.h (working copy) @@ -21,6 +21,7 @@ class QAction; class QMenu; +class QIcon; class QToolBar; class QDockWidget; class QMainWindow; @@ -36,6 +37,7 @@ class QgsMapLayer; class QgsMapCanvas; class QgsRasterLayer; +class QgsTabWidget; class QgsVectorLayer; /** \ingroup gui @@ -107,6 +109,9 @@ /** Return a pointer to the map canvas */ virtual QgsMapCanvas * mapCanvas() = 0; + /** Return a pointer to the main tab widget that containing map canvas */ + virtual QgsTabWidget * tabWidget() = 0; + /** Return a pointer to the main window (instance of QgisApp in case of QGIS) */ virtual QWidget * mainWindow() = 0; @@ -124,6 +129,21 @@ /** Remove specified dock widget from main window (doesn't delete it). Added in QGIS 1.1. */ virtual void removeDockWidget( QDockWidget * dockwidget ) = 0; + /** Add a tab widget to the main window */ + virtual void addTabWidget( QWidget *page, const QString &label ) = 0; + + /** Add a tab widget to the main window with icon */ + virtual void addTabWidget( QWidget *page, const QIcon &icon, const QString &label ) = 0; + + /** Insert a tab widget to the main window with label */ + virtual void insertTabWidget( int index, QWidget *page, const QString &label ) = 0; + + /** Insert a tab widget to the main window with icon and label */ + virtual void insertTabWidget( int index, QWidget *page, const QIcon &icon, const QString &label ) = 0; + + /** Remove specified tab widget from main window (doesn't delete it). */ + virtual void removeTabWidget( int index ) = 0; + /** refresh the legend of a layer */ virtual void refreshLegend( QgsMapLayer *l ) = 0; Index: /usr/local/src/qgis_ossim_pan/src/gui/qgstabwidget.h =================================================================== --- /usr/local/src/qgis_ossim_pan/src/gui/qgstabwidget.h (revision 0) +++ /usr/local/src/qgis_ossim_pan/src/gui/qgstabwidget.h (revision 0) @@ -0,0 +1,21 @@ +#ifndef QGSTABWIDGET_H +#define QGSTABWIDGET_H + +#include +#include + +class QgsTabWidget : public QTabWidget +{ +public: + QgsTabWidget(QWidget *parent) { + QgsTabWidget::QTabWidget(); + tabBar()->hide(); + } + void addTab(QWidget *widget, const QIcon &icon, const QString &label); + void addTab(QWidget *widget, const QString &label); + void insertTab(int index, QWidget *widget, const QIcon &icon, const QString &label); + void insertTab(int index, QWidget *widget, const QString &label); + void removeTab(int index); +}; + +#endif // QGSTABWIDGET_H