static void toggle_expand_messageview_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
-static void toggle_work_offline_cb (MainWindow *mainwin,
+static void separate_widget_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
-static void separate_widget_cb (GtkCheckMenuItem *checkitem,
- guint action,
- GtkWidget *widget);
static void addressbook_open_cb (MainWindow *mainwin,
guint action,
static void prefs_actions_open_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
+
static void new_account_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
static void set_toolbar_style(MainWindow *mainwin);
+static void toggle_work_offline_cb(MainWindow *mainwin, guint action, GtkWidget *widget);
+
static void addr_harvest_cb ( MainWindow *mainwin,
guint action,
GtkWidget *widget );
guint action,
GtkWidget *widget );
-#define SEPARATE_ACTION 667
+#define SEPARATE_ACTION 500
static GtkItemFactoryEntry mainwin_entries[] =
{
{N_("/_File/_Save as..."), "<control>S", save_as_cb, 0, NULL},
{N_("/_File/_Print..."), NULL, print_cb, 0, NULL},
{N_("/_File/---"), NULL, NULL, 0, "<Separator>"},
+ /* {N_("/_File/_Close"), "<alt>W", app_exit_cb, 0, NULL}, */
{N_("/_File/E_xit"), "<control>Q", app_exit_cb, 0, NULL},
{N_("/_Edit"), NULL, NULL, 0, "<Branch>"},
{N_("/_Edit/_Search folder..."), "<shift><control>F", search_cb, 1, NULL},
{N_("/_View"), NULL, NULL, 0, "<Branch>"},
{N_("/_View/Show or hi_de"), NULL, NULL, 0, "<Branch>"},
+ {N_("/_View/Show or hi_de/_Folder tree"),
+ NULL, toggle_folder_cb, 0, "<ToggleItem>"},
+ {N_("/_View/Show or hi_de/_Message view"),
+ "V", toggle_message_cb, 0, "<ToggleItem>"},
{N_("/_View/Show or hi_de/_Toolbar"),
NULL, NULL, 0, "<Branch>"},
{N_("/_View/Show or hi_de/_Toolbar/Icon _and text"),
{N_("/_View/Show or hi_de/Status _bar"),
NULL, toggle_statusbar_cb, 0, "<ToggleItem>"},
{N_("/_View/---"), NULL, NULL, 0, "<Separator>"},
- {N_("/_View/Separate _Folder Tree"), NULL, NULL, SEPARATE_ACTION + SEPARATE_FOLDER, "<ToggleItem>"},
- {N_("/_View/Separate _Message View"), NULL, NULL, SEPARATE_ACTION + SEPARATE_MESSAGE, "<ToggleItem>"},
+ {N_("/_View/Separate f_older tree"), NULL, separate_widget_cb, SEPARATE_FOLDER, "<ToggleItem>"},
+ {N_("/_View/Separate m_essage view"), NULL, separate_widget_cb, SEPARATE_MESSAGE, "<ToggleItem>"},
{N_("/_View/E_xpand Summary View"), "V", toggle_expand_summaryview_cb, 0, "<ToggleItem>"},
{N_("/_View/Ex_pand Message View"), "<shift>V", toggle_expand_messageview_cb, 0, "<ToggleItem>"},
{N_("/_View/---"), NULL, NULL, 0, "<Separator>"},
debug_print(_("done.\n"));
+ messageview->visible = TRUE;
+
main_window_set_widgets(mainwin, type);
/* set menu items */
(ifactory, "/View/Show or hide/Status bar");
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem),
prefs_common.show_statusbar);
-#if 0 /* FIXED SEPARATE WINDOWS */
- /* Message view and Folder tree are always shown at startup
- * make that in the menu visible */
- menuitem = gtk_item_factory_get_item(ifactory, "/View/Separate Message View");
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE);
- menuitem = gtk_item_factory_get_item(ifactory, "/View/Separate Folder Tree");
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE);
-#endif
- /* set the check of the SEPARATE_xxx menu items. we also need the main window
- * as a property and pass the action type to the callback */
- menuitem = gtk_item_factory_get_widget_by_action(ifactory, SEPARATE_ACTION + SEPARATE_FOLDER);
- g_assert(menuitem);
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), type & SEPARATE_FOLDER);
- gtk_object_set_data(GTK_OBJECT(menuitem), "mainwindow", mainwin);
- gtk_signal_connect(GTK_OBJECT(menuitem), "toggled", GTK_SIGNAL_FUNC(separate_widget_cb),
- GUINT_TO_POINTER(SEPARATE_FOLDER));
-
- menuitem = gtk_item_factory_get_widget_by_action(ifactory, SEPARATE_ACTION + SEPARATE_MESSAGE);
- g_assert(menuitem);
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), type & SEPARATE_MESSAGE);
- gtk_object_set_data(GTK_OBJECT(menuitem), "mainwindow", mainwin);
- gtk_signal_connect(GTK_OBJECT(menuitem), "toggled", GTK_SIGNAL_FUNC(separate_widget_cb),
- GUINT_TO_POINTER(SEPARATE_MESSAGE));
-
- menuitem = gtk_item_factory_get_item(ifactory, "/View/Expand Summary View");
- gtk_signal_connect(GTK_OBJECT(menuitem), "state-changed", GTK_SIGNAL_FUNC(menuitem_expandsummaryview_statechanged),
- mainwin);
/* set account selection menu */
ac_menu = gtk_item_factory_get_widget
gtk_widget_unref(message_wid);
}
+void main_window_toggle_message_view(MainWindow *mainwin)
+{
+ SummaryView *summaryview = mainwin->summaryview;
+ union CompositeWin *cwin = &mainwin->win;
+ GtkWidget *vpaned = NULL;
+ GtkWidget *container = NULL;
+ GtkWidget *msgwin = NULL;
+
+ switch (mainwin->type) {
+ case SEPARATE_NONE:
+ vpaned = cwin->sep_none.vpaned;
+ container = cwin->sep_none.hpaned;
+ break;
+ case SEPARATE_FOLDER:
+ vpaned = cwin->sep_folder.vpaned;
+ container = mainwin->vbox_body;
+ break;
+ case SEPARATE_MESSAGE:
+ msgwin = mainwin->win.sep_message.messagewin;
+ break;
+ case SEPARATE_BOTH:
+ msgwin = mainwin->win.sep_both.messagewin;
+ break;
+ }
+
+ if (msgwin) {
+ if (GTK_WIDGET_VISIBLE(msgwin)) {
+ gtk_widget_hide(msgwin);
+ mainwin->messageview->visible = FALSE;
+ summaryview->displayed = NULL;
+ } else {
+ gtk_widget_show(msgwin);
+ mainwin->messageview->visible = TRUE;
+ }
+ } else if (vpaned->parent != NULL) {
+ mainwin->messageview->visible = FALSE;
+ summaryview->displayed = NULL;
+ gtk_widget_ref(vpaned);
+ gtkut_container_remove(GTK_CONTAINER(container), vpaned);
+ gtk_widget_reparent(GTK_WIDGET_PTR(summaryview), container);
+ gtk_arrow_set(GTK_ARROW(summaryview->toggle_arrow),
+ GTK_ARROW_UP, GTK_SHADOW_OUT);
+ } else {
+ mainwin->messageview->visible = TRUE;
+ gtk_widget_reparent(GTK_WIDGET_PTR(summaryview), vpaned);
+ gtk_container_add(GTK_CONTAINER(container), vpaned);
+ gtk_widget_unref(vpaned);
+ gtk_arrow_set(GTK_ARROW(summaryview->toggle_arrow),
+ GTK_ARROW_DOWN, GTK_SHADOW_OUT);
+ }
+
+ main_window_set_menu_sensitive(mainwin);
+
+ gtk_widget_grab_focus(summaryview->ctree);
+}
+
void main_window_get_size(MainWindow *mainwin)
{
GtkAllocation *allocation;
prefs_common.summaryview_width = allocation->width;
- if (mainwin->summaryview->msg_is_toggled_on)
+ if ((mainwin->type == SEPARATE_NONE ||
+ mainwin->type == SEPARATE_FOLDER) &&
+ messageview_is_visible(mainwin->messageview))
prefs_common.summaryview_height = allocation->height;
prefs_common.mainview_width = allocation->width;
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), active); \
}
+ SET_CHECK_MENU_ACTIVE("/View/Show or hide/Message view",
+ messageview_is_visible(mainwin->messageview));
+
item = mainwin->summaryview->folder_item;
menu_path = "/View/Sort/Don't sort";
if (item) {
GTK_WIDGET_PTR(mainwin->folderview));
vpaned = gtk_vpaned_new();
- if (mainwin->summaryview->msg_is_toggled_on) {
+ if (messageview_is_visible(mainwin->messageview)) {
gtk_paned_add2(GTK_PANED(hpaned), vpaned);
gtk_paned_add1(GTK_PANED(vpaned),
GTK_WIDGET_PTR(mainwin->summaryview));
prefs_common.mainwin_height);
gtk_widget_show_all(vpaned);
- menu_set_sensitive(ifactory, "/View/Separate Message View", TRUE);
- menu_set_sensitive(ifactory, "/View/Separate Folder Tree", TRUE);
- menu_set_sensitive(ifactory, "/View/Expand Summary View", TRUE);
- menu_set_sensitive(ifactory, "/View/Expand Message View", TRUE);
- menuitem = gtk_item_factory_get_widget(ifactory, "/View/Expand Message View");
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), FALSE);
-
mainwin->win.sep_none.hpaned = hpaned;
mainwin->win.sep_none.vpaned = vpaned;
break;
case SEPARATE_FOLDER:
vpaned = gtk_vpaned_new();
- if (mainwin->summaryview->msg_is_toggled_on) {
+ if (messageview_is_visible(mainwin->messageview)) {
gtk_box_pack_start(GTK_BOX(vbox_body), vpaned,
TRUE, TRUE, 0);
gtk_paned_add1(GTK_PANED(vpaned),
gtk_container_add(GTK_CONTAINER(folderwin),
GTK_WIDGET_PTR(mainwin->folderview));
- menu_set_sensitive(ifactory, "/View/Separate Message View", TRUE);
- menu_set_sensitive(ifactory, "/View/Separate Folder Tree", TRUE);
-
mainwin->win.sep_folder.folderwin = folderwin;
mainwin->win.sep_folder.vpaned = vpaned;
gtk_widget_show_all(hpaned);
gtk_container_add(GTK_CONTAINER(messagewin),
GTK_WIDGET_PTR(mainwin->messageview));
-
- menu_set_sensitive(ifactory, "/View/Separate Message View", TRUE);
- menu_set_sensitive(ifactory, "/View/Separate Folder Tree", TRUE);
- menu_set_sensitive(ifactory, "/View/Expand Summary View", FALSE);
- menu_set_sensitive(ifactory, "/View/Expand Message View", FALSE);
-
+
mainwin->win.sep_message.messagewin = messagewin;
mainwin->win.sep_message.hpaned = hpaned;
gtk_container_add(GTK_CONTAINER(messagewin),
GTK_WIDGET_PTR(mainwin->messageview));
- menu_set_sensitive(ifactory, "/View/Separate Message View", TRUE);
- menu_set_sensitive(ifactory, "/View/Separate Folder Tree", TRUE);
-
mainwin->win.sep_both.folderwin = folderwin;
mainwin->win.sep_both.messagewin = messagewin;
mainwin->type = type;
+ mainwin->messageview->visible = TRUE;
ifactory = gtk_item_factory_from_widget(mainwin->menubar);
+ /* toggle menu state */
menuitem = gtk_item_factory_get_item
(ifactory, "/View/Show or hide/Folder tree");
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE);
ifactory = gtk_item_factory_from_widget(mainwin->menubar);
menuitem = gtk_item_factory_get_item
- (ifactory, "/View/Expand Summary View");
+ (ifactory, "/View/Show or hide/Folder tree");
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), FALSE);
return TRUE;
MainWindow *mainwin = (MainWindow *)data;
GtkItemFactory *ifactory;
GtkWidget *menuitem;
-
+
ifactory = gtk_item_factory_from_widget(mainwin->menubar);
menuitem = gtk_item_factory_get_item
- (ifactory, "/View/Expand Message View");
+ (ifactory, "/View/Show or hide/Message view");
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), FALSE);
return TRUE;
active = GTK_CHECK_MENU_ITEM(widget)->active;
- switch (mainwin->type) {
- case SEPARATE_NONE:
- case SEPARATE_FOLDER:
- break;
- case SEPARATE_MESSAGE:
- if (active)
- gtk_widget_show(mainwin->win.sep_message.messagewin);
- else
- gtk_widget_hide(mainwin->win.sep_message.messagewin);
- break;
- case SEPARATE_BOTH:
- if (active)
- gtk_widget_show(mainwin->win.sep_both.messagewin);
- else
- gtk_widget_hide(mainwin->win.sep_both.messagewin);
- break;
- }
+ if (active != messageview_is_visible(mainwin->messageview))
+ summary_toggle_view(mainwin->summaryview);
}
static void toggle_toolbar_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{
-/* activate_compose_button(mainwin, (ToolbarStyle)action,
- mainwin->compose_btn_type);
- set_toolbar_reply_button(mainwin, (ToolbarStyle)action);
- set_toolbar_replyall_button(mainwin, (ToolbarStyle)action);
- set_toolbar_replysender_button(mainwin, (ToolbarStyle)action);
- set_toolbar_forward_button(mainwin, (ToolbarStyle)action);*/
-
+ switch ((ToolbarStyle)action) {
+ case TOOLBAR_NONE:
+ gtk_widget_hide(mainwin->handlebox);
+ case TOOLBAR_ICON:
+ gtk_toolbar_set_style(GTK_TOOLBAR(mainwin->toolbar),
+ GTK_TOOLBAR_ICONS);
+ break;
+ case TOOLBAR_TEXT:
+ gtk_toolbar_set_style(GTK_TOOLBAR(mainwin->toolbar),
+ GTK_TOOLBAR_TEXT);
+ break;
+ case TOOLBAR_BOTH:
+ gtk_toolbar_set_style(GTK_TOOLBAR(mainwin->toolbar),
+ GTK_TOOLBAR_BOTH);
+ break;
+ }
+
+ if (action != TOOLBAR_NONE) {
+ gtk_widget_show(mainwin->handlebox);
+ gtk_widget_queue_resize(mainwin->handlebox);
+ }
+
mainwin->toolbar_style = (ToolbarStyle)action;
prefs_common.toolbar_style = (ToolbarStyle)action;
-
- set_toolbar_style(mainwin);
}
static void toggle_statusbar_cb(MainWindow *mainwin, guint action,
}
}
+static void separate_widget_cb(MainWindow *mainwin, guint action,
+ GtkWidget *widget)
+{
+ SeparateType type;
+
+ if (GTK_CHECK_MENU_ITEM(widget)->active)
+ type = mainwin->type | action;
+ else
+ type = mainwin->type & ~action;
+
+ main_window_separation_change(mainwin, type);
+
+ prefs_common.sep_folder = (type & SEPARATE_FOLDER) != 0;
+ prefs_common.sep_msg = (type & SEPARATE_MESSAGE) != 0;
+}
+
static void toggle_expand_summaryview_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
{
- summary_toggle_view_real(mainwin->summaryview);
+ summary_toggle_view(mainwin->summaryview);
}
static void toggle_expand_messageview_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
{
- messageview_toggle_view_real(mainwin->messageview);
+#if 0
+ messageview_toggle_view(mainwin->messageview);
+#endif
}
static void toggle_work_offline_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
}
}
-static void separate_widget_cb(GtkCheckMenuItem *checkitem, guint action, GtkWidget *widget)
-{
- MainWindow *mainwin;
- SeparateType type;
-
- if (GTK_CHECK_MENU_ITEM(widget)->active)
- type = mainwin->type | action;
- else
- type = mainwin->type & ~action;
-
- main_window_separation_change(mainwin, type);
-
- prefs_common.sep_folder = (type & SEPARATE_FOLDER) != 0;
- prefs_common.sep_msg = (type & SEPARATE_MESSAGE) != 0;
-}
-
static void addressbook_open_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{
static void allsel_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
{
+ MessageView *msgview = mainwin->messageview;
+
if (GTK_WIDGET_HAS_FOCUS(mainwin->summaryview->ctree))
summary_select_all(mainwin->summaryview);
- else if (mainwin->summaryview->msg_is_toggled_on && (
- GTK_WIDGET_HAS_FOCUS(mainwin->messageview->textview->text) ||
- GTK_WIDGET_HAS_FOCUS(mainwin->messageview->mimeview->ctree) ||
- GTK_WIDGET_HAS_FOCUS(mainwin->messageview->mimeview->notebook) ||
- GTK_WIDGET_HAS_FOCUS(mainwin->messageview->mimeview->textview->text)))
+ else if (messageview_is_visible(msgview) &&
+ (GTK_WIDGET_HAS_FOCUS(msgview->textview->text) ||
+ GTK_WIDGET_HAS_FOCUS(msgview->mimeview->textview->text)))
messageview_select_all(mainwin->messageview);
}
static void selthread_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
{
- if (mainwin->summaryview->msg_is_toggled_on)
+ if (messageview_is_visible(mainwin->summaryview->messageview))
summary_select_thread(mainwin->summaryview);
}
if (!mainwin) return;
- gtk_widget_set_sensitive(GTK_WIDGET(mainwin->summaryview->toggle_view_btn), GTK_WIDGET_IS_SENSITIVE(widget));
+ gtk_widget_set_sensitive(GTK_WIDGET(mainwin->summaryview->toggle_arrow), GTK_WIDGET_IS_SENSITIVE(widget));
}
#define BREAK_ON_MODIFIER_KEY() \