[Xfce4-commits] <midori:master> Add 'Copy All' to console panel

Christian Dywan noreply at xfce.org
Wed May 19 00:44:01 CEST 2010


Updating branch refs/heads/master
         to 2f5a65947f15847737621834c36ca3e3d2ad04bf (commit)
       from 01548549a834584cebb006cf7b3c85a797239ce2 (commit)

commit 2f5a65947f15847737621834c36ca3e3d2ad04bf
Author: Christian Dywan <christian at twotoasts.de>
Date:   Wed May 19 00:24:43 2010 +0200

    Add 'Copy All' to console panel

 panels/midori-console.c |   52 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 51 insertions(+), 1 deletions(-)

diff --git a/panels/midori-console.c b/panels/midori-console.c
index 545cd9e..b70cf11 100644
--- a/panels/midori-console.c
+++ b/panels/midori-console.c
@@ -1,5 +1,5 @@
 /*
- Copyright (C) 2008-2009 Christian Dywan <christian at twotoasts.de>
+ Copyright (C) 2008-2010 Christian Dywan <christian at twotoasts.de>
 
  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
@@ -187,6 +187,47 @@ midori_console_button_copy_clicked_cb (GtkToolItem*   toolitem,
 }
 
 static void
+midori_console_button_copy_all_clicked_cb (GtkToolItem*   toolitem,
+                                           MidoriConsole* console)
+{
+    GtkTreeModel* model;
+    GtkTreeIter iter;
+    gint count;
+    GString* all_text;
+    GdkDisplay* display;
+    GtkClipboard* clipboard;
+
+    model = gtk_tree_view_get_model (GTK_TREE_VIEW (console->treeview));
+    if (!gtk_tree_model_get_iter_first (model, &iter))
+        return;
+
+    count = gtk_tree_model_iter_n_children (model, NULL);
+    all_text = g_string_sized_new (count * 96);
+
+    do
+    {
+        gchar* text;
+        gchar* message;
+        gint line;
+        gchar* source_id;
+
+        gtk_tree_model_get (model, &iter, 0, &message, 1, &line, 2, &source_id, -1);
+
+        text = g_strdup_printf ("%d @ %s: %s\n", line, source_id, message);
+        g_free (source_id);
+        g_free (message);
+        g_string_append (all_text, text);
+        g_free (text);
+    }
+    while (gtk_tree_model_iter_next (model, &iter));
+
+    display = gtk_widget_get_display (GTK_WIDGET (console));
+    clipboard = gtk_clipboard_get_for_display (display, GDK_SELECTION_CLIPBOARD);
+    gtk_clipboard_set_text (clipboard, all_text->str, -1);
+    g_string_free (all_text, TRUE);
+}
+
+static void
 midori_console_button_clear_clicked_cb (GtkToolItem*   toolitem,
                                         MidoriConsole* console)
 {
@@ -315,6 +356,15 @@ midori_console_get_toolbar (MidoriViewable* console)
             G_CALLBACK (midori_console_button_copy_clicked_cb), console);
         gtk_toolbar_insert (GTK_TOOLBAR (toolbar), toolitem, -1);
         gtk_widget_show (GTK_WIDGET (toolitem));
+
+        toolitem = gtk_tool_button_new_from_stock (GTK_STOCK_DND_MULTIPLE);
+        gtk_tool_button_set_label (GTK_TOOL_BUTTON (toolitem), _("Copy _All"));
+        gtk_tool_item_set_tooltip_text (toolitem, _("Copy All"));
+        g_signal_connect (toolitem, "clicked",
+            G_CALLBACK (midori_console_button_copy_all_clicked_cb), console);
+        gtk_toolbar_insert (GTK_TOOLBAR (toolbar), toolitem, -1);
+        gtk_widget_show (GTK_WIDGET (toolitem));
+
         /* TODO: What about a find entry here that filters e.g. by url? */
         toolitem = gtk_separator_tool_item_new ();
         gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (toolitem),



More information about the Xfce4-commits mailing list