|
|||||||||||||||||||||||||||||||||||||||||||
|
Le système d'exploitation semblait, depuis la version 1.1, être définitivement fixée sur une structure de préférences de 232 octets. Mais l'arrivée de nouveaux modes d'affichage, périphériques, etc. ainsi que la possibilité de gérer des préférences additionnelles des utilisateurs a finalement amené Commodore à revoir complètement le programme "Preferences" de façon à le rendre plus flexible et extensible. Changements Beaucoup de choses ont changé, même depuis la version 1.3. Preferences 2.0 se distingue principalement de ses ancêtres par l'existence de plusieurs éditeurs, et plus d'un seul. Preferences fait désormais partie de ENV:. Commodore avait prévenu lors d'annonces précédentes que ENV: s'intégrerait à part entière dans les futures versions du système d'exploitation. Le concept de préférences et d'environnement semblait si intimement liés que l'idée de les lier est naturellement venue. Preferences fait un usage intensif d'une nouvelle possibilité offerte par le nouveau système de fichiers (New Filing System) : la notification. Une application peut demander au système de l'avertir quand un fichier est modifié, et plus particulièrement dans le cas qui nous intéresse, s'il s'agit d'un des multiples fichiers de préférences. On distingue deux types d'applications : les clients, qui consultent et se servent des préférences, et les éditeurs, qui les modifient. Quand un client désire surveiller une préférence particulière, il le signale en utilisant la nouvelle fonction DOS StartNotify(). Dès que le fichier concerné est modifié, un message est envoyé au client afin qu'il prenne les dispositions ad hoc. Tous les accès aux fichiers de préférences se font via des lectures/écritures dans ENV:, ce qui assure que tous les fichiers sont régulièrement mis à jour. Les fichiers de préférences sont groupés par types et résident dans le périphérique ENV:. Chaque fichier contient les données de Preferences pour une classe particulière (par exemple, serial.prefs contient toutes les informations relatives au(x) port(s) série). Il n'y a plus de structure de préférences figée. Celle-ci peut être ASCII, IFF ou n'importe quoi d'autre. Afin d'assurer un minimum de cohérence, les préférences système doivent se conformer à un minimum requis. Éditeurs Les éditeurs sont les outils utilisés pour modifier les fichiers de Preferences. Quand un utilisateur désire les modifier, il invoque l'éditeur correspondant situé dans le répertoire "Prefs" sur son Workbench. Alors que les éditeurs peuvent varier en apparence, leurs opérations internes sont similaires. L'éditeur va chercher dans ENV: le fichier qui lui est associé et si celui-ci n'existe pas, affiche les réglages par défaut. L'utilisateur peut alors les modifier par le biais d'une interface ressemblant à celle existant depuis le 1.1. Quand il a terminé, il sauve le fichier et une notification est alors envoyée à tous les clients qui se sont signalés. Les éditeurs initiaux sont les éditeurs système, mais il est prévu que des applications écrites par les utilisateurs fournissent leurs propres éditeurs. Alors que la plupart des options de Preferences disponibles sous 1.3 demeurent, l'utilisateur a désormais beaucoup plus de contrôle sur son environnement de travail, avec la possibilité de sélectionner des polices de caractères multiples, un écran de fond pour le Workbench, contrôle du suraffichage (overscan), supports additionnels du port série, etc. Mais contrairement au monolithique devs:system-configuration, il y a désormais plusieurs fichiers contenant chacun des définitions pour toutes les facettes de l'environnement. Chaque éditeur est associé à son fichier, dont voici la liste (susceptible de changer) :
Clients Un client est un programme qui désire être informé des changements éventuels des fichiers Preferences. Les programmes qui se servaient du drapeau IDCMP NEWPREFS devraient désormais se servir de cette nouvelle caractéristique. N'importe quel processus peut devenir client en émettant une NotifyRequest et en spécifiant pour quels fichiers il désire être tenu informé. A partir de ce moment, il sera prévenu de toute modification par un message. Il peut alors décider d'aller relire le fichier modifié afin d'enregistrer les changements qui y on été apportés. Compatibilité Un certain degré de compatibilité avec les anciennes versions a néanmoins été préservé. Quand le système démarre sur un volume qui contient un fichier devs:system-configuration, il l'utilise pour initialiser certains champs de sa structure, mettant les nouveaux à leur valeur par défaut. Il regarde ensuite dans le répertoire ENV: et tout fichier trouvé surpassera les données déjà lues. Intuition comprend toujours les fonctions GetPrefs(), GetDefPrefs() et SetPrefs() mais il est conseillé d'éviter de les utiliser dans des programmes futurs. Elles fonctionnent de la même façon qu'auparavant mais n'influent plus que sur le sous-ensemble de Preferences pour lequel Intuition garde une trace interne. SetPrefs() oblige toujours Intuition à envoyer un message aux processus ayant armé leur drapeau IDCMP NEWPREFS, mais ce mécanisme ne s'applique également qu'au tampon mémoire interne de Preferences. Déroulement du démarrage L'initialisation du système est la suivante : 1. Le DOS lit le fichier devs:system-configuration s'il existe et appelle SetPrefs() pour initialiser la structure interne de Preferences. Les nouveaux attributs sont réglés à leur valeur par défaut. 2. ENV: est assigné à RAM:ENV (créé) et les préférences archivées sur la disquette y sont copiées. 3. Les démons de configuration sont lancés et se font reconnaître comme clients pour leurs fichiers favoris (notes : "démon" est un terme qui nous vient d'Unix et qui désigne un processus tournant en tâche de fond chargé de surveiller certaines modifications dans le système, dans le sens général du terme). 4. Les démons du système vérifient l'existence de certains fichiers et les ouvrent s'ils sont présents (le seul démon système envisagé jusqu'à maintenant est le démon d'Intuition, IPrefs). 5. Intuition met à jour ses configurations internes ainsi que sa structure Preferences (à des fins de compatibilité). A partir de ce moment, cette structure ne peut être être modifiée. 6. L'écran du Workbench s'ouvre pour la première fois. Préconfigurations Un nouveau concept est introduit dans les Preferences 2.0 : Preferences Presets. Ces préconfigurations sont des préférences auxiliaires. Leur but est de pouvoir facilement alterner entre deux ou plusieurs préférences, celles-ci pouvant correspondre à différentes personnes utilisant la machine (énervant de ne pas avoir votre pointeur favori quand vous n'utilisez pas votre machine, pas vrai ?). Pour spécifier des préférences auxiliaires, il suffit de sauvegarder votre fichier avec l'option "save as", de l'enregistrer sous le nom de votre choix et par la suite, de faire un "use" pour qu'elles entrent en action. Notifications Deux types de notifications sont gérés : par message et par signal. Ces deux termes doivent être familiers aux personnes ayant déjà travaillé avec la structure interne d'ExecBase. Un client qui émet une requête de notification par message se verra envoyé un NotifyMessage à chaque fois que le fichier surveillé changera. Le message inclut un pointeur sur la structure NotifyRequest du client qui à son tour contiendra des pointeurs permettant de localiser le fichier qui a été modifié. Les notifications par messages sont particulièrement utiles lors de requêtes portant sur plus d'un fichier. Un client demandant une notification par signal recevra simplement un signal de la part du handler (gestionnaire) quand le fichier sera modifié, et aucun message ne sera envoyé. Cette méthode est plus rapide que la notification par message mais elle contient également beaucoup moins d'informations (une seule en fait !). Elle est des plus utiles lors de la notification sur un ou deux fichiers.
|