| 12
 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;
} | 
Partager