diff options
author | Ryan Lortie <desrt@desrt.ca> | 2010-08-11 01:23:23 -0400 |
---|---|---|
committer | Ryan Lortie <desrt@desrt.ca> | 2010-10-19 01:31:09 +0200 |
commit | ab5fb5dee5089d21c0e9d0b059d4d56362dcf327 (patch) | |
tree | 7dfb9a01e4779d3e3ac27bf7d828aac960f5a335 /gtk/tests | |
parent | ff142ac2efe0a396fa3a4da0f6be1a68b3eace6b (diff) | |
download | gtk+-ab5fb5dee5089d21c0e9d0b059d4d56362dcf327.tar.gz |
GtkApplication rewrite
Diffstat (limited to 'gtk/tests')
-rw-r--r-- | gtk/tests/gtk-example-application.c | 100 |
1 files changed, 54 insertions, 46 deletions
diff --git a/gtk/tests/gtk-example-application.c b/gtk/tests/gtk-example-application.c index 2bd5f78d06..8e02804106 100644 --- a/gtk/tests/gtk-example-application.c +++ b/gtk/tests/gtk-example-application.c @@ -1,60 +1,68 @@ #include <gtk/gtk.h> -static const char *builder_data = -"<interface>" -"<object class=\"GtkAboutDialog\" id=\"about_dialog\">" -" <property name=\"program-name\">Example Application</property>" -" <property name=\"website\">http://www.gtk.org</property>" -"</object>" -"<object class=\"GtkActionGroup\" id=\"actions\">" -" <child>" -" <object class=\"GtkAction\" id=\"About\">" -" <property name=\"name\">About</property>" -" <property name=\"stock_id\">gtk-about</property>" -" </object>" -" </child>" -"</object>" -"</interface>"; - -static GtkWidget *about_dialog; +static void +new_window (GtkApplication *app, + GFile *file) +{ + GtkWidget *window, *scrolled, *view; + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_application (GTK_WINDOW (window), app); + gtk_window_set_title (GTK_WINDOW (window), "Bloatpad"); + scrolled = gtk_scrolled_window_new (NULL, NULL); + view = gtk_text_view_new (); + gtk_container_add (GTK_CONTAINER (scrolled), view); + gtk_container_add (GTK_CONTAINER (window), scrolled); + + if (file != NULL) + { + gchar *contents; + gsize length; + + if (g_file_load_contents (file, NULL, &contents, &length, NULL, NULL)) + { + GtkTextBuffer *buffer; + + buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); + gtk_text_buffer_set_text (buffer, contents, length); + g_free (contents); + } + } + + gtk_widget_show_all (GTK_WIDGET (window)); +} + +static void +activate (GtkApplication *application) +{ + new_window (application, NULL); +} static void -about_activate (GtkAction *action, - gpointer user_data) +open (GtkApplication *application, + GFile **files, + gint n_files, + const gchar *hint, + gpointer user_data) { - gtk_dialog_run (GTK_DIALOG (about_dialog)); - gtk_widget_hide (GTK_WIDGET (about_dialog)); + gint i; + + for (i = 0; i < n_files; i++) + new_window (application, files[i]); } int main (int argc, char **argv) { GtkApplication *app; - GtkWindow *window; - GtkBuilder *builder; - GtkAction *action; - GtkActionGroup *actions; - - app = gtk_application_new ("org.gtk.Example", &argc, &argv); - builder = gtk_builder_new (); - if (!gtk_builder_add_from_string (builder, builder_data, -1, NULL)) - g_error ("failed to parse UI"); - actions = GTK_ACTION_GROUP (gtk_builder_get_object (builder, "actions")); - gtk_application_set_action_group (app, actions); - - action = gtk_action_group_get_action (actions, "About"); - g_signal_connect (action, "activate", G_CALLBACK (about_activate), app); - - about_dialog = GTK_WIDGET (gtk_builder_get_object (builder, "about_dialog")); - - gtk_builder_connect_signals (builder, app); - g_object_unref (builder); - - window = gtk_application_get_window (app); - gtk_container_add (GTK_CONTAINER (window), gtk_label_new ("Hello world")); - gtk_widget_show_all (GTK_WIDGET (window)); + int status; - gtk_application_run (app); + app = gtk_application_new ("org.gtk.Test.bloatpad", + G_APPLICATION_HANDLES_OPEN); + g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); + g_signal_connect (app, "open", G_CALLBACK (open), NULL); + status = g_application_run (G_APPLICATION (app), argc, argv); + g_object_unref (app); - return 0; + return status; } |