Après une semaine intensive comptabilisant presque 60 heures de coding, le dernier blocage de la Barre (l'affichage des icônes des Items des Menus dynamiques) vient d'être résolu.
Cette Barre entièrement paramétrable marche, même super bien, et c'est encore plus pratique et agréable qu'imaginé ! Il n'y a aucune latence dûe à la couche de paramétrage objet intercalée entre les boutons de la Barre et le lancement des applications.
La possibilité d'ajouter des Menus sans label ainsi que les séparateurs permettent de se construire une Barre vraiment comme on le souhaite :
Le Gestionnaire de commandes aura été assez difficile à développer à cause des limitations de Delphi, surtout pour sa gestion vraiment basique des ListView. Cela a entrainé du rework assez profond, surtout à cause de l'impossibilité de modifier la propriété ReadOnly au runtime sans déclencher un crash impossible à "trapper".
L'écriture du code qui détruit puis reconstruit la Barre en fonction du paramétrage n'a pas été spécialement difficile, juste très long, à cause de la multitude de cas à gérer : on doit gérer ici des boutons codés en dur (ceux des outils), les boutons dynamiques, les Menus, leurs Items et les séparateurs, tous ces derniers étant dynamiques, et arriver à faire en sorte que tout ce beau monde affiche les bonnes informations au bon endroit et lance correctement les Commandes ou Shortcuts, internes ou utilisateurs.
Le résultat est assez propre, une méthode centrale d'une seule page qui appelle une multitude de services. En fait écrire cette partie a été un pure délice.
Il reste encore à :
- Passer l'outil en multilingue (codé en dur en FR pour le moment).
- Brancher les Raccourci-claviers sur les deux ListViews du haut.
- Autoatiser la création de Shortcuts + Controls en cas de drag-and-drop de fichier sur une ToolBar.
- Diverses améliorations dans le pipe...