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

Contribuez Discussion :

GTK+ par l'exemple [Tutoriel]


Sujet :

Contribuez

  1. #1
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut GTK+ par l'exemple
    http://nicolasj.developpez.com/gtk/cours/

    Ce tutoriel a pour but de vous guider dans la réalisation d'une interface graphique en C grâce à GTK+ au travers l'exemple de la réalisation d'un éditeur de texte.
    Vous pouvez laisser un commentaire sur cet article à la suite.

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : Mars 2008
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Salut !
    Une petite remarque :
    Dans le chapitre 9, le code de la fonction open_file() est :
    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
    static void open_file (const gchar *file_name, GtkTextView *p_text_view)
    {
      g_return_if_fail (file_name && p_text_view);
      {
        gchar *contents = NULL;
     
        if (g_file_get_contents (file_name, &contents, NULL, NULL))
        {
          /* Copie de contents dans le GtkTextView */
          GtkTextIter iter;
          GtkTextBuffer *p_text_buffer = NULL;
     
          cb_new (NULL, p_text_view);
          gtk_widget_set_sensitive (GTK_WIDGET (docs.actif->p_text_view), TRUE);
          p_text_buffer = gtk_text_view_get_buffer (p_text_view);
          gtk_text_buffer_get_iter_at_line (p_text_buffer, &iter, 0);
          gtk_text_buffer_insert (p_text_buffer, &iter, contents, -1);
          /* Nous sommes obliges de remetre sauve a TRUE car l'insertion du contenu
             du fichier dans le GtkTextView a appele cb_modfie */
          docs.actif->sauve = TRUE;
        }
        else
        {
        	print_warning ("Impossible d'ouvrir le fichier %s\n", file_name);
        }
      }
    }
    qui fait appel à la fonction cb_new() dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void cb_new (GtkWidget *p_widget, gpointer user_data)
    {
      /* Pour l'instant il faut allouer la memoire, par la suite on modifiera
         simplement le pointeur */
      docs.actif = g_malloc (sizeof (*docs.actif));
      docs.actif->chemin = NULL;
      /* Pour l'instant, on se contente de stocker le seul GtkTextView qui existe,
        par la suite, il faudra en creer un nouveau ! */
      docs.actif->p_text_view = GTK_TEXT_VIEW (user_data);
      /* Le document vient d'etre creer, il n'est donc pas modifie */
      docs.actif->sauve = TRUE;
      gtk_widget_set_sensitive (GTK_WIDGET (docs.actif->p_text_view), TRUE);
    }
    on voit donc qu'il y a une double utilisation (dans cb_new() et de nouveau dans open_file() juste après l'appel à cb_new()) de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_widget_set_sensitive (GTK_WIDGET (docs.actif->p_text_view), TRUE);
    on peut donc le supprimer de la fonction open_file(), où il ne sert à rien !
    Sinon on peut remarquer aussi que entre le chapitre 8 et le chapitre 9 on ne convertit plus le contents du codage locale vers utf8. Quand on modifie notre fonction open_file() dans le chapitre 9, on peut donc laisser les instructions pour la conversion, comme dans le chapitre 8...

    Voilà... Personnellement arrivé à ce code j'avais peur de mal avoir compris un truc, donc si ça peut être utile à quelqu'un, tant mieux !
    Sinon le tuto est bien fait (surtout la démarche plus orientée "pratique" d'apprendre un peu GTK+ en faisant un projet, ici l'éditeur de texte donc), et intéressant, donc que du bon !

  3. #3
    Nouveau membre du Club Avatar de stallaf
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 79
    Points : 39
    Points
    39
    Par défaut Fonctions dépréciées
    Bonjour,
    Chapitre 4 : gcc me signale que la fonction gtk_vbox_new est dépréciée.
    Voici la nouvelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     /* Création du conteneur principal */
    p_main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
    Bon maintenant avec une date de publication du 28 juin 2006 ... y a pas de mal
    Bye.

    Chapitre 5 : la fonction gtk_hbutton_box_new est dépréciée.
    Voici la nouvelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     /* Creation du conteneur pour les boutons */
    p_button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);

Discussions similaires

  1. [LIVRE] ruby par l'exemple
    Par ash.ice.loky dans le forum Ruby
    Réponses: 8
    Dernier message: 05/03/2007, 22h40
  2. Réponses: 36
    Dernier message: 09/09/2006, 04h06

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