Salut les GTK,

J'ai le problème suivant:

Disons que pour abréger mon interface est découper en deux notebook qui sont contenus dans un GtkPaned, widget conteneur contenant 2 éléments séparés par une poignée permettant de redimensionner la largeur de chaque notebook.

Je tiens a signaler que je maximise la fenêtre au début du programme.

Face a l'écran.

D'abord le notebook de gauche sert de conteneur pouvant accueillir divers contenus de fichier, chaque fichier est ajouter au notebook grâce a un bouton.

Le notebook de droite ne contient qu'un seule élément et je voudrai qu'il ai une taille fixe au début du programme. Sans actionner la poignée.

Hors d'abord celui-ci ne fait pas la taille de départ que je lui ai allouer, il est plus grand car le notebook de gauche ne contient qu'un seule fichier au début du programme et puis il rapetissit au fur et a mesure que j'ajoute des fichiers au notebook de gauche.

Schématiquement ça donne ça, les '+' représente la séparation des deux notebook:

-) Départ du programme: qu'un seule fichier.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
+------+----------------------------+
 
 
 
 
+------+----------------------------+
-) Ajout d'un fichier dans le notebook de gauche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
+----------+------------------------+
 
 
 
 
+---------+------------------------+
-) Ajout d'un troisième fichier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
+-------------------+---------------+
 
 
 
 
+ ------------------+---------------+
etc..

Jusqu'a ce que le notebook de gauche ai des flèches aux tabs et que le notebook de droite ai atteint la taille souhaité.

Bon le code est censé représenter le problème: je l'ai écrit exprès pour ce poste et le problème est que lui il fonctionne correctement:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 
#include <gtk/gtk.h>
 
static void destroy(GtkWidget *widget ,gpointer pointer) ;
 
static gboolean delete_event(GtkWidget *widget,GdkEvent *event,gpointer pointer) ;
 
void new_file_set(GtkButton *button, GtkWidget *left_notebook) ;
 
int main(int argc, char *argv[]) {
 
  gtk_init(&argc,&argv) ;
 
  GtkWidget *window  ;
 
  window=gtk_window_new(GTK_WINDOW_TOPLEVEL) ;
 
  gtk_window_set_title(GTK_WINDOW(window),"title") ;
 
  gtk_window_maximize(GTK_WINDOW(window));
 
 
  GtkWidget *main_vbox        = gtk_box_new(GTK_ORIENTATION_VERTICAL,0) ;
 
 
  GtkWidget *open_file_button = gtk_button_new_with_label("Open file") ;
 
 
  GtkWidget *left_notebook    = gtk_notebook_new() ;  /** Dynamically files add as content               **/
 
  gtk_notebook_set_scrollable(GTK_NOTEBOOK(left_notebook), TRUE);
 
  g_signal_connect(G_OBJECT(open_file_button),"clicked",G_CALLBACK(new_file_set),left_notebook) ;
 
 
  GtkWidget *right_notebook   = gtk_notebook_new()    ;  /** Get only one page and should be fixed size. **/
 
  gtk_widget_set_size_request(right_notebook, 255,-1) ;  /** The width should be fixed.                  **/
 
  GtkWidget *main_paned       = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL) ;
 
  /** Uncomment to get a visual view: 
  GtkWidget *button_test1      = gtk_button_new_with_label("test1") ;
  
  GtkWidget *button_test2      = gtk_button_new_with_label("test2") ;
  
  gtk_notebook_append_page(GTK_NOTEBOOK(left_notebook),button_test1,NULL) ;
  gtk_notebook_append_page(GTK_NOTEBOOK(right_notebook),button_test2,NULL) ;
  **/
 
 
  gtk_paned_pack1(GTK_PANED(main_paned),
                 left_notebook,          /** Child widget */
                 TRUE,                   /** should this child expand when the paned widget is resized.  **/
                 FALSE);                 /** can this child be made smaller than its requisition.        **/
 
 
 
  gtk_paned_pack2(GTK_PANED(main_paned),
                 right_notebook,         /** Child widget */
                 FALSE,                  /** should this child expand when the paned widget is resized. */
                 FALSE);                 /** can this child be made smaller than its requisition.       */
 
 
  gtk_box_pack_start(GTK_BOX(main_vbox), open_file_button, FALSE, FALSE, 0) ;
 
  gtk_box_pack_start(GTK_BOX(main_vbox), main_paned,       TRUE,  TRUE,  0) ;
 
 
 
  g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(destroy),NULL) ;
 
  g_signal_connect(G_OBJECT(window),"delete-event",G_CALLBACK(delete_event),NULL) ;
 
  gtk_container_add(GTK_CONTAINER(window),main_vbox) ;
 
  gtk_widget_show_all(window) ;
 
  gtk_main() ;
 
  return 0 ;
 
}
 
void new_file_set(GtkButton *button, GtkWidget *left_notebook) {
 
  /** Here we set a new page to left_notebook with the content of the selected file **/
 
  /** Something like this:
    *
    * gtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL) ;
    *
    * gtkWidget *textview        = gtk_text_view_new() ;
    *
    * Here feed the textview with file content.
    *
    * gtk_container_add(GTK_CONTAINER(scrolled_window),textview) ;
    *
    * gtk_notebook_append_page(GTK_NOTEBOOK(left_notebook), scrolled_window, NULL);
    *
    **********************************************************************************/
 
  return ;
}
 
static void destroy(GtkWidget *widget,gpointer pointer) {
  fprintf(stdout,"%s function activate\n",__func__) ;
  gtk_main_quit() ;
}
 
static gboolean delete_event(GtkWidget *widget,GdkEvent *event,gpointer pointer) {
  if (event->type == GDK_DELETE) {
    fprintf(stdout,"%s delete_event catch\n",__func__) ;
    return FALSE ;
  }
  else {
    fprintf(stdout,"%s delete_event not catch\n",__func__) ;
    return TRUE ;
  }
}
Merci pour vos réponses éclairées.