QGIS API Documentation  2.8.2-Wien
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
qgsattributeform.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsattributeform.h
3  --------------------------------------
4  Date : 3.5.2014
5  Copyright : (C) 2014 Matthias Kuhn
6  Email : matthias dot kuhn at gmx dot ch
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSATTRIBUTEFORM_H
17 #define QGSATTRIBUTEFORM_H
18 
19 #include "qgsfeature.h"
20 #include "qgsvectorlayer.h"
21 #include "qgseditorwidgetwrapper.h"
23 
24 #include <QWidget>
25 #include <QDialogButtonBox>
26 
28 
29 class GUI_EXPORT QgsAttributeForm : public QWidget
30 {
31  Q_OBJECT
32 
33  public:
34  explicit QgsAttributeForm( QgsVectorLayer* vl, const QgsFeature &feature = QgsFeature(), const QgsAttributeEditorContext& context = QgsAttributeEditorContext(), QWidget *parent = 0 );
36 
37  const QgsFeature& feature() { return mFeature; }
38 
42  void hideButtonBox();
43 
47  void showButtonBox();
48 
53  void disconnectButtonBox();
54 
59  void addInterface( QgsAttributeFormInterface* iface );
60 
66  QgsVectorLayer* layer() { return mLayer; }
67 
73  bool editable();
74 
82  void setIsAddDialog( bool isAddDialog );
83 
89  void setEditCommandMessage( const QString& message ) { mEditCommandMessage = message; }
90 
99  bool eventFilter( QObject* object, QEvent* event ) override;
100 
101  signals:
108  void attributeChanged( QString attribute, const QVariant& value );
109 
118  void beforeSave( bool& ok );
119 
123  void featureSaved( const QgsFeature& feature );
124 
125  public slots:
132  void changeAttribute( const QString& field, const QVariant& value );
133 
139  void setFeature( const QgsFeature& feature );
140 
146  bool save();
147 
153  Q_DECL_DEPRECATED void accept() { save(); }
154 
160  Q_DECL_DEPRECATED void reject() { resetValues(); }
161 
165  void resetValues();
166 
167  private slots:
168  void onAttributeChanged( const QVariant& value );
169  void onAttributeAdded( int idx );
170  void onAttributeDeleted( int idx );
171 
172  void synchronizeEnabledState();
173 
174  private:
175  void init();
176 
177  void cleanPython();
178 
179  void initPython();
180 
181  QWidget* createWidgetFromDef( const QgsAttributeEditorElement* widgetDef, QWidget* parent, QgsVectorLayer* vl, QgsAttributeEditorContext& context, QString& labelText, bool& labelOnTop );
182 
183  void addWidgetWrapper( QgsEditorWidgetWrapper* eww );
184 
189  void createWrappers();
190  void connectWrappers();
191 
192  QgsVectorLayer* mLayer;
193  QgsFeature mFeature;
194  QList<QgsWidgetWrapper*> mWidgets;
195  QgsAttributeEditorContext mContext;
196  QDialogButtonBox* mButtonBox;
197  QList<QgsAttributeFormInterface*> mInterfaces;
198 
199  // Variables below are used for python
200  static int sFormCounter;
201  int mFormNr;
202  QString mPyFormVarName;
203 
205  bool mIsSaving;
206  bool mIsAddDialog;
207 
208  QString mEditCommandMessage;
209 };
210 
211 #endif // QGSATTRIBUTEFORM_H