/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with the program; if not, see
*/
#ifdef HAVE_CONFIG_H
#include
#endif
#include "e-mail-display-popup-text-highlight.h"
#include "mail/e-mail-display-popup-extension.h"
#include "mail/e-mail-display.h"
#include
#include
#include "mail/e-mail-browser.h"
#include
#include
#include "languages.h"
#define d(x)
typedef struct _EMailDisplayPopupTextHighlight {
EExtension parent;
GtkActionGroup *action_group;
WebKitDOMDocument *document;
} EMailDisplayPopupTextHighlight;
typedef struct _EMailDisplayPopupTextHighlightClass {
EExtensionClass parent_class;
} EMailDisplayPopupTextHighlightClass;
#define E_MAIL_DISPLAY_POPUP_TEXT_HIGHLIGHT(obj) \
(G_TYPE_CHECK_INSTANCE_CAST \
((obj), e_mail_display_popup_text_highlight_get_type(), EMailDisplayPopupTextHighlight))
GType e_mail_display_popup_text_highlight_get_type (void);
static void e_mail_display_popup_extension_interface_init (EMailDisplayPopupExtensionInterface *iface);
G_DEFINE_DYNAMIC_TYPE_EXTENDED (
EMailDisplayPopupTextHighlight,
e_mail_display_popup_text_highlight,
E_TYPE_EXTENSION,
0,
G_IMPLEMENT_INTERFACE_DYNAMIC (
E_TYPE_MAIL_DISPLAY_POPUP_EXTENSION,
e_mail_display_popup_extension_interface_init));
static const gchar *ui =
""
" "
" "
" "
" "
" "
" "
"";
static const gchar *ui_reader =
""
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
"";
static GtkActionEntry entries[] = {
{ "format-as-menu",
NULL,
N_("_Format as..."),
NULL,
NULL,
NULL
},
{ "format-as-other-menu",
NULL,
N_("_Other languages"),
NULL,
NULL,
NULL
}
};
static void
reformat (GtkAction *old,
GtkAction *action,
gpointer user_data)
{
EMailDisplayPopupTextHighlight *th_extension;
WebKitDOMDocument *doc;
WebKitDOMDOMWindow *window;
WebKitDOMElement *frame_element;
SoupURI *soup_uri;
GHashTable *query;
gchar *uri;
th_extension = E_MAIL_DISPLAY_POPUP_TEXT_HIGHLIGHT (user_data);
doc = th_extension->document;
if (!doc)
return;
uri = webkit_dom_document_get_document_uri (doc);
soup_uri = soup_uri_new (uri);
g_free (uri);
if (!soup_uri)
return;
if (!soup_uri->query) {
soup_uri_free (soup_uri);
return;
}
query = soup_form_decode (soup_uri->query);
g_hash_table_replace (
query, g_strdup ("__formatas"), (gpointer) gtk_action_get_name (action));
soup_uri_set_query_from_form (soup_uri, query);
g_hash_table_destroy (query);
uri = soup_uri_to_string (soup_uri, FALSE);
soup_uri_free (soup_uri);
/* Get frame's window and from the window the actual