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