Bonjour,
I. Contexte
Si j'ai bien compris le message de scorpio810 du 2016-04-23 00:46:40 on peut considérer qu'il y a cinq [s]niveaux[/s] portées de variables :
Variables globales communes à tous les projets. Ce sont des variables qui servent à initialiser les variables des nouveaux projets. Elles sont enregistrées dans les préférences de QET et sont copiées dans les propriétés de chaque nouveau projet.
Variables spécifiques à un projet. Ce sont des variables valide pour l'ensemble des folios du projet (du fichier .qet). Elles correspondent principalement au nom de l'installation, du client, à la date du projet, etc. Elles sont enregistrées dans les propriétés du projet
Variables spécifiques à un ensemble de folios. Ce sont des variables communes à un ensemble de folios regroupé par selon un certain critère (type de folio, fonctionnalité, sous-ensemble de l'installation, etc). Ce "groupe" de folios pouvant très bien n'être composé que d'un seul folio. Ces variables n'ont pas d'emplacement spécifique et sont donc dupliquées dans chaque folio. (J'y reviens plus tard)
Variables spécifiques à un folio. On y retrouve essentiellement les dimensions, le nom et le numéro de chaque folio. Elles sont accessibles dans les propriétés du folio.
Variables spécifiques à un composant du folio. Tout ce qui décrit chaque élément / conducteur. Elles sont accessibles dans le menu "Éditer l'élément" / "Éditer de connecteur"
Pour le fonctionnement de ces différents niveaux, voici ce que je m'imagine (je n'ai pas vérifié le fonctionnement de QET):
Rien n'empêche, à priori, la déclaration d'une même variables dans deux niveaux différents. Cela permet d'avoir (par exemple) une variable commune à tout le projet mais pouvant être redéfinie pour certains folios.
On peut faire ça facilement en cherchant la variable dans les variables du composant puis du folio etc jusque aux variables du projet. Si jamais on ne trouve toujours pas la variable mais qu'elle existe dans les variables globales définies dans les préférences de QET, on peut alors proposer de l'importer dans les propriétés du projet.
II) Ma proposition
Revenons en maintenant aux "Variables spécifiques à un ensemble de folios". Comme précisé plus haut, ces variables n'ont, à ma connaissance, pas d'emplacement spécifiques pour les enregistrer. Pour cela, je pense qu'il pourrait être intéressant de créer ce qui peut s'apparenter à des "dossiers de folios". Chaque "dossier" pouvant (re-)définir ses propres variables. Les variables définies dans un dossier devant être accessibles à tous les folios situés dans ledit dossier.
Les "dossiers" correspondant alors à des sous-ensembles, il serait alors intéressant de pouvoir les imbriquer pour créer des sous-sous-ensembles.
III) Subtilités techniques (part-ce que le diable se cache dans les détails)
Comme on doit pourvoir réorganiser les folios d'un projet, certaines considérations doivent être prises en compte. En effet, changer un folio de "dossier" pourrait avoir des conséquences non voulues.
Postulats pour la suite :
Les dossier pouvant être imbriqués les uns dans les autres, on peut considérer le projet dans sa globalité comme étant un dossier englobant tout le reste à la manière de "/" dans les arborescences UNIX et dérivées. Les variables pouvant alors être assimilées aux droits d'accès des fichiers.
Lorsque je considère un dossier ayant une valeur (de variable) "différente", j'inclus les dossiers pour lesquels la valeur disponible est différente ET les dossiers dans lesquelles la variable n'est pas disponible.
À chaque changement de dossier il faudra, pour chaque variable utilisée par le folio, vérifier les points suivants :
Est-ce que, pour la variable, le dossier de destination possède une valeur différente du dossier source ?
Est-ce que, pour la valeur de la variable, le dossier de destination possède une autre variable ayant la même valeur ? (Attention à la casse et aux espaces invisibles)
Si la réponse est "oui" à l'une de ces questions il faudra, selon le cas, demander à l'utilisateur s'il souhaite copier la variable dans le folio, créer/écraser la variable dans le dossier de destination, modifier la variable utilisée ou ne pas toucher aux variables.