From 2432094a5657b14fe16b15c45e30809d3d9c3a33 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Tue, 2 May 2023 16:00:55 +0200 Subject: [PATCH 01/14] Allow editing of newly added join features --- demo_projects/bee_farming.gpkg | Bin 184320 -> 184320 bytes demo_projects/bee_farming.qgs | 25 +++++++------- demo_projects/bee_farming_attachments.zip | Bin 2113 -> 2113 bytes .../core/features_model.py | 11 +++--- .../gui/linking_child_manager_dialog.py | 32 ++++++++++++++++++ .../gui/linking_relation_editor_widget.py | 15 ++++++-- 6 files changed, 65 insertions(+), 18 deletions(-) diff --git a/demo_projects/bee_farming.gpkg b/demo_projects/bee_farming.gpkg index 8dd246e4506c9cbf167a2fef5483fcfb7f6e95ae..dc04128411c77029f7f400fe01a5479b3186f16a 100644 GIT binary patch delta 363 zcmXYmu`dH*7>B>_y~AmnzHL%L42_1($MsyV*Ctd93^i2P&uM!i5fO5Oh}1>ICQ9TZ zk+l8-j^Q?%7!;ihHi<|lld&5Teovm^$#19X->Lc!`@$JQ2>bPaa8(`}r5Sf2!omqA zEA#PqT2<4EHmu93<2|OMqR-2EIw7ZJeK;X&Hw~u6dR|EjKhi{MMF0Q* delta 419 zcmZ9_ze^)g5C`!0CZZby85i|Du@L-$jZb&qd)c>}!ju+TDA;dyb6F6M;~=CsRFWui z%@Ho7cnU(izaRvQ?bOcSjfLI8VQHg(g28x=1H3sUa;Mm z7j&+ZA7Q3smb+oQS!rbjU*H+5xzAke?S!3`&VrEk$t`oHKIcdhSsy;(KkVQs*0GF- z$Z)Mw8^-36Z;k*y5cB_&w>h0`=5tdN_R4--_US{8CiH5Hu2A@S(4zXF1z!!o3c)k1 zoS4-T>Pj2-4M^7sE~o3A+HQKV<|GD4ZEUMV^q(vEwCI<<7Ym!klE38^0v>#cII{!W zW6};h<|!_ja%5yjZYYaZW=CH=Q>A~kL3AbBlZ=m2Br-Az9nK0$bR~xuS!gT4+)yY> zc^(%Lf0ypspyIxBxbLS0y?zN}`rLp~{p|uK_0c6L{dcezA88nO?>~SB@y#`iQzJhx S;m;a-LN`({6A#_OOX3wKes + Simple Bee Farming Demo - + @@ -115,10 +115,10 @@ meters - 957929.63294554990716279 - 5862860.31842787750065327 - 958853.91945121390745044 - 5863280.68026205152273178 + 955230.50237378210294992 + 5863073.17550766747444868 + 961441.30490439583081752 + 5865897.82384689804166555 0 @@ -2298,7 +2298,7 @@ def my_form_open(dialog, layer, feature): - + @@ -2545,9 +2545,9 @@ def my_form_open(dialog, layer, feature): + - @@ -3363,8 +3363,8 @@ def my_form_open(dialog, layer, feature): - - + + 0 @@ -5117,6 +5117,7 @@ def my_form_open(dialog, layer, feature): None + false false OPENGIS.ch @@ -6440,7 +6441,7 @@ def my_form_open(dialog, layer, feature): - + PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]] +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs @@ -6505,7 +6506,7 @@ def my_form_open(dialog, layer, feature): - + diff --git a/demo_projects/bee_farming_attachments.zip b/demo_projects/bee_farming_attachments.zip index d30bb393efb596f1523703a8b9fb7ed82ce9a99f..50e6f7b1bf200b2839bb3bb7ef11c52044f280d6 100644 GIT binary patch delta 47 wcmX>oa8Q6Zz?+#xgn@~HgQ2u)(MH}`%*;S~^D1UR77%0dK6Yy`{fFHZ06Ja{`v3p{ delta 47 wcmX>oa8Q6Zz?+#xgn@~HgF$~?=SJRH%*;S~^D1UR77%0dK6Yy`{fFHZ04+QYPXGV_ diff --git a/linking_relation_editor/core/features_model.py b/linking_relation_editor/core/features_model.py index 26858bf..629f80b 100644 --- a/linking_relation_editor/core/features_model.py +++ b/linking_relation_editor/core/features_model.py @@ -39,6 +39,7 @@ def __init__(self, feature: QgsFeature, featureState, layer: QgsVectorLayer): self._featureState = featureState self._layer = layer self._displayString = QgsVectorLayerUtils.getFeatureDisplayString(layer, feature) + self._joinFeature = None def feature(self): return self._feature @@ -75,6 +76,12 @@ def tool_tip(self): return QgsExpression.replaceExpressionText(self._layer.mapTipTemplate(), subContext) + def join_feature(self): + return self._joinFeature + + def set_join_feature(self, joinFeature): + self._joinFeature = joinFeature + def __init__(self, features, featureState, layer: QgsVectorLayer, parent: QObject = None): super().__init__(parent) @@ -86,7 +93,6 @@ def rowCount(self, index: QModelIndex = ...) -> int: return len(self._modelFeatures) def data(self, index: QModelIndex, role: int = ...): - if not index.isValid(): return None @@ -105,7 +111,6 @@ def data(self, index: QModelIndex, role: int = ...): return None def removeRows(self, row: int = ..., count: int = ..., index: QModelIndex = ...): - if row + count > self.rowCount(): return False @@ -142,7 +147,6 @@ def take_all_items(self): return featureModelElements def take_item(self, index: QModelIndex): - if not index.isValid(): return None @@ -154,7 +158,6 @@ def take_item(self, index: QModelIndex): return feature def take_items(self, indexes): - if not indexes: return [] diff --git a/linking_relation_editor/gui/linking_child_manager_dialog.py b/linking_relation_editor/gui/linking_child_manager_dialog.py index b055335..743978c 100644 --- a/linking_relation_editor/gui/linking_child_manager_dialog.py +++ b/linking_relation_editor/gui/linking_child_manager_dialog.py @@ -14,6 +14,7 @@ QgsApplication, QgsFeature, QgsFeatureRequest, + QgsGeometry, QgsRelation, QgsVectorLayer, QgsVectorLayerUtils, @@ -505,9 +506,40 @@ def _updateFeaturesTreeWidgetRight(self): request = self._nmRelation.getRelatedFeaturesRequest(featureItem.feature()) for jfeature in joinLayer.getFeatures(request): joinFeature = jfeature + break + else: + treeWidgetItem.setExpanded(True) + + # Expression context for the linking table + context = joinLayer.createExpressionContext() + joinFeature = QgsVectorLayerUtils.createFeature(joinLayer, QgsGeometry(), {}, context) + + # Fields of the linking table + fields = joinLayer.fields() + + if self._relation.type() == QgsRelation.Generated: + polyRel = self._relation.polymorphicRelation() + assert polyRel.isValid() + + joinFeature[fields.indexFromName(polyRel.referencedLayerField())] = polyRel.layerRepresentation( + self.relation().referencedLayer() + ) + + for referencingField, referencedField in self._relation.fieldPairs().items(): + index = fields.indexOf(referencingField) + joinFeature[index] = self._parentFeature.attribute(referencedField) + + for referencingField, referencedField in self._nmRelation.fieldPairs().items(): + index = fields.indexOf(referencingField) + joinFeature[index] = featureItem.feature().attribute(referencedField) + + featureItem.set_join_feature(joinFeature) attributeForm = QgsAttributeForm(joinLayer, joinFeature) + if featureItem.feature_state() == FeaturesModel.FeatureState.ToBeLinked: + attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) + self.mFeaturesTreeWidgetRight.setItemWidget(treeWidgetItemChildren, 0, attributeForm) self._featureFormWidgets.append(attributeForm) diff --git a/linking_relation_editor/gui/linking_relation_editor_widget.py b/linking_relation_editor/gui/linking_relation_editor_widget.py index 33c4ca3..24b7e38 100644 --- a/linking_relation_editor/gui/linking_relation_editor_widget.py +++ b/linking_relation_editor/gui/linking_relation_editor_widget.py @@ -44,6 +44,7 @@ FilteredSelectionManager, ) from linking_relation_editor.gui.linking_child_manager_dialog import ( + CONFIG_SHOW_AND_EDIT_JOIN_TABLE_ATTRIBUTES, LinkingChildManagerDialog, ) @@ -797,9 +798,19 @@ def _featureList(self): def _relationEditorLinkChildManagerDialogAccepted(self): relationEditorLinkChildManagerDialog = self.sender() - # Link/unlink features + # Unlink features self.unlinkFeatures(relationEditorLinkChildManagerDialog.get_feature_ids_to_unlink()) - self._linkFeatures(relationEditorLinkChildManagerDialog.get_feature_ids_to_link()) + + # If "show and edit join table attributes" is activated, the link is done in the linking childe manager dialog + if self.mLinkingChildManagerDialogConfig.get(CONFIG_SHOW_AND_EDIT_JOIN_TABLE_ATTRIBUTES, False): + self.updateUi() + + # relatedFeaturesChanged available since QGIS 3.24 + if Qgis.QGIS_VERSION_INT >= 32400: + self.relatedFeaturesChanged.emit() + else: + # Link features + self._linkFeatures(relationEditorLinkChildManagerDialog.get_feature_ids_to_link()) relationEditorLinkChildManagerDialog.deleteLater() From d1f265295016098a915186143fc0edfbb6a943a1 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Tue, 2 May 2023 16:33:26 +0200 Subject: [PATCH 02/14] remove unused code --- linking_relation_editor/core/features_model.py | 7 ------- .../gui/linking_child_manager_dialog.py | 2 -- 2 files changed, 9 deletions(-) diff --git a/linking_relation_editor/core/features_model.py b/linking_relation_editor/core/features_model.py index 629f80b..dd98859 100644 --- a/linking_relation_editor/core/features_model.py +++ b/linking_relation_editor/core/features_model.py @@ -39,7 +39,6 @@ def __init__(self, feature: QgsFeature, featureState, layer: QgsVectorLayer): self._featureState = featureState self._layer = layer self._displayString = QgsVectorLayerUtils.getFeatureDisplayString(layer, feature) - self._joinFeature = None def feature(self): return self._feature @@ -76,12 +75,6 @@ def tool_tip(self): return QgsExpression.replaceExpressionText(self._layer.mapTipTemplate(), subContext) - def join_feature(self): - return self._joinFeature - - def set_join_feature(self, joinFeature): - self._joinFeature = joinFeature - def __init__(self, features, featureState, layer: QgsVectorLayer, parent: QObject = None): super().__init__(parent) diff --git a/linking_relation_editor/gui/linking_child_manager_dialog.py b/linking_relation_editor/gui/linking_child_manager_dialog.py index 743978c..c81f49e 100644 --- a/linking_relation_editor/gui/linking_child_manager_dialog.py +++ b/linking_relation_editor/gui/linking_child_manager_dialog.py @@ -533,8 +533,6 @@ def _updateFeaturesTreeWidgetRight(self): index = fields.indexOf(referencingField) joinFeature[index] = featureItem.feature().attribute(referencedField) - featureItem.set_join_feature(joinFeature) - attributeForm = QgsAttributeForm(joinLayer, joinFeature) if featureItem.feature_state() == FeaturesModel.FeatureState.ToBeLinked: From 63a9a986954abc0d93b3d855184ffa5b5bcccfb5 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Tue, 2 May 2023 17:07:56 +0200 Subject: [PATCH 03/14] Some doc --- README.md | 22 +++++++++++++++--- .../ConfigurationCardinalityOneToOne.png | Bin 0 -> 23054 bytes ...gurationShowAndEditJoinTableAttributes.png | Bin 0 -> 7898 bytes 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 documentation/ConfigurationCardinalityOneToOne.png create mode 100644 documentation/ConfigurationShowAndEditJoinTableAttributes.png diff --git a/README.md b/README.md index 2a81309..06ae224 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,28 @@ -## Linking Relation Editor plugin for QGIS +Linking Relation Editor plugin for QGIS +======================================= This plugin provides a relation editor widget with an alternative linking dialog that looks somewhat like a link manager dialog. features can be linked and unlinked by moving them left and right. The effective link is created or destroyed when the dialog is accepted. ![Peek 2022-11-24 15-48](https://user-images.githubusercontent.com/9881900/203868099-90d8ceae-cbb9-488b-9564-b60930e0f82e.gif) -### Configuration +# Configuration -In the attribute form configuration select `Linking relation editor widget` as widget type for a relation: +In the attribute form configuration select `Linking relation editor widget` as widget type for a relation. The most options are the same as for the stock QGIS Relation Editor Widget, see the related [documentation](https://docs.qgis.org/3.28/en/docs/user_manual/working_with_vector/vector_properties.html). ![image](https://user-images.githubusercontent.com/9881900/204229315-1f77d01f-1c00-4574-8ea5-0bcf0e804e6f.png) + + +## One to one relationship + +Linking can be restricted to one linked feature per feature by setting the Cardinality combobox to `One to one relation`. + +![Configuration cardinality one to one](documentation/ConfigurationCardinalityOneToOne.png) + + +## Show and edit join table attributes + +When this option is enabled, the link manager dialog will show the linked features in a tree structure instead of a simple list. The tree elements can be expanded to show the attribute form of the join feature. That attribute form can be configured as usual in the layer properties of the join layer. +**Note:** If a feature is not respecting the constraints it will not be linked/modified when the dialog is accepted. Other features with valid attributes will still be linked. + +![Configuration show and edit join table attributes](documentation/ConfigurationShowAndEditJoinTableAttributes.png) diff --git a/documentation/ConfigurationCardinalityOneToOne.png b/documentation/ConfigurationCardinalityOneToOne.png new file mode 100644 index 0000000000000000000000000000000000000000..ff50529142e3c1f6be7e0c9059b8e6e7863b3501 GIT binary patch literal 23054 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 PKai7FeqSnO8vOqN6UQ}g literal 0 HcmV?d00001 diff --git a/documentation/ConfigurationShowAndEditJoinTableAttributes.png b/documentation/ConfigurationShowAndEditJoinTableAttributes.png new file mode 100644 index 0000000000000000000000000000000000000000..d0657aa2666b50ebff6488d6b35fc2eb9fa79991 GIT binary patch literal 7898 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 literal 0 HcmV?d00001 From 7f90842942aca8f7cc2a2d761c02f1fcb5d941a9 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Tue, 2 May 2023 17:08:46 +0200 Subject: [PATCH 04/14] some formatting --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 06ae224..2388272 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ Linking can be restricted to one linked feature per feature by setting the Cardi ## Show and edit join table attributes When this option is enabled, the link manager dialog will show the linked features in a tree structure instead of a simple list. The tree elements can be expanded to show the attribute form of the join feature. That attribute form can be configured as usual in the layer properties of the join layer. -**Note:** If a feature is not respecting the constraints it will not be linked/modified when the dialog is accepted. Other features with valid attributes will still be linked. ![Configuration show and edit join table attributes](documentation/ConfigurationShowAndEditJoinTableAttributes.png) + +**Note:** If a feature is not respecting the constraints it will not be linked/modified when the dialog is accepted. Other features with valid attributes will still be linked. From 98d21646d6710f9ba34ae45c02165149dd853df8 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Thu, 4 May 2023 14:01:24 +0200 Subject: [PATCH 05/14] Remove unused debug code --- .../core/linking_relation_editor_plugin.py | 3 --- .../gui/linking_relation_editor_widget.py | 10 ---------- 2 files changed, 13 deletions(-) diff --git a/linking_relation_editor/core/linking_relation_editor_plugin.py b/linking_relation_editor/core/linking_relation_editor_plugin.py index d502872..7edd598 100644 --- a/linking_relation_editor/core/linking_relation_editor_plugin.py +++ b/linking_relation_editor/core/linking_relation_editor_plugin.py @@ -18,11 +18,8 @@ LinkingRelationEditorWidgetFactory, ) -DEBUG = True - class LinkingRelationEditorPlugin(QObject): - plugin_name = "&Linking Relation Editor" def __init__(self, iface: QgisInterface): diff --git a/linking_relation_editor/gui/linking_relation_editor_widget.py b/linking_relation_editor/gui/linking_relation_editor_widget.py index 24b7e38..4fe43cb 100644 --- a/linking_relation_editor/gui/linking_relation_editor_widget.py +++ b/linking_relation_editor/gui/linking_relation_editor_widget.py @@ -19,7 +19,6 @@ QgsGeometry, QgsIconUtils, QgsLogger, - QgsMessageLog, QgsProject, QgsRelation, QgsVectorLayer, @@ -50,8 +49,6 @@ WidgetUi, _ = loadUiType(os.path.join(os.path.dirname(__file__), "../ui/linking_relation_editor_widget.ui")) -Debug = True - CONFIG_ONE_TO_ONE = "one_to_one" CONFIG_LINKING_CHILD_MANAGER_DIALOG = "linking_child_manager_dialog" @@ -353,9 +350,6 @@ def updateUi(self): self._updateUiTimer.start(200) def updateUiTimeout(self): - if Debug: - QgsMessageLog.logMessage("updateUiTimeout()") - if not self.relation().isValid() or not self.feature().isValid(): return @@ -367,10 +361,6 @@ def updateUiTimeout(self): else: self.updateUiSingleEdit() - def parentFormValueChanged(self, attribute, newValue): - if Debug: - QgsMessageLog.logMessage("parentFormValueChanged()") - def updateUiSingleEdit(self): self.mFormViewButton.setVisible(not self.mOneToOne) self.mTableViewButton.setVisible(not self.mOneToOne) From 8960279c2069134a645665b9e5a97e53e98b8a1a Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Fri, 5 May 2023 11:39:10 +0200 Subject: [PATCH 06/14] parentFormValueChanged is pure virtual and must have an implementation --- linking_relation_editor/gui/linking_relation_editor_widget.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/linking_relation_editor/gui/linking_relation_editor_widget.py b/linking_relation_editor/gui/linking_relation_editor_widget.py index 4fe43cb..97c70a7 100644 --- a/linking_relation_editor/gui/linking_relation_editor_widget.py +++ b/linking_relation_editor/gui/linking_relation_editor_widget.py @@ -361,6 +361,9 @@ def updateUiTimeout(self): else: self.updateUiSingleEdit() + def parentFormValueChanged(self, attribute, newValue): + pass + def updateUiSingleEdit(self): self.mFormViewButton.setVisible(not self.mOneToOne) self.mTableViewButton.setVisible(not self.mOneToOne) From 924c89bf8f9466af7b5e7228efe4f05b846ce2a2 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Mon, 8 May 2023 16:01:54 +0200 Subject: [PATCH 07/14] On the way to QAbstractItemModel --- demo_projects/bee_farming.gpkg | Bin 184320 -> 184320 bytes .../core/features_model.py | 56 +++++++++++++++++- .../gui/linking_child_manager_dialog.py | 27 ++++----- .../ui/linking_child_manager_dialog.ui | 13 ++-- 4 files changed, 68 insertions(+), 28 deletions(-) diff --git a/demo_projects/bee_farming.gpkg b/demo_projects/bee_farming.gpkg index dc04128411c77029f7f400fe01a5479b3186f16a..ccb2fa71995972ac16a72fc0ef8bbfafe3a914aa 100644 GIT binary patch delta 96 zcmZozz}>KbdxA8h^F$eEM(2$QkM%^1bq!2`D8$g%%Gk`x$WqVT$hQDKam_m0Y9-|<1Q33Eif@HGBQ*#H##siIx#gaG&nVbS1-3$ zF9E9H4FCWD1r9_252z1N4*0hY5CZBB2UZ6K09hAVmn9zpE0^Rg0w%Xm9|Ewjv-%lz diff --git a/linking_relation_editor/core/features_model.py b/linking_relation_editor/core/features_model.py index dd98859..64fe251 100644 --- a/linking_relation_editor/core/features_model.py +++ b/linking_relation_editor/core/features_model.py @@ -19,11 +19,11 @@ QgsVectorLayer, QgsVectorLayerUtils, ) -from qgis.PyQt.QtCore import QAbstractListModel, QModelIndex, QObject, Qt +from qgis.PyQt.QtCore import QAbstractItemModel, QModelIndex, QObject, Qt from qgis.PyQt.QtGui import QIcon -class FeaturesModel(QAbstractListModel): +class FeaturesModel(QAbstractItemModel): class UserRole(IntEnum): FeatureId = Qt.UserRole + 1 @@ -39,6 +39,7 @@ def __init__(self, feature: QgsFeature, featureState, layer: QgsVectorLayer): self._featureState = featureState self._layer = layer self._displayString = QgsVectorLayerUtils.getFeatureDisplayString(layer, feature) + self._childItem = None def feature(self): return self._feature @@ -75,6 +76,20 @@ def tool_tip(self): return QgsExpression.replaceExpressionText(self._layer.mapTipTemplate(), subContext) + def childItem(self): + return self._childItem + + def JoinFeaturesModelItem(object): + def __init__(self, joinFeature: QgsFeature, parentItem: FeaturesModel.FeaturesModelItem): + self._feature = joinFeature + self._parentItem = parentItem + + def parentItem(self): + return self._parentItem + + def row(self) -> int: + return 0 # There is alway only one link feature + def __init__(self, features, featureState, layer: QgsVectorLayer, parent: QObject = None): super().__init__(parent) @@ -82,9 +97,19 @@ def __init__(self, features, featureState, layer: QgsVectorLayer, parent: QObjec self._modelFeatures = [] self.set_features(features, featureState) - def rowCount(self, index: QModelIndex = ...) -> int: + def rowCount(self, index=QModelIndex()) -> int: + if index.isValid(): + parentItem = index.internalPointer() + if parentItem.childItem() is None: + return 0 + else: + return 1 + return len(self._modelFeatures) + def columnCount(self, index: QModelIndex = ...) -> int: + return 1 + def data(self, index: QModelIndex, role: int = ...): if not index.isValid(): return None @@ -103,6 +128,31 @@ def data(self, index: QModelIndex, role: int = ...): return None + def index(self, row: int, column: int, parent: QModelIndex = ...) -> QModelIndex: + if not self.hasIndex(row, column, parent): + return QModelIndex() + + parentItem = None + if parent.isValid(): + parentItem = parent.internalPointer() + + if parentItem is None: + return self.createIndex(row, column, self._modelFeatures[row]) + + return self.createIndex(row, column, self._modelFeatures[row].childItem()) + + def parent(self, index: QModelIndex): + if not index.isValid(): + return QModelIndex() + + childItem = index.internalPointer() + + if isinstance(childItem, self.FeaturesModelItem): + return QModelIndex() + + parentItem = childItem.parentItem() + return self.createIndex(parentItem.row(), 0, parentItem) + def removeRows(self, row: int = ..., count: int = ..., index: QModelIndex = ...): if row + count > self.rowCount(): return False diff --git a/linking_relation_editor/gui/linking_child_manager_dialog.py b/linking_relation_editor/gui/linking_child_manager_dialog.py index c81f49e..059a6ce 100644 --- a/linking_relation_editor/gui/linking_child_manager_dialog.py +++ b/linking_relation_editor/gui/linking_child_manager_dialog.py @@ -128,12 +128,12 @@ def __init__( self.mFeaturesListViewLeft.setContextMenuPolicy(Qt.ActionsContextMenu) self.mFeaturesListViewLeft.addAction(self._actionLinkSelected) self.mFeaturesListViewLeft.addAction(self._actionLinkAll) - self.mFeaturesTreeWidgetRight.setContextMenuPolicy(Qt.ActionsContextMenu) - self.mFeaturesTreeWidgetRight.addAction(self._actionUnlinkSelected) - self.mFeaturesTreeWidgetRight.addAction(self._actionUnlinkAll) + self.mFeaturesTreeViewRight.setContextMenuPolicy(Qt.ActionsContextMenu) + self.mFeaturesTreeViewRight.addAction(self._actionUnlinkSelected) + self.mFeaturesTreeViewRight.addAction(self._actionUnlinkAll) if self._layer.isSpatial(): self.mFeaturesListViewLeft.addAction(self._actionZoomToSelectedLeft) - self.mFeaturesTreeWidgetRight.addAction(self._actionZoomToSelectedRight) + self.mFeaturesTreeViewRight.addAction(self._actionZoomToSelectedRight) displayString = QgsVectorLayerUtils.getFeatureDisplayString(self._parentLayer, self._parentFeature) self.setWindowTitle( @@ -154,7 +154,7 @@ def __init__( self.mFeaturesListViewLeft.setModel(self._featuresModelFilterLeft) self._featuresModelRight = FeaturesModel(linkedFeatures, FeaturesModel.FeatureState.Linked, self._layer, self) - self._updateFeaturesTreeWidgetRight() + self.mFeaturesTreeViewRight.setModel(self._featuresModelRight) self.mQuickFilterLineEdit.setVisible(False) @@ -266,10 +266,9 @@ def _linkSelected(self): featuresModelElement.set_feature_state(FeaturesModel.FeatureState.ToBeLinked) self._featuresModelRight.add_features_model_items(featuresModelElements) - self._updateFeaturesTreeWidgetRight() def _unlinkSelected(self): - indexes = self.mFeaturesTreeWidgetRight.selectedIndexes()[:] + indexes = self.mFeaturesTreeViewRight.selectedIndexes()[:] featuresModelElements = self._featuresModelRight.take_items(indexes) if not featuresModelElements: @@ -283,8 +282,6 @@ def _unlinkSelected(self): self._featuresModelLeft.add_features_model_items(featuresModelElements) - self._updateFeaturesTreeWidgetRight() - def _linkAll(self): if self._oneToOne: if self._featuresModelRight.rowCount() >= 1 or self._featuresModelFilterLeft.rowCount() > 1: @@ -318,7 +315,6 @@ def _linkAll(self): featuresModelElement.set_feature_state(FeaturesModel.FeatureState.ToBeLinked) self._featuresModelRight.add_features_model_items(featuresModelElements) - self._updateFeaturesTreeWidgetRight() def _unlinkAll(self): featuresModelElements = self._featuresModelRight.take_all_items() @@ -333,7 +329,6 @@ def _unlinkAll(self): featuresModelElement.set_feature_state(FeaturesModel.FeatureState.ToBeUnlinked) self._featuresModelLeft.add_features_model_items(featuresModelElements) - self._updateFeaturesTreeWidgetRight() def _quick_filter_triggered(self, checked: bool): self.mQuickFilterLineEdit.setVisible(checked) @@ -382,7 +377,7 @@ def _zoomToSelectedRight(self): return selectedFeatureIds = [] - for modelIndex in self.mFeaturesTreeWidgetRight.selectedIndexes(): + for modelIndex in self.mFeaturesTreeViewRight.selectedIndexes(): selectedFeatureIds.append(self._featuresModelRight.data(modelIndex, FeaturesModel.UserRole.FeatureId)) if len(selectedFeatureIds) == 0: @@ -484,14 +479,14 @@ def _closing(self): self._unsetMapTool() def _updateFeaturesTreeWidgetRight(self): - self.mFeaturesTreeWidgetRight.clear() + self.mFeaturesTreeViewRight.clear() self._featureFormWidgets = [] for featureItem in self._featuresModelRight.get_all_feature_items(): - treeWidgetItem = QTreeWidgetItem(self.mFeaturesTreeWidgetRight) + treeWidgetItem = QTreeWidgetItem(self.mFeaturesTreeViewRight) treeWidgetItem.setText(0, featureItem.display_string()) treeWidgetItem.setIcon(0, featureItem.display_icon()) - self.mFeaturesTreeWidgetRight.addTopLevelItem(treeWidgetItem) + self.mFeaturesTreeViewRight.addTopLevelItem(treeWidgetItem) if self._nmRelation.isValid() and self._linkingChildManagerDialogConfig.get( CONFIG_SHOW_AND_EDIT_JOIN_TABLE_ATTRIBUTES, False @@ -538,6 +533,6 @@ def _updateFeaturesTreeWidgetRight(self): if featureItem.feature_state() == FeaturesModel.FeatureState.ToBeLinked: attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) - self.mFeaturesTreeWidgetRight.setItemWidget(treeWidgetItemChildren, 0, attributeForm) + self.mFeaturesTreeViewRight.setItemWidget(treeWidgetItemChildren, 0, attributeForm) self._featureFormWidgets.append(attributeForm) diff --git a/linking_relation_editor/ui/linking_child_manager_dialog.ui b/linking_relation_editor/ui/linking_child_manager_dialog.ui index 712b7cf..82b58b7 100644 --- a/linking_relation_editor/ui/linking_child_manager_dialog.ui +++ b/linking_relation_editor/ui/linking_child_manager_dialog.ui @@ -143,18 +143,13 @@ - + QAbstractItemView::ExtendedSelection - - false - - - - 1 - - + + true + From a7936df39164729822fbc79cf3800632db149506 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Tue, 9 May 2023 15:39:31 +0200 Subject: [PATCH 08/14] some more steps --- .../core/{ => model}/features_model.py | 119 ++++++++++++++---- .../core/{ => model}/features_model_filter.py | 6 +- .../gui/feature_filter_widget.py | 3 +- .../gui/linking_child_manager_dialog.py | 27 +++- 4 files changed, 119 insertions(+), 36 deletions(-) rename linking_relation_editor/core/{ => model}/features_model.py (59%) rename linking_relation_editor/core/{ => model}/features_model_filter.py (97%) diff --git a/linking_relation_editor/core/features_model.py b/linking_relation_editor/core/model/features_model.py similarity index 59% rename from linking_relation_editor/core/features_model.py rename to linking_relation_editor/core/model/features_model.py index 64fe251..af6ab15 100644 --- a/linking_relation_editor/core/features_model.py +++ b/linking_relation_editor/core/model/features_model.py @@ -16,9 +16,12 @@ QgsExpressionContext, QgsExpressionContextUtils, QgsFeature, + QgsGeometry, + QgsRelation, QgsVectorLayer, QgsVectorLayerUtils, ) +from qgis.gui import QgsAttributeEditorContext, QgsAttributeForm from qgis.PyQt.QtCore import QAbstractItemModel, QModelIndex, QObject, Qt from qgis.PyQt.QtGui import QIcon @@ -34,13 +37,49 @@ class FeatureState(IntEnum): ToBeUnlinked = 4 class FeaturesModelItem(object): - def __init__(self, feature: QgsFeature, featureState, layer: QgsVectorLayer): + def __init__(self, feature: QgsFeature, featureState, model): self._feature = feature self._featureState = featureState - self._layer = layer - self._displayString = QgsVectorLayerUtils.getFeatureDisplayString(layer, feature) + self._model = model + + self._displayString = QgsVectorLayerUtils.getFeatureDisplayString(self._model.layer, feature) self._childItem = None + if self._model.handleJoinFeatures: + joinLayer = self._model.nmRelation.referencingLayer() + joinFeature = QgsFeature() + + if self._featureState == FeaturesModel.FeatureState.Linked: + request = self._model.nmRelation.getRelatedFeaturesRequest(self._feature) + for jfeature in joinLayer.getFeatures(request): + joinFeature = jfeature + break + else: + # Expression context for the linking table + context = joinLayer.createExpressionContext() + joinFeature = QgsVectorLayerUtils.createFeature(joinLayer, QgsGeometry(), {}, context) + + # Fields of the linking table + fields = joinLayer.fields() + + if self._model.relation.type() == QgsRelation.Generated: + polyRel = self._model.relation.polymorphicRelation() + assert polyRel.isValid() + + joinFeature[fields.indexFromName(polyRel.referencedLayerField())] = polyRel.layerRepresentation( + self.relation().referencedLayer() + ) + + for referencingField, referencedField in self._model.relation.fieldPairs().items(): + index = fields.indexOf(referencingField) + joinFeature[index] = self._model.parentFeature.attribute(referencedField) + + for referencingField, referencedField in self._model.nmRelation.fieldPairs().items(): + index = fields.indexOf(referencingField) + joinFeature[index] = self._feature.attribute(referencedField) + + self._childItem = FeaturesModel.JoinFeaturesModelItem(joinFeature, joinLayer, self) + def feature(self): return self._feature @@ -61,40 +100,66 @@ def display_icon(self): self._featureState == FeaturesModel.FeatureState.Unlinked or self._featureState == FeaturesModel.FeatureState.Linked ): - return QIcon(os.path.join(os.path.dirname(__file__), "../images/mNoAction.svg")) + return QIcon(os.path.join(os.path.dirname(__file__), "../../images/mNoAction.svg")) elif self._featureState == FeaturesModel.FeatureState.ToBeLinked: - return QIcon(os.path.join(os.path.dirname(__file__), "../images/mActionToBeLinked.svg")) + return QIcon(os.path.join(os.path.dirname(__file__), "../../images/mActionToBeLinked.svg")) elif self._featureState == FeaturesModel.FeatureState.ToBeUnlinked: - return QIcon(os.path.join(os.path.dirname(__file__), "../images/mActionToBeUnlinked.svg")) + return QIcon(os.path.join(os.path.dirname(__file__), "../../images/mActionToBeUnlinked.svg")) return QIcon() def tool_tip(self): subContext = QgsExpressionContext() - subContext.appendScopes(QgsExpressionContextUtils.globalProjectLayerScopes(self._layer)) + subContext.appendScopes(QgsExpressionContextUtils.globalProjectLayerScopes(self._model.layer)) subContext.setFeature(self._feature) - return QgsExpression.replaceExpressionText(self._layer.mapTipTemplate(), subContext) + return QgsExpression.replaceExpressionText(self._model.layer.mapTipTemplate(), subContext) def childItem(self): return self._childItem - def JoinFeaturesModelItem(object): - def __init__(self, joinFeature: QgsFeature, parentItem: FeaturesModel.FeaturesModelItem): + def row(self) -> int: + return 0 + + class JoinFeaturesModelItem(object): + def __init__(self, joinFeature: QgsFeature, joinLayer: QgsVectorLayer, parentItem): self._feature = joinFeature + self._layer = joinLayer self._parentItem = parentItem + self._attributeForm = QgsAttributeForm(joinLayer, joinFeature) + + if self._parentItem.feature_state() == FeaturesModel.FeatureState.ToBeLinked: + self._attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) + def parentItem(self): return self._parentItem def row(self) -> int: return 0 # There is alway only one link feature - def __init__(self, features, featureState, layer: QgsVectorLayer, parent: QObject = None): - super().__init__(parent) + def childItem(self): + return None - self._layer = layer + def __init__( + self, + features, + featureState, + layer: QgsVectorLayer, + handleJoinFeatures: bool, + parentFeature=QgsFeature, + relation=QgsRelation, + nmRelation=QgsRelation, + parent: QObject = None, + ): + super().__init__(parent) + self.layer = layer self._modelFeatures = [] + self.handleJoinFeatures = handleJoinFeatures + self.parentFeature = parentFeature + self.relation = relation + self.nmRelation = nmRelation + self.set_features(features, featureState) def rowCount(self, index=QModelIndex()) -> int: @@ -114,17 +179,23 @@ def data(self, index: QModelIndex, role: int = ...): if not index.isValid(): return None - if role == Qt.DisplayRole: - return self._modelFeatures[index.row()].display_string() + childItem = index.internalPointer() - if role == Qt.DecorationRole: - return self._modelFeatures[index.row()].display_icon() + if isinstance(childItem, FeaturesModel.FeaturesModelItem): + if role == Qt.DisplayRole: + return self._modelFeatures[index.row()].display_string() - if role == Qt.ToolTipRole: - return self._modelFeatures[index.row()].tool_tip() + if role == Qt.DecorationRole: + return self._modelFeatures[index.row()].display_icon() - if role == FeaturesModel.UserRole.FeatureId: - return self._modelFeatures[index.row()].feature_id() + if role == Qt.ToolTipRole: + return self._modelFeatures[index.row()].tool_tip() + + if role == FeaturesModel.UserRole.FeatureId: + return self._modelFeatures[index.row()].feature_id() + else: + if role == Qt.DisplayRole: + return "childItem" return None @@ -146,8 +217,7 @@ def parent(self, index: QModelIndex): return QModelIndex() childItem = index.internalPointer() - - if isinstance(childItem, self.FeaturesModelItem): + if isinstance(childItem, FeaturesModel.FeaturesModelItem): return QModelIndex() parentItem = childItem.parentItem() @@ -170,7 +240,8 @@ def set_features(self, features, features_state): self._modelFeatures = [] for feature in features: - self._modelFeatures.append(FeaturesModel.FeaturesModelItem(feature, features_state, self._layer)) + featureItem = FeaturesModel.FeaturesModelItem(feature, features_state, self) + self._modelFeatures.append(featureItem) self.endResetModel() diff --git a/linking_relation_editor/core/features_model_filter.py b/linking_relation_editor/core/model/features_model_filter.py similarity index 97% rename from linking_relation_editor/core/features_model_filter.py rename to linking_relation_editor/core/model/features_model_filter.py index 36f108e..31dee51 100644 --- a/linking_relation_editor/core/features_model_filter.py +++ b/linking_relation_editor/core/model/features_model_filter.py @@ -12,7 +12,7 @@ from qgis.PyQt.QtCore import QModelIndex, QObject, QSortFilterProxyModel, Qt from qgis.PyQt.QtWidgets import QApplication -from linking_relation_editor.core.features_model import FeaturesModel +from linking_relation_editor.core.model.features_model import FeaturesModel class FeaturesModelFilter(QSortFilterProxyModel): @@ -129,10 +129,9 @@ def filterAcceptsRow(self, sourceRow: int, sourceParent: QModelIndex()): if not rowDisplayRole: return False - return all( word.lower() in rowDisplayRole.lower() for word in self._quick_filter.split() ) + return all(word.lower() in rowDisplayRole.lower() for word in self._quick_filter.split()) def _prepare_filtered_features(self): - self._feature_filter_filtered_features = list() if not self._feature_filter_expression.isValid(): @@ -163,7 +162,6 @@ def _prepare_filtered_features(self): QApplication.restoreOverrideCursor() def _prepare_filtered_by_visible_features(self): - self._feature_filter_filtered_features = list() if not self._canvas: diff --git a/linking_relation_editor/gui/feature_filter_widget.py b/linking_relation_editor/gui/feature_filter_widget.py index f929956..60296d4 100644 --- a/linking_relation_editor/gui/feature_filter_widget.py +++ b/linking_relation_editor/gui/feature_filter_widget.py @@ -36,7 +36,7 @@ ) from qgis.PyQt.uic import loadUiType -from linking_relation_editor.core.features_model_filter import FeaturesModelFilter +from linking_relation_editor.core.model.features_model_filter import FeaturesModelFilter WidgetUi, _ = loadUiType(os.path.join(os.path.dirname(__file__), "../ui/feature_filter_widget.ui")) @@ -404,7 +404,6 @@ def setFilterExpression(self, filterString: str, type: QgsAttributeForm.FilterTy or not self.mCurrentSearchWidgetWrapper or not self.mCurrentSearchWidgetWrapper.applyDirectly() ): - self.mFilterButton.setDefaultAction(self.mActionAdvancedFilter) self.mFilterButton.setPopupMode(QToolButton.MenuButtonPopup) self.mFilterQuery.setVisible(True) diff --git a/linking_relation_editor/gui/linking_child_manager_dialog.py b/linking_relation_editor/gui/linking_child_manager_dialog.py index 059a6ce..168a857 100644 --- a/linking_relation_editor/gui/linking_child_manager_dialog.py +++ b/linking_relation_editor/gui/linking_child_manager_dialog.py @@ -31,8 +31,8 @@ from qgis.PyQt.uic import loadUiType from qgis.utils import iface -from linking_relation_editor.core.features_model import FeaturesModel -from linking_relation_editor.core.features_model_filter import FeaturesModelFilter +from linking_relation_editor.core.model.features_model import FeaturesModel +from linking_relation_editor.core.model.features_model_filter import FeaturesModelFilter from linking_relation_editor.gui.feature_filter_widget import FeatureFilterWidget from linking_relation_editor.gui.map_tool_select_rectangle import MapToolSelectRectangle @@ -144,16 +144,31 @@ def __init__( linkedFeatures, unlinkedFeatures, request = self._getAllFeatures() + handleJoinFeature = self._linkingChildManagerDialogConfig.get(CONFIG_SHOW_AND_EDIT_JOIN_TABLE_ATTRIBUTES, False) self._featuresModelLeft = FeaturesModel( - unlinkedFeatures, FeaturesModel.FeatureState.Unlinked, self._layer, self + unlinkedFeatures, + FeaturesModel.FeatureState.Unlinked, + self._layer, + handleJoinFeatures=handleJoinFeature, + parentFeature=self._parentFeature, + relation=self._relation, + nmRelation=self._nmRelation, + parent=self, ) - self._featuresModelFilterLeft = FeaturesModelFilter(self._layer, self._canvas(), self) self._featuresModelFilterLeft.setSourceModel(self._featuresModelLeft) - self.mFeaturesListViewLeft.setModel(self._featuresModelFilterLeft) - self._featuresModelRight = FeaturesModel(linkedFeatures, FeaturesModel.FeatureState.Linked, self._layer, self) + self._featuresModelRight = FeaturesModel( + linkedFeatures, + FeaturesModel.FeatureState.Linked, + self._layer, + handleJoinFeatures=handleJoinFeature, + parentFeature=self._parentFeature, + relation=self._relation, + nmRelation=self._nmRelation, + parent=self, + ) self.mFeaturesTreeViewRight.setModel(self._featuresModelRight) self.mQuickFilterLineEdit.setVisible(False) From a65a251bc95f0e542e98c2de219d77bb70dfa2a1 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Tue, 30 May 2023 08:49:04 +0200 Subject: [PATCH 09/14] Added delegate for join feature widget --- .../core/model/attribute_form_delegate.py | 46 +++++++++++++++++++ .../core/model/features_model.py | 37 ++++++++++++--- .../gui/linking_child_manager_dialog.py | 17 ++++++- 3 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 linking_relation_editor/core/model/attribute_form_delegate.py diff --git a/linking_relation_editor/core/model/attribute_form_delegate.py b/linking_relation_editor/core/model/attribute_form_delegate.py new file mode 100644 index 0000000..008e9a8 --- /dev/null +++ b/linking_relation_editor/core/model/attribute_form_delegate.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# ----------------------------------------------------------- +# +# QGIS Linking Relation Editor +# Copyright (C) 2023 Damiano Lombardi +# +# licensed under the terms of GNU GPL 2 +# +# ----------------------------------------------------------- + +from qgis.gui import QgsAttributeEditorContext, QgsAttributeForm +from qgis.PyQt.QtWidgets import QItemDelegate + +from linking_relation_editor.core.model.features_model import FeaturesModel + + +class AttributeFormDelegate(QItemDelegate): + def __init__(self, model, parent=None): + super().__init__(parent) + self._model = model + self._attributeForm = None + + def createEditor(self, parent, option, index): + item = self._model.getItem(index) + print("Item: {}".format(item)) + + self._attributeForm = QgsAttributeForm(item.layer(), item.feature(), QgsAttributeEditorContext(), parent) + + if item.parentItem().feature_state() == FeaturesModel.FeatureState.ToBeLinked: + self._attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) + + return self._attributeForm + + def setModelData(self, editor, model, index): + print("setModelData") + + def setEditorData(self, editor, index): + print("setEditorData") + + def sizeHint(self, option, index): + if self._attributeForm is None: + print("Super sizehint: {}".format(super().sizeHint(option, index))) + return super().sizeHint(option, index) + + print("Attribute form sizehint: {}".format(self._attributeForm.sizeHint())) + return self._attributeForm.sizeHint() diff --git a/linking_relation_editor/core/model/features_model.py b/linking_relation_editor/core/model/features_model.py index af6ab15..f859f0f 100644 --- a/linking_relation_editor/core/model/features_model.py +++ b/linking_relation_editor/core/model/features_model.py @@ -21,7 +21,6 @@ QgsVectorLayer, QgsVectorLayerUtils, ) -from qgis.gui import QgsAttributeEditorContext, QgsAttributeForm from qgis.PyQt.QtCore import QAbstractItemModel, QModelIndex, QObject, Qt from qgis.PyQt.QtGui import QIcon @@ -127,10 +126,10 @@ def __init__(self, joinFeature: QgsFeature, joinLayer: QgsVectorLayer, parentIte self._layer = joinLayer self._parentItem = parentItem - self._attributeForm = QgsAttributeForm(joinLayer, joinFeature) + # self._attributeForm = QgsAttributeForm(joinLayer, joinFeature, QgsAttributeEditorContext(), self) - if self._parentItem.feature_state() == FeaturesModel.FeatureState.ToBeLinked: - self._attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) + # if self._parentItem.feature_state() == FeaturesModel.FeatureState.ToBeLinked: + # self._attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) def parentItem(self): return self._parentItem @@ -141,6 +140,12 @@ def row(self) -> int: def childItem(self): return None + def feature(self): + return self._feature + + def layer(self): + return self._layer + def __init__( self, features, @@ -193,9 +198,6 @@ def data(self, index: QModelIndex, role: int = ...): if role == FeaturesModel.UserRole.FeatureId: return self._modelFeatures[index.row()].feature_id() - else: - if role == Qt.DisplayRole: - return "childItem" return None @@ -223,6 +225,27 @@ def parent(self, index: QModelIndex): parentItem = childItem.parentItem() return self.createIndex(parentItem.row(), 0, parentItem) + def flags(self, index: QModelIndex): + if not index.isValid(): + return Qt.NoItemFlags + + childItem = index.internalPointer() + if isinstance(childItem, FeaturesModel.FeaturesModelItem): + return Qt.ItemIsSelectable | Qt.ItemIsEnabled + + return Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable + + def getItem(self, index: QModelIndex): + if not index.isValid(): + return None + + # No parent -> normal item + if not self.parent(index).isValid(): + return self._modelFeatures[index.row()] + + # Otherwise, join item + return self._modelFeatures[index.row()].childItem() + def removeRows(self, row: int = ..., count: int = ..., index: QModelIndex = ...): if row + count > self.rowCount(): return False diff --git a/linking_relation_editor/gui/linking_child_manager_dialog.py b/linking_relation_editor/gui/linking_child_manager_dialog.py index 168a857..1815ea5 100644 --- a/linking_relation_editor/gui/linking_child_manager_dialog.py +++ b/linking_relation_editor/gui/linking_child_manager_dialog.py @@ -26,11 +26,14 @@ QgsIdentifyMenu, QgsMessageBar, ) -from qgis.PyQt.QtCore import Qt, QTimer +from qgis.PyQt.QtCore import QModelIndex, Qt, QTimer from qgis.PyQt.QtWidgets import QAction, QDialog, QMessageBox, QTreeWidgetItem from qgis.PyQt.uic import loadUiType from qgis.utils import iface +from linking_relation_editor.core.model.attribute_form_delegate import ( + AttributeFormDelegate, +) from linking_relation_editor.core.model.features_model import FeaturesModel from linking_relation_editor.core.model.features_model_filter import FeaturesModelFilter from linking_relation_editor.gui.feature_filter_widget import FeatureFilterWidget @@ -170,6 +173,8 @@ def __init__( parent=self, ) self.mFeaturesTreeViewRight.setModel(self._featuresModelRight) + self.mFeaturesTreeViewRight.setItemDelegate(AttributeFormDelegate(self._featuresModelRight, self)) + self.mFeaturesTreeViewRight.expanded.connect(self._treeViewItemExpanded) self.mQuickFilterLineEdit.setVisible(False) @@ -493,6 +498,16 @@ def _closing(self): self._deleteHighlight() self._unsetMapTool() + def _treeViewItemExpanded(self, index: QModelIndex): + print("treeViewItemExpanded") + + # For child items do nothing + if self._featuresModelRight.parent(index).isValid(): + return + + childrenIndex = self._featuresModelRight.index(0, 0, index) + self.mFeaturesTreeViewRight.openPersistentEditor(childrenIndex) + def _updateFeaturesTreeWidgetRight(self): self.mFeaturesTreeViewRight.clear() self._featureFormWidgets = [] From fdd1f55f1ae1da395ac0b6297a41965348504d1b Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Tue, 30 May 2023 11:06:41 +0200 Subject: [PATCH 10/14] sizehintChanged signal --- .../core/model/attribute_form_delegate.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/linking_relation_editor/core/model/attribute_form_delegate.py b/linking_relation_editor/core/model/attribute_form_delegate.py index 008e9a8..8fa0e61 100644 --- a/linking_relation_editor/core/model/attribute_form_delegate.py +++ b/linking_relation_editor/core/model/attribute_form_delegate.py @@ -22,13 +22,13 @@ def __init__(self, model, parent=None): def createEditor(self, parent, option, index): item = self._model.getItem(index) - print("Item: {}".format(item)) self._attributeForm = QgsAttributeForm(item.layer(), item.feature(), QgsAttributeEditorContext(), parent) if item.parentItem().feature_state() == FeaturesModel.FeatureState.ToBeLinked: self._attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) + self.sizeHintChanged.emit(index) return self._attributeForm def setModelData(self, editor, model, index): @@ -38,9 +38,12 @@ def setEditorData(self, editor, index): print("setEditorData") def sizeHint(self, option, index): + # No parent -> normal item + if not self._model.parent(index).isValid(): + return super().sizeHint(option, index) + if self._attributeForm is None: print("Super sizehint: {}".format(super().sizeHint(option, index))) return super().sizeHint(option, index) - print("Attribute form sizehint: {}".format(self._attributeForm.sizeHint())) return self._attributeForm.sizeHint() From 14267b4b24bd8b790a0e83d1efd2f47f03e4245d Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Thu, 15 Jun 2023 22:11:16 +0200 Subject: [PATCH 11/14] Intermidiate state --- .../core/model/attribute_form_delegate.py | 5 +- .../core/model/features_model.py | 45 +++++++++-- .../gui/linking_child_manager_dialog.py | 76 ++----------------- 3 files changed, 50 insertions(+), 76 deletions(-) diff --git a/linking_relation_editor/core/model/attribute_form_delegate.py b/linking_relation_editor/core/model/attribute_form_delegate.py index 8fa0e61..78f6cd8 100644 --- a/linking_relation_editor/core/model/attribute_form_delegate.py +++ b/linking_relation_editor/core/model/attribute_form_delegate.py @@ -23,11 +23,15 @@ def __init__(self, model, parent=None): def createEditor(self, parent, option, index): item = self._model.getItem(index) + print("createEditor for index: {} {} - item: {}".format(index.row(), index.column(), item)) + self._attributeForm = QgsAttributeForm(item.layer(), item.feature(), QgsAttributeEditorContext(), parent) if item.parentItem().feature_state() == FeaturesModel.FeatureState.ToBeLinked: self._attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) + item.setAttributeForm(self._attributeForm) + self.sizeHintChanged.emit(index) return self._attributeForm @@ -43,7 +47,6 @@ def sizeHint(self, option, index): return super().sizeHint(option, index) if self._attributeForm is None: - print("Super sizehint: {}".format(super().sizeHint(option, index))) return super().sizeHint(option, index) return self._attributeForm.sizeHint() diff --git a/linking_relation_editor/core/model/features_model.py b/linking_relation_editor/core/model/features_model.py index f859f0f..9d15c3c 100644 --- a/linking_relation_editor/core/model/features_model.py +++ b/linking_relation_editor/core/model/features_model.py @@ -125,11 +125,7 @@ def __init__(self, joinFeature: QgsFeature, joinLayer: QgsVectorLayer, parentIte self._feature = joinFeature self._layer = joinLayer self._parentItem = parentItem - - # self._attributeForm = QgsAttributeForm(joinLayer, joinFeature, QgsAttributeEditorContext(), self) - - # if self._parentItem.feature_state() == FeaturesModel.FeatureState.ToBeLinked: - # self._attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) + self._attributeForm = None def parentItem(self): return self._parentItem @@ -146,6 +142,12 @@ def feature(self): def layer(self): return self._layer + def setAttributeForm(self, attributeForm): + self._attributeForm = attributeForm + + def attributeForm(self): + return self._attributeForm + def __init__( self, features, @@ -167,6 +169,9 @@ def __init__( self.set_features(features, featureState) + def featureItems(self): + return self._modelFeatures + def rowCount(self, index=QModelIndex()) -> int: if index.isValid(): parentItem = index.internalPointer() @@ -203,16 +208,44 @@ def data(self, index: QModelIndex, role: int = ...): def index(self, row: int, column: int, parent: QModelIndex = ...) -> QModelIndex: if not self.hasIndex(row, column, parent): + print("Return invalid QModelIndex") return QModelIndex() parentItem = None if parent.isValid(): parentItem = parent.internalPointer() + print("----------------------------------------------------------------") + + print( + "Row/Col: {}/{} Parent row/col: {}/{} PARENT: {}".format( + row, column, parent.row(), parent.column(), parentItem + ) + ) + if parentItem is None: + print( + "PARENT createIndex(row={}, column={}, self._modelFeatures[row]={})".format( + row, column, self._modelFeatures[row] + ) + ) return self.createIndex(row, column, self._modelFeatures[row]) - return self.createIndex(row, column, self._modelFeatures[row].childItem()) + print( + "Row/Col: {}/{} Parent row/col: {}/{} CHILD: {}".format( + row, column, parent.row(), parent.column(), parentItem.childItem() + ) + ) + + # print("self._modelFeatures[parent.row()].childItem(): {}, parentItem.childItem(): {}".format(self._modelFeatures[parent.row()].childItem(), parentItem.childItem())) + + print( + "CHILDREN createIndex(row={}, column={}, parentItem.childItem()={})".format( + row, column, parentItem.childItem() + ) + ) + # return self.createIndex(row, column, self._modelFeatures[row].childItem()) + return self.createIndex(row, column, parentItem.childItem()) def parent(self, index: QModelIndex): if not index.isValid(): diff --git a/linking_relation_editor/gui/linking_child_manager_dialog.py b/linking_relation_editor/gui/linking_child_manager_dialog.py index 1815ea5..c926ae4 100644 --- a/linking_relation_editor/gui/linking_child_manager_dialog.py +++ b/linking_relation_editor/gui/linking_child_manager_dialog.py @@ -14,20 +14,18 @@ QgsApplication, QgsFeature, QgsFeatureRequest, - QgsGeometry, QgsRelation, QgsVectorLayer, QgsVectorLayerUtils, ) from qgis.gui import ( QgsAttributeEditorContext, - QgsAttributeForm, QgsHighlight, QgsIdentifyMenu, QgsMessageBar, ) from qgis.PyQt.QtCore import QModelIndex, Qt, QTimer -from qgis.PyQt.QtWidgets import QAction, QDialog, QMessageBox, QTreeWidgetItem +from qgis.PyQt.QtWidgets import QAction, QDialog, QMessageBox from qgis.PyQt.uic import loadUiType from qgis.utils import iface @@ -73,7 +71,6 @@ def __init__( self._mapToolSelect = MapToolSelectRectangle(self._canvas(), self._layer) self._highlight = [] - self._featureFormWidgets = [] # Ui setup self.setupUi(self) @@ -489,8 +486,9 @@ def _rejecting(self): def _accepting(self): # Save join features edits if self._linkingChildManagerDialogConfig.get(CONFIG_SHOW_AND_EDIT_JOIN_TABLE_ATTRIBUTES, False): - for attributeFormWidget in self._featureFormWidgets: - attributeFormWidget.save() + for featureItem in self._featuresModelRight.featureItems(): + if featureItem.childItem() is not None and featureItem.childItem().attributeForm() is not None: + featureItem.childItem().attributeForm().save() self._closing() @@ -499,70 +497,10 @@ def _closing(self): self._unsetMapTool() def _treeViewItemExpanded(self, index: QModelIndex): - print("treeViewItemExpanded") - # For child items do nothing if self._featuresModelRight.parent(index).isValid(): return - - childrenIndex = self._featuresModelRight.index(0, 0, index) + print("Item expanded: {} {}".format(index.row(), index.column())) + return + childrenIndex = self._featuresModelRight.index(index.row(), index.column(), index) self.mFeaturesTreeViewRight.openPersistentEditor(childrenIndex) - - def _updateFeaturesTreeWidgetRight(self): - self.mFeaturesTreeViewRight.clear() - self._featureFormWidgets = [] - - for featureItem in self._featuresModelRight.get_all_feature_items(): - treeWidgetItem = QTreeWidgetItem(self.mFeaturesTreeViewRight) - treeWidgetItem.setText(0, featureItem.display_string()) - treeWidgetItem.setIcon(0, featureItem.display_icon()) - self.mFeaturesTreeViewRight.addTopLevelItem(treeWidgetItem) - - if self._nmRelation.isValid() and self._linkingChildManagerDialogConfig.get( - CONFIG_SHOW_AND_EDIT_JOIN_TABLE_ATTRIBUTES, False - ): - treeWidgetItemChildren = QTreeWidgetItem(treeWidgetItem) - treeWidgetItem.addChild(treeWidgetItemChildren) - - joinLayer = self._nmRelation.referencingLayer() - joinFeature = QgsFeature() - - if featureItem.feature_state() == FeaturesModel.FeatureState.Linked: - request = self._nmRelation.getRelatedFeaturesRequest(featureItem.feature()) - for jfeature in joinLayer.getFeatures(request): - joinFeature = jfeature - break - else: - treeWidgetItem.setExpanded(True) - - # Expression context for the linking table - context = joinLayer.createExpressionContext() - joinFeature = QgsVectorLayerUtils.createFeature(joinLayer, QgsGeometry(), {}, context) - - # Fields of the linking table - fields = joinLayer.fields() - - if self._relation.type() == QgsRelation.Generated: - polyRel = self._relation.polymorphicRelation() - assert polyRel.isValid() - - joinFeature[fields.indexFromName(polyRel.referencedLayerField())] = polyRel.layerRepresentation( - self.relation().referencedLayer() - ) - - for referencingField, referencedField in self._relation.fieldPairs().items(): - index = fields.indexOf(referencingField) - joinFeature[index] = self._parentFeature.attribute(referencedField) - - for referencingField, referencedField in self._nmRelation.fieldPairs().items(): - index = fields.indexOf(referencingField) - joinFeature[index] = featureItem.feature().attribute(referencedField) - - attributeForm = QgsAttributeForm(joinLayer, joinFeature) - - if featureItem.feature_state() == FeaturesModel.FeatureState.ToBeLinked: - attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) - - self.mFeaturesTreeViewRight.setItemWidget(treeWidgetItemChildren, 0, attributeForm) - - self._featureFormWidgets.append(attributeForm) From b329797e410367bd229e99f0eb562739a49c81a1 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Fri, 16 Jun 2023 07:37:09 +0200 Subject: [PATCH 12/14] Fixed functions using wrong indexes --- .../core/model/attribute_form_delegate.py | 4 +- .../core/model/features_model.py | 39 ------------------- .../gui/linking_child_manager_dialog.py | 5 +-- 3 files changed, 3 insertions(+), 45 deletions(-) diff --git a/linking_relation_editor/core/model/attribute_form_delegate.py b/linking_relation_editor/core/model/attribute_form_delegate.py index 78f6cd8..823ded6 100644 --- a/linking_relation_editor/core/model/attribute_form_delegate.py +++ b/linking_relation_editor/core/model/attribute_form_delegate.py @@ -21,9 +21,7 @@ def __init__(self, model, parent=None): self._attributeForm = None def createEditor(self, parent, option, index): - item = self._model.getItem(index) - - print("createEditor for index: {} {} - item: {}".format(index.row(), index.column(), item)) + item = index.internalPointer() self._attributeForm = QgsAttributeForm(item.layer(), item.feature(), QgsAttributeEditorContext(), parent) diff --git a/linking_relation_editor/core/model/features_model.py b/linking_relation_editor/core/model/features_model.py index 9d15c3c..64c8ab1 100644 --- a/linking_relation_editor/core/model/features_model.py +++ b/linking_relation_editor/core/model/features_model.py @@ -208,43 +208,15 @@ def data(self, index: QModelIndex, role: int = ...): def index(self, row: int, column: int, parent: QModelIndex = ...) -> QModelIndex: if not self.hasIndex(row, column, parent): - print("Return invalid QModelIndex") return QModelIndex() parentItem = None if parent.isValid(): parentItem = parent.internalPointer() - print("----------------------------------------------------------------") - - print( - "Row/Col: {}/{} Parent row/col: {}/{} PARENT: {}".format( - row, column, parent.row(), parent.column(), parentItem - ) - ) - if parentItem is None: - print( - "PARENT createIndex(row={}, column={}, self._modelFeatures[row]={})".format( - row, column, self._modelFeatures[row] - ) - ) return self.createIndex(row, column, self._modelFeatures[row]) - print( - "Row/Col: {}/{} Parent row/col: {}/{} CHILD: {}".format( - row, column, parent.row(), parent.column(), parentItem.childItem() - ) - ) - - # print("self._modelFeatures[parent.row()].childItem(): {}, parentItem.childItem(): {}".format(self._modelFeatures[parent.row()].childItem(), parentItem.childItem())) - - print( - "CHILDREN createIndex(row={}, column={}, parentItem.childItem()={})".format( - row, column, parentItem.childItem() - ) - ) - # return self.createIndex(row, column, self._modelFeatures[row].childItem()) return self.createIndex(row, column, parentItem.childItem()) def parent(self, index: QModelIndex): @@ -268,17 +240,6 @@ def flags(self, index: QModelIndex): return Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable - def getItem(self, index: QModelIndex): - if not index.isValid(): - return None - - # No parent -> normal item - if not self.parent(index).isValid(): - return self._modelFeatures[index.row()] - - # Otherwise, join item - return self._modelFeatures[index.row()].childItem() - def removeRows(self, row: int = ..., count: int = ..., index: QModelIndex = ...): if row + count > self.rowCount(): return False diff --git a/linking_relation_editor/gui/linking_child_manager_dialog.py b/linking_relation_editor/gui/linking_child_manager_dialog.py index c926ae4..5b3ceee 100644 --- a/linking_relation_editor/gui/linking_child_manager_dialog.py +++ b/linking_relation_editor/gui/linking_child_manager_dialog.py @@ -500,7 +500,6 @@ def _treeViewItemExpanded(self, index: QModelIndex): # For child items do nothing if self._featuresModelRight.parent(index).isValid(): return - print("Item expanded: {} {}".format(index.row(), index.column())) - return - childrenIndex = self._featuresModelRight.index(index.row(), index.column(), index) + + childrenIndex = self._featuresModelRight.index(0, 0, index) self.mFeaturesTreeViewRight.openPersistentEditor(childrenIndex) From 235cabfdc6dec0a9645a1830aef13d4be141c4dd Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Fri, 16 Jun 2023 08:14:56 +0200 Subject: [PATCH 13/14] Fix linking without expanding editor --- demo_projects/bee_farming.gpkg | Bin 184320 -> 184320 bytes demo_projects/bee_farming.qgs | 16 ++++++++-------- demo_projects/bee_farming_attachments.zip | Bin 2113 -> 2113 bytes .../core/model/attribute_form_delegate.py | 12 +----------- .../core/model/features_model.py | 16 ++++++++++++++-- .../gui/linking_child_manager_dialog.py | 4 ++-- 6 files changed, 25 insertions(+), 23 deletions(-) diff --git a/demo_projects/bee_farming.gpkg b/demo_projects/bee_farming.gpkg index ccb2fa71995972ac16a72fc0ef8bbfafe3a914aa..f3548782bb412d8c026372858733456b5cfa5ab9 100644 GIT binary patch delta 212 zcmZozz}>KbTPHZsC$l6~AuYcsH?c&)m_dMnk&(ecL4kpR(VKyRK^KUjfN9S}9b-oC zjR_*Uf@ZpgW+4V8urbe4vbXO;9%r;XW)0|>)Fn;fvJg)iLqp2<94n_GhudyM)B%m29QoM{rKX7)a1<6;`r)h zqZ9)ZQ_D16^JF6VW%K@f8 F`~YFKbTPHZsC$l6~AuYcsH?c&)m_dMniHX5ML4kpR(V2mPK^KUjfN8@-9b-o4 zjR_*Uf~L9#Mj?iVRwgD^MrL{z29}#!bXO-~gJ;!1sgi$9A3#Oig?fC*&|Oa%^m5VVrb;Wjo6Ora$}u>E + Simple Bee Farming Demo @@ -2298,7 +2298,7 @@ def my_form_open(dialog, layer, feature): - + @@ -2545,9 +2545,9 @@ def my_form_open(dialog, layer, feature): - - + + @@ -3819,8 +3819,8 @@ def my_form_open(dialog, layer, feature): - - + + @@ -3914,7 +3914,7 @@ def my_form_open(dialog, layer, feature): - + @@ -6441,7 +6441,7 @@ def my_form_open(dialog, layer, feature): - + PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]] +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs diff --git a/demo_projects/bee_farming_attachments.zip b/demo_projects/bee_farming_attachments.zip index 50e6f7b1bf200b2839bb3bb7ef11c52044f280d6..906105b389a3762f8860b674a3e29681453bfeeb 100644 GIT binary patch delta 47 wcmX>oa8Q6Zz?+#xgn@~HgCW`B!baX%%*;S~^D1UR77%0dK6Yy`{fFHZ05Gx+g8%>k delta 47 wcmX>oa8Q6Zz?+#xgn@~HgQ2u)(MH}`%*;S~^D1UR77%0dK6Yy`{fFHZ06Ja{`v3p{ diff --git a/linking_relation_editor/core/model/attribute_form_delegate.py b/linking_relation_editor/core/model/attribute_form_delegate.py index 823ded6..9e56204 100644 --- a/linking_relation_editor/core/model/attribute_form_delegate.py +++ b/linking_relation_editor/core/model/attribute_form_delegate.py @@ -8,11 +8,8 @@ # # ----------------------------------------------------------- -from qgis.gui import QgsAttributeEditorContext, QgsAttributeForm from qgis.PyQt.QtWidgets import QItemDelegate -from linking_relation_editor.core.model.features_model import FeaturesModel - class AttributeFormDelegate(QItemDelegate): def __init__(self, model, parent=None): @@ -22,14 +19,7 @@ def __init__(self, model, parent=None): def createEditor(self, parent, option, index): item = index.internalPointer() - - self._attributeForm = QgsAttributeForm(item.layer(), item.feature(), QgsAttributeEditorContext(), parent) - - if item.parentItem().feature_state() == FeaturesModel.FeatureState.ToBeLinked: - self._attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) - - item.setAttributeForm(self._attributeForm) - + self._attributeForm = item.createAttributeForm(parent) self.sizeHintChanged.emit(index) return self._attributeForm diff --git a/linking_relation_editor/core/model/features_model.py b/linking_relation_editor/core/model/features_model.py index 64c8ab1..84c60a5 100644 --- a/linking_relation_editor/core/model/features_model.py +++ b/linking_relation_editor/core/model/features_model.py @@ -21,6 +21,7 @@ QgsVectorLayer, QgsVectorLayerUtils, ) +from qgis.gui import QgsAttributeEditorContext, QgsAttributeForm from qgis.PyQt.QtCore import QAbstractItemModel, QModelIndex, QObject, Qt from qgis.PyQt.QtGui import QIcon @@ -142,12 +143,23 @@ def feature(self): def layer(self): return self._layer - def setAttributeForm(self, attributeForm): - self._attributeForm = attributeForm + def createAttributeForm(self, parent): + self._attributeForm = QgsAttributeForm(self._layer, self._feature, QgsAttributeEditorContext(), parent) + + if self._parentItem.feature_state() == FeaturesModel.FeatureState.ToBeLinked: + self._attributeForm.setMode(QgsAttributeEditorContext.AddFeatureMode) + + return self._attributeForm def attributeForm(self): return self._attributeForm + def save(self): + if self._attributeForm is None: + self.createAttributeForm(None) + + self._attributeForm.save() + def __init__( self, features, diff --git a/linking_relation_editor/gui/linking_child_manager_dialog.py b/linking_relation_editor/gui/linking_child_manager_dialog.py index 5b3ceee..d521d43 100644 --- a/linking_relation_editor/gui/linking_child_manager_dialog.py +++ b/linking_relation_editor/gui/linking_child_manager_dialog.py @@ -487,8 +487,8 @@ def _accepting(self): # Save join features edits if self._linkingChildManagerDialogConfig.get(CONFIG_SHOW_AND_EDIT_JOIN_TABLE_ATTRIBUTES, False): for featureItem in self._featuresModelRight.featureItems(): - if featureItem.childItem() is not None and featureItem.childItem().attributeForm() is not None: - featureItem.childItem().attributeForm().save() + if featureItem.childItem() is not None: + featureItem.childItem().save() self._closing() From 874c46e73e0c7accc4bfd57bbc476032353ea682 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Fri, 16 Jun 2023 08:41:26 +0200 Subject: [PATCH 14/14] Documentation --- README.md | 8 +++++--- documentation/JoinFeatureEditing.gif | Bin 0 -> 202624 bytes .../gui/linking_relation_editor_widget.py | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 documentation/JoinFeatureEditing.gif diff --git a/README.md b/README.md index 2388272..391bb87 100644 --- a/README.md +++ b/README.md @@ -22,8 +22,10 @@ Linking can be restricted to one linked feature per feature by setting the Cardi ## Show and edit join table attributes -When this option is enabled, the link manager dialog will show the linked features in a tree structure instead of a simple list. The tree elements can be expanded to show the attribute form of the join feature. That attribute form can be configured as usual in the layer properties of the join layer. - ![Configuration show and edit join table attributes](documentation/ConfigurationShowAndEditJoinTableAttributes.png) -**Note:** If a feature is not respecting the constraints it will not be linked/modified when the dialog is accepted. Other features with valid attributes will still be linked. +When this option is enabled, the link manager dialog will show the linked features in a tree structure instead of a simple list. The tree elements can be expanded to show the attribute form of the join feature. The attribute form can be configured as usual in the layer properties of the join layer. + +![Join feature editing](documentation/JoinFeatureEditing.gif) + +**Note:** If a feature is not respecting the constraints, it will not be linked/modified when the dialog is accepted. Other features with valid attributes will still be linked. diff --git a/documentation/JoinFeatureEditing.gif b/documentation/JoinFeatureEditing.gif new file mode 100644 index 0000000000000000000000000000000000000000..32736c6ce46f0cc71ba726e273702d33c5f1a2c7 GIT binary patch literal 202624 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

*8s;%Z#|5w-?u#K$$uIts;>VjR? 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