Skip to content

Commit 43659ad

Browse files
author
jef
committed
attribute table now shows either all features (default), all selected features or all features in the current canvas.
(applies #1306) git-svn-id: http://svn.osgeo.org/qgis/trunk@9689 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent e8d6530 commit 43659ad

File tree

3 files changed

+57
-6
lines changed

3 files changed

+57
-6
lines changed

src/app/qgsattributetable.cpp

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,15 @@
2424
#include "qgslogger.h"
2525
#include "qgsvectordataprovider.h"
2626
#include "qgsvectorlayer.h"
27+
#include "qgisapp.h"
28+
#include "qgsmapcanvas.h"
2729

2830
#include <QApplication>
2931
#include <QClipboard>
3032
#include <QHeaderView>
3133
#include <QKeyEvent>
3234
#include <QMenu>
35+
#include <QSettings>
3336

3437

3538
QgsAttributeTableItemDelegate::QgsAttributeTableItemDelegate( QgsAttributeTable *table, QObject *parent )
@@ -477,18 +480,29 @@ void QgsAttributeTable::fillTable( QgsVectorLayer *layer )
477480
}
478481

479482
QgsFeatureList features;
480-
if ( layer->selectedFeatureCount() == 0 )
483+
484+
QSettings settings;
485+
int behaviour = settings.value( "/qgis/attributeTableBehaviour", 0 ).toInt();
486+
487+
if ( behaviour == 1 )
481488
{
482-
layer->select( layer->pendingAllAttributesList(), QgsRectangle(), false );
489+
features = layer->selectedFeatures();
490+
}
491+
else
492+
{
493+
QgsRectangle rect;
494+
if( behaviour == 2 )
495+
{
496+
// current canvas only
497+
rect = QgisApp::instance()->mapCanvas()->extent();
498+
}
499+
500+
layer->select( layer->pendingAllAttributesList(), rect, false );
483501

484502
QgsFeature f;
485503
while ( layer->nextFeature( f ) )
486504
features << f;
487505
}
488-
else
489-
{
490-
features = layer->selectedFeatures();
491-
}
492506

493507
setRowCount( features.size() );
494508

src/app/qgsoptions.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WFlags fl ) :
6464
leProxyPassword->setText( settings.value( "proxy/proxyPassword", "" ).toString() );
6565
// set the current theme
6666
cmbTheme->setItemText( cmbTheme->currentIndex(), settings.value( "/Themes" ).toString() );
67+
68+
// set the attribute table behaviour
69+
cmbAttrTableBehaviour->clear();
70+
cmbAttrTableBehaviour->addItem( tr( "Show all features" ) );
71+
cmbAttrTableBehaviour->addItem( tr( "Show selected features" ) );
72+
cmbAttrTableBehaviour->addItem( tr( "Show features in current canvas" ) );
73+
cmbAttrTableBehaviour->setCurrentIndex( settings.value( "/qgis/attributeTableBehaviour", 0 ).toInt() );
74+
6775
// set the display update threshold
6876
spinBoxUpdateThreshold->setValue( settings.value( "/Map/updateThreshold" ).toInt() );
6977
//set the default projection behaviour radio buttongs
@@ -257,6 +265,7 @@ void QgsOptions::saveOptions()
257265
settings.setValue( "/qgis/showLegendClassifiers", cbxLegendClassifiers->isChecked() );
258266
settings.setValue( "/qgis/hideSplash", cbxHideSplash->isChecked() );
259267
settings.setValue( "/qgis/dockAttributeTable", cbxAttributeTableDocked->isChecked() );
268+
settings.setValue( "/qgis/attributeTableBehaviour", cmbAttrTableBehaviour->currentIndex() );
260269
settings.setValue( "/qgis/new_layers_visible", chkAddedVisibility->isChecked() );
261270
settings.setValue( "/qgis/enable_anti_aliasing", chkAntiAliasing->isChecked() );
262271
settings.setValue( "/qgis/use_qimage_to_render", !( chkUseQPixmap->isChecked() ) );

src/ui/qgsoptionsbase.ui

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,34 @@
220220
</property>
221221
</widget>
222222
</item>
223+
<item row="6" column="0" >
224+
<widget class="QLabel" name="textLabel1_6" >
225+
<property name="sizePolicy" >
226+
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
227+
<horstretch>0</horstretch>
228+
<verstretch>0</verstretch>
229+
</sizepolicy>
230+
</property>
231+
<property name="text" >
232+
<string>Attribute table behaviour</string>
233+
</property>
234+
<property name="buddy" >
235+
<cstring>cmbAttrTableBehaviour</cstring>
236+
</property>
237+
</widget>
238+
</item>
239+
<item row="6" column="1" >
240+
<widget class="QComboBox" name="cmbAttrTableBehaviour" >
241+
<property name="duplicatesEnabled" >
242+
<bool>false</bool>
243+
</property>
244+
<item>
245+
<property name="text" >
246+
<string/>
247+
</property>
248+
</item>
249+
</widget>
250+
</item>
223251
</layout>
224252
</widget>
225253
</item>

0 commit comments

Comments
 (0)