[gtk+] Add some (silly) GNotification example



commit 111120297c2cde54b3feda926f5e04f6608e3bc9
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Oct 21 17:23:44 2013 -0400

    Add some (silly) GNotification example
    
    Bloatpad can now notify you.

 examples/bloatpad.c |   38 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 37 insertions(+), 1 deletions(-)
---
diff --git a/examples/bloatpad.c b/examples/bloatpad.c
index 0789ea9..5ed5e7b 100644
--- a/examples/bloatpad.c
+++ b/examples/bloatpad.c
@@ -113,12 +113,46 @@ window_paste (GSimpleAction *action,
 
 }
 
+static void
+activate_clear (GSimpleAction *action,
+                GVariant      *parameter,
+                gpointer       user_data)
+{
+  GtkWindow *window = GTK_WINDOW (user_data);
+  GtkTextView *text = g_object_get_data ((GObject*)window, "bloatpad-text");
+
+  gtk_text_buffer_set_text (gtk_text_view_get_buffer (text), "", -1);
+}
+
+static void
+text_buffer_changed_cb (GtkTextBuffer *buffer,
+                        GApplication  *app)
+{
+  gint old_n, n;
+
+  old_n = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (buffer), "line-count"));
+  n = gtk_text_buffer_get_line_count (buffer);
+  g_object_set_data (G_OBJECT (buffer), "line-count", GINT_TO_POINTER (n));
+
+  if (old_n < 3 && n == 3)
+    {
+      GNotification *n;
+      n = g_notification_new ("Three lines of text");
+      g_notification_set_body (n, "Keep up the good work!");
+      g_notification_add_button (n, "Start over", "app.clear");
+      g_application_send_notification (app, "three-lines", n);
+      g_object_unref (n);
+    }
+}
+
 static GActionEntry win_entries[] = {
   { "copy", window_copy, NULL, NULL, NULL },
   { "paste", window_paste, NULL, NULL, NULL },
   { "fullscreen", activate_toggle, NULL, "false", change_fullscreen_state },
   { "busy", activate_toggle, NULL, "false", change_busy_state },
-  { "justify", activate_radio, "s", "'left'", change_justify_state }
+  { "justify", activate_radio, "s", "'left'", change_justify_state },
+  { "clear", activate_clear, NULL, NULL, NULL }
+
 };
 
 static void
@@ -196,6 +230,8 @@ new_window (GApplication *app,
           g_free (contents);
         }
     }
+  g_signal_connect (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)), "changed",
+                    G_CALLBACK (text_buffer_changed_cb), app);
 
   gtk_widget_show_all (GTK_WIDGET (window));
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]