I'm using GTKSourceView in a project of mine, and noticed there isn't to
much of a tutorial/example online.
I wrote an example code for GTKSourceView 2.0

It shows the line numbers and highlights C source.  I guess any programmer
can figure out how it works :p

Thanks for this widget!
Maarten


#include <gtk/gtk.h>
> #include <gtksourceview/gtksourceview.h>
> #include <gtksourceview/gtksourcebuffer.h>
> #include <gtksourceview/gtksourcelanguage.h>
> #include <gtksourceview/gtksourcelanguagemanager.h>
> #include <gtksourceview/gtksourcelanguage.h>
>
>
> int
> main( int argc, char *argv[] )
> {
>   static GtkWidget *window, *scrollwin, *textview1;
>   GtkSourceLanguageManager *lm;
>   GtkSourceBuffer *sBuf;
>   GtkSourceLanguage *language = NULL;
>
>   /* Create window */
>   gtk_init (&argc, &argv);
>   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
>   gtk_window_set_default_size (GTK_WINDOW(window), 640, 480);
>   gtk_window_set_title (GTK_WINDOW(window),"GTKSourceView Demonstration.
> Please type some C code");
>   g_signal_connect
> (G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
>
>   /* Add GTKSourceView widget */
>   scrollwin = gtk_scrolled_window_new (NULL, NULL);
>   gtk_widget_show (scrollwin);
>
>   lm = gtk_source_language_manager_new();
>   sBuf = GTK_SOURCE_BUFFER (gtk_source_buffer_new (NULL));
>   g_object_ref (lm);
>   g_object_set_data_full ( G_OBJECT (sBuf), "languages-manager",
>                            lm, (GDestroyNotify) g_object_unref);
>
>
>   textview1 = gtk_source_view_new_with_buffer (sBuf);
>
>   gtk_source_view_set_show_line_numbers (GTK_SOURCE_VIEW(textview1),
> TRUE);
>
>   /* Add widgets to window */
>   gtk_widget_show (textview1);
>   gtk_container_add (GTK_CONTAINER (scrollwin), textview1);
>
>
>   lm = g_object_get_data (G_OBJECT (sBuf), "languages-manager");
>
>   /* Open C language, and check if its available */
>   language = gtk_source_language_manager_get_language (lm,"c");
>
>   if (language == NULL)
>   {
>    g_print ("No language found for mime type `%s'\n", "c");
>    g_object_set (G_OBJECT (sBuf), "highlight", FALSE, NULL);
>    }
>    else
>    {
>     gtk_source_buffer_set_language (sBuf, language);
>     g_object_set (G_OBJECT (sBuf), "highlight", TRUE, NULL);
>    }
>
>    gtk_container_add (GTK_CONTAINER (window), scrollwin);
>
>    gtk_widget_show_all (window);
>    gtk_main ();
>    return 0;
> }
_______________________________________________
gnome-devtools mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-devtools

Reply via email to