Window & Form
Une fenêtre peut être:
-
Au premier plan.
-
Encapsulée dans un conteneur.
-
Encapsulée dans un autre fenêtre X par le protocole X-Embed.
Quand la fenêtre est instanciée :
-
Si un conteneur est spécifié, alors la fenêtre est encapsulée dans ce conteneur comme un widget normal.
-
Sinon, si la propriété Application.Embedder est définie, alors la fenêtre est encapsulée avec le protocole X-Embed.
-
Autrement, la fenêtre est une fenêtre de premier plan normale.
A l’instanciation, la fenêtre est insérée dans la liste globale, sauf si elle est encapsulée dans un conteneur.
Chaque fois qu’une fenêtre est détruite, elle est retirée de la liste globale des fenêtres. Si cette liste devient vide, alors l’application doit fermer, a condition qu’il ne reste pas de timer en cours ou de descripteur de fichier en veille.
Une fenêtre a :
-
Une barre de menu, visible ou non, même si la fenêtre n’est pas à l’avant plan.
-
Une central area.
-
Un bouton optionnel "default".
-
Un bouton optionnel "cancel".
La propriété
Picture
définit l’image de fond utilisée par la fenêtre.
Si la propriété
Mask
est fixée, alors cette image de fond est utilisée comme masque de fenêtre, sous réserve qu’elle ait une partie transparente.
Une
Form est juste une
Window dont l’observateur d’évènement est elle même, et qui a une méthode statique publique
Main
qui instancie et affiche l’instance auto-créée de la
Form.
Vous pouvez afficher une fenêtre :
Window.ShowModal
retourne la valeur passée à la méthode
Window.Close
.
La fermeture d’une fenêtre ne fait rien si :
-
La fenêtre a déjà été fermée. Vous avez besoin d’un drapeau pour cela. N’oubliez pas d’effacer ce drapeau si la fenêtre est montrée a nouveau.
-
La fenêtre est en cours de fermeture. Vous avez besoin d’un autre drapeau pour cela.
L’évènement Close est levé uniquement si la fenêtre a effectivement été affichée.
Si
Window.Persistent
est défini , alors la fermeture d’une fenêtre ne la détruit pas.
Une fenêtre encapsulée doit recevoir l’évènement Close également.
Window.Raise
affiche automatiquement la fenêtre si nécessaire.
Window.Hide
appelle
Window.Close
quand la fenêtre est en mode modal.
Les propriétés suivantes dépendent des spécifications du gestionnaire de fenêtre freedesktop :
Window.Minimized
,
Window.Maximized
,
Window.FullScreen
,
Window.Stacking
,
Window.SkipTaskBar
,
Window.Sticky
Quand vous affichez une fenêtre pour la première fois, ou quand elle a té fermée, vous devez faire attention d’initialiser toutes les propriétés précédentes.
Quand une fenêtre est montrée, il est automatiquement lancé et activé.
Si une fenêtre redimensionnable est affichée en mode modal, sa taille initiale devient automatiquement sa taille minimale.
Les évènements Resize et Move sont levés uniquement si la fenêtre est affichée, ou une fois juste avant que la fenêtre soit montrée.
L’appui sur la clé
RETURN doit activer le bouton "default" s’il est défini. L’appui sur la clé ESC activer le bouton "cancel" s’il est défini.
La première fenêtre créée devient automatiquement la fenêtre "main". Si cette fenêtre est fermée, alors toutes les autres fenêtres sont fermées automatiquement. Une fois que la fenêtre "main" est fermée, vous pouvez créer une autre fenêtre. Cette nouvelle fenêtre devient alors la nouvelle fenêtre "main".
Le Reparentage d’une fenêtre peut changer son état premier plan.
Une fenêtre de premier plan, ou une fenêtre encapsulée qui implémente le "handler" Activate Evènement peut devenir la fenêtre active courante.
Si un contrôle obtient le focus, alors sa fenêtre devient la fenêtre active, sous réserve que cette fenêtre puisse devenir la fenêtre active courante comme expliqué ci-dessus.
Si cette fenêtre ne peut pas devenir la fenêtre active courante, alors la fenêtre parent de cette fenêtre est essayée, et ainsi de suite, jusqu’a ce qu’une fenêtre de premier plan soit atteinte.
L’activation d’une fenêtre envoie un évènement Deactivate à l’ancienne fenêtre active courante, et un évènement Activate à la nouvelle.
Quand l’application est mise en icône, la fenêtre active courante est désactivée. Quand l’application est ragrandie, la fenêtre active courante est réactivée à nouveau.
Le passage de focus à un contrôle est juste mémorisé par la fenêtre, de sorte que le focus est appliqué quand la fenêtre est effectivement ouverte.