[anjuta] message-view: bgo #727634 - Cannot copy build output
- From: Sebastien Granjoux <sgranjoux src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [anjuta] message-view: bgo #727634 - Cannot copy build output
- Date: Sat, 26 Apr 2014 17:02:28 +0000 (UTC)
commit 44e78cc455de1a76df92f88b9e5bfc768e6f5dee
Author: Sébastien Granjoux <seb sfo free fr>
Date: Sat Apr 26 18:55:14 2014 +0200
message-view: bgo #727634 - Cannot copy build output
plugins/message-view/anjuta-message-manager.xml | 3 +-
plugins/message-view/message-view.c | 100 ++++-------------------
plugins/message-view/message-view.h | 2 +-
plugins/message-view/plugin.c | 14 ++--
4 files changed, 27 insertions(+), 92 deletions(-)
---
diff --git a/plugins/message-view/anjuta-message-manager.xml b/plugins/message-view/anjuta-message-manager.xml
index 99a1c77..7d33e02 100644
--- a/plugins/message-view/anjuta-message-manager.xml
+++ b/plugins/message-view/anjuta-message-manager.xml
@@ -18,9 +18,10 @@
</popup>
<popup name="PopupMessageView">
<menuitem name="CopyMessage" action="ActionMessageCopy" />
+ <menuitem name="CopyAllMessage" action="ActionMessageCopyAll" />
+ <separator name="separator1" />
<menuitem name="NextMessage" action="ActionMessageNext" />
<menuitem name="PrevMessage" action="ActionMessagePrev" />
- <menuitem name="SaveMessage" action="ActionMessageSave" />
<placeholder name="PlaceholderPopupMessageView"/>
</popup>
</ui>
diff --git a/plugins/message-view/message-view.c b/plugins/message-view/message-view.c
index 672fd81..a984632 100644
--- a/plugins/message-view/message-view.c
+++ b/plugins/message-view/message-view.c
@@ -90,31 +90,6 @@ message_view_tree_view_filter (GtkTreeModel *model,
GtkTreeIter *iter,
gpointer data);
-/* Ask the user for an uri name */
-static gchar *
-ask_user_for_save_uri (GtkWindow* parent)
-{
- GtkWidget* dialog;
- gchar* uri;
-
- dialog = gtk_file_chooser_dialog_new (_("Save file as"), parent,
- GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
-
- if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
- {
- uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog));
- }
- else
- {
- uri = NULL;
- }
-
- gtk_widget_destroy(dialog);
-
- return uri;
-}
-
/* Message object creation, copy and freeing */
static Message*
message_new (IAnjutaMessageViewType type, const gchar *summary,
@@ -786,37 +761,18 @@ void message_view_previous(MessageView* view)
gtk_tree_path_free (path);
}
-static gboolean message_view_save_as(MessageView* view, gchar* uri)
+void message_view_copy_all(MessageView* view)
{
- GFile *file;
- GOutputStream *os;
GtkTreeIter iter;
GtkTreeModel *model;
- gboolean ok;
-
- g_return_val_if_fail (view != NULL && MESSAGE_IS_VIEW (view), FALSE);
-
- if (uri == NULL)
- return FALSE;
+ GString *messages;
- file = g_file_new_for_uri (uri);
- os = G_OUTPUT_STREAM (
- g_file_replace (file, NULL,
- FALSE,
- G_FILE_CREATE_NONE,
- NULL,
- NULL));
- /* Create file */
- if (os == NULL)
- {
- g_object_unref (file);
- return FALSE;
- }
+ g_return_if_fail (view != NULL && MESSAGE_IS_VIEW (view));
- /* Save all lines of message view */
+ /* Copy all lines of message view */
model = view->privat->model;
- ok = TRUE;
+ messages = g_string_new (NULL);
gtk_tree_model_get_iter_first (model, &iter);
do
{
@@ -827,49 +783,27 @@ static gboolean message_view_save_as(MessageView* view, gchar* uri)
{
if (message->details && (strlen (message->details) > 0))
{
- if (g_output_stream_write (os, message->details, strlen (message->details),
NULL, NULL) < 0)
- {
- ok = FALSE;
- }
+ g_string_append (messages, message->details);
+ g_string_append_c (messages, '\n');
}
else
{
- if (g_output_stream_write (os, message->summary, strlen (message->summary),
NULL, NULL) < 0)
- {
- ok = FALSE;
- }
- }
- if (g_output_stream_write (os, "\n", 1, NULL, NULL) < 0)
- {
- ok = FALSE;
+ g_string_append (messages, message->summary);
+ g_string_append_c (messages, '\n');
}
}
} while (gtk_tree_model_iter_next (model, &iter));
- g_output_stream_close (os, NULL, NULL);
- g_object_unref (os);
- g_object_unref (file);
-
- return ok;
-}
-
-void message_view_save(MessageView* view)
-{
- GtkWindow* parent;
- gchar* uri;
-
- g_return_if_fail (view != NULL && MESSAGE_IS_VIEW (view));
+
+ if (messages->len != 0)
+ {
+ GtkClipboard *clipboard;
- parent = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view)));
+ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view), GDK_SELECTION_CLIPBOARD);
- uri = ask_user_for_save_uri (parent);
- if (uri)
- {
- if (message_view_save_as (view, uri) == FALSE)
- {
- anjuta_util_dialog_error(parent, _("Error writing %s"), uri);
- }
- g_free (uri);
+ gtk_clipboard_set_text (clipboard, messages->str, messages->len);
}
+
+ g_string_free (messages, TRUE);
}
void message_view_copy(MessageView* view)
diff --git a/plugins/message-view/message-view.h b/plugins/message-view/message-view.h
index ac55cf1..e776bf3 100644
--- a/plugins/message-view/message-view.h
+++ b/plugins/message-view/message-view.h
@@ -73,7 +73,7 @@ GtkWidget* message_view_new (GtkWidget* popup_menu);
void message_view_next(MessageView* view);
void message_view_previous(MessageView* view);
-void message_view_save(MessageView* view);
+void message_view_copy_all(MessageView* view);
void message_view_copy(MessageView* view);
gboolean message_view_serialize (MessageView *view,
AnjutaSerializer *serializer);
diff --git a/plugins/message-view/plugin.c b/plugins/message-view/plugin.c
index cc0b832..7888da5 100644
--- a/plugins/message-view/plugin.c
+++ b/plugins/message-view/plugin.c
@@ -65,12 +65,12 @@ static void on_copy_message(GtkAction* menuitem, MessageViewPlugin *plugin)
message_view_copy(view);
}
-static void on_save_message(GtkAction* menuitem, MessageViewPlugin *plugin)
+static void on_copy_all_message(GtkAction* menuitem, MessageViewPlugin *plugin)
{
AnjutaMsgman* msgman = ANJUTA_MSGMAN(plugin->msgman);
MessageView* view = anjuta_msgman_get_current_view(msgman);
if (view != NULL)
- message_view_save(view);
+ message_view_copy_all(view);
}
static GtkActionEntry actions_goto[] = {
@@ -79,6 +79,10 @@ static GtkActionEntry actions_goto[] = {
N_("_Copy Message"), NULL,
N_("Copy message"),
G_CALLBACK (on_copy_message)},
+ { "ActionMessageCopyAll", NULL,
+ N_("_Copy All Messages"), NULL,
+ N_("Copy All Messages"),
+ G_CALLBACK (on_copy_all_message)},
{ "ActionMessageNext", ANJUTA_STOCK_NEXT_MESSAGE,
N_("_Next Message"), "<control><alt>n",
N_("Next message"),
@@ -86,11 +90,7 @@ static GtkActionEntry actions_goto[] = {
{ "ActionMessagePrev", ANJUTA_STOCK_PREV_MESSAGE,
N_("_Previous Message"), "<control><alt>p",
N_("Previous message"),
- G_CALLBACK (on_prev_message)},
- { "ActionMessageSave", NULL,
- N_("_Save Message"), NULL,
- N_("Save message"),
- G_CALLBACK (on_save_message)}
+ G_CALLBACK (on_prev_message)}
};
static void on_view_changed(AnjutaMsgman* msgman, MessageViewPlugin* plugin)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]