From a4758ff01f914b6327cb773dfb958fc1874d3782 Mon Sep 17 00:00:00 2001 From: jef Date: Tue, 17 Nov 2009 18:47:47 +0000 Subject: [PATCH] add support for multiline edit widget git-svn-id: http://svn.osgeo.org/qgis/trunk@12165 c8812cc2-4d05-0410-92ff-de0c093fc19c --- python/core/qgsvectorlayer.sip | 4 +++- src/app/qgsattributeeditor.cpp | 8 +++++-- src/app/qgsattributetypedialog.cpp | 9 ++++++-- src/app/qgsvectorlayerproperties.cpp | 1 + src/core/qgsvectorlayer.h | 33 ++++++++++++++------------- src/ui/qgsattributetypeedit.ui | 34 +++++++++++++++++++++++++++- 6 files changed, 67 insertions(+), 22 deletions(-) diff --git a/python/core/qgsvectorlayer.sip b/python/core/qgsvectorlayer.sip index 1874c31a989..caf510fa2cc 100644 --- a/python/core/qgsvectorlayer.sip +++ b/python/core/qgsvectorlayer.sip @@ -16,7 +16,9 @@ public: CheckBox, /* @note added in 1.4 */ FileName, Enumeration, /* @note added in 1.4 */ - Immutable /* @note added in 1.4 */ + Immutable, /* @note added in 1.4 */ + Hidden, /* @note added in 1.4 */ + TextEdit /* @note added in 1.4 */ }; struct RangeData { diff --git a/src/app/qgsattributeeditor.cpp b/src/app/qgsattributeeditor.cpp index 9fc49489117..8c73acdf2ec 100644 --- a/src/app/qgsattributeeditor.cpp +++ b/src/app/qgsattributeeditor.cpp @@ -242,7 +242,7 @@ QWidget *QgsAttributeEditor::createAttributeEditor( QWidget *parent, QWidget *ed if ( editor ) cb = qobject_cast( editor ); else - cb = new QCheckBox(); + cb = new QCheckBox( parent ); if ( cb ) { @@ -254,8 +254,8 @@ QWidget *QgsAttributeEditor::createAttributeEditor( QWidget *parent, QWidget *ed // fall-through case QgsVectorLayer::LineEdit: + case QgsVectorLayer::TextEdit: case QgsVectorLayer::UniqueValuesEditable: - default: { QLineEdit *le = NULL; QTextEdit *te = NULL; @@ -267,6 +267,10 @@ QWidget *QgsAttributeEditor::createAttributeEditor( QWidget *parent, QWidget *ed te = qobject_cast( editor ); pte = qobject_cast( editor ); } + else if ( editType == QgsVectorLayer::TextEdit ) + { + pte = new QPlainTextEdit( parent ); + } else { le = new QLineEdit( parent ); diff --git a/src/app/qgsattributetypedialog.cpp b/src/app/qgsattributetypedialog.cpp index 6c3b98b4c6e..1bcb4b34f0d 100644 --- a/src/app/qgsattributetypedialog.cpp +++ b/src/app/qgsattributetypedialog.cpp @@ -249,6 +249,9 @@ void QgsAttributeTypeDialog::setPageForEditType( QgsVectorLayer::EditType editTy setPage( 9 ); break; + case QgsVectorLayer::TextEdit: + setPage( 10 ); + case QgsVectorLayer::LineEdit: setPage( 0 ); break; @@ -459,6 +462,7 @@ void QgsAttributeTypeDialog::accept() //store data to output variables switch ( selectionComboBox->currentIndex() ) { + default: case 0: mEditType = QgsVectorLayer::LineEdit; break; @@ -530,8 +534,9 @@ void QgsAttributeTypeDialog::accept() case 9: mEditType = QgsVectorLayer::CheckBox; break; - default: - mEditType = QgsVectorLayer::LineEdit; + case 10: + mEditType = QgsVectorLayer::TextEdit; + break; } QDialog::accept(); diff --git a/src/app/qgsvectorlayerproperties.cpp b/src/app/qgsvectorlayerproperties.cpp index 6eb7e0b5030..747e3ae8a22 100644 --- a/src/app/qgsvectorlayerproperties.cpp +++ b/src/app/qgsvectorlayerproperties.cpp @@ -579,6 +579,7 @@ void QgsVectorLayerProperties::setupEditTypes() editTypeMap.insert( QgsVectorLayer::Immutable, tr( "Immutable" ) ); editTypeMap.insert( QgsVectorLayer::Hidden, tr( "Hidden" ) ); editTypeMap.insert( QgsVectorLayer::CheckBox, tr( "Checkbox" ) ); + editTypeMap.insert( QgsVectorLayer::TextEdit, tr( "Text edit" ) ); } QString QgsVectorLayerProperties::editTypeButtonText( QgsVectorLayer::EditType type ) diff --git a/src/core/qgsvectorlayer.h b/src/core/qgsvectorlayer.h index 2a72c399f3e..364c8220e02 100644 --- a/src/core/qgsvectorlayer.h +++ b/src/core/qgsvectorlayer.h @@ -55,12 +55,12 @@ typedef QSet QgsAttributeIds; class QgsLabelingEngineInterface { -public: - virtual ~QgsLabelingEngineInterface() {} - virtual int prepareLayer(QgsVectorLayer* layer, int& attrIndex) = 0; - virtual void registerFeature(QgsVectorLayer* layer, QgsFeature& feat) = 0; - //void calculateLabeling() = 0; - //void drawLabeling(QgsRenderContext& context) = 0; + public: + virtual ~QgsLabelingEngineInterface() {} + virtual int prepareLayer( QgsVectorLayer* layer, int& attrIndex ) = 0; + virtual void registerFeature( QgsVectorLayer* layer, QgsFeature& feat ) = 0; + //void calculateLabeling() = 0; + //void drawLabeling(QgsRenderContext& context) = 0; }; @@ -86,7 +86,8 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer FileName, Enumeration, Immutable, /*The attribute value should not be changed in the attribute form*/ - Hidden /*The attribute value should not be shown in the attribute form @added in 1.4 */ + Hidden, /*The attribute value should not be shown in the attribute form @added in 1.4 */ + TextEdit /*multiline edit @added in 1.4*/ }; struct RangeData @@ -176,15 +177,15 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer /** Sets the renderer. If a renderer is already present, it is deleted */ void setRenderer( QgsRenderer * r ); - + /** Return renderer V2. Added in QGIS 1.4 */ QgsFeatureRendererV2* rendererV2(); /** Set renderer V2. Added in QGIS 1.4 */ - void setRendererV2(QgsFeatureRendererV2* r); + void setRendererV2( QgsFeatureRendererV2* r ); /** Return whether using renderer V2. Added in QGIS 1.4 */ bool isUsingRendererV2(); /** set whether to use renderer V2 for drawing. Added in QGIS 1.4 */ - void setUsingRendererV2(bool usingRendererV2); + void setUsingRendererV2( bool usingRendererV2 ); /** Draw layer with renderer V2. Added in QGIS 1.4 */ void drawRendererV2( QgsRenderContext& rendererContext, bool labeling ); @@ -362,7 +363,7 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer bool hasLabelsEnabled( void ) const; /** Assign a custom labeling engine with layer. Added in v1.4 */ - void setLabelingEngine(QgsLabelingEngineInterface* engine); + void setLabelingEngine( QgsLabelingEngineInterface* engine ); /** Returns true if the provider is in editing mode */ virtual bool isEditable() const; @@ -477,10 +478,10 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer /**set edit type*/ void setEditType( int idx, EditType edit ); - + /** set string representing 'true' for a checkbox (added in 1.4) */ void setCheckedState( int idx, QString checked, QString notChecked ); - + /** return string representing 'true' for a checkbox (added in 1.4) */ QPair checkedState( int idx ); @@ -736,10 +737,10 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer /** Renderer object which holds the information about how to display the features */ QgsRenderer *mRenderer; - + /** Renderer V2 */ QgsFeatureRendererV2 *mRendererV2; - + /** whether to use V1 or V2 renderer */ bool mUsingRendererV2; @@ -769,7 +770,7 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer QMap< QString, EditType > mEditTypes; QMap< QString, QMap > mValueMaps; QMap< QString, RangeData > mRanges; - QMap< QString, QPair > mCheckedStates; + QMap< QString, QPair > mCheckedStates; QString mEditForm; bool mFetching; diff --git a/src/ui/qgsattributetypeedit.ui b/src/ui/qgsattributetypeedit.ui index 0028382e1bc..8efb62445b9 100644 --- a/src/ui/qgsattributetypeedit.ui +++ b/src/ui/qgsattributetypeedit.ui @@ -66,6 +66,11 @@ Checkbox + + + Text edit + + @@ -77,7 +82,7 @@ - 9 + 0 @@ -544,6 +549,33 @@ + + + + + + A text edit field that accepts multiple lines will be used. + + + true + + + + + + + Qt::Vertical + + + + 20 + 302 + + + + + +