QGIS/python/gui/qgsrelationeditorwidget.sip
Matthias Kuhn be01b7eec5 [FEATURE] Add N:M relation editing possibilities
This adds the possibility to manage data on a normalized relational
database in N:M relations. On the relation editor in a form, the tools
to add, delete, link and unlink work (also) on the linking table if a
relation is visualized as N:M relation.

Configuration is done through the fields tab where on the relation a
second relation can be chosen (if there is a suitable relation in terms
of a second relation on the linking table).

Limitations
===========

QGIS is not a database management system.

It is based on assumptions about the underlying database system. In
particular it expects

 * A `ON DELETE CASCADE` or similar measure on the second relation
 * Does not take care of setting the primary key when adding features.
   Either users need to be instructed to set them manually or - if it's a
   database derived value - the layers need to be in transaction mode
   (currently only activatable through the API)
2015-12-08 15:49:01 +01:00

69 lines
2.4 KiB
Plaintext

/***************************************************************************
qgsrelationeditorwidget.sip
--------------------------------------
Date : 28.11.2015
Copyright : (C) 2015 Matthias Kuhn
Email : matthias at opengis dot ch
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
%ModuleCode
#include "qgsrelationeditorwidget.h"
%End
class QgsRelationEditorWidget : QgsCollapsibleGroupBox
{
%TypeHeaderCode
#include <qgsrelationeditorwidget.h>
%End
%ConvertToSubClassCode
if ( qobject_cast<QgsRelationEditorWidget*>( sipCpp ) )
sipType = sipType_QgsRelationEditorWidget;
else
sipType = 0;
%End
public:
/**
* @param parent parent widget
*/
QgsRelationEditorWidget( QWidget* parent /TransferThis/= 0 );
//! Define the view mode for the dual view
void setViewMode( QgsDualView::ViewMode mode );
//! Get the view mode for the dual view
QgsDualView::ViewMode viewMode();
void setRelationFeature( const QgsRelation& relation, const QgsFeature& feature );
/**
* Set the relation(s) for this widget
* If only one relation is set, it will act as a simple 1:N relation widget
* If both relations are set, it will act as an N:M relation widget
* inserting and deleting entries on the intermediate table as required.
*
* @param relation Relation referencing the edited table
* @param nmrelation Optional reference from the referencing table to a 3rd N:M table
*/
void setRelations( const QgsRelation& relation, const QgsRelation& nmrelation );
void setFeature( const QgsFeature& feature );
void setEditorContext( const QgsAttributeEditorContext& context );
/**
* The feature selection manager is responsible for the selected features
* which are currently being edited.
*/
QgsIFeatureSelectionManager* featureSelectionManager();
};