2006-04-05 [colin] 2.1.0cvs3
* src/textview.c * src/mimeview.c * src/mimeview.h Nicer messages in mimeview
This commit is contained in:
parent
f8c063b8e0
commit
e4bcc8301f
|
@ -1,3 +1,10 @@
|
|||
2006-04-05 [colin] 2.1.0cvs3
|
||||
|
||||
* src/textview.c
|
||||
* src/mimeview.c
|
||||
* src/mimeview.h
|
||||
Nicer messages in mimeview
|
||||
|
||||
2006-04-05 [colin] 2.1.0cvs2
|
||||
|
||||
* src/addressbook.c
|
||||
|
|
|
@ -1374,3 +1374,4 @@
|
|||
( cvs diff -u -r 1.1.2.11 -r 1.1.2.12 manual/advanced.xml; ) > 2.0.0cvs186.patchset
|
||||
( cvs diff -u -r 1.1.2.7 -r 1.1.2.8 src/plugins/pgpcore/plugin.c; cvs diff -u -r 1.1.2.9 -r 1.1.2.10 src/plugins/pgpcore/select-keys.c; cvs diff -u -r 1.1.2.5 -r 1.1.2.6 src/plugins/pgpcore/select-keys.h; cvs diff -u -r 1.1.2.17 -r 1.1.2.18 src/plugins/pgpcore/sgpgme.c; cvs diff -u -r 1.1.2.3 -r 1.1.2.4 src/plugins/pgpcore/sgpgme.h; cvs diff -u -r 1.1.2.10 -r 1.1.2.11 src/plugins/pgpinline/pgpinline.c; cvs diff -u -r 1.1.2.8 -r 1.1.2.9 src/plugins/pgpinline/plugin.c; cvs diff -u -r 1.1.2.31 -r 1.1.2.32 src/plugins/pgpmime/pgpmime.c; cvs diff -u -r 1.1.2.17 -r 1.1.2.18 src/plugins/pgpmime/plugin.c; ) > 2.1.0cvs1.patchset
|
||||
( cvs diff -u -r 1.60.2.56 -r 1.60.2.57 src/addressbook.c; cvs diff -u -r 1.1.2.22 -r 1.1.2.23 src/prefs_summaries.c; ) > 2.1.0cvs2.patchset
|
||||
( cvs diff -u -r 1.96.2.105 -r 1.96.2.106 src/textview.c; cvs diff -u -r 1.83.2.65 -r 1.83.2.66 src/mimeview.c; cvs diff -u -r 1.20.2.8 -r 1.20.2.9 src/mimeview.h; ) > 2.1.0cvs3.patchset
|
||||
|
|
|
@ -11,7 +11,7 @@ MINOR_VERSION=1
|
|||
MICRO_VERSION=0
|
||||
INTERFACE_AGE=0
|
||||
BINARY_AGE=0
|
||||
EXTRA_VERSION=2
|
||||
EXTRA_VERSION=3
|
||||
EXTRA_RELEASE=
|
||||
EXTRA_GTK2_VERSION=
|
||||
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
#include "procheader.h"
|
||||
#include "stock_pixmap.h"
|
||||
#include "gtk/gtkvscrollbutton.h"
|
||||
#include "gtk/logwindow.h"
|
||||
|
||||
|
||||
typedef enum
|
||||
|
@ -1053,26 +1054,6 @@ static void mimeview_selected(GtkCTree *ctree, GtkCTreeNode *node, gint column,
|
|||
mimeview_change_view_type(mimeview, MIMEVIEW_TEXT);
|
||||
textview_clear(mimeview->textview);
|
||||
textview_show_mime_part(mimeview->textview, partinfo);
|
||||
|
||||
#if 0 /* this sucks. I'll do better. */
|
||||
val = alertpanel_full(_("Unknown part type"),
|
||||
_("The type of this part is unknown. What would you like "
|
||||
"to do with it?"),
|
||||
GTK_STOCK_SAVE, GTK_STOCK_OPEN, _("Display as text"),
|
||||
FALSE, NULL, ALERT_WARNING, G_ALERTALTERNATE);
|
||||
switch (val) {
|
||||
case G_ALERTDEFAULT:
|
||||
mimeview_save_as(mimeview);
|
||||
break;
|
||||
case G_ALERTALTERNATE:
|
||||
mimeview_open_with(mimeview);
|
||||
break;
|
||||
case G_ALERTOTHER:
|
||||
mimeview_display_as_text(mimeview);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2186,3 +2167,32 @@ void mimeview_update (MimeView *mimeview) {
|
|||
icon_list_create(mimeview, mimeview->mimeinfo);
|
||||
}
|
||||
}
|
||||
|
||||
void mimeview_handle_cmd(MimeView *mimeview, const gchar *cmd)
|
||||
{
|
||||
MessageView *msgview = NULL;
|
||||
MainWindow *mainwin = NULL;
|
||||
|
||||
if (!cmd)
|
||||
return;
|
||||
|
||||
msgview = mimeview->messageview;
|
||||
if (!msgview)
|
||||
return;
|
||||
|
||||
mainwin = msgview->mainwin;
|
||||
if (!mainwin)
|
||||
return;
|
||||
|
||||
else if (!strcmp(cmd, "sc://view_log"))
|
||||
log_window_show(mainwin->logwin);
|
||||
else if (!strcmp(cmd, "sc://save_as"))
|
||||
mimeview_save_as(mimeview);
|
||||
else if (!strcmp(cmd, "sc://display_as_text"))
|
||||
mimeview_display_as_text(mimeview);
|
||||
else if (!strcmp(cmd, "sc://open_with"))
|
||||
mimeview_open_with(mimeview);
|
||||
else if (!strcmp(cmd, "sc://open"))
|
||||
mimeview_launch(mimeview);
|
||||
}
|
||||
|
||||
|
|
|
@ -148,6 +148,8 @@ void mimeview_pass_key_press_event (MimeView *mimeview,
|
|||
|
||||
void mimeview_register_viewer_factory (MimeViewerFactory *factory);
|
||||
void mimeview_unregister_viewer_factory (MimeViewerFactory *factory);
|
||||
void mimeview_handle_cmd (MimeView *mimeview,
|
||||
const gchar *cmd);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
100
src/textview.c
100
src/textview.c
|
@ -210,6 +210,7 @@ static void save_file_cb (TextView *textview,
|
|||
static void open_image_cb (TextView *textview,
|
||||
guint action,
|
||||
void *data);
|
||||
static void textview_show_icon(TextView *textview, const gchar *stock_id);
|
||||
|
||||
static GtkItemFactoryEntry textview_link_popup_entries[] =
|
||||
{
|
||||
|
@ -707,7 +708,24 @@ static void textview_add_parts(TextView *textview, MimeInfo *mimeinfo)
|
|||
}
|
||||
|
||||
#define TEXT_INSERT(str) \
|
||||
gtk_text_buffer_insert(buffer, &iter, str, -1)
|
||||
gtk_text_buffer_insert_with_tags_by_name \
|
||||
(buffer, &iter, str, -1,\
|
||||
"header", NULL)
|
||||
|
||||
#define TEXT_INSERT_LINK(str, fname) { \
|
||||
RemoteURI *uri; \
|
||||
uri = g_new(RemoteURI, 1); \
|
||||
uri->uri = g_strdup(""); \
|
||||
uri->start = gtk_text_iter_get_offset(&iter); \
|
||||
gtk_text_buffer_insert_with_tags_by_name \
|
||||
(buffer, &iter, str, -1, \
|
||||
"link", "header_title", "header", \
|
||||
NULL); \
|
||||
uri->end = gtk_text_iter_get_offset(&iter); \
|
||||
uri->filename = g_strdup(fname); \
|
||||
textview->uri_list = \
|
||||
g_slist_append(textview->uri_list, uri); \
|
||||
}
|
||||
|
||||
void textview_show_error(TextView *textview)
|
||||
{
|
||||
|
@ -722,7 +740,14 @@ void textview_show_error(TextView *textview)
|
|||
buffer = gtk_text_view_get_buffer(text);
|
||||
gtk_text_buffer_get_start_iter(buffer, &iter);
|
||||
|
||||
TEXT_INSERT(_("This message can't be displayed.\n"));
|
||||
TEXT_INSERT(_("\n"
|
||||
" This message can't be displayed.\n"
|
||||
" This is probably due to a network error.\n"
|
||||
"\n"
|
||||
" Use "));
|
||||
TEXT_INSERT_LINK(_("'View Log'"), "sc://view_log");
|
||||
TEXT_INSERT(_(" in the Tools menu for more information."));
|
||||
textview_show_icon(textview, GTK_STOCK_DIALOG_ERROR);
|
||||
|
||||
}
|
||||
|
||||
|
@ -741,20 +766,29 @@ void textview_show_mime_part(TextView *textview, MimeInfo *partinfo)
|
|||
buffer = gtk_text_view_get_buffer(text);
|
||||
gtk_text_buffer_get_start_iter(buffer, &iter);
|
||||
|
||||
TEXT_INSERT(_("The following can be performed on this part by "));
|
||||
TEXT_INSERT(_("right-clicking the icon or list item:\n"));
|
||||
TEXT_INSERT("\n");
|
||||
TEXT_INSERT(_(" The following can be performed on this part by\n"));
|
||||
TEXT_INSERT(_(" right-clicking the icon or list item:\n"));
|
||||
|
||||
TEXT_INSERT(_(" To save select 'Save as...' (Shortcut key: 'y')\n"));
|
||||
TEXT_INSERT(_(" To display as text select 'Display as text' "));
|
||||
TEXT_INSERT(_("(Shortcut key: 't')\n"));
|
||||
TEXT_INSERT(_(" To open with an external program select 'Open' "));
|
||||
TEXT_INSERT(_("(Shortcut key: 'l'),\n"));
|
||||
TEXT_INSERT(_(" (alternately double-click, or click the middle "));
|
||||
TEXT_INSERT(_("mouse button),\n"));
|
||||
TEXT_INSERT(_(" or 'Open with...' (Shortcut key: 'o')\n"));
|
||||
TEXT_INSERT(_(" - To save, select "));
|
||||
TEXT_INSERT_LINK(_("'Save as...'"), "sc://save_as");
|
||||
TEXT_INSERT(_(" (Shortcut key: 'y')\n"));
|
||||
TEXT_INSERT(_(" - To display as text, select "));
|
||||
TEXT_INSERT_LINK(_("'Display as text'"), "sc://display_as_text");
|
||||
TEXT_INSERT(_(" (Shortcut key: 't')\n"));
|
||||
TEXT_INSERT(_(" - To open with an external program, select "));
|
||||
TEXT_INSERT_LINK(_("'Open'"), "sc://open");
|
||||
TEXT_INSERT(_(" (Shortcut key: 'l')\n"));
|
||||
TEXT_INSERT(_(" (alternately double-click, or click the middle "));
|
||||
TEXT_INSERT(_("mouse button)\n"));
|
||||
TEXT_INSERT(_(" - Or use "));
|
||||
TEXT_INSERT_LINK(_("'Open with...'"), "sc://open_with");
|
||||
TEXT_INSERT(_(" (Shortcut key: 'o')\n"));
|
||||
textview_show_icon(textview, GTK_STOCK_DIALOG_INFO);
|
||||
}
|
||||
|
||||
#undef TEXT_INSERT
|
||||
#undef TEXT_INSERT_LINK
|
||||
|
||||
static void textview_write_body(TextView *textview, MimeInfo *mimeinfo)
|
||||
{
|
||||
|
@ -1117,6 +1151,8 @@ void textview_clear(TextView *textview)
|
|||
{
|
||||
GtkTextView *text = GTK_TEXT_VIEW(textview->text);
|
||||
GtkTextBuffer *buffer;
|
||||
GdkWindow *window = gtk_text_view_get_window(text,
|
||||
GTK_TEXT_WINDOW_TEXT);
|
||||
|
||||
buffer = gtk_text_view_get_buffer(text);
|
||||
gtk_text_buffer_set_text(buffer, "", -1);
|
||||
|
@ -1129,6 +1165,12 @@ void textview_clear(TextView *textview)
|
|||
if (textview->image)
|
||||
gtk_widget_destroy(textview->image);
|
||||
textview->image = NULL;
|
||||
|
||||
if (textview->messageview->mainwin->cursor_count == 0) {
|
||||
gdk_window_set_cursor(window, text_cursor);
|
||||
} else {
|
||||
gdk_window_set_cursor(window, watch_cursor);
|
||||
}
|
||||
}
|
||||
|
||||
void textview_destroy(TextView *textview)
|
||||
|
@ -1323,6 +1365,30 @@ bail:
|
|||
textview->image = NULL;
|
||||
}
|
||||
|
||||
static void textview_show_icon(TextView *textview, const gchar *stock_id)
|
||||
{
|
||||
GtkTextView *text = GTK_TEXT_VIEW(textview->text);
|
||||
int x = 0;
|
||||
|
||||
if (textview->image)
|
||||
gtk_widget_destroy(textview->image);
|
||||
|
||||
textview->image = gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_DIALOG);
|
||||
g_return_if_fail(textview->image != NULL);
|
||||
|
||||
gtk_widget_show(textview->image);
|
||||
|
||||
x = textview->text->allocation.width - WIDTH -5;
|
||||
|
||||
gtk_text_view_add_child_in_window(text, textview->image,
|
||||
GTK_TEXT_WINDOW_TEXT, x, 5);
|
||||
|
||||
gtk_widget_show_all(textview->text);
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#if HAVE_LIBCOMPFACE
|
||||
static void textview_show_xface(TextView *textview)
|
||||
{
|
||||
|
@ -1921,7 +1987,15 @@ static gboolean textview_uri_button_pressed(GtkTextTag *tag, GObject *obj,
|
|||
/* doubleclick: open compose / add address / browser */
|
||||
if ((event->type == GDK_BUTTON_PRESS && bevent->button == 1) ||
|
||||
bevent->button == 2 || bevent->button == 3) {
|
||||
if (!g_ascii_strncasecmp(uri->uri, "mailto:", 7)) {
|
||||
if (uri->filename && !g_ascii_strncasecmp(uri->filename, "sc://", 5)) {
|
||||
if (bevent->button == 1) {
|
||||
MimeView *mimeview =
|
||||
(textview->messageview)?
|
||||
textview->messageview->mimeview:NULL;
|
||||
mimeview_handle_cmd(mimeview, uri->filename);
|
||||
}
|
||||
return TRUE;
|
||||
} else if (!g_ascii_strncasecmp(uri->uri, "mailto:", 7)) {
|
||||
if (bevent->button == 3) {
|
||||
g_object_set_data(
|
||||
G_OBJECT(textview->mail_popup_menu),
|
||||
|
|
Loading…
Reference in a new issue