Topic: Edition élément embarqué et état modifié

Bonjour,
quand on modifie un élément embarqué (un bornier par exemple): on fait enregistrer sur l'éditeur d'élément, le projet n'apparait pas modifié et à enregistré et si on ferme le projet sans enregistrer la modification est perdu.
Cordialement.

Re: Edition élément embarqué et état modifié

Bonsoir,

quand tu modifies un élément embarqué depuis le widget collection / Project /éléments embarqués tu n'as aucune vérification, ton élément sera écrasé et tu verras la différence à la ré ouverture du projet qu' a condition que tu l'ais sauvegardé.
Car son UUID ne sera pas modifié par l’éditeur lors de l'enregistrement, et donc pour le programme l’élément est le même donc ton projet ne sera pas marqué modifié!
C'est très utile à condition de savoir ce que l'on fait!

Le mieux est d’éditer ton élément puis de le sauvegarder dans ta collection user puis de le drag and drop n'importe ou dans ton projet juste pour lancer ImportElementDialog qui te proposera plusieurs solutions, remplacer l’élément, faire cohabiter les deux versions, etc, et là le projet sera marqué comme modifié. Apres tu peux supprimer l'élément que tu viens juste de drag and drop.

Comme tu le vois tu a deux méthodes une plus rapide et sans vérification, l'autre un peu plus longue mais plus sure.


//Element already exist in the embedded collection, we ask what to do to user
    if (m_elements_collection->exist(import_path)) {
        ElementsLocation existing_location(import_path, this);
 
            //@existing_location and @location have the same uuid, so it is the same element
        if (existing_location.uuid() == location.uuid()) {
            return existing_location;
        }
 
        ImportElementDialog ied;
        if (ied.exec() == QDialog::Accepted) {
            QET::Action action = ied.action();
 
                //Use the exisitng element
            if (action == QET::Ignore) {
                return existing_location;
            }
                //Erase the existing element, and use the newer instead
            else if (action == QET::Erase) {
                ElementsLocation parent_loc = existing_location.parent();
                return m_elements_collection->copy(location, parent_loc);
            }
                //Add the new element with an other name.
            else if (action == QET::Rename) {
                int a = 0;
                QString parent_path = existing_location.parent().projectCollectionPath();
                QString name_ = existing_location.fileName();
                name_.remove(".elmt");

"Le jour où tu découvres le Libre, tu sais que tu ne pourras jamais plus revenir en arrière..."