[QGIS Commit] r13291 - in trunk/qgis: python/core src/app src/core src/gui

svn_qgis at osgeo.org svn_qgis at osgeo.org
Fri Apr 9 03:42:48 EDT 2010


Author: mhugent
Date: 2010-04-09 03:42:30 -0400 (Fri, 09 Apr 2010)
New Revision: 13291

Modified:
   trunk/qgis/python/core/qgsvectorlayer.sip
   trunk/qgis/src/app/qgsformannotationdialog.cpp
   trunk/qgis/src/core/qgsvectorlayer.cpp
   trunk/qgis/src/core/qgsvectorlayer.h
   trunk/qgis/src/gui/qgsformannotationitem.cpp
   trunk/qgis/src/gui/qgsformannotationitem.h
Log:
Remember last annotation form for a layer and store it in project

Modified: trunk/qgis/python/core/qgsvectorlayer.sip
===================================================================
--- trunk/qgis/python/core/qgsvectorlayer.sip	2010-04-09 06:32:25 UTC (rev 13290)
+++ trunk/qgis/python/core/qgsvectorlayer.sip	2010-04-09 07:42:30 UTC (rev 13291)
@@ -444,6 +444,15 @@
    */
   void setEditForm( QString ui );
 
+  /** get annotation form
+      @note added in 1.5*/
+  QString annotationForm() const;
+
+  /** set annotation form for layer
+      @note added in 1.5*/
+  void setAnnotationForm( const QString& ui );
+
+
   /** get edit form init function
     @note added in 1.4
    */

Modified: trunk/qgis/src/app/qgsformannotationdialog.cpp
===================================================================
--- trunk/qgis/src/app/qgsformannotationdialog.cpp	2010-04-09 06:32:25 UTC (rev 13290)
+++ trunk/qgis/src/app/qgsformannotationdialog.cpp	2010-04-09 07:42:30 UTC (rev 13291)
@@ -1,5 +1,6 @@
 #include "qgsformannotationdialog.h"
 #include "qgsannotationwidget.h"
+#include "qgsvectorlayer.h"
 #include <QFileDialog>
 #include <QFileInfo>
 #include <QGraphicsScene>
@@ -40,6 +41,12 @@
   if ( mItem )
   {
     mItem->setDesignerForm( mFileLineEdit->text() );
+    QgsVectorLayer* layer = mItem->vectorLayer();
+    if ( layer )
+    {
+      //set last used annotation form as default for the layer
+      layer->setAnnotationForm( mFileLineEdit->text() );
+    }
     mItem->update();
   }
 }

Modified: trunk/qgis/src/core/qgsvectorlayer.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.cpp	2010-04-09 06:32:25 UTC (rev 13290)
+++ trunk/qgis/src/core/qgsvectorlayer.cpp	2010-04-09 07:42:30 UTC (rev 13291)
@@ -2797,6 +2797,13 @@
     mEditFormInit = editFormInitNode.toElement().text();
   }
 
+  QDomNode annotationFormNode = node.namedItem( "annotationform" );
+  if ( !annotationFormNode.isNull() )
+  {
+    QDomElement e = annotationFormNode.toElement();
+    mAnnotationForm = QgsProject::instance()->readPath( e.text() );
+  }
+
   mAttributeAliasMap.clear();
   QDomNode aliasesNode = node.namedItem( "aliases" );
   if ( !aliasesNode.isNull() )
@@ -2943,6 +2950,11 @@
   efiField.appendChild( efiText );
   node.appendChild( efiField );
 
+  QDomElement afField = doc.createElement( "annotationform" );
+  QDomText afText = doc.createTextNode( QgsProject::instance()->writePath( mAnnotationForm ) );
+  afField.appendChild( afText );
+  node.appendChild( afField );
+
   //attribute aliases
   if ( mAttributeAliasMap.size() > 0 )
   {
@@ -4142,6 +4154,11 @@
   mEditForm = ui;
 }
 
+void QgsVectorLayer::setAnnotationForm( const QString& ui )
+{
+  mAnnotationForm = ui;
+}
+
 QString QgsVectorLayer::editFormInit()
 {
   return mEditFormInit;

Modified: trunk/qgis/src/core/qgsvectorlayer.h
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.h	2010-04-09 06:32:25 UTC (rev 13290)
+++ trunk/qgis/src/core/qgsvectorlayer.h	2010-04-09 07:42:30 UTC (rev 13291)
@@ -480,6 +480,12 @@
     /** set edit form (added in 1.4) */
     void setEditForm( QString ui );
 
+    /** get annotation form (added in 1.5)*/
+    QString annotationForm() const { return mAnnotationForm; }
+
+    /** set annotation form for layer (added in 1.5)*/
+    void setAnnotationForm( const QString& ui );
+
     /** get python function for edit form initialization (added in 1.4) */
     QString editFormInit();
 
@@ -775,6 +781,8 @@
     QMap< QString, QPair<QString, QString> > mCheckedStates;
 
     QString mEditForm, mEditFormInit;
+    //annotation form for this layer
+    QString mAnnotationForm;
 
     bool mFetching;
     QgsRectangle mFetchRect;

Modified: trunk/qgis/src/gui/qgsformannotationitem.cpp
===================================================================
--- trunk/qgis/src/gui/qgsformannotationitem.cpp	2010-04-09 06:32:25 UTC (rev 13290)
+++ trunk/qgis/src/gui/qgsformannotationitem.cpp	2010-04-09 07:42:30 UTC (rev 13291)
@@ -39,7 +39,7 @@
   mWidgetContainer = new QGraphicsProxyWidget( this );
   if ( mVectorLayer && mMapCanvas ) //default to the layers edit form
   {
-    mDesignerForm = mVectorLayer->editForm();
+    mDesignerForm = mVectorLayer->annotationForm();
     QObject::connect( mVectorLayer, SIGNAL( layerModified( bool ) ), this, SLOT( setFeatureForMapPosition() ) );
     QObject::connect( mMapCanvas, SIGNAL( renderComplete( QPainter* ) ), this, SLOT( setFeatureForMapPosition() ) );
     QObject::connect( mMapCanvas, SIGNAL( layersChanged() ), this, SLOT( updateVisibility() ) );

Modified: trunk/qgis/src/gui/qgsformannotationitem.h
===================================================================
--- trunk/qgis/src/gui/qgsformannotationitem.h	2010-04-09 06:32:25 UTC (rev 13290)
+++ trunk/qgis/src/gui/qgsformannotationitem.h	2010-04-09 07:42:30 UTC (rev 13291)
@@ -49,6 +49,8 @@
     void writeXML( QDomDocument& doc ) const;
     void readXML( const QDomDocument& doc, const QDomElement& itemElem );
 
+    QgsVectorLayer* vectorLayer() const { return mVectorLayer; }
+
   private slots:
     /**Sets a feature for the current map position and updates the dialog*/
     void setFeatureForMapPosition();



More information about the QGIS-commit mailing list