[QGIS Commit] r14367 - in trunk/qgis/src: app/composer
core/composer ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Mon Oct 11 09:13:29 EDT 2010
Author: mhugent
Date: 2010-10-11 06:13:29 -0700 (Mon, 11 Oct 2010)
New Revision: 14367
Added:
trunk/qgis/src/ui/qgsattributeselectiondialogbase.ui
Modified:
trunk/qgis/src/app/composer/qgsattributeselectiondialog.cpp
trunk/qgis/src/app/composer/qgsattributeselectiondialog.h
trunk/qgis/src/app/composer/qgscomposertablewidget.cpp
trunk/qgis/src/core/composer/qgscomposerattributetable.cpp
trunk/qgis/src/core/composer/qgscomposerattributetable.h
Log:
[FEATURE]: Sorting for composer attribute table (several columns and ascending / descending)
Modified: trunk/qgis/src/app/composer/qgsattributeselectiondialog.cpp
===================================================================
--- trunk/qgis/src/app/composer/qgsattributeselectiondialog.cpp 2010-10-11 09:52:50 UTC (rev 14366)
+++ trunk/qgis/src/app/composer/qgsattributeselectiondialog.cpp 2010-10-11 13:13:29 UTC (rev 14367)
@@ -26,26 +26,20 @@
#include <QScrollArea>
QgsAttributeSelectionDialog::QgsAttributeSelectionDialog( const QgsVectorLayer* vLayer, const QSet<int>& enabledAttributes, const QMap<int, QString>& aliasMap,
- QWidget * parent, Qt::WindowFlags f ): QDialog( parent, f ), mVectorLayer( vLayer )
+ const QList< QPair<int, bool> >& sortColumns, QWidget* parent, Qt::WindowFlags f ): QDialog( parent, f ), mVectorLayer( vLayer )
{
+ setupUi( this );
if ( vLayer )
{
- QScrollArea* attributeScrollArea = new QScrollArea( this );
- QWidget* attributeWidget = new QWidget();
-
- mAttributeGridLayout = new QGridLayout( attributeWidget );
- QLabel* attributeLabel = new QLabel( QString( "<b>" ) + tr( "Attribute" ) + QString( "</b>" ), this );
- attributeLabel->setTextFormat( Qt::RichText );
- mAttributeGridLayout->addWidget( attributeLabel, 0, 0 );
- QLabel* aliasLabel = new QLabel( QString( "<b>" ) + tr( "Alias" ) + QString( "</b>" ), this );
- aliasLabel->setTextFormat( Qt::RichText );
- mAttributeGridLayout->addWidget( aliasLabel, 0, 1 );
-
QgsFieldMap fieldMap = vLayer->pendingFields();
QgsFieldMap::const_iterator fieldIt = fieldMap.constBegin();
int layoutRowCounter = 1;
for ( ; fieldIt != fieldMap.constEnd(); ++fieldIt )
{
+ //insert field into sorting combo first
+ mSortColumnComboBox->addItem( fieldIt.value().name(), QVariant( fieldIt.key() ) );
+
+ //and into enabled / alias list
QCheckBox* attributeCheckBox = new QCheckBox( fieldIt.value().name(), this );
if ( enabledAttributes.size() < 1 || enabledAttributes.contains( fieldIt.key() ) )
{
@@ -55,7 +49,7 @@
{
attributeCheckBox->setCheckState( Qt::Unchecked );
}
- mAttributeGridLayout->addWidget( attributeCheckBox, layoutRowCounter, 0 );
+ mAttributeGridLayout->addWidget(( QWidget* )attributeCheckBox, layoutRowCounter, 0, 1, 1 );
QLineEdit* attributeLineEdit = new QLineEdit( this );
QMap<int, QString>::const_iterator aliasIt = aliasMap.find( fieldIt.key() );
@@ -63,30 +57,24 @@
{
attributeLineEdit->setText( aliasIt.value() );
}
- mAttributeGridLayout->addWidget( attributeLineEdit, layoutRowCounter, 1 );
+ mAttributeGridLayout->addWidget(( QWidget* )attributeLineEdit, layoutRowCounter, 1, 1, 1 );
++layoutRowCounter;
}
- attributeScrollArea->setWidget( attributeWidget );
+ //sort columns
+ QList< QPair<int, bool> >::const_iterator sortIt = sortColumns.constBegin();
+ for ( ; sortIt != sortColumns.constEnd(); ++sortIt )
+ {
+ QTreeWidgetItem* item = new QTreeWidgetItem();
+ item->setText( 0, fieldMap[sortIt->first].name() );
+ item->setData( 0, Qt::UserRole, sortIt->first );
+ item->setText( 1, sortIt->second ? tr( "Ascending" ) : tr( "Descending" ) );
+ mSortColumnTreeWidget->addTopLevelItem( item );
+ }
+ }
- QVBoxLayout* verticalLayout = new QVBoxLayout( this );
- verticalLayout->addWidget( attributeScrollArea );
-
- QHBoxLayout* selectClearLayout = new QHBoxLayout( this );
- QPushButton* mSelectAllButton = new QPushButton( tr( "Select all" ), this );
- QObject::connect( mSelectAllButton, SIGNAL( clicked() ), this, SLOT( selectAllAttributes() ) );
- QPushButton* mClearButton = new QPushButton( tr( "Clear" ), this );
- QObject::connect( mClearButton, SIGNAL( clicked() ), this, SLOT( clearAttributes() ) );
- selectClearLayout->addWidget( mSelectAllButton );
- selectClearLayout->addWidget( mClearButton );
- verticalLayout->addLayout( selectClearLayout );
-
-
- QDialogButtonBox* buttonBox = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this );
- QObject::connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) );
- QObject::connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) );
- verticalLayout->addWidget( buttonBox );
- }
+ mOrderComboBox->insertItem( 0, tr( "Ascending" ) );
+ mOrderComboBox->insertItem( 0, tr( "Descending" ) );
}
QgsAttributeSelectionDialog::~QgsAttributeSelectionDialog()
@@ -149,12 +137,28 @@
return result;
}
-void QgsAttributeSelectionDialog::selectAllAttributes()
+QList< QPair<int, bool> > QgsAttributeSelectionDialog::attributeSorting() const
{
+ QList< QPair<int, bool> > sortingList;
+
+ for ( int i = 0; i < mSortColumnTreeWidget->topLevelItemCount(); ++i )
+ {
+ QTreeWidgetItem* item = mSortColumnTreeWidget->topLevelItem( i );
+ if ( item )
+ {
+ sortingList.push_back( qMakePair( item->data( 0, Qt::UserRole ).toInt(), item->text( 1 ) == tr( "Ascending" ) ) );
+ }
+ }
+
+ return sortingList;
+}
+
+void QgsAttributeSelectionDialog::on_mSelectAllButton_clicked()
+{
setAllEnabled( true );
}
-void QgsAttributeSelectionDialog::clearAttributes()
+void QgsAttributeSelectionDialog::on_mClearButton_clicked()
{
setAllEnabled( false );
}
@@ -183,3 +187,48 @@
}
}
+void QgsAttributeSelectionDialog::on_mAddPushButton_clicked()
+{
+ QTreeWidgetItem* item = new QTreeWidgetItem();
+ item->setText( 0, mSortColumnComboBox->currentText() );
+ item->setData( 0, Qt::UserRole, mSortColumnComboBox->itemData( mSortColumnComboBox->currentIndex() ) );
+ item->setText( 1, mOrderComboBox->currentText() );
+ mSortColumnTreeWidget->addTopLevelItem( item );
+}
+
+void QgsAttributeSelectionDialog::on_mRemovePushButton_clicked()
+{
+ int currentIndex = mSortColumnTreeWidget->indexOfTopLevelItem( mSortColumnTreeWidget->currentItem() );
+ if ( currentIndex != -1 )
+ {
+ delete( mSortColumnTreeWidget->takeTopLevelItem( currentIndex ) );
+ }
+}
+
+void QgsAttributeSelectionDialog::on_mUpPushButton_clicked()
+{
+ int currentIndex = mSortColumnTreeWidget->indexOfTopLevelItem( mSortColumnTreeWidget->currentItem() );
+ if ( currentIndex != -1 )
+ {
+ if ( currentIndex > 0 )
+ {
+ QTreeWidgetItem* item = mSortColumnTreeWidget->takeTopLevelItem( currentIndex );
+ mSortColumnTreeWidget->insertTopLevelItem( currentIndex - 1, item );
+ mSortColumnTreeWidget->setCurrentItem( item );
+ }
+ }
+}
+
+void QgsAttributeSelectionDialog::on_mDownPushButton_clicked()
+{
+ int currentIndex = mSortColumnTreeWidget->indexOfTopLevelItem( mSortColumnTreeWidget->currentItem() );
+ if ( currentIndex != -1 )
+ {
+ if ( currentIndex < ( mSortColumnTreeWidget->topLevelItemCount() - 1 ) )
+ {
+ QTreeWidgetItem* item = mSortColumnTreeWidget->takeTopLevelItem( currentIndex );
+ mSortColumnTreeWidget->insertTopLevelItem( currentIndex + 1, item );
+ mSortColumnTreeWidget->setCurrentItem( item );
+ }
+ }
+}
Modified: trunk/qgis/src/app/composer/qgsattributeselectiondialog.h
===================================================================
--- trunk/qgis/src/app/composer/qgsattributeselectiondialog.h 2010-10-11 09:52:50 UTC (rev 14366)
+++ trunk/qgis/src/app/composer/qgsattributeselectiondialog.h 2010-10-11 13:13:29 UTC (rev 14367)
@@ -21,31 +21,37 @@
#include <QDialog>
#include <QMap>
#include <QSet>
+#include "ui_qgsattributeselectiondialogbase.h"
class QGridLayout;
class QgsVectorLayer;
class QPushButton;
/**A dialog to select what attributes to display (in the table item) and with the possibility to set different aliases*/
-class QgsAttributeSelectionDialog: public QDialog
+class QgsAttributeSelectionDialog: public QDialog, private Ui::QgsAttributeSelectionDialogBase
{
Q_OBJECT
public:
- QgsAttributeSelectionDialog( const QgsVectorLayer* vLayer, const QSet<int>& enabledAttributes, const QMap<int, QString>& aliasMap, QWidget * parent = 0, Qt::WindowFlags f = 0 );
+ QgsAttributeSelectionDialog( const QgsVectorLayer* vLayer, const QSet<int>& enabledAttributes, const QMap<int, QString>& aliasMap, const QList< QPair<int, bool> >& sortColumns, QWidget * parent = 0, Qt::WindowFlags f = 0 );
~QgsAttributeSelectionDialog();
/**Returns indices of selected attributes*/
QSet<int> enabledAttributes() const;
/**Returns alias map (alias might be different than for vector layer)*/
QMap<int, QString> aliasMap() const;
+ /**List of sorting attributes and ascending / descending (so sorting to multiple columns is possible)*/
+ QList< QPair<int, bool> > attributeSorting() const;
private slots:
- void selectAllAttributes();
- void clearAttributes();
+ void on_mSelectAllButton_clicked();
+ void on_mClearButton_clicked();
+ void on_mAddPushButton_clicked();
+ void on_mRemovePushButton_clicked();
+ void on_mUpPushButton_clicked();
+ void on_mDownPushButton_clicked();
private:
const QgsVectorLayer* mVectorLayer;
- QGridLayout* mAttributeGridLayout;
QPushButton* mSelectAllButton;
QPushButton* mClearButton;
Modified: trunk/qgis/src/app/composer/qgscomposertablewidget.cpp
===================================================================
--- trunk/qgis/src/app/composer/qgscomposertablewidget.cpp 2010-10-11 09:52:50 UTC (rev 14366)
+++ trunk/qgis/src/app/composer/qgscomposertablewidget.cpp 2010-10-11 13:13:29 UTC (rev 14367)
@@ -32,6 +32,8 @@
QgsComposerItemWidget* itemPropertiesWidget = new QgsComposerItemWidget( this, mComposerTable );
mToolBox->addItem( itemPropertiesWidget, tr( "General options" ) );
+ blockAllSignals( true );
+
//insert vector layers into combo
QMap<QString, QgsMapLayer*> layerMap = QgsMapLayerRegistry::instance()->mapLayers();
QMap<QString, QgsMapLayer*>::const_iterator mapIt = layerMap.constBegin();
@@ -46,6 +48,7 @@
}
//insert composer maps into combo
+ mLayerComboBox->blockSignals( true );
if ( mComposerTable )
{
const QgsComposition* tableComposition = mComposerTable->composition();
@@ -60,8 +63,10 @@
}
}
}
+ mLayerComboBox->blockSignals( false );
updateGuiElements();
+ blockAllSignals( false );
if ( mComposerTable )
{
@@ -108,12 +113,13 @@
return;
}
- QgsAttributeSelectionDialog d( mComposerTable->vectorLayer(), mComposerTable->displayAttributes(), mComposerTable->fieldAliasMap(), 0 );
+ QgsAttributeSelectionDialog d( mComposerTable->vectorLayer(), mComposerTable->displayAttributes(), mComposerTable->fieldAliasMap(), mComposerTable->sortAttributes(), 0 );
if ( d.exec() == QDialog::Accepted )
{
//change displayAttributes and aliases
mComposerTable->setDisplayAttributes( d.enabledAttributes() );
mComposerTable->setFieldAliasMap( d.aliasMap() );
+ mComposerTable->setSortAttributes( d.attributeSorting() );
mComposerTable->update();
}
}
Modified: trunk/qgis/src/core/composer/qgscomposerattributetable.cpp
===================================================================
--- trunk/qgis/src/core/composer/qgscomposerattributetable.cpp 2010-10-11 09:52:50 UTC (rev 14366)
+++ trunk/qgis/src/core/composer/qgscomposerattributetable.cpp 2010-10-11 13:13:29 UTC (rev 14367)
@@ -20,6 +20,29 @@
#include "qgsmaplayerregistry.h"
#include "qgsvectorlayer.h"
+QgsComposerAttributeTableCompare::QgsComposerAttributeTableCompare(): mCurrentSortColumn( 0 ), mAscending( true )
+{
+}
+
+
+bool QgsComposerAttributeTableCompare::operator()( const QgsAttributeMap& m1, const QgsAttributeMap& m2 )
+{
+ QVariant v1 = m1[mCurrentSortColumn];
+ QVariant v2 = m2[mCurrentSortColumn];
+
+ bool less = false;
+ if ( v1.type() == QVariant::String && v2.type() == QVariant::String )
+ {
+ less = v1.toString() < v2.toString();
+ }
+ else
+ {
+ less = v1.toDouble() < v2.toDouble();
+ }
+ return ( mAscending ? less : !less );
+}
+
+
QgsComposerAttributeTable::QgsComposerAttributeTable( QgsComposition* composition ): QgsComposerTable( composition ), mVectorLayer( 0 ), mComposerMap( 0 ), \
mMaximumNumberOfFeatures( 5 ), mShowOnlyVisibleFeatures( true )
{
@@ -110,6 +133,15 @@
attributes.push_back( f.attributeMap() );
++counter;
}
+
+ //sort the list, starting with the last attribute
+ QgsComposerAttributeTableCompare c;
+ for ( int i = mSortInformation.size() - 1; i >= 0; --i )
+ {
+ c.setSortColumn( mSortInformation.at( i ).first );
+ c.setAscending( mSortInformation.at( i ).second );
+ qStableSort( attributes.begin(), attributes.end(), c );
+ }
return true;
}
@@ -212,8 +244,20 @@
aliasMapElem.appendChild( mapEntryElem );
}
composerTableElem.appendChild( aliasMapElem );
+
+ //sort info
+ QDomElement sortColumnsElem = doc.createElement( "sortColumns" );
+ QList< QPair<int, bool> >::const_iterator sortIt = mSortInformation.constBegin();
+ for ( ; sortIt != mSortInformation.constEnd(); ++sortIt )
+ {
+ QDomElement columnElem = doc.createElement( "column" );
+ columnElem.setAttribute( "index", QString::number( sortIt->first ) );
+ columnElem.setAttribute( "ascending", sortIt->second == true ? "true" : "false" );
+ sortColumnsElem.appendChild( columnElem );
+ }
+ composerTableElem.appendChild( sortColumnsElem );
+ elem.appendChild( composerTableElem );
bool ok = tableWriteXML( composerTableElem, doc );
- elem.appendChild( composerTableElem );
return ok;
}
@@ -291,5 +335,20 @@
mFieldAliasMap.insert( key, value );
}
}
+
+ //restore sort columns
+ mSortInformation.clear();
+ QDomElement sortColumnsElem = itemElem.firstChildElement( "sortColumns" );
+ if ( !sortColumnsElem.isNull() )
+ {
+ QDomNodeList columns = sortColumnsElem.elementsByTagName( "column" );
+ for ( int i = 0; i < columns.size(); ++i )
+ {
+ QDomElement columnElem = columns.at( i ).toElement();
+ int attribute = columnElem.attribute( "index" ).toInt();
+ bool ascending = columnElem.attribute( "ascending" ) == "true" ? true : false;
+ mSortInformation.push_back( qMakePair( attribute, ascending ) );
+ }
+ }
return tableReadXML( itemElem, doc );
}
Modified: trunk/qgis/src/core/composer/qgscomposerattributetable.h
===================================================================
--- trunk/qgis/src/core/composer/qgscomposerattributetable.h 2010-10-11 09:52:50 UTC (rev 14366)
+++ trunk/qgis/src/core/composer/qgscomposerattributetable.h 2010-10-11 13:13:29 UTC (rev 14367)
@@ -23,6 +23,19 @@
class QgsComposerMap;
class QgsVectorLayer;
+/**Helper class for sorting, takes into account sorting column and ascending / descending*/
+class QgsComposerAttributeTableCompare
+{
+ public:
+ QgsComposerAttributeTableCompare();
+ bool operator()( const QgsAttributeMap& m1, const QgsAttributeMap& m2 );
+ void setSortColumn( int col ) { mCurrentSortColumn = col; }
+ void setAscending( bool asc ) { mAscending = asc; }
+ private:
+ int mCurrentSortColumn;
+ bool mAscending;
+};
+
/**A table class that displays a vector attribute table*/
class CORE_EXPORT QgsComposerAttributeTable: public QgsComposerTable
{
@@ -58,6 +71,9 @@
/**Adapts mMaximumNumberOfFeatures depending on the rectangle height*/
void setSceneRect( const QRectF& rectangle );
+ void setSortAttributes( const QList<QPair<int, bool> > att ) { mSortInformation = att; }
+ QList<QPair<int, bool> > sortAttributes() const { return mSortInformation; }
+
protected:
/**Retrieves feature attributes*/
bool getFeatureAttributes( QList<QgsAttributeMap>& attributes );
@@ -79,6 +95,9 @@
/**Map of attribute name aliases. The aliases might be different to those of QgsVectorLayer (but those from the vector layer are the default)*/
QMap<int, QString> mFieldAliasMap;
+ /**Contains information about sort attribute index / ascending (true/false). First entry has the highest priority*/
+ QList< QPair<int, bool> > mSortInformation;
+
/**Inserts aliases from vector layer as starting configuration to the alias map*/
void initializeAliasMap();
/**Returns the attribute name to display in the item (attribute name or an alias if present)*/
Added: trunk/qgis/src/ui/qgsattributeselectiondialogbase.ui
===================================================================
--- trunk/qgis/src/ui/qgsattributeselectiondialogbase.ui (rev 0)
+++ trunk/qgis/src/ui/qgsattributeselectiondialogbase.ui 2010-10-11 13:13:29 UTC (rev 14367)
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>QgsAttributeSelectionDialogBase</class>
+ <widget class="QDialog" name="QgsAttributeSelectionDialogBase">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>322</width>
+ <height>283</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Select attributes</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0" colspan="3">
+ <layout class="QGridLayout" name="mAttributeGridLayout">
+ <property name="sizeConstraint">
+ <enum>QLayout::SetDefaultConstraint</enum>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="mAttributeLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string><b>Attribute</b></string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="mAliasLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string><b>Alias</b></string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::AutoText</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="mSelectAllButton">
+ <property name="text">
+ <string>Select all</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPushButton" name="mClearButton">
+ <property name="text">
+ <string>Clear</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>131</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="0" colspan="3">
+ <widget class="QGroupBox" name="mSortingGroupBox">
+ <property name="title">
+ <string>Sorting</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0" colspan="2">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QPushButton" name="mUpPushButton">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset resource="../../images/images.qrc">
+ <normaloff>:/images/themes/default/symbologyUp.png</normaloff>:/images/themes/default/symbologyUp.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="mDownPushButton">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset resource="../../images/images.qrc">
+ <normaloff>:/images/themes/default/symbologyDown.png</normaloff>:/images/themes/default/symbologyDown.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="mAddPushButton">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset resource="../../images/images.qrc">
+ <normaloff>:/images/themes/default/symbologyAdd.png</normaloff>:/images/themes/default/symbologyAdd.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="mRemovePushButton">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset resource="../../images/images.qrc">
+ <normaloff>:/images/themes/default/symbologyRemove.png</normaloff>:/images/themes/default/symbologyRemove.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="0">
+ <widget class="QComboBox" name="mSortColumnComboBox"/>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="mOrderComboBox"/>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QTreeWidget" name="mSortColumnTreeWidget">
+ <column>
+ <property name="text">
+ <string>Column</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Ascending</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="3">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="../../images/images.qrc"/>
+ </resources>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>QgsAttributeSelectionDialogBase</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>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>QgsAttributeSelectionDialogBase</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>
More information about the QGIS-commit
mailing list