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 <assert.h>
#include <string.h>
#include <stdio.h>
#include <gtk/gtk.h>
#include <gtksourceview/gtksourceview.h>
#include <gtksourceview/gtksourcelanguage.h>
#include <gtksourceview/gtksourcelanguagesmanager.h>
GtkSourceLanguage *get_lang (const gchar *l)
{
const GSList *list = NULL;
GtkSourceLanguagesManager *lm = NULL;
GtkSourceLanguage *lang = NULL;
g_return_val_if_fail (l != NULL, lang);
lm = gtk_source_languages_manager_new ();
list = gtk_source_languages_manager_get_available_languages (lm);
assert (list != NULL);
for (; list != NULL; list = g_list_next (list))
{
gchar *name = NULL;
name = gtk_source_language_get_name (lang);
lang = list->data;
printf ("%s\n", name);
if (strcmp (l, name) == 0)
{
break;
}
else
{
lang = NULL;
}
g_free (name), name = NULL;
}
return lang;
}
int main(int argc, char **argv)
{
GtkWidget *p_window = NULL;
GtkSourceLanguage *lang = NULL;
GtkSourceBuffer *p_buffer = NULL;
GtkWidget *p_source_view = NULL;
gtk_init (&argc, &argv);
p_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (G_OBJECT (p_window), "delete-event", gtk_main_quit, NULL);
lang = get_lang ("C");
assert (lang != NULL);
p_buffer = gtk_source_buffer_new_with_language (lang);
p_source_view = gtk_source_view_new_with_buffer (p_buffer);
gtk_container_add (GTK_CONTAINER (p_window), p_source_view);
gtk_widget_show_all (p_window);
gtk_main ();
return 0;
} |