Bonjour !

Codeur depuis peu en Ruby et complètement débutant en GTK je suis en train de réaliser une interface graphique. Complétement novice dans le genre je ne sais pas du tout si je me suis orienter vers la bonne solution ou pas c'est pour cela que je vous demande avis.

L'idée globale est d'imbriquer des Vbox et Hbox pour donner quelque chose qui ressemblerait à ceci :




Et le code donnerait quelque chose comme ceci :

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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
 
require 'rubygems'
require 'gtk2'
Gtk.init
 
class Fenetre < Gtk::Window
 
    def initialize
        super
 
        # Proprietes de la fenetre
        maFenetre= Gtk::Window.new
        maFenetre.set_title("Ma fenetre")
        maFenetre.set_resizable(false)
        maFenetre.set_default_size(800,600)
        maFenetre.set_window_position(Gtk::Window::POS_CENTER_ALWAYS)
 
        signal_connect "destroy" do 
            Gtk.main_quit 
        end
 
        init_ui        
        show_all
 
        Gtk.main
    end
 
    def init_ui
 
        contenu=Gtk::VBox.new()
        add(contenu)
 
        # Creation des trois gros conteneurs de l'application
 
        banniere=Gtk::HBox.new()
        corps=Gtk::HBox.new()
        informations=Gtk::VBox.new()
 
        separateurH = Gtk::HSeparator.new()
        separateurH2 = Gtk::HSeparator.new()
 
        contenu.pack_start(banniere,false)
        contenu.pack_start(separateurH,false)
        contenu.pack_start(corps,true)
        contenu.pack_start(separateurH2,false)
        contenu.pack_start(informations,false)
 
        ############# Propriete du conteneur du haut ####################
        begin
          imageBanniere = Gdk::Pixbuf.new "banniere.jpg"
          rescue IOError => e
              puts e
              puts "cannot load images"
              exit
        end
 
        image1 = Gtk::Image.new imageBanniere
 
        banniere.add(image1)
 
        ############# Propriete du conteneur du milieu ##################
 
        menuCorps=Gtk::VBox.new(false,6)
        realCorps=Gtk::VBox.new()
        corps.pack_start(menuCorps,false)
        corps.pack_start(realCorps,true)
 
        # Elements du menu
 
        conteneurMenu1=Gtk::VBox.new(false)
        conteneurMenu2=Gtk::VBox.new(false)
        conteneurMenu3=Gtk::VBox.new(false)
        conteneurMenu4=Gtk::VBox.new(false)
 
        menuCorps.pack_start(conteneurMenu1,false)
        menuCorps.pack_start(conteneurMenu2,false)
        menuCorps.pack_start(conteneurMenu3,false)
        menuCorps.pack_start(conteneurMenu4,false)
 
 
        conteneurMenu1.pack_start(monBout1=Gtk::Button.new("ElementMenu1 Menu3"),false)
        conteneurMenu1.pack_start(monBout2=Gtk::Button.new("ElementMenu2 Menu1"),false)
        conteneurMenu1.pack_start(monBout3=Gtk::Button.new("ElementMenu3 Menu1"),false)
        conteneurMenu1.pack_start(monBout4=Gtk::Button.new("ElementMenu4 Menu1"),false)
 
        conteneurMenu2.pack_start(monBout5=Gtk::Button.new("ElementMenu1 Menu2"),false)
        conteneurMenu2.pack_start(monBout6=Gtk::Button.new("ElementMenu2 Menu2"),false)
        conteneurMenu2.pack_start(monBout7=Gtk::Button.new("ElementMenu3 Menu2"),false)
        conteneurMenu2.pack_start(monBout8=Gtk::Button.new("ElementMenu4 Menu2"),false)
 
        conteneurMenu3.pack_start(monBout10=Gtk::Button.new("ElementMenu1 Menu3"),false)
        conteneurMenu3.pack_start(monBout11=Gtk::Button.new("ElementMenu2 Menu3"),false)
        conteneurMenu3.pack_start(monBout12=Gtk::Button.new("ElementMenu3 Menu3"),false)
        conteneurMenu3.pack_start(monBout13=Gtk::Button.new("ElementMenu4 Menu3"),false)
 
        conteneurMenu4.pack_start(monBout14=Gtk::Button.new("ElementMenu1 Menu4"))
        conteneurMenu4.pack_start(monBout15=Gtk::Button.new("ElementMenu2 Menu4"))
        conteneurMenu4.pack_start(monBout16=Gtk::Button.new("ElementMenu3 Menu4"))
        conteneurMenu4.pack_start(monBout17=Gtk::Button.new("ElementMenu4 Menu4"))
 
 
 
        # Elements du corps
 
        monTitre=Gtk::Label.new()
        monTitre.set_markup("<b>Mon titre</b>")
        monTitre.set_justify(Gtk::JUSTIFY_CENTER)
 
        texte="Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris a risus. In ornare convallis magna. Nunc tincidunt. Donec pharetra nisi ut felis. Proin iaculis, pede et volutpat imperdiet, felis nulla tincidunt turpis, et sollicitudin risus erat semper lectus. Sed vel magna. Integer tristique porta diam. Sed vulputate nibh id velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Fusce porta. Mauris sed justo.
        Nam sodales ligula sed nibh. Nullam ante. Donec ornare augue ac purus. Vivamus convallis metus sit amet massa. Vivamus dignissim dui vitae dui. Ut ut urna eu enim tempor porta. Curabitur dignissim blandit odio. Sed felis. Etiam fringilla. Nullam eleifend rutrum mauris. Aliquam erat volutpat. Quisque vel tortor. Phasellus nec nisi. Duis consequat. Suspendisse fringilla eros sed massa. Ut porta feugiat erat"
 
        monCorps=Gtk::Label.new()
        monCorps.set_markup(texte)
        monCorps.set_justify(Gtk::JUSTIFY_CENTER)
 
        realCorps.add(monTitre)
        realCorps.add(monCorps)
 
        ############# Propriete du conteneur du bas #####################
 
        infosCompte=Gtk::VBox.new(false,6)
        conteneurtoolbar=Gtk::VBox.new()
 
        informations.pack_start(infosCompte,true)
        informations.pack_start(conteneurtoolbar,true)
 
        toolbar = Gtk::Toolbar.new
        toolbar.set_toolbar_style Gtk::Toolbar::Style::ICONS
 
 
        sep = Gtk::SeparatorToolItem.new
        connexion = Gtk::ToolButton.new Gtk::Stock::JUMP_TO
        quit = Gtk::ToolButton.new Gtk::Stock::QUIT
 
 
        toolbar.insert 0, sep
        toolbar.insert 1, connexion
        toolbar.insert 2, quit
 
        quit.signal_connect('clicked'){
            Gtk.main_quit
        }
 
        conteneurtoolbar.pack_start(toolbar,false)
 
  end
end

Seulement voila je ne sais pas comment donner des tailles fixes aux menus, corps etc. Par exemple le texte que j'ai mis en exemple dans mon conteneur pour le corps agrandit la taille de ma fenetre pour pouvoir s'afficher... (Ca me donne une frame de 13000000000 par 600 à peu près ).

Voilà je pense pouvoir compter sur votre bonne dévotion pour pouvoir m'éclairer un peu

Merci