summaryrefslogtreecommitdiff
path: root/gtk/tests
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2010-08-11 01:23:23 -0400
committerRyan Lortie <desrt@desrt.ca>2010-10-19 01:31:09 +0200
commitab5fb5dee5089d21c0e9d0b059d4d56362dcf327 (patch)
tree7dfb9a01e4779d3e3ac27bf7d828aac960f5a335 /gtk/tests
parentff142ac2efe0a396fa3a4da0f6be1a68b3eace6b (diff)
downloadgtk+-ab5fb5dee5089d21c0e9d0b059d4d56362dcf327.tar.gz
GtkApplication rewrite
Diffstat (limited to 'gtk/tests')
-rw-r--r--gtk/tests/gtk-example-application.c100
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;
}