Latest news: Add attribut "uuid" for .elmt file. by scorpio810 on 29/06/2015 at 10:03:23
Bonjour,


Ces derniers jours les travaux ont portés:

  • Amélioration du code sur le switch du fond blanc en gris et vice versa des folios, les bordures et cartouches passent maintenant en gris comme le reste du schéma.
  • Les basic shapes, images une fois leur positions verrouillés ne sont plus déplaçables même avec le clavier.

Depuis quelques temps et plus tard suivant les OS, il est apparu que Qt n'enregistrait jamais dans le même ordre les attributs définitions des Eléments dans le XML à chaque lancement de Qet.

Une classe compare les attributs pour identifier si lélément qui vient dêtre posé sur le schéma existe déjà dans le projet, et s'il l'est, compare l'ensemble des attributs.

Pour des questions de rapidité cette méthode compare l'ensemble de la chaîne, si un attribut change de place lélément est vu comme différent.


On à réfléchi avec Joshua à plusieurs solutions, dont le fait de passer de QDomdocument, à QXmlStreamReader , ou Sax mais il fallait revoir en profondeur une grosse partie du code et ça aurai pu prendre des mois....


La solution qui nous est apparue la plus facile : générer un identifiant unique (UUID) sur chaque élément de la collection par l'intermédiaire de l'éditeur délément (qui maintenant rajoute automatiquement ce champ à la sauvegarde).


Du code vient dêtre ajouté pour comparer les éléments par ce seul attribut UUID, et non plus comme avant sur la chaîne entière d'attributs XML.


En principe sur de gros projets on devrait y voir une différence sur l'ajout d'un nouvel élément.

La collection  officielle à été patchée pour rajouter ce nouveau attribut. 

Je vous passe mon script bash, pour ceux sous gnu/linux qui veulent tagger leur collection personnelle (c'est pas parfait, mais ça a le mérite de fonctionner, je vais encore me faire tirer les oreilles par des plus barbus...).:D  sed, uuidgen(paquet  uuid-runtime) et find doivent d'abord être installés.

[code=bash]#!/bin/bash
# Add attribut "uuid" in all .elmt files.


find . -type f -name "*.elmt" -exec sh -c 'UUID="$(uuidgen | awk '"'"'{print toupper($0)}'"'"')" ; sed -i '"'"'s#().*(<names>)#1'"'"'"<uuid uuid="{$UUID}"/>"'"'"'2#'"'"' "{}"' ;
 

[/code]

Il faut le mettre dans le répertoire élément et le rendre exécutable:

[code=bash]chmod +x elmt_gen_uuid.sh[/code]

puis le lancer en simple user par 

[code=bash]./test.sh[/code]

Voila c'est tout, faut laisser travailler la machine, ça m'a pris quelques minutes sur les 2500 éléments de la collection.


Ceux sous Windows, faudra vous débrouiller seul, je ne sais pas faire.(si mais avec  Cygwin):P 



Enjoy!

QElectroTech

QElectroTech is a free software to create electric diagrams. QElectroTech, or QET in short, is currently available in version 0.4.

License and availability

QElectroTech is under GNU/GPL license. It is currently available for Windows, Mac OS and Linux.

Features

See the page Features and roadmap.

When will QElectroTech be achieved?

The main developer himself does not know ; indeed, there are still a lot of things to implement in order to get a version worthy of this name. Plus, the developer lacks time. QElectroTech v1.0 will then be released " When it's done ".