[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