void noticeview_hide(NoticeView *noticeview) { if (noticeview && noticeview->visible) { gtk_widget_hide(GTK_WIDGET_PTR(noticeview)); noticeview->visible = FALSE; } }
void noticeview_show(NoticeView *noticeview) { if (!noticeview->visible) { gtk_widget_show(GTK_WIDGET_PTR(noticeview)); noticeview->visible = TRUE; } }
void mimeview_init(MimeView *mimeview) { textview_init(mimeview->textview); gtk_container_add(GTK_CONTAINER(mimeview->mime_notebook), GTK_WIDGET_PTR(mimeview->textview)); }
static void mimeview_change_view_type(MimeView *mimeview, MimeViewType type) { TextView *textview = mimeview->textview; ImageView *imageview = mimeview->imageview; GList *children; if (mimeview->type == type) return; children = gtk_container_get_children (GTK_CONTAINER(mimeview->mime_vbox)); if (children) { gtkut_container_remove(GTK_CONTAINER(mimeview->mime_vbox), GTK_WIDGET(children->data)); g_list_free(children); } switch (mimeview->type) { case MIMEVIEW_IMAGE: imageview_clear(mimeview->imageview); break; case MIMEVIEW_TEXT: textview_clear(mimeview->textview); break; default: break; } switch (type) { case MIMEVIEW_IMAGE: gtk_container_add(GTK_CONTAINER(mimeview->mime_vbox), GTK_WIDGET_PTR(imageview)); break; case MIMEVIEW_TEXT: gtk_container_add(GTK_CONTAINER(mimeview->mime_vbox), GTK_WIDGET_PTR(textview)); break; default: return; } mimeview->type = type; }
void messageview_destroy(MessageView *messageview) { GtkWidget *textview = GTK_WIDGET_PTR(messageview->mimeview->textview); GtkWidget *imageview = GTK_WIDGET_PTR(messageview->mimeview->imageview); messageview_list = g_list_remove(messageview_list, messageview); headerview_destroy(messageview->headerview); textview_destroy(messageview->textview); mimeview_destroy(messageview->mimeview); procmsg_msginfo_free(messageview->msginfo); if (messageview->window) gtk_widget_destroy(messageview->window); g_free(messageview); gtk_widget_unref(textview); gtk_widget_unref(imageview); }
static void mimeview_change_view_type(MimeView *mimeview, MimeViewType type) { TextView *textview = mimeview->textview; if ((mimeview->type != MIMEVIEW_VIEWER) && (mimeview->type == type)) return; switch (type) { case MIMEVIEW_TEXT: gtk_notebook_set_page(GTK_NOTEBOOK(mimeview->mime_notebook), gtk_notebook_page_num(GTK_NOTEBOOK(mimeview->mime_notebook), GTK_WIDGET_PTR(textview))); break; case MIMEVIEW_VIEWER: gtk_notebook_set_page(GTK_NOTEBOOK(mimeview->mime_notebook), gtk_notebook_page_num(GTK_NOTEBOOK(mimeview->mime_notebook), GTK_WIDGET(mimeview->mimeviewer->get_widget(mimeview->mimeviewer)))); break; default: return; } mimeview->type = type; }
MessageView *messageview_create_with_new_window(void) { MessageView *msgview; GtkWidget *window; GtkWidget *window_vbox; GtkWidget *body_vbox; GtkWidget *vspacer; GtkWidget *menubar; GtkItemFactory *ifactory; GtkWidget *statusbar; guint n_menu_entries; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), _("Message View - Sylpheed")); gtk_window_set_wmclass(GTK_WINDOW(window), "message_view", "Sylpheed"); gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE); gtk_widget_set_size_request(window, prefs_common.msgwin_width, prefs_common.msgwin_height); msgview = messageview_create(); window_vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), window_vbox); g_signal_connect(G_OBJECT(window), "size_allocate", G_CALLBACK(messageview_size_allocate_cb), msgview); g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(messageview_delete_cb), msgview); g_signal_connect(G_OBJECT(window), "key_press_event", G_CALLBACK(key_pressed), msgview); MANAGE_WINDOW_SIGNALS_CONNECT(window); n_menu_entries = sizeof(msgview_entries) / sizeof (msgview_entries[0]); menubar = menubar_create(window, msgview_entries, n_menu_entries, "<MessageView>", msgview); #if 0 menu_factory_copy_rc("<Main>", "<MessageView>"); #endif gtk_box_pack_start(GTK_BOX(window_vbox), menubar, FALSE, TRUE, 0); vspacer = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(window_vbox), vspacer, FALSE, TRUE, BORDER_WIDTH); body_vbox = gtk_vbox_new(FALSE, BORDER_WIDTH); gtk_box_pack_start(GTK_BOX(window_vbox), body_vbox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(body_vbox), GTK_WIDGET_PTR(msgview), TRUE, TRUE, 0); gtk_widget_grab_focus(msgview->textview->text); statusbar = gtk_statusbar_new(); gtk_box_pack_end(GTK_BOX(body_vbox), statusbar, FALSE, FALSE, 0); msgview->statusbar = statusbar; msgview->statusbar_cid = gtk_statusbar_get_context_id (GTK_STATUSBAR(statusbar), "Message View"); msgview->new_window = TRUE; msgview->window = window; msgview->window_vbox = window_vbox; msgview->body_vbox = body_vbox; msgview->menubar = menubar; msgview->menu_locked = FALSE; msgview->visible = TRUE; gtk_widget_show_all(window); messageview_init(msgview); messageview_set_encoding_menu(msgview); ifactory = gtk_item_factory_from_widget(menubar); #ifndef G_OS_WIN32 action_update_msgview_menu(ifactory, msgview); #endif messageview_list = g_list_append(messageview_list, msgview); return msgview; }
MessageView *messageview_create(void) { MessageView *messageview; GtkWidget *vbox; GtkWidget *notebook; HeaderView *headerview; TextView *textview; MimeView *mimeview; debug_print(_("Creating message view...\n")); messageview = g_new0(MessageView, 1); messageview->type = MVIEW_TEXT; headerview = headerview_create(); textview = textview_create(); textview->messageview = messageview; mimeview = mimeview_create(); mimeview->textview = textview_create(); mimeview->textview->messageview = messageview; mimeview->imageview = imageview_create(); mimeview->imageview->messageview = messageview; mimeview->messageview = messageview; notebook = gtk_notebook_new(); gtk_notebook_set_show_border(GTK_NOTEBOOK(notebook), FALSE); gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), FALSE); gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), TRUE); gtk_widget_show(notebook); gtk_container_add(GTK_CONTAINER(notebook), GTK_WIDGET_PTR(textview)); gtk_notebook_set_tab_label_text (GTK_NOTEBOOK(notebook), GTK_WIDGET_PTR(textview), _("Text")); gtk_container_add(GTK_CONTAINER(notebook), GTK_WIDGET_PTR(mimeview)); gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(notebook), GTK_WIDGET_PTR(mimeview), _("Attachments")); gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), 0); gtk_widget_show_all(notebook); vbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET_PTR(headerview), FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0); gtk_widget_show(vbox); /* to remove without destroyed */ gtk_widget_ref(GTK_WIDGET_PTR(mimeview->textview)); gtk_widget_ref(GTK_WIDGET_PTR(mimeview->imageview)); g_signal_connect(G_OBJECT(notebook), "switch_page", G_CALLBACK(messageview_switch_page_cb), messageview); messageview->vbox = vbox; messageview->notebook = notebook; messageview->new_window = FALSE; messageview->window = NULL; messageview->window_vbox = NULL; messageview->body_vbox = NULL; messageview->headerview = headerview; messageview->textview = textview; messageview->mimeview = mimeview; messageview->statusbar = NULL; messageview->statusbar_cid = 0; messageview->current_page = 0; return messageview; }
MimeView *mimeview_create(MainWindow *mainwin) { MimeView *mimeview; GtkWidget *paned; GtkWidget *scrolledwin; GtkWidget *ctree; GtkWidget *mime_notebook; GtkWidget *popupmenu; GtkWidget *ctree_mainbox; GtkWidget *vbox; GtkWidget *mime_toggle; GtkWidget *icon_mainbox; GtkWidget *icon_scroll; GtkWidget *icon_vbox; GtkWidget *arrow; GtkWidget *scrollbutton; GtkWidget *hbox; GtkTooltips *tooltips; GtkItemFactory *popupfactory; NoticeView *siginfoview; gchar *titles[N_MIMEVIEW_COLS]; gint n_entries; gint i; debug_print("Creating MIME view...\n"); mimeview = g_new0(MimeView, 1); titles[COL_MIMETYPE] = _("MIME Type"); titles[COL_SIZE] = _("Size"); titles[COL_NAME] = _("Name"); scrolledwin = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(scrolledwin); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); ctree = gtk_sctree_new_with_titles(N_MIMEVIEW_COLS, 0, titles); gtk_widget_show(ctree); gtk_clist_set_selection_mode(GTK_CLIST(ctree), GTK_SELECTION_BROWSE); gtk_ctree_set_line_style(GTK_CTREE(ctree), GTK_CTREE_LINES_NONE); gtk_clist_set_column_justification(GTK_CLIST(ctree), COL_SIZE, GTK_JUSTIFY_RIGHT); gtk_clist_set_column_width(GTK_CLIST(ctree), COL_MIMETYPE, 240); gtk_clist_set_column_width(GTK_CLIST(ctree), COL_SIZE, 90); for (i = 0; i < N_MIMEVIEW_COLS; i++) GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(ctree)->column[i].button, GTK_CAN_FOCUS); gtk_container_add(GTK_CONTAINER(scrolledwin), ctree); gtk_signal_connect(GTK_OBJECT(ctree), "tree_select_row", GTK_SIGNAL_FUNC(mimeview_selected), mimeview); gtk_signal_connect(GTK_OBJECT(ctree), "button_release_event", GTK_SIGNAL_FUNC(mimeview_button_pressed), mimeview); gtk_signal_connect(GTK_OBJECT(ctree), "key_press_event", GTK_SIGNAL_FUNC(mimeview_key_pressed), mimeview); gtk_signal_connect(GTK_OBJECT (ctree),"start_drag", GTK_SIGNAL_FUNC (mimeview_start_drag), mimeview); gtk_signal_connect(GTK_OBJECT(ctree), "drag_data_get", GTK_SIGNAL_FUNC(mimeview_drag_data_get), mimeview); mime_notebook = gtk_notebook_new(); gtk_widget_show(mime_notebook); GTK_WIDGET_UNSET_FLAGS(mime_notebook, GTK_CAN_FOCUS); gtk_notebook_set_show_tabs(GTK_NOTEBOOK(mime_notebook), FALSE); gtk_notebook_set_show_border(GTK_NOTEBOOK(mime_notebook), FALSE); icon_vbox = gtk_vbox_new(FALSE, 2); gtk_widget_show(icon_vbox); icon_scroll = gtk_layout_new(NULL, NULL); gtk_widget_show(icon_scroll); gtk_layout_put(GTK_LAYOUT(icon_scroll), icon_vbox, 0, 0); scrollbutton = gtk_vscrollbutton_new(gtk_layout_get_vadjustment(GTK_LAYOUT(icon_scroll))); gtk_widget_show(scrollbutton); mime_toggle = gtk_toggle_button_new(); gtk_widget_show(mime_toggle); arrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_NONE); gtk_widget_show(arrow); gtk_container_add(GTK_CONTAINER(mime_toggle), arrow); gtk_signal_connect(GTK_OBJECT(mime_toggle), "toggled", GTK_SIGNAL_FUNC(mime_toggle_button_cb), mimeview); icon_mainbox = gtk_vbox_new(FALSE, 0); gtk_widget_show(icon_mainbox); gtk_box_pack_start(GTK_BOX(icon_mainbox), mime_toggle, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(icon_mainbox), icon_scroll, TRUE, TRUE, 3); gtk_box_pack_end(GTK_BOX(icon_mainbox), scrollbutton, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(icon_mainbox), "size_allocate", GTK_SIGNAL_FUNC(icon_scroll_size_allocate_cb), mimeview); ctree_mainbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(ctree_mainbox), scrolledwin, TRUE, TRUE, 0); n_entries = sizeof(mimeview_popup_entries) / sizeof(mimeview_popup_entries[0]); popupmenu = menu_create_items(mimeview_popup_entries, n_entries, "<MimeView>", &popupfactory, mimeview); tooltips = gtk_tooltips_new(); gtk_tooltips_set_delay(tooltips, 0); vbox = gtk_vbox_new(FALSE, 0); gtk_widget_show(vbox); siginfoview = noticeview_create(mainwin); noticeview_hide(siginfoview); gtk_box_pack_start(GTK_BOX(vbox), mime_notebook, TRUE, TRUE, 0); gtk_box_pack_end(GTK_BOX(vbox), GTK_WIDGET_PTR(siginfoview), FALSE, FALSE, 0); paned = gtk_vpaned_new(); gtk_widget_show(paned); gtk_paned_set_gutter_size(GTK_PANED(paned), 0); gtk_paned_pack1(GTK_PANED(paned), ctree_mainbox, FALSE, TRUE); gtk_paned_pack2(GTK_PANED(paned), vbox, TRUE, TRUE); hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), paned, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), icon_mainbox, FALSE, FALSE, 0); gtk_widget_show(hbox); gtk_widget_hide(ctree_mainbox); mimeview->hbox = hbox; mimeview->paned = paned; mimeview->scrolledwin = scrolledwin; mimeview->ctree = ctree; mimeview->mime_notebook = mime_notebook; mimeview->popupmenu = popupmenu; mimeview->popupfactory = popupfactory; mimeview->type = -1; mimeview->ctree_mainbox = ctree_mainbox; mimeview->icon_scroll = icon_scroll; mimeview->icon_vbox = icon_vbox; mimeview->icon_mainbox = icon_mainbox; mimeview->icon_count = 0; mimeview->mainwin = mainwin; mimeview->tooltips = tooltips; mimeview->oldsize = 60; mimeview->mime_toggle = mime_toggle; mimeview->siginfoview = siginfoview; mimeview->target_list = gtk_target_list_new(mimeview_mime_types, 1); mimeviews = g_slist_prepend(mimeviews, mimeview); return mimeview; }