Linux.gui : GTK+: Connaitre la taille effective d'une fenêtre
Posté par liberforce (Jabber id, page perso, ) le 18 mai 2006
Hello,
J'ai plusieurs problèmes en fait:
1. je n'arrive pas à obtenir la taile *réelle* de la fenêtre principale de mon application. J'utilise actuellement get_allocation mais la valeur renvoyée ne me semble pas réaliste. J'ai l'impression que c'est la taille minimale requise par les widgets, et pas la taille actuelle de la fenêtre...
2. Je voudrais réaliser une IHM avec des zones de ce type:
Les zones 1 et 2 doivent avoir une hauteur de 20% de la hauteur totale de la fenêtre (d'où mon problème 1). J'ai pour l'instant imbriqué 1, 2 dans une hbox, puis le tout avec 3 dans une vbox, mais j'ai l'impression que ce n'est pas la bonne solution.
Je voudrais que 1 et 2 aient une hauteur fixe (20% de la fenêtre principale, au démarrage de l'appli - pas besoin de redimensionner en continu)
Merci pour vos conseils !
J'ai plusieurs problèmes en fait:
1. je n'arrive pas à obtenir la taile *réelle* de la fenêtre principale de mon application. J'utilise actuellement get_allocation mais la valeur renvoyée ne me semble pas réaliste. J'ai l'impression que c'est la taille minimale requise par les widgets, et pas la taille actuelle de la fenêtre...
2. Je voudrais réaliser une IHM avec des zones de ce type:
+-----------------------+
| 1 | 2 |
+---+-------------------+
| 3 |
+-----------------------+
Les zones 1 et 2 doivent avoir une hauteur de 20% de la hauteur totale de la fenêtre (d'où mon problème 1). J'ai pour l'instant imbriqué 1, 2 dans une hbox, puis le tout avec 3 dans une vbox, mais j'ai l'impression que ce n'est pas la bonne solution.
Je voudrais que 1 et 2 aient une hauteur fixe (20% de la fenêtre principale, au démarrage de l'appli - pas besoin de redimensionner en continu)
Merci pour vos conseils !
> Lire le message (8 commentaires, moyenne: 1,9).
Vous avez demandé le commentaire #713376.



meuh
1. je n'arrive pas à obtenir la taile *réelle* de la fenêtre principale de mon application. J'utilise actuellement get_allocation mais la valeur renvoyée ne me semble pas réaliste. J'ai l'impression que c'est la taille minimale requise par les widgets, et pas la taille actuelle de la fenêtre...
Voilà ce que j'utilise pour sauvegarder et restorer la taille et la position de la fenêtre de mon application en ruby/gtk[1] :
Restoration :
if $config['pos-x'] && $config['pos-y']
$main_window.move($config['pos-x'].to_i, $config['pos-y'].to_i)
else
$main_window.window_position = Gtk::Window::POS_CENTER
end
$main_window.set_default_size(($config['width'] || 600).to_i, ($config['height'] || 400).to_i)
Sauvegarde :
$main_window.signal_connect('configure-event') {
x, y = $main_window.window.root_origin
width, height = $main_window.window.size
$config['pos-x'] = x
$config['pos-y'] = y
$config['width'] = width
$config['height'] = height
false
}
Je suggèrerais donc plutôt configure-event à size-allocate suggéré précédemment.
[1] http://www.booh.org/
[^]Re: meuh
non, non, apparemment c'est bien le size-allocate qu'il faut utiliser...
le configure event a l'air d'être déclenché avant que la taille ne soit fixée, donc c'est bien pour avertir qu'il faut changer la taille...
[^]Re: meuh
comment tu expliques que ce code fonctionne[1], alors ?
[1] au démarrage de l'application, la taille et position au dernier quit sont conservés
[^]Re: meuh
hum... j'ai utilisé les deux callback et affiché la taille au démarrage. Le configure-event me donne la taille allouée de base à la fenêtre, et n'est appelé que si je resize la fenêtre. Le size-allocate me donne tout de suite la taille *affichée*, sans avoi besoin de redimensionner la fenêtre. Une fois que tu as redimensionné ta fenêtre, ta méthode marche, et si tu ne redimensionnes pas, tu auras de toute façon la même taille au prochain démarrage (ce sera la taille par défaut à nouveau, mais toi tu ne l'auras pas sauvegardée).
Crée une callback pour les deux évènements, tu verras.