[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