Contrôlez l'apparence, la réactivité et le comportement de vos fenêtres avec "hey"
Quelques-unes des astuces de ce site font allusion à la façon dont vous
pouvez contrôler l'apparence, la réactivité ou le comportement de vos
applications BeOS en leur envoyant des BMessages avec hey (lisez par exemple Garder la main en changeant d'espace de travail).
Ce qui n'est pas du tout évident lorsque vous lisez ces astuces, c'est la
façon dont on détermine les numéros magiques utilisés dans
les commandes hey.
Le secret se trouve dans le fichier /boot/develop/headers/be/interface/Window.h
-- un fichier d'en-tête qui contient tout un tas de propriétés des
fenêtres. Si vous jetez un coup d'œil à ce fichier, vous verrez qu'il
est organisé selon différentes rubriques:
type de fenêtre (window_type)
apparence de fenêtre (window_look)
réactivité de fenêtre (window_feel)
ainsi qu'une rubrique séparée pour définir les comportements. Les
trois rubriques ci-dessus utilisent des identifiants numériques entiers standards,
tandis que la rubrique des comportements utilise des identifiants hexadécimaux.
Chaque application BeOS détermine ses caractéristiques propres en interne,
mais ces caractéristiques peuvent être modifiées en envoyant un
message approprié à une application ou à une fenêtre.
Il est assez facile de modifier le type, l'apparence, ou la réactivité
d'une fenêtre donnée.
Par exemple, disons que vous voulez modifier l'apparence d'une fenêtre de
NetPositive en "bordered." Dans le fichier Window.h, vous trouvez la ligne:
B_BORDERED_WINDOW_LOOK = 20,
Il vous suffit donc de saisir:
hey NetPositive set Look of Window 0 to 20
Et boom -- cette fenêtre de NetPositive perd sa barre de titre et la
majorité de sa décoration. Voilà pour l'apparence et la
réactivité.
Comme les comportements des fenêtres sont exprimés en hexa, et
comme ces comportements peuvent être une combinaison d'une ou plusieurs
propriétés, les choses deviennent un petit peu plus complexe quand il s'agit
de modifier un comportement.
Plus précisément, le comportement d'une fenêtre dépend de la
valeur [val] passée à sa fonction SetFlags(), et [val] peut être une
combinaison de n'importe quels drapeaux définis dans Window.h. Il existe
aussi une fonction SetFeel() qui intervient sur des champs de comportement
supplémentaires.
L'"algorithme" habituel est le suivant:
hey ApplicationName get Flags
mais dans la plupart des cas vous aurez aussi à nommer une fenêtre
particulière de l'application, par exemple:
hey ApplicationName get Flags of Window 0
hey renverra deux nombres -- quelque chose du genre:
Reply BMessage(B_REPLY):
"result" (B_INT32_TYPE) : 16450 (0x00004042)
Le premier nombre retourné est une valeur décimale (16450 dans ce cas).
Pour modifier le comportement de cette fenêtre, il faut ajouter cette valeur
à l'équivalent décimal de la propriété que vous voulez
ajouter (les comportements s'ajoutent). Ça a l'air compliqué? Essayons
ensemble! On jette derechef un coup d'œil à Window.h, et on trouve:
B_AVOID_FRONT = 0x00000080,
donc pour empêcher que cette fenêtre ne se mette automatiquement au premier
plan quand on change d'espace de travail (comme décrit dans l'astuce Garder la main en changeant d'espace de travail),
il faut convertir 0x00000080 en décimal (vous pouvez utiliser cet utilitaire de conversion en
ligne), l'additionner à la valeur précédente, et donner la nouvelle
valeur à la fenêtre. On obtient 128+ 16450, soit 16578. Maintenant, il suffit
de saisir:
hey NetPositive set Flags of Window 1 to 16578
et la fenêtre désignée ajoutera la propriété "Avoid
front" à ses autres propriétés (si vous changez d'espace de travail
puis revenez au premier, cette fenêtre refusera d'être au premier plan quand
vous reviendrez au premier espace de travail).
Cette technique n'est pas exempte de gaffe à 100% (par exemple si vous
définissez un drapeau déjà défini cela pourrait définir
un autre drapeau de façon aléatoire, etc.) aussi il est conseillé
d'être prudent. Mais vous ne ferez pas sauter votre ordinateur avec hey, et vous
retrouverez les valeurs d'origine simplement en relançant l'application
concernée.
Pour encore plus d'informations sur l'usage de hey, reportez-vous au chapitre sur le Sciptage de
Chris Herborth dans la Bible BeOS, ou explorez le didacticiel de hey de Seth Flaxman sur
BeNews.
Read this Tip in English here
Hier findest Du den Tip in Deutsch
Cette astuce est une contribution de Cedric Degea and Scot Hacker.
Site de l'auteur de cette astuce: http://www.ngent.com/.
Astuce traduite par: BeTrayer (Jean Schwerer).
Traduction
Française du Serveur BeTips © 2000 BeTrayer et équipe
|