IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ Discussion :

Probleme dimensionnement affichage


Sujet :

GTK+

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Probleme dimensionnement affichage
    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

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Elle est où l'image ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Elle ne s'affiche pas bizarrement...

    Nouvel essai :


  4. #4
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Citation Envoyé par Foxma16 Voir le message
    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 ).
    Pour éviter cela, tu devrais mettre le "corps" dans une GtkScrolledWindow avant de l'insérer dans tes box.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    N' y a t'il pas une autre solution ?

    J'entend par là que le contenu ne peut se mettre à la ligne par une methode quelconque. Car mettre une scrollbarre ne fais que "repousser" le problème si tu vois ce que je veux dire.

  6. #6
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Ok, le texte en question est un GtkLabel. Dans ce cas, le seul moyen que je vois de ne pas avoir une fenêtre énorme, c'est d'appeler gtk_label_set_line_wrap avec wrap = TRUE. En revanche, en GTK 2, la taille sera fixée une fois pour toute au lancement de l'application, et tu auras beau redimensionner par la suite, la disposition de ton texte ne changera plus.

    Ce problème n'a été corrigé que dans GTK3, avec le mécanisme "height for width".

    Voir aussi:
    http://developer.gnome.org/gtk3/stab...html#id1417088
    http://blogs.gnome.org/tvb/2010/04/2...idth-geometry/

    Tu peux aussi regarder du côté de gtk_label_set_ellipsize qui remplace le texte trop long par des points de suspension, mais dans mes souvenirs, je crois que tu ne récupères pas le texte entier si tu redimensionnes ensuite. J'ai eu ce genre de problèmes il y a 5 ans donc ma mémoire me joue peut être des tours, mais c'est peut être une piste valable.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Ok merci beaucoup je vais essayer de me pencher vers cette solution et reviendrai vous voir quand je serai un peu plus avancé si besoin est

    Merci déjà de votre contribution !

Discussions similaires

  1. [VB.NET] Probleme d'affichage entre ListBox/TextBox
    Par Monster77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/08/2004, 11h02
  2. [VB.NET] Probleme d'affichage de controle
    Par mic56 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/06/2004, 15h03
  3. xml-xsl-fo : probleme d'affichage d'un tableau
    Par clindoeil dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 12/12/2003, 12h46
  4. [langage] Problème d'affichage
    Par marcoss dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2003, 13h05
  5. IE [Applet] Plug-in problème d'affichage
    Par Tonton Luc dans le forum JBuilder
    Réponses: 4
    Dernier message: 19/06/2003, 08h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo