static gint mimeview_key_pressed(GtkWidget *widget, GdkEventKey *event, MimeView *mimeview) { SummaryView *summaryview; GtkCTree *ctree = GTK_CTREE(widget); GtkCTreeNode *node; if (!event) return FALSE; if (!mimeview->opened) return FALSE; switch (event->keyval) { case GDK_space: if (textview_scroll_page(mimeview->textview, FALSE)) return TRUE; node = GTK_CTREE_NODE_NEXT(mimeview->opened); if (node) { gtk_sctree_unselect_all(GTK_SCTREE(ctree)); gtk_sctree_select(GTK_SCTREE(ctree), node); return TRUE; } break; case GDK_BackSpace: textview_scroll_page(mimeview->textview, TRUE); return TRUE; case GDK_Return: textview_scroll_one_line(mimeview->textview, (event->state & GDK_MOD1_MASK) != 0); return TRUE; case GDK_n: case GDK_N: BREAK_ON_MODIFIER_KEY(); if (!GTK_CTREE_NODE_NEXT(mimeview->opened)) break; KEY_PRESS_EVENT_STOP(); gtk_signal_emit_by_name(GTK_OBJECT(ctree), "scroll_vertical", GTK_SCROLL_STEP_FORWARD, 0.0); return TRUE; case GDK_p: case GDK_P: BREAK_ON_MODIFIER_KEY(); if (!GTK_CTREE_NODE_PREV(mimeview->opened)) break; KEY_PRESS_EVENT_STOP(); gtk_signal_emit_by_name(GTK_OBJECT(ctree), "scroll_vertical", GTK_SCROLL_STEP_BACKWARD, 0.0); return TRUE; case GDK_y: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_save_as(mimeview); return TRUE; case GDK_t: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_display_as_text(mimeview); return TRUE; case GDK_l: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_launch(mimeview); return TRUE; case GDK_o: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_open_with(mimeview); return TRUE; default: break; } if (!mimeview->messageview->mainwin) return FALSE; summaryview = mimeview->messageview->mainwin->summaryview; summary_pass_key_press_event(summaryview, event); return TRUE; }
static void open_with_button_clicked(GtkWidget *widget, gpointer data) { MimeView *mimeview = (MimeView *)data; mimeview_open_with(mimeview); }
static gint icon_key_pressed(GtkWidget *button, GdkEventKey *event, MimeView *mimeview) { gint num; MimeInfo *partinfo; SummaryView *summaryview; TextView *textview; num = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(button), "icon_number")); partinfo = gtk_object_get_data(GTK_OBJECT(button), "partinfo"); if (!event) return FALSE; textview = mimeview->textview; switch (event->keyval) { case GDK_space: if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) { /* stop the button being untoggled */ KEY_PRESS_EVENT_STOP(); if (textview_scroll_page(textview, FALSE)) return TRUE; if (icon_list_select_by_number(mimeview, num + 1)) return TRUE; } else { icon_selected(mimeview, num, partinfo); toggle_icon(GTK_TOGGLE_BUTTON(button), mimeview); return TRUE; } break; case GDK_BackSpace: textview_scroll_page(textview, TRUE); return TRUE; case GDK_Return: if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) { KEY_PRESS_EVENT_STOP(); textview_scroll_one_line(textview, (event->state & GDK_MOD1_MASK) != 0); return TRUE; } else { icon_selected(mimeview, num, partinfo); toggle_icon(GTK_TOGGLE_BUTTON(button), mimeview); return TRUE; } case GDK_n: case GDK_N: BREAK_ON_MODIFIER_KEY(); if (icon_list_select_by_number(mimeview, num + 1)) { KEY_PRESS_EVENT_STOP(); return TRUE; } break; case GDK_p: case GDK_P: BREAK_ON_MODIFIER_KEY(); if (icon_list_select_by_number(mimeview, num - 1)) { KEY_PRESS_EVENT_STOP(); return TRUE; } break; case GDK_y: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_save_as(mimeview); return TRUE; case GDK_t: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_display_as_text(mimeview); return TRUE; case GDK_l: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_launch(mimeview); return TRUE; case GDK_o: BREAK_ON_MODIFIER_KEY(); KEY_PRESS_EVENT_STOP(); mimeview_open_with(mimeview); return TRUE; default: break; } if (!mimeview->messageview->mainwin) return FALSE; summaryview = mimeview->messageview->mainwin->summaryview; summary_pass_key_press_event(summaryview, event); return TRUE; }