[QGIS Commit] r14243 - in trunk/qgis/src: app gui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Fri Sep 17 06:28:01 EDT 2010
Author: jef
Date: 2010-09-17 10:28:01 +0000 (Fri, 17 Sep 2010)
New Revision: 14243
Modified:
trunk/qgis/src/app/qgisappinterface.cpp
trunk/qgis/src/app/qgisappinterface.h
trunk/qgis/src/gui/qgisinterface.h
Log:
implement #3015
Modified: trunk/qgis/src/app/qgisappinterface.cpp
===================================================================
--- trunk/qgis/src/app/qgisappinterface.cpp 2010-09-16 22:58:08 UTC (rev 14242)
+++ trunk/qgis/src/app/qgisappinterface.cpp 2010-09-17 10:28:01 UTC (rev 14243)
@@ -29,6 +29,9 @@
#include "qgsmapcanvas.h"
#include "qgslegend.h"
#include "qgsshortcutsmanager.h"
+#include "qgsattributedialog.h"
+#include "qgsfield.h"
+#include "qgsvectordataprovider.h"
QgisAppInterface::QgisAppInterface( QgisApp * _qgis )
: qgis( _qgis ),
@@ -352,3 +355,26 @@
QAction *QgisAppInterface::actionCheckQgisVersion() { return qgis->actionCheckQgisVersion(); }
QAction *QgisAppInterface::actionHelpSeparator2() { return qgis->actionHelpSeparator2(); }
QAction *QgisAppInterface::actionAbout() { return qgis->actionAbout(); }
+
+bool QgisAppInterface::openFeatureForm( QgsVectorLayer *vlayer, QgsFeature &f )
+{
+ if ( !vlayer )
+ return false;
+
+ QgsVectorDataProvider *dp = vlayer->dataProvider();
+ if ( dp )
+ {
+ // add the fields to the QgsFeature
+ const QgsFieldMap fields = vlayer->pendingFields();
+ for ( QgsFieldMap::const_iterator it = fields.constBegin(); it != fields.constEnd(); ++it )
+ {
+ if ( !f.attributeMap().contains( it.key() ) )
+ f.addAttribute( it.key(), dp->defaultValue( it.key() ) );
+ }
+ }
+
+ QgsAttributeDialog *mypDialog = new QgsAttributeDialog( vlayer, &f );
+ bool res = mypDialog->exec();
+ delete mypDialog;
+ return res;
+}
Modified: trunk/qgis/src/app/qgisappinterface.h
===================================================================
--- trunk/qgis/src/app/qgisappinterface.h 2010-09-16 22:58:08 UTC (rev 14242)
+++ trunk/qgis/src/app/qgisappinterface.h 2010-09-17 10:28:01 UTC (rev 14243)
@@ -262,6 +262,11 @@
virtual QAction *actionHelpSeparator2();
virtual QAction *actionAbout();
+ //! open feature form
+ // returns true when dialog was accepted
+ // @added in 1.6
+ virtual bool openFeatureForm( QgsVectorLayer *l, QgsFeature &f );
+
signals:
void currentThemeChanged( QString );
Modified: trunk/qgis/src/gui/qgisinterface.h
===================================================================
--- trunk/qgis/src/gui/qgisinterface.h 2010-09-16 22:58:08 UTC (rev 14242)
+++ trunk/qgis/src/gui/qgisinterface.h 2010-09-17 10:28:01 UTC (rev 14243)
@@ -37,6 +37,7 @@
class QgsRasterLayer;
class QgsVectorLayer;
class QgsLegendInterface;
+class QgsFeature;
/** \ingroup gui
* QgisInterface
@@ -302,6 +303,11 @@
virtual QAction *actionHelpSeparator2() = 0;
virtual QAction *actionAbout() = 0;
+ //! Open feature form
+ // returns true when dialog was accepted
+ // @added in 1.6
+ virtual bool openFeatureForm( QgsVectorLayer *vlayer, QgsFeature &f ) = 0;
+
signals:
/** Emited whenever current (selected) layer changes.
* The pointer to layer can be null if no layer is selected
More information about the QGIS-commit
mailing list