[QGIS Commit] r14797 - in trunk/qgis/src: app ui

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon Nov 29 15:40:42 EST 2010


Author: jef
Date: 2010-11-29 12:40:42 -0800 (Mon, 29 Nov 2010)
New Revision: 14797

Removed:
   trunk/qgis/src/app/qgsavoidintersectionsdialog.cpp
   trunk/qgis/src/app/qgsavoidintersectionsdialog.h
   trunk/qgis/src/ui/qgsavoidintersectionsdialogbase.ui
Modified:
   trunk/qgis/src/app/CMakeLists.txt
   trunk/qgis/src/app/qgsprojectproperties.cpp
   trunk/qgis/src/app/qgssnappingdialog.cpp
   trunk/qgis/src/app/qgssnappingdialog.h
   trunk/qgis/src/ui/qgssnappingdialogbase.ui
Log:
integrate 'Avoid intersections of new polygons' into snapping dialog

Modified: trunk/qgis/src/app/CMakeLists.txt
===================================================================
--- trunk/qgis/src/app/CMakeLists.txt	2010-11-29 17:06:56 UTC (rev 14796)
+++ trunk/qgis/src/app/CMakeLists.txt	2010-11-29 20:40:42 UTC (rev 14797)
@@ -9,7 +9,6 @@
   qgsattributedialog.cpp
   qgsattributetypedialog.cpp
   qgsattributetypeloaddialog.cpp
-  qgsavoidintersectionsdialog.cpp
   qgsbookmarkitem.cpp
   qgsbookmarks.cpp
   qgsclipboard.cpp
@@ -163,7 +162,6 @@
   qgsattributedialog.h
   qgsattributetypedialog.h
   qgsattributetypeloaddialog.h
-  qgsavoidintersectionsdialog.h
   qgsbookmarks.h
   qgscontinuouscolordialog.h
   qgsconfigureshortcutsdialog.h

Deleted: trunk/qgis/src/app/qgsavoidintersectionsdialog.cpp
===================================================================
--- trunk/qgis/src/app/qgsavoidintersectionsdialog.cpp	2010-11-29 17:06:56 UTC (rev 14796)
+++ trunk/qgis/src/app/qgsavoidintersectionsdialog.cpp	2010-11-29 20:40:42 UTC (rev 14797)
@@ -1,51 +0,0 @@
-#include "qgsavoidintersectionsdialog.h"
-#include "qgsvectorlayer.h"
-#include "qgsmaplayerregistry.h"
-
-QgsAvoidIntersectionsDialog::QgsAvoidIntersectionsDialog( QgsMapCanvas* canvas, const QSet<QString>& enabledLayers, QWidget * parent, Qt::WindowFlags f ):
-    QDialog( parent, f ), mMapCanvas( canvas )
-{
-  setupUi( this );
-
-  const QMap<QString, QgsMapLayer*> &mapLayers = QgsMapLayerRegistry::instance()->mapLayers();
-
-  int i = 0;
-  for ( QMap<QString, QgsMapLayer*>::const_iterator it = mapLayers.constBegin(); it != mapLayers.constEnd(); it++, i++ )
-  {
-    QgsVectorLayer* currentLayer = dynamic_cast<QgsVectorLayer*>( it.value() );
-    if ( !currentLayer || currentLayer->geometryType() != QGis::Polygon )
-      continue;
-
-    QListWidgetItem *newItem = new QListWidgetItem( mLayersListWidget );
-    newItem->setText( currentLayer->name() );
-    newItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsUserCheckable );
-    newItem->setData( Qt::UserRole, currentLayer->getLayerID() );
-    if ( enabledLayers.contains( currentLayer->getLayerID() ) )
-    {
-      newItem->setCheckState( Qt::Checked );
-    }
-    else
-    {
-      newItem->setCheckState( Qt::Unchecked );
-    }
-  }
-}
-
-QgsAvoidIntersectionsDialog::~QgsAvoidIntersectionsDialog()
-{
-
-}
-
-void QgsAvoidIntersectionsDialog::enabledLayers( QSet<QString>& enabledLayers )
-{
-  enabledLayers.clear();
-
-  for ( int i = 0; i < mLayersListWidget->count(); ++i )
-  {
-    QListWidgetItem *currentItem = mLayersListWidget->item( i );
-    if ( currentItem->checkState() == Qt::Checked )
-    {
-      enabledLayers.insert( currentItem->data( Qt::UserRole ).toString() );
-    }
-  }
-}

Deleted: trunk/qgis/src/app/qgsavoidintersectionsdialog.h
===================================================================
--- trunk/qgis/src/app/qgsavoidintersectionsdialog.h	2010-11-29 17:06:56 UTC (rev 14796)
+++ trunk/qgis/src/app/qgsavoidintersectionsdialog.h	2010-11-29 20:40:42 UTC (rev 14797)
@@ -1,21 +0,0 @@
-#ifndef QGSAVOIDINTERSECTIONSDIALOG_H
-#define QGSAVOIDINTERSECTIONSDIALOG_H
-
-#include "ui_qgsavoidintersectionsdialogbase.h"
-
-class QgsMapCanvas;
-
-class QgsAvoidIntersectionsDialog: public QDialog, private Ui::QgsAvoidIntersectionsDialogBase
-{
-    Q_OBJECT
-  public:
-    QgsAvoidIntersectionsDialog( QgsMapCanvas* canvas, const QSet<QString>& enabledLayers, QWidget * parent = 0, Qt::WindowFlags f = 0 );
-    ~QgsAvoidIntersectionsDialog();
-    /**Returns ids of layers that are considered for the avoid intersection function*/
-    void enabledLayers( QSet<QString>& enabledLayers );
-
-  private:
-    QgsMapCanvas* mMapCanvas;
-};
-
-#endif // QGSAVOIDINTERSECTIONSDIALOG_H

Modified: trunk/qgis/src/app/qgsprojectproperties.cpp
===================================================================
--- trunk/qgis/src/app/qgsprojectproperties.cpp	2010-11-29 17:06:56 UTC (rev 14796)
+++ trunk/qgis/src/app/qgsprojectproperties.cpp	2010-11-29 20:40:42 UTC (rev 14797)
@@ -20,7 +20,6 @@
 #include "qgsprojectproperties.h"
 
 //qgis includes
-#include "qgsavoidintersectionsdialog.h"
 #include "qgscontexthelp.h"
 #include "qgscoordinatetransform.h"
 #include "qgslogger.h"

Modified: trunk/qgis/src/app/qgssnappingdialog.cpp
===================================================================
--- trunk/qgis/src/app/qgssnappingdialog.cpp	2010-11-29 17:06:56 UTC (rev 14796)
+++ trunk/qgis/src/app/qgssnappingdialog.cpp	2010-11-29 20:40:42 UTC (rev 14797)
@@ -16,7 +16,6 @@
  ***************************************************************************/
 
 #include "qgssnappingdialog.h"
-#include "qgsavoidintersectionsdialog.h"
 #include "qgsmapcanvas.h"
 #include "qgsmaplayer.h"
 #include "qgsvectorlayer.h"
@@ -24,6 +23,7 @@
 #include "qgisapp.h"
 #include "qgsproject.h"
 #include "qgslogger.h"
+
 #include <QCheckBox>
 #include <QDoubleValidator>
 #include <QComboBox>
@@ -96,23 +96,6 @@
   QgsProject::instance()->writeEntry( "Digitizing", "/TopologicalEditing", topologicalEditingEnabled );
 }
 
-void QgsSnappingDialog::on_mAvoidIntersectionsPushButton_clicked()
-{
-  QgsAvoidIntersectionsDialog d( mMapCanvas, mAvoidIntersectionsSettings );
-  if ( d.exec() == QDialog::Accepted )
-  {
-    d.enabledLayers( mAvoidIntersectionsSettings );
-    //store avoid intersection layers
-    QStringList avoidIntersectionList;
-    QSet<QString>::const_iterator avoidIt = mAvoidIntersectionsSettings.constBegin();
-    for ( ; avoidIt != mAvoidIntersectionsSettings.constEnd(); ++avoidIt )
-    {
-      avoidIntersectionList.append( *avoidIt );
-    }
-    QgsProject::instance()->writeEntry( "Digitizing", "/AvoidIntersectionsList", avoidIntersectionList );
-  }
-}
-
 void QgsSnappingDialog::closeEvent( QCloseEvent* event )
 {
   QDialog::closeEvent( event );
@@ -151,12 +134,13 @@
     defaultSnappingStringIdx = 2;
   }
 
-  bool layerIdListOk, enabledListOk, toleranceListOk, toleranceUnitListOk, snapToListOk;
+  bool layerIdListOk, enabledListOk, toleranceListOk, toleranceUnitListOk, snapToListOk, avoidIntersectionListOk;
   QStringList layerIdList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingList", &layerIdListOk );
   QStringList enabledList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingEnabledList", &enabledListOk );
   QStringList toleranceList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingToleranceList", & toleranceListOk );
   QStringList toleranceUnitList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnappingToleranceUnitList", & toleranceUnitListOk );
   QStringList snapToList = QgsProject::instance()->readListEntry( "Digitizing", "/LayerSnapToList", &snapToListOk );
+  QStringList avoidIntersectionsList = QgsProject::instance()->readListEntry( "Digitizing", "/AvoidIntersectionsList", &avoidIntersectionListOk );
 
   mLayerTreeWidget->clear();
 
@@ -165,7 +149,7 @@
   for ( it = mapLayers.begin(); it != mapLayers.end() ; ++it )
   {
     QgsVectorLayer *currentVectorLayer = qobject_cast<QgsVectorLayer *>( it.value() );
-    if ( !currentVectorLayer )
+    if ( !currentVectorLayer || currentVectorLayer->geometryType() == QGis::NoGeometry )
       continue;
 
     //snap to layer yes/no
@@ -200,6 +184,13 @@
     cbxUnits->setCurrentIndex( defaultSnappingUnit );
     mLayerTreeWidget->setItemWidget( item, 4, cbxUnits );
 
+    QCheckBox *cbxAvoidIntersection = 0;
+    if ( currentVectorLayer->geometryType() == QGis::Polygon )
+    {
+      cbxAvoidIntersection = new QCheckBox( mLayerTreeWidget );
+      mLayerTreeWidget->setItemWidget( item, 5, cbxAvoidIntersection );
+    }
+
     int idx = layerIdList.indexOf( currentVectorLayer->getLayerID() );
     if ( idx < 0 )
     {
@@ -225,6 +216,10 @@
     cbxSnapTo->setCurrentIndex( snappingStringIdx );
     leTolerance->setText( QString::number( toleranceList[idx].toDouble(), 'f' ) );
     cbxUnits->setCurrentIndex( toleranceUnitList[idx].toInt() );
+    if ( cbxAvoidIntersection )
+    {
+      cbxAvoidIntersection->setChecked( avoidIntersectionsList.contains( currentVectorLayer->getLayerID() ) );
+    }
   }
 
   // read the digitizing settings
@@ -238,18 +233,6 @@
     cbxEnableTopologicalEditingCheckBox->setCheckState( Qt::Unchecked );
   }
 
-  bool avoidIntersectionListOk;
-  mAvoidIntersectionsSettings.clear();
-  QStringList avoidIntersectionsList = QgsProject::instance()->readListEntry( "Digitizing", "/AvoidIntersectionsList", &avoidIntersectionListOk );
-  if ( avoidIntersectionListOk )
-  {
-    QStringList::const_iterator avoidIt = avoidIntersectionsList.constBegin();
-    for ( ; avoidIt != avoidIntersectionsList.constEnd(); ++avoidIt )
-    {
-      mAvoidIntersectionsSettings.insert( *avoidIt );
-    }
-  }
-
   if ( myDockFlag )
   {
     for ( int i = 0; i < mLayerTreeWidget->topLevelItemCount(); ++i )
@@ -259,6 +242,12 @@
       connect( mLayerTreeWidget->itemWidget( item, 2 ), SIGNAL( currentIndexChanged( int ) ), this, SLOT( apply() ) );
       connect( mLayerTreeWidget->itemWidget( item, 3 ), SIGNAL( textEdited( const QString ) ), this, SLOT( apply() ) );
       connect( mLayerTreeWidget->itemWidget( item, 4 ), SIGNAL( currentIndexChanged( int ) ), this, SLOT( apply() ) );
+
+      QCheckBox *cbxAvoidIntersection = qobject_cast<QCheckBox*>( mLayerTreeWidget->itemWidget( item, 5 ) );
+      if ( cbxAvoidIntersection )
+      {
+        connect( cbxAvoidIntersection, SIGNAL( stateChanged( int ) ), this, SLOT( apply() ) );
+      }
     }
   }
 }
@@ -270,6 +259,7 @@
   QStringList toleranceList;
   QStringList enabledList;
   QStringList toleranceUnitList;
+  QStringList avoidIntersectionList;
 
   for ( int i = 0; i < mLayerTreeWidget->topLevelItemCount(); ++i )
   {
@@ -298,6 +288,12 @@
 
     toleranceList << QString::number( qobject_cast<QLineEdit*>( mLayerTreeWidget->itemWidget( currentItem, 3 ) )->text().toDouble(), 'f' );
     toleranceUnitList << QString::number( qobject_cast<QComboBox*>( mLayerTreeWidget->itemWidget( currentItem, 4 ) )->currentIndex() );
+
+    QCheckBox *cbxAvoidIntersection = qobject_cast<QCheckBox*>( mLayerTreeWidget->itemWidget( currentItem, 5 ) );
+    if ( cbxAvoidIntersection && cbxAvoidIntersection->isChecked() )
+    {
+      avoidIntersectionList << currentItem->data( 0, Qt::UserRole ).toString();
+    }
   }
 
   QgsProject::instance()->writeEntry( "Digitizing", "/LayerSnappingList", layerIdList );
@@ -305,6 +301,7 @@
   QgsProject::instance()->writeEntry( "Digitizing", "/LayerSnappingToleranceList", toleranceList );
   QgsProject::instance()->writeEntry( "Digitizing", "/LayerSnappingToleranceUnitList", toleranceUnitList );
   QgsProject::instance()->writeEntry( "Digitizing", "/LayerSnappingEnabledList", enabledList );
+  QgsProject::instance()->writeEntry( "Digitizing", "/AvoidIntersectionsList", avoidIntersectionList );
 }
 
 void QgsSnappingDialog::show()

Modified: trunk/qgis/src/app/qgssnappingdialog.h
===================================================================
--- trunk/qgis/src/app/qgssnappingdialog.h	2010-11-29 17:06:56 UTC (rev 14796)
+++ trunk/qgis/src/app/qgssnappingdialog.h	2010-11-29 20:40:42 UTC (rev 14797)
@@ -49,7 +49,6 @@
     void connectUpdate( QgsMapLayer* theMapLayer );
 
     void on_cbxEnableTopologicalEditingCheckBox_stateChanged( int );
-    void on_mAvoidIntersectionsPushButton_clicked();
 
   protected:
     /**Constructor

Deleted: trunk/qgis/src/ui/qgsavoidintersectionsdialogbase.ui
===================================================================
--- trunk/qgis/src/ui/qgsavoidintersectionsdialogbase.ui	2010-11-29 17:06:56 UTC (rev 14796)
+++ trunk/qgis/src/ui/qgsavoidintersectionsdialogbase.ui	2010-11-29 20:40:42 UTC (rev 14797)
@@ -1,66 +0,0 @@
-<ui version="4.0" >
- <class>QgsAvoidIntersectionsDialogBase</class>
- <widget class="QDialog" name="QgsAvoidIntersectionsDialogBase" >
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>365</width>
-    <height>300</height>
-   </rect>
-  </property>
-  <property name="windowTitle" >
-   <string>Remove intersections of new polygons with layers</string>
-  </property>
-  <layout class="QGridLayout" name="gridLayout" >
-   <item row="0" column="0" >
-    <widget class="QListWidget" name="mLayersListWidget" />
-   </item>
-   <item row="1" column="0" >
-    <widget class="QDialogButtonBox" name="mButtonBox" >
-     <property name="orientation" >
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons" >
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections>
-  <connection>
-   <sender>mButtonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>QgsAvoidIntersectionsDialogBase</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>mButtonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>QgsAvoidIntersectionsDialogBase</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>316</x>
-     <y>260</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>286</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>

Modified: trunk/qgis/src/ui/qgssnappingdialogbase.ui
===================================================================
--- trunk/qgis/src/ui/qgssnappingdialogbase.ui	2010-11-29 17:06:56 UTC (rev 14796)
+++ trunk/qgis/src/ui/qgssnappingdialogbase.ui	2010-11-29 20:40:42 UTC (rev 14797)
@@ -6,16 +6,42 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>644</width>
+    <width>760</width>
     <height>290</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Snapping options</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="1" column="0">
+    <widget class="QCheckBox" name="cbxEnableTopologicalEditingCheckBox">
+     <property name="text">
+      <string>Enable topological editing</string>
+     </property>
+     <property name="checked">
+      <bool>false</bool>
+     </property>
+     <property name="tristate">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QDialogButtonBox" name="mButtonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0" colspan="2">
     <widget class="QTreeWidget" name="mLayerTreeWidget">
+     <property name="selectionMode">
+      <enum>QAbstractItemView::NoSelection</enum>
+     </property>
      <property name="indentation">
       <number>0</number>
      </property>
@@ -26,6 +52,9 @@
       <property name="text">
        <string/>
       </property>
+      <property name="textAlignment">
+       <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+      </property>
      </column>
      <column>
       <property name="text">
@@ -47,42 +76,19 @@
        <string>Units</string>
       </property>
      </column>
+     <column>
+      <property name="text">
+       <string>Avoid Int.</string>
+      </property>
+      <property name="toolTip">
+       <string>Avoid intersections of new polygons</string>
+      </property>
+      <property name="textAlignment">
+       <set>AlignHCenter|AlignVCenter|AlignCenter</set>
+      </property>
+     </column>
     </widget>
    </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QCheckBox" name="cbxEnableTopologicalEditingCheckBox">
-       <property name="text">
-        <string>Enable topological editing</string>
-       </property>
-       <property name="checked">
-        <bool>false</bool>
-       </property>
-       <property name="tristate">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="mAvoidIntersectionsPushButton">
-       <property name="text">
-        <string>Avoid intersections of new polygons...</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="QDialogButtonBox" name="mButtonBox">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
-   </item>
   </layout>
  </widget>
  <resources/>



More information about the QGIS-commit mailing list