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+ avec C & C++ Discussion :

Utilisation de GtkSourceView


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut Utilisation de GtkSourceView
    Bonjour,

    J'ai quelques questions quant à l'utilisation du widget GtkSourceView. N'ayant trouvé aucun exemple sur l'utilisation de ce widget, je ne sais pas si mon code est correct, et si c'est la bonne façon de l'utiliser.

    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
    #include <gtk/gtk.h>
    #include <gtksourceview/gtksourceview.h>
    #include <gtksourceview/gtksourcelanguagemanager.h>
    #include <gtksourceview/gtksourcelanguagemanager.h>
    #include <gtksourceview/gtksourcebuffer.h>
     
     
    int main (int argc, char ** argv)
    {
        GtkWidget *window = NULL;
        GtkWidget *source_view = NULL;
        GtkWidget *scroll = NULL;
        GtkSourceBuffer *source_buffer = NULL;
        GtkSourceLanguage *lang = NULL;
        gchar *content_type = NULL;
        gboolean result_uncertain;
        gchar *content;
     
        gtk_init (&argc, &argv);
     
        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size (GTK_WINDOW(window), 320, 200);
        g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
        /* On détermine le type de fichier, pour la coloration syntaxique. */
        content_type = g_content_type_guess ("main.c", NULL, 0, &result_uncertain);
        if (result_uncertain)
        {
        	g_free (content_type);
    	content_type = NULL;
        }
        /* On indique le type dde fichier au SourceBuffer */
        lang = gtk_source_language_manager_guess_language (
        		gtk_source_language_manager_get_default(), "main.c", content_type);
        source_buffer = gtk_source_buffer_new_with_language (lang);
     
        /* On charge le contenu du fichier */
        g_file_get_contents ("main.c", &content, NULL, NULL);
        gtk_text_buffer_insert_at_cursor (GTK_TEXT_BUFFER(source_buffer), content, -1);
        g_free (content);
     
        /* On crée le GtkSourceView à partir du GtkSourceBuffer */
        source_view = gtk_source_view_new_with_buffer (source_buffer);
        gtk_source_view_set_show_line_numbers (GTK_SOURCE_VIEW(source_view), TRUE);
        gtk_source_view_set_auto_indent (GTK_SOURCE_VIEW(source_view), TRUE);
     
        /* On ajoute des scrollbar */
        scroll = gtk_scrolled_window_new (NULL, NULL);
    	       gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll), source_view);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
     
        gtk_container_add (GTK_CONTAINER(window), scroll);
     
        gtk_widget_show_all (window);
     
        gtk_main ();
     
        return 0;
    }
    Pour charger le fichier dans le SourceView, j'ai utilisé le fait qu'un GtkSourceBuffer est un enfant de GtkTextBuffer. Je ne sais pas si c'est la bonne façon de procéder, et je suis sûr qu'il y a plus approprié, mais je n'ai rien trouvé.

    Par ailleurs, j'ai un petit problème quant à l'indentation du code, celle ci n'est pas uniforme, par endroits, il me manque des morceau de tabulations, et les lignes ne sont pas alignées. Si j'ouvre le fichier avec gedit qui utilise aussi GtkSourceView, l'indentation est niquelle.

    Donc, ben si quelqu'un connait bien ce widget, ça serait sympa
    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Citation Envoyé par artificier59 Voir le message
    Pour charger le fichier dans le SourceView, j'ai utilisé le fait qu'un GtkSourceBuffer est un enfant de GtkTextBuffer. Je ne sais pas si c'est la bonne façon de procéder, et je suis sûr qu'il y a plus approprié, mais je n'ai rien trouvé.

    Ca me paraît une bonne idée de tirer profit du fait que GtkSourceBuffer dérive de GtkTextBuffer. Tu epux regarder la fonction gtk_source_buffer_load_file de http://svn.gnome.org/viewvc/gtksourc....c?view=markup qui fait à peu près la même chose que ton code.

  3. #3
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Ah, merci beaucoup, justement, j'étais tombé sur ce code une fois, et j'arrivais plus à me souvenir où.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de GtkSourceView
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 24/07/2007, 09h24
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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