*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
*/
#ifdef HAVE_CONFIG_H
static void mimeview_open_part_with (MimeView *mimeview,
MimeInfo *partinfo,
gboolean automatic);
+static void mimeview_select_next_part (MimeView *mimeview);
static void mimeview_view_file (const gchar *filename,
MimeInfo *partinfo,
const gchar *cmd,
}
static GtkItemFactoryEntry mimeview_popup_entries[] =
{
- {N_("/_Open"), NULL, mimeview_launch_cb, 0, NULL},
- {N_("/Open _with..."), NULL, mimeview_open_with, 0, NULL},
- {N_("/_Display as text"), NULL, mimeview_display_as_text, 0, NULL},
- {N_("/_Save as..."), NULL, mimeview_save_as, 0, NULL},
- {N_("/Save _all..."), NULL, mimeview_save_all, 0, NULL},
+ {N_("/_Open (l)"), NULL, mimeview_launch_cb, 0, NULL},
+ {N_("/Open _with (o)..."), NULL, mimeview_open_with, 0, NULL},
+ {N_("/_Display as text (t)"), NULL, mimeview_display_as_text, 0, NULL},
+ {N_("/_Save as (y)..."), NULL, mimeview_save_as, 0, NULL},
+ {N_("/Save _all..."), NULL, mimeview_save_all, 0, NULL},
+ {N_("/Next part (a)"), NULL, mimeview_select_next_part,0, NULL},
};
static GtkTargetEntry mimeview_mime_types[] =
gtk_widget_show(hbox);
gtk_widget_hide(ctree_mainbox);
-
+#ifdef MAEMO
+ gtk_widget_set_size_request(mime_toggle, -1, arrow->requisition.height + 8);
+#endif
mimeview->hbox = hbox;
mimeview->paned = paned;
mimeview->scrolledwin = scrolledwin;
partinfo->type == MIMETYPE_IMAGE ||
partinfo->type == MIMETYPE_MULTIPART))
menu_set_sensitive(mimeview->popupfactory,
- "/Display as text", FALSE);
+ "/Display as text (t)", FALSE);
else
menu_set_sensitive(mimeview->popupfactory,
- "/Display as text", TRUE);
+ "/Display as text (t)", TRUE);
if (partinfo &&
partinfo->type == MIMETYPE_APPLICATION &&
!g_ascii_strcasecmp(partinfo->subtype, "octet-stream"))
menu_set_sensitive(mimeview->popupfactory,
- "/Open", FALSE);
+ "/Open (l)", FALSE);
else
menu_set_sensitive(mimeview->popupfactory,
- "/Open", TRUE);
+ "/Open (l)", TRUE);
g_object_set_data(G_OBJECT(mimeview->popupmenu),
"pop_partinfo", partinfo);
mimeview_key_pressed(mimeview->ctree, event, mimeview);
}
+static void mimeview_select_next_part(MimeView *mimeview)
+{
+ gboolean is_next = FALSE;
+
+ GList *child = gtk_container_children(GTK_CONTAINER(mimeview->icon_vbox));
+ for (; child != NULL; child = g_list_next(child)) {
+ if (GTK_IS_TOGGLE_BUTTON(child->data) &&
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(child->data))) {
+ is_next = TRUE;
+ } else if (GTK_IS_TOGGLE_BUTTON(child->data) &&
+ is_next) {
+ toggle_icon(GTK_TOGGLE_BUTTON(child->data), mimeview);
+ gtk_toggle_button_set_active
+ (GTK_TOGGLE_BUTTON(child->data), TRUE);
+ icon_selected(mimeview, -1,
+ (MimeInfo *)g_object_get_data(G_OBJECT(child->data),
+ "partinfo"));
+ is_next = FALSE;
+ break;
+ }
+ }
+ if (is_next) {
+ /* we were on the last one, go to first */
+ child = gtk_container_children(GTK_CONTAINER(mimeview->icon_vbox));
+ for (; child != NULL; child = g_list_next(child)) {
+ if (GTK_IS_TOGGLE_BUTTON(child->data)) {
+ toggle_icon(GTK_TOGGLE_BUTTON(child->data), mimeview);
+ gtk_toggle_button_set_active
+ (GTK_TOGGLE_BUTTON(child->data), TRUE);
+ icon_selected(mimeview, -1,
+ (MimeInfo *)g_object_get_data(G_OBJECT(child->data),
+ "partinfo"));
+ break;
+ }
+ }
+ }
+}
+
#define BREAK_ON_MODIFIER_KEY() \
if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) != 0) break
mimeview_scroll_page(mimeview, TRUE);
return TRUE;
case GDK_Return:
+ case GDK_KP_Enter:
mimeview_scroll_one_line(mimeview,
(event->state & GDK_MOD1_MASK) != 0);
return TRUE;
KEY_PRESS_EVENT_STOP();
mimeview_check_signature(mimeview);
return TRUE;
+ case GDK_a:
+ BREAK_ON_MODIFIER_KEY();
+ KEY_PRESS_EVENT_STOP();
+ mimeview_select_next_part(mimeview);
+ return TRUE;
default:
break;
}
mimeview_scroll_page(mimeview, TRUE);
return TRUE;
case GDK_Return:
+ case GDK_KP_Enter:
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) {
KEY_PRESS_EVENT_STOP();
mimeview_scroll_one_line(mimeview,
KEY_PRESS_EVENT_STOP();
mimeview_check_signature(mimeview);
return TRUE;
+ case GDK_a:
+ BREAK_ON_MODIFIER_KEY();
+ KEY_PRESS_EVENT_STOP();
+ mimeview_select_next_part(mimeview);
+ return TRUE;
default:
break;
}
OVERLAY_NONE, 6, 3);
}
gtk_container_add(GTK_CONTAINER(button), pixmap);
-
if (!desc) {
if (prefs_common.attach_desc)
desc = get_part_description(mimeinfo);
g_signal_connect(G_OBJECT(button), "drag_data_get",
G_CALLBACK(mimeview_drag_data_get), mimeview);
gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
+#ifdef MAEMO
+ gtk_widget_set_size_request(vbox, -1, pixmap->requisition.height + 8);
+ gtk_widget_set_size_request(button, -1, pixmap->requisition.height + 4);
+#endif
}
"partinfo") == (gpointer)mimeinfo) {
toggle_icon(GTK_TOGGLE_BUTTON(child->data), mimeview);
gtk_toggle_button_set_active
- (GTK_TOGGLE_BUTTON(child->data), TRUE);
+ (GTK_TOGGLE_BUTTON(child->data), TRUE);
}
}
}
gtk_widget_set_size_request(mimeview->icon_mainbox,
size.width, -1);
}
-
}
static void mime_toggle_button_cb (GtkWidget *button, MimeView *mimeview)
} else if (!strcmp(cmd, "sc://menu_attachment") && data != NULL) {
mimeview->spec_part = (MimeInfo *)data;
part_button_pressed(mimeview, event, (MimeInfo *)data);
+ } else if (!strncmp(cmd, "sc://search_tags:", strlen("sc://search_tags:"))) {
+ const gchar *tagname = cmd + strlen("sc://search_tags:");
+ gchar *buf = g_strdup_printf("tag matchcase \"%s\"", tagname);
+ gtk_toggle_button_set_active(
+ GTK_TOGGLE_BUTTON(mimeview->messageview->mainwin->summaryview->toggle_search),
+ TRUE);
+ quicksearch_set(mimeview->messageview->mainwin->summaryview->quicksearch,
+ QUICK_SEARCH_EXTENDED, buf);
+ g_free(buf);
}
}