Skip to content

Commit

Permalink
1.3.3 bugfix for label reconnection on project load
Browse files Browse the repository at this point in the history
nasty bug when looping layers, somtimes loop did not finish..
  • Loading branch information
Régis Haubourg committed Mar 18, 2015
1 parent 54edb2a commit 3d6159c
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 22 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.pyc
33 changes: 12 additions & 21 deletions EasyCustomLabeling/EasyCustomLabeling.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,37 +132,28 @@ def labelLayerChecked(self):
# print layers
tag =''
connectSuccess = 'f'
if layers :
for layer in layers:

for layer in layers:
tag =''
# print layer.name() + ' | ' + layer.capabilitiesString() + ' | ' + layer.providerType() + ' | nb objets: ' + str(layer.featureCount())
if not layer:
return
# print'invalid layer > quit'
# check for non vector datasources
elif not layer.type() == 0 :
return
# print layer.name()

if not layer.type() == 0 :
# print 'non vector layer > quit'
return
tag = layer.abstract()

# print 'tag: ' + tag
if "<labeling_layer>" in tag or "Label_" in layer.name() :
# print 'ECL Debug: labeling layer found > reconnecting modification events to callout drawing'
layer.attributeValueChanged.connect(self.labelLayerModified)
connectSuccess = 't'
else :
return

if connectSuccess == 'f':
iface.messageBar().pushMessage("Error", QtGui.QApplication.translate("EasyCustomLabeling", "EasyCustomLabeling Error: For some reason, at least one labeling layer could not be reconnected to plugin events. Callouts line will not follow when moving label", None, QtGui.QApplication.UnicodeUTF8), level=2, duration=10)
# else :
# return


# dp = layer.dataProvider()
# print 'provider ' + str(dp) + ' | erreurs: ' + str(dp.errors())
if connectSuccess == 'f':
iface.messageBar().pushMessage("Error", QtGui.QApplication.translate("EasyCustomLabeling", "EasyCustomLabeling Error: For some reason, at least one labeling layer could not be reconnected to plugin events. Callouts line will not follow when moving label", None, QtGui.QApplication.UnicodeUTF8), level=2, duration=10)

# if layer.providerType() == 'memory':
# dp.reloadData()
# print 'reloading memory layer data '





Expand Down
4 changes: 3 additions & 1 deletion EasyCustomLabeling/metadata.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@ name=EasyCustomLabeling
qgisMinimumVersion=2.0
description=Allows to quickly duplicate layer into memory layer ready for data defined labeling. Requires Memory layer Saver >= 3.2 to restore all labels correctly
description[fr]=Permet de rapidement une couche dédiée à l'étiquetage personnalisé. Nécessite Memory layer Saver >= 3.2 pour sauver les couches d'étiquetage avec le projet.
version=1.3.2
version=1.3.3
about=EasyCustomLabeling is a plugin for QGIS, designed to simplify the work for manual and data defined labeling. The tool duplicates a data vector layer into a new memory layer made of lines, adds all necessary fields for advanced custom labeling like label location, rotation, color, font, callout, alignements. The resulting layer is activated ready to use labeling tools. Data is saved in Memory Layer provider, which means it is NOT saved to a file or a database. To make thoses layers persistent, please install Memory Layer Saver v3.2 or higher plugin, that saves all memory layers to a qdatastream file along the project named myqgisprojectname.qgs.mldata.
about[fr]=EasyCustomLabeling est une extension développée pour simplifer le travail d'étiquetage personnalisé et basé sur des champs de données. Cet outil duplique une couche vecteur dans une couche mémoire de lignes, et y ajoute tous les champs nécessaires pour l'étiquetage personnalisé (emplacement de l'étiquette, rotation, couleur, police, alignements...). La couche résultante est prête à être modifiée directement (éditable et outils d'étiquetages activés). Les données sont sauvées en mémoire, ce qui signifie qu'elles ne sont PAS sauvées dans un fichier ou une base. Pour sauver ces données et pouvoir réouvrir un projet avec les étiquettes, il faut installer l'extension Memory Layer Saver (v >=3.2), qui sauve toutes les couches mémoires dans un fichier Qdatastream (fichier: projet_qgis.qgs.mldata)
changelog=
1.3.3: solves error in labeling reconnection on project loads..again
1.3.2: workaround label layer detection that causes label to be not in sync with callouts after project reloading
1.3.1: cosmetic settings for Horizontal alignement centered if deltaX is under tolerance
stops when users cancels in dialog for field's choice
Expand All @@ -40,6 +41,7 @@ changelog=
- Miss an option to choose datasource format to save layer
- Callouts can only be modified in the session where labeling layer was created
changelog[fr]=
1.3.3: corrige des soucis de reconnection de flèches au chargement du projet.. de nouveau
1.3.2: Contournement du bug de mauvaise reconnection des connecteurs d'étiquettes au chargement du projet
1.3.1: - Amélioration du centrage des étiquettes lorsqu'elle sont déplacées de moins de 2cm
- réactive l'annulation dans le dialogue de choix de champ
Expand Down

0 comments on commit 3d6159c

Please sign in to comment.