Contrôles
Les
Contrôles seront des objets qui vont permettre d'affecter une
Commande ou un
Raccourci à un composant graphique. Ces
Contrôles seront sauvés dans le fichier des
Options, et il serviront à reconstruire la
Barre au prochain démarrage.
Les contraintes de ce sujet sont multiples.
Composants statiques / dynamiques:
- Certains des composants graphiques sont conçus lors du design de la Barre. Par exemple les boutons des outils, ou les panneaux de la date et de l'heure. Ces composants sont normalement situés dans une partie de la Barre qui est invisible, et sont en mode "dormant" (le Moteur ne les met pas à jour). Si l'utilisateur choisit de les afficher, ils sont déplacés dans la ToolBar choisie.
- Cependant, il n'est pas possible de créer à l'avance des boutons et éléments de menus pour tous les Raccourcis que l'utilisateur ajoutera. Il faudra créer ces composants lors du démarrage, et l'objet Contrôle doit donc conserver les informations permettant de le faire.
Commandes /
Raccourcis :
- Certains Contrôles pointeront vers des Commandes internes (par exemple "Mettre l'écran en veille") ou des Raccourcis internes (par exemple "Gestionnaire de tâches"). Ces Commandes et Raccourcis internes sont fabriqués au démarrage et stockés dans un arbre de données particulier (la "bibliothèque de commandes", voir les actualités du week-end dernier).
- Les autres pointeront vers des fichiers, dossiers, ou adresses Web définies par l'utilisateur, et stockés dans l'arbre contenant tous les dossiers et données de l'utilisateur. (Les Raccourcis tels qu'existant dans XT3.)
Après une première étude, les
Contrôles devront avoir ces propriétés :
- Create : chaine indiquant si (et comment) le composant graphique doit être créé.
- Create = '' -> le composant existe déjà et doit juste être affiché.
- Create = 'Button' -> un bouton doit être créé.
- Create = 'Menu' -> un menu doit être créé.
- Create = 'Item' -> un élément de menu doit être créé.
- Component : chaine indiquant le nom du composant existant ou créé. (Tous les composants devant avoir un nom, ceux créés dynamiquement auront un UID.)
- Command : chaine indiquant l'identifiant de la Commande ou du Raccourci. (Les Raccourcis utilisateurs ont un UID stocké pour identifiant.)
Des liens seront ajoutés pour permettre une manipulation plus facile. Comme tous ces objets sont volatiles, ces liens ne seront pas stockés.
- .Component : pointeur vers l'object TButton, TMenu ou TMenuItem du composant graphique.
- .Command : pointeur vers l'objet TData portant la Commande ou le Raccourci.
Un
Constructor dédié va être écrit pour ces objets. Le
Contrôle parent sera passé en paramètre, ainsi que les propriétés connues.
Quelques exemples :
Création d'un contrôle pour le bouton existant "Contacts" qui lancera l'outil du même nom.
Code : Tout sélectionner
Control := TData.CreateControl(ToolBar, 'Button', 'TaskMan');
Création d'un contrôle pour un bouton à créer qui lancera le
Raccourci interne qui lance le
Gestionnaire de tâches.
Code : Tout sélectionner
Control := TData.CreateControl(Menu, 'Item', Shortcut_Data.Ident);
Création d'un élément de menu à créer qui lancera le
Raccourci utilisateur passé en paramètre.
Si tout cela fonctionne, cliquer sur un bouton créé dynamiquement devrait entrainer ces étapes :
- Récupération de l'objet Contrôle ayant servi à créé le composant graphique et pointé par celui-ci.
- Récupération de l'objet Commande ou Raccourci pointé par le Contrôle.
- Lancement de la routine interne de la Commande ou extraction et éxecution de la cible du Raccourci.
A noter que contrairement à l'été dernier, l'étude est cette fois faite AVANT l'implémentation.