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 !
# utilise le signal "size-allocate"
Posté par Jean Bréfort (site web personnel) . Évalué à 2.
void size_allocate_cb (GtkWidget *widget, GtkAllocation *alloc, gpointer data)
{
...
}
[^] # Re: utilise le signal "size-allocate"
Posté par liberforce (site web personnel) . Évalué à 2.
Par contre, tu n'aurais pas une idée sur le widget à utiliser pour garder un bandeau supérieur (qui contient les zones 1 et 2) avec une hauteur fixe ?
Comme ça je fixerai la hauteur à 20% de la hauteur totale de la fenêtre au démarrage (c'est une appli qui ne s'exécutera qu'en plein écran)
[^] # Re: utilise le signal "size-allocate"
Posté par Jean Bréfort (site web personnel) . Évalué à 1.
Le code ci-dessous a été généré par glade et tu dois pouvoir t'en inspirer :
window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window1), _("window1"));
vbox1 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox1);
gtk_container_add (GTK_CONTAINER (window1), vbox1);
hbox1 = gtk_hbox_new (FALSE, 0);
gtk_widget_show (hbox1);
gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
gtk_widget_set_size_request (hbox1, -1, 73);
[^] # Re: utilise le signal "size-allocate"
Posté par liberforce (site web personnel) . Évalué à 2.
# meuh
Posté par gc (site web personnel) . Évalué à 2.
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
Posté par liberforce (site web personnel) . Évalué à 2.
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
Posté par gc (site web personnel) . Évalué à 2.
[1] au démarrage de l'application, la taille et position au dernier quit sont conservés
[^] # Re: meuh
Posté par liberforce (site web personnel) . Évalué à 2.
Crée une callback pour les deux évènements, tu verras.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.