Mar 01/05/2012 - Actualités

Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Mar 01/05/2012 - Actualités

Message non lu par Xavier »

Refactoring du Noyau


Depuis quelques semaines, il devenait de plus en plus nécessaire de retravailler le coeur de The X-Tools, pour le moment composé de deux unités :
  • Le Noyau, qui correspond au module principal, est en charge des communications avec Windows.
  • Le Moteur est lui normalement chargé d'exécuter exclusivement le code du Timer, c'est à dire tout ce qui est "vivant". (Gestion de la date, de l'heure, des alarmes, occupation du processeur, etc...)
Depuis The X-Tools 3.5.0, et pour des raisons de lisibilité du Noyau, le Moteur était également en charge du code lié au démarrage de l'application (initialisation des variables, chargement des options et données).

Avec la gestion des données en objet, cette initialisation devient de plus en plus importante, et il est temps de faire un peu le ménage dans tout ce code éparpillé dans le Noyau et le Moteur. Une nouvelle unité Start va être créée afin de décharger le Noyau, elle contiendra exclusivement le code du Noyau dédié au démarrage de l'application.

Le démarrage de l'application suivra donc le process suivant :
  • Windows : lancement de l'application XTools.exe.
  • Application : initialisation de l'application, gestion de l'instance unique, création du Noyau.
  • Noyau : initialisations de bas niveau, communications avec Windows, appel de Start.
  • Start : contrôles au démarrage, chargement des options, des commandes et des données, création de la Barre, démarrage du Moteur. (Tâches pour le moment splittées entre le Noyau et le Moteur.)
  • Moteur : boucle infinie sur les données "temporelles" et gestion des Alarmes.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Mar 01/05/2012 - Actualités

Message non lu par Xavier »

Icônes des Raccourcis


Le code qui extrait les icônes des Raccourcis a été porté depuis l'ancienne unité Raccourcis vers le nouveau Gestionnaire de commandes.

Dans The X-Tools 3, les icônes des Raccourcis n'étaient visibles que dans le menu Raccourcis, lequel était chargé au démarrage, juste après l'affichage de la Barre. (Les quelques secondes pendant lesquelles le menu Raccourcis est grisé correspondent à cette extraction en arrière plan).

Dans The X-Tools 4, ce chargement doit être fait avant l'affichage de la Barre puiqu'elle pourra afficher les Raccourcis directement sur des boutons. Il y aura donc sans doute un SplashScreen au démarrage (ce pourra être la fenêtre du Noyau affichée avec quelques composants dessus) histoire de meubler la poignée de secondes que dure l'extraction.


Il a fallu ruser un peu pour le stockage des icônes dans la liste qui contient les images des Commandes : l'icône est donc extraite de la cible du Raccourci, insérée dans la liste interne, et son index dans cette liste est stocké sur le Raccourci qui contient donc deux indexes d'icônes : celui dans la liste interne en plus de celui dans le fichier de la cible (si surchargé par l'utilisateur).
ShortcutsImages.png
Prochaines étapes :
  • Gestion des Raccourcis : création, édition, manipulations. Pas de difficulté en vue, merge de code XT3 et des Contacts.
  • Gestion des Barres d'outils et des Menus (les deux composants du haut).
  • Affectation des Commandes et Raccourcis gérés dans cette fenêtre aux Menus et Barres d'outils.
Le dernier point sera un gros morceau, c'est là que ça a bloqué l'été dernier. :?
Il va quand même falloir générer des sortes d'OID pour les Raccourcis, car la configuration de la Barre devra stocker des références aux Raccourcis. A priori ce devrait être un identifiant généré à partir du nom du Raccourci, avoir un numéro posera sans doute trop de problèmes lors des imports.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Denis
Messages : 180
Enregistré le : jeu. 23 juin 2011 09:21

Re: Mar 01/05/2012 - Actualités

Message non lu par Denis »

je te conseille un UID, Unique ID, que tu génère avec un MD5 d'une chaine qui varie, idéalement à partir de la date et heure de création de ton raccourci. Le risque de collision est très faible pour ce type de HashCode (sur 32 octets), et tu peux toujours contrôler l'unicité avant d'attribuer ton UID pour de bon.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Re: Mar 01/05/2012 - Actualités

Message non lu par Xavier »

DMo a écrit :je te conseille un UID, Unique ID, que tu génère avec un MD5 d'une chaine qui varie, idéalement à partir de la date et heure de création de ton raccourci. Le risque de collision est très faible pour ce type de HashCode (sur 32 octets), et tu peux toujours contrôler l'unicité avant d'attribuer ton UID pour de bon.
Dans les toutes premières versions de ma classe TData, il y avait un champ OID de 20 chiffres : 10 pour la date et l'heure et 10 pour un chiffre aléatoire. Le risque de doublon était extrêmement faible mais existait.

Ta suggestion d'utiliser des UID est excellente car propsoe des IDs propres à chaque machine, merci.
D'après ce que je vois sur Wiki, il y a même une API Windows qui propose cela.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Re: Mar 01/05/2012 - Actualités

Message non lu par Xavier »

DMo a écrit :je te conseille un UID, Unique ID, que tu génère avec un MD5 d'une chaine qui varie, idéalement à partir de la date et heure de création de ton raccourci. Le risque de collision est très faible pour ce type de HashCode (sur 32 octets), et tu peux toujours contrôler l'unicité avant d'attribuer ton UID pour de bon.
Damned, pour une fois que quelque chose est 10 fois plus facile que prévu, cela vaut un post. lol

Code : Tout sélectionner

//------------------------------------------------------------------------------
// XT400 / XSW_GetUID - Renvoie un UID
//------------------------------------------------------------------------------
function XSW_GetUID: String;
begin
	Result := CreateClassID;
end;

UID.png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Répondre