[balsa] * src/balsa-index.[ch]: switch between full and narrow index views. * src/main-window.[ch]: switch b
- From: Pawel Salek <pawels src gnome org>
- To: svn-commits-list gnome org
- Subject: [balsa] * src/balsa-index.[ch]: switch between full and narrow index views. * src/main-window.[ch]: switch b
- Date: Sat, 23 May 2009 03:06:40 -0400 (EDT)
commit 855b3cf5c4537b30f3b7e0a0ad678db7cee9ae61
Author: Pawel Salek <pawsa theochem kth se>
Date: Sat May 23 08:54:59 2009 +0200
* src/balsa-index.[ch]: switch between full and narrow index views. * src/main-window.[ch]: switch between ordinary and wide-screen layouts. * src/save-restore.c: save the layout as an enum. * src/balsa-app.[ch]: set default layout. * src/pref-manager.c: main window layout type is a drop-down list now.
---
ChangeLog | 8 ++++
src/balsa-app.c | 2 +-
src/balsa-app.h | 2 +-
src/balsa-index.c | 25 +++++++++++++
src/balsa-index.h | 6 +++
src/main-window.c | 101 +++++++++++++++++++++++++++++++++++----------------
src/main-window.h | 4 +-
src/pref-manager.c | 32 +++++++++++------
src/save-restore.c | 8 +++-
9 files changed, 139 insertions(+), 49 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index f9bcc79..b95b225 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-05-23 Pawel Salek
+
+ * src/balsa-index.[ch]: switch between full and narrow index views.
+ * src/main-window.[ch]: switch between ordinary and wide-screen layouts.
+ * src/save-restore.c: save the layout as an enum.
+ * src/balsa-app.[ch]: set default layout.
+ * src/pref-manager.c: main window layout type is a drop-down list now.
+
2009-05-13 Peter Bloomfield
* src/mailbox-node.c (find_dir), (balsa_mailbox_local_append):
diff --git a/src/balsa-app.c b/src/balsa-app.c
index 5dcff57..e2f97dd 100644
--- a/src/balsa-app.c
+++ b/src/balsa-app.c
@@ -328,7 +328,7 @@ balsa_app_init(void)
balsa_app.expand_tree = FALSE;
balsa_app.show_mblist = TRUE;
balsa_app.show_notebook_tabs = FALSE;
- balsa_app.alternative_layout = FALSE;
+ balsa_app.layout_type = LAYOUT_DEFAULT;
balsa_app.view_message_on_open = TRUE;
balsa_app.mw_action_after_move = NEXT_UNREAD;
diff --git a/src/balsa-app.h b/src/balsa-app.h
index 8e63aae..3ec852c 100644
--- a/src/balsa-app.h
+++ b/src/balsa-app.h
@@ -291,7 +291,7 @@ extern struct BalsaApplication {
gboolean expand_tree;
gboolean show_mblist;
gboolean show_notebook_tabs;
- gboolean alternative_layout;
+ enum { LAYOUT_DEFAULT, LAYOUT_WIDE_MSG, LAYOUT_WIDE_SCREEN } layout_type;
gboolean view_message_on_open;
gboolean pgdownmod;
gint pgdown_percent;
diff --git a/src/balsa-index.c b/src/balsa-index.c
index 7765686..341376d 100644
--- a/src/balsa-index.c
+++ b/src/balsa-index.c
@@ -1054,6 +1054,31 @@ balsa_index_load_mailbox_node (BalsaIndex * index,
return FALSE;
}
+void
+balsa_index_set_width_preference(BalsaIndex *bindex,
+ BalsaIndexWidthPreference pref)
+{
+ GtkTreeView *tree_view;
+ gboolean visible;
+
+ if (pref == bindex->width_preference)
+ return;
+
+ bindex->width_preference = pref;
+ switch (pref) {
+ case BALSA_INDEX_NARROW: visible = FALSE; break;
+ default:
+ case BALSA_INDEX_WIDE: visible = TRUE; break;
+ }
+
+ tree_view = GTK_TREE_VIEW(bindex);
+ gtk_tree_view_column_set_visible
+ (gtk_tree_view_get_column(tree_view, LB_MBOX_MSGNO_COL), visible);
+ gtk_tree_view_column_set_visible
+ (gtk_tree_view_get_column(tree_view, LB_MBOX_ATTACH_COL), visible);
+ gtk_tree_view_column_set_visible
+ (gtk_tree_view_get_column(tree_view, LB_MBOX_SIZE_COL), visible);
+}
/*
* select message interfaces
diff --git a/src/balsa-index.h b/src/balsa-index.h
index e0e46e6..dc5ab15 100644
--- a/src/balsa-index.h
+++ b/src/balsa-index.h
@@ -39,6 +39,9 @@ extern "C" {
#define BALSA_IS_INDEX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE (klass, BALSA_TYPE_INDEX))
+ typedef enum { BALSA_INDEX_WIDE, BALSA_INDEX_NARROW }
+ BalsaIndexWidthPreference;
+
typedef struct _BalsaIndex BalsaIndex;
typedef struct _BalsaIndexClass BalsaIndexClass;
@@ -71,6 +74,7 @@ extern "C" {
gulong selection_changed_id;
LibBalsaMailboxSearchIter *search_iter;
+ BalsaIndexWidthPreference width_preference;
};
struct _BalsaIndexClass {
@@ -104,6 +108,8 @@ extern "C" {
gboolean balsa_index_load_mailbox_node(BalsaIndex * bindex,
BalsaMailboxNode * mbnode,
GError **err);
+ void balsa_index_set_width_preference(BalsaIndex *bindex,
+ BalsaIndexWidthPreference pref);
void balsa_index_scroll_on_open(BalsaIndex *index);
void balsa_index_update_tree(BalsaIndex *bindex, gboolean expand);
void balsa_index_set_threading_type(BalsaIndex * bindex, int thtype);
diff --git a/src/main-window.c b/src/main-window.c
index d71f5f7..a7582ee 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -996,8 +996,8 @@ bw_mblist_size_allocate_cb(GtkWidget * widget, GtkAllocation * alloc,
BalsaWindow * bw)
{
if (balsa_app.show_mblist && !balsa_app.mw_maximized)
- balsa_app.mblist_width =
- gtk_paned_get_position(GTK_PANED(bw->hpaned));
+ balsa_app.mblist_width = /* FIXME: this makes some assumptions... */
+ gtk_paned_get_position(GTK_PANED(bw->paned_master));
}
static GtkWidget *
@@ -1226,35 +1226,70 @@ static void
bw_set_panes(BalsaWindow * window)
{
GtkWidget *index_widget = bw_create_index_widget(window);
- window->vpaned = gtk_vpaned_new();
- window->hpaned = gtk_hpaned_new();
- gtk_paned_pack1(GTK_PANED(window->hpaned), bw_frame(window->mblist),
- TRUE, TRUE);
- gtk_paned_pack2(GTK_PANED(window->vpaned), bw_frame(window->preview),
- TRUE, TRUE);
- if (balsa_app.alternative_layout) {
+ GtkWidget *bindex;
+ BalsaIndexWidthPreference width_preference;
+
+ switch (balsa_app.layout_type) {
+ case LAYOUT_WIDE_MSG:
+ window->paned_master = gtk_vpaned_new();
+ window->paned_slave = gtk_hpaned_new();
if (window->content)
gtk_container_remove(GTK_CONTAINER(window->vbox),
window->content);
- window->content = window->vpaned;
+ window->content = window->paned_master;
gtk_box_pack_start(GTK_BOX(window->vbox), window->content,
TRUE, TRUE, 0);
- gtk_paned_pack2(GTK_PANED(window->hpaned), bw_frame(index_widget),
- TRUE, TRUE);
- gtk_paned_pack1(GTK_PANED(window->vpaned), window->hpaned,
- TRUE, TRUE);
- } else {
+ gtk_paned_pack1(GTK_PANED(window->paned_slave),
+ bw_frame(window->mblist), TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(window->paned_slave),
+ bw_frame(index_widget), TRUE, TRUE);
+ gtk_paned_pack1(GTK_PANED(window->paned_master),
+ window->paned_slave, TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(window->paned_master),
+ bw_frame(window->preview), TRUE, TRUE);
+ width_preference = BALSA_INDEX_WIDE;
+ break;
+ case LAYOUT_WIDE_SCREEN:
+ window->paned_master = gtk_hpaned_new();
+ window->paned_slave = gtk_hpaned_new();
if (window->content)
gtk_container_remove(GTK_CONTAINER(window->vbox),
window->content);
- window->content = window->hpaned;
+ window->content = window->paned_master;
gtk_box_pack_start(GTK_BOX(window->vbox), window->content,
TRUE, TRUE, 0);
- gtk_paned_pack2(GTK_PANED(window->hpaned), window->vpaned,
+ gtk_paned_pack1(GTK_PANED(window->paned_master),
+ bw_frame(window->mblist), TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(window->paned_master), window->paned_slave,
TRUE, TRUE);
- gtk_paned_pack1(GTK_PANED(window->vpaned), bw_frame(index_widget),
+ gtk_paned_pack1(GTK_PANED(window->paned_slave),
+ bw_frame(index_widget), TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(window->paned_slave),
+ bw_frame(window->preview), TRUE, TRUE);
+ width_preference = BALSA_INDEX_NARROW;
+ break;
+ case LAYOUT_DEFAULT:
+ default:
+ window->paned_master = gtk_hpaned_new();
+ window->paned_slave = gtk_vpaned_new();
+ if (window->content)
+ gtk_container_remove(GTK_CONTAINER(window->vbox),
+ window->content);
+ window->content = window->paned_master;
+ gtk_box_pack_start(GTK_BOX(window->vbox), window->content,
+ TRUE, TRUE, 0);
+ gtk_paned_pack1(GTK_PANED(window->paned_master),
+ bw_frame(window->mblist), TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(window->paned_master), window->paned_slave,
TRUE, TRUE);
+ gtk_paned_pack1(GTK_PANED(window->paned_slave),
+ bw_frame(index_widget), TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(window->paned_slave),
+ bw_frame(window->preview), TRUE, TRUE);
+ width_preference = BALSA_INDEX_WIDE;
}
+ if ( (bindex=balsa_window_find_current_index(window)) != NULL)
+ balsa_index_set_width_preference(BALSA_INDEX(bindex), width_preference);
}
/*
@@ -1702,21 +1737,21 @@ balsa_window_new()
bw_set_active(window, "ShowMailboxTree", balsa_app.show_mblist, FALSE);
#endif /* !defined(ENABLE_TOUCH_UI) */
- gtk_paned_set_position(GTK_PANED(window->hpaned),
+ gtk_paned_set_position(GTK_PANED(window->paned_master),
balsa_app.show_mblist
? balsa_app.mblist_width
: 0);
/*PKGW: do it this way, without the usizes. */
if (balsa_app.previewpane)
- gtk_paned_set_position(GTK_PANED(window->vpaned),
+ gtk_paned_set_position(GTK_PANED(window->paned_slave),
balsa_app.notebook_height);
else
/* Set it to something really high */
- gtk_paned_set_position(GTK_PANED(window->vpaned), G_MAXINT);
+ gtk_paned_set_position(GTK_PANED(window->paned_slave), G_MAXINT);
- gtk_widget_show(window->vpaned);
- gtk_widget_show(window->hpaned);
+ gtk_widget_show(window->paned_slave);
+ gtk_widget_show(window->paned_master);
gtk_widget_show(window->notebook);
/* set the toolbar style */
@@ -2247,6 +2282,10 @@ bw_real_open_mbnode(struct bw_open_mbnode_info * info)
}
index = BALSA_INDEX(balsa_index_new());
+ balsa_index_set_width_preference
+ (index,
+ (balsa_app.layout_type == LAYOUT_WIDE_SCREEN)
+ ? BALSA_INDEX_NARROW : BALSA_INDEX_WIDE);
message = g_strdup_printf(_("Opening %s"), mailbox->name);
balsa_window_increase_activity(info->window, message);
@@ -2506,7 +2545,6 @@ void
balsa_window_refresh(BalsaWindow * window)
{
GtkWidget *index;
- GtkWidget *paned;
BalsaIndex *bindex;
g_return_if_fail(window);
@@ -2520,15 +2558,14 @@ balsa_window_refresh(BalsaWindow * window)
balsa_index_refresh_size(bindex);
}
- paned = gtk_widget_get_ancestor(balsa_app.notebook, GTK_TYPE_VPANED);
- g_assert(paned != NULL);
if (balsa_app.previewpane) {
bw_idle_replace(window, bindex);
- gtk_paned_set_position(GTK_PANED(paned), balsa_app.notebook_height);
+ gtk_paned_set_position(GTK_PANED(window->paned_slave),
+ balsa_app.notebook_height);
} else {
/* Set the height to something really big (those new hi-res
screens and all :) */
- gtk_paned_set_position(GTK_PANED(paned), G_MAXINT);
+ gtk_paned_set_position(GTK_PANED(window->paned_slave), G_MAXINT);
}
}
@@ -4596,12 +4633,12 @@ balsa_change_window_layout(BalsaWindow *window)
gtk_widget_unref(window->preview);
#endif /* GTK_CHECK_VERSION(2, 11, 0) */
- gtk_paned_set_position(GTK_PANED(window->hpaned),
+ gtk_paned_set_position(GTK_PANED(window->paned_master),
balsa_app.show_mblist
? balsa_app.mblist_width
: 0);
- gtk_widget_show(window->vpaned);
- gtk_widget_show(window->hpaned);
+ gtk_widget_show(window->paned_slave);
+ gtk_widget_show(window->paned_master);
}
@@ -4612,7 +4649,7 @@ bw_notebook_size_allocate_cb(GtkWidget * notebook, GtkAllocation * alloc,
{
if (balsa_app.previewpane && !balsa_app.mw_maximized)
balsa_app.notebook_height =
- gtk_paned_get_position(GTK_PANED(bw->vpaned));
+ gtk_paned_get_position(GTK_PANED(bw->paned_slave));
}
static void
diff --git a/src/main-window.h b/src/main-window.h
index c439f1b..1b6564c 100644
--- a/src/main-window.h
+++ b/src/main-window.h
@@ -63,8 +63,8 @@ struct _BalsaWindow {
GtkWidget *sos_entry; /* SenderOrSubject filter entry */
GtkWidget *notebook;
GtkWidget *preview; /* message is child */
- GtkWidget *hpaned;
- GtkWidget *vpaned;
+ GtkWidget *paned_master;
+ GtkWidget *paned_slave;
GtkWidget *current_index;
GtkWidget *filter_choice;
GtkWidget *vbox;
diff --git a/src/pref-manager.c b/src/pref-manager.c
index 41e1a97..0102eee 100644
--- a/src/pref-manager.c
+++ b/src/pref-manager.c
@@ -107,7 +107,7 @@ typedef struct _PropertyUI {
GtkWidget *action_after_move_menu;
GtkWidget *previewpane;
- GtkWidget *alternative_layout;
+ GtkWidget *layout_type;
GtkWidget *view_message_on_open;
GtkWidget *pgdownmod;
GtkWidget *pgdown_percent;
@@ -325,6 +325,7 @@ static void pm_combo_box_set_level(GtkWidget * combo_box, gint level);
static gint pm_combo_box_get_level(GtkWidget * combo_box);
/* special helpers */
+static GtkWidget *create_layout_types_menu(void);
static GtkWidget *create_action_after_move_menu(void);
static GtkWidget *create_information_message_menu(void);
static GtkWidget *create_mdn_reply_menu(void);
@@ -589,7 +590,7 @@ open_preferences_manager(GtkWidget * widget, gpointer data)
g_signal_connect(G_OBJECT(pui->previewpane), "toggled",
G_CALLBACK(properties_modified_cb), property_box);
- g_signal_connect(G_OBJECT(pui->alternative_layout), "toggled",
+ g_signal_connect(G_OBJECT(pui->layout_type), "changed",
G_CALLBACK(properties_modified_cb), property_box);
g_signal_connect(G_OBJECT(pui->view_message_on_open), "toggled",
G_CALLBACK(properties_modified_cb), property_box);
@@ -806,6 +807,7 @@ apply_prefs(GtkDialog * pbox)
gint i;
GtkWidget *balsa_window;
const gchar *tmp;
+ guint save_enum; /* FIXME: assumes that enums are unsigned */
gboolean save_setting;
/*
@@ -832,10 +834,10 @@ apply_prefs(GtkDialog * pbox)
balsa_app.debug = GTK_TOGGLE_BUTTON(pui->debug)->active;
balsa_app.previewpane = GTK_TOGGLE_BUTTON(pui->previewpane)->active;
- save_setting = balsa_app.alternative_layout;
- balsa_app.alternative_layout =
- GTK_TOGGLE_BUTTON(pui->alternative_layout)->active;
- if (balsa_app.alternative_layout != save_setting)
+ save_enum = balsa_app.layout_type;
+ balsa_app.layout_type =
+ pm_combo_box_get_level(pui->layout_type);
+ if (balsa_app.layout_type != save_enum)
balsa_change_window_layout(balsa_app.main_window);
balsa_app.view_message_on_open =
@@ -1067,9 +1069,7 @@ set_prefs(void)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pui->previewpane),
balsa_app.previewpane);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
- (pui->alternative_layout),
- balsa_app.alternative_layout);
+ pm_combo_box_set_level(pui->layout_type, balsa_app.layout_type);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON
(pui->view_message_on_open),
balsa_app.view_message_on_open);
@@ -2129,8 +2129,8 @@ main_window_group(GtkWidget * page)
pm_group_add_check(group, _("Use preview pane"));
pui->mblist_show_mb_content_info =
pm_group_add_check(group, _("Show mailbox statistics in left pane"));
- pui->alternative_layout =
- pm_group_add_check(group, _("Use alternative main window layout"));
+ pui->layout_type = create_layout_types_menu();
+ pm_group_add(group, pui->layout_type, FALSE);
pui->view_message_on_open =
pm_group_add_check(group, _("Automatically view message "
"when mailbox opened"));
@@ -3312,6 +3312,16 @@ convert_8bit_cb(GtkWidget * widget, GtkWidget * pbox)
}
static GtkWidget *
+create_layout_types_menu(void)
+{
+ GtkWidget *combo_box = pm_combo_box_new();
+ add_show_menu(_("Default layout"), NEXT_UNREAD, combo_box);
+ add_show_menu(_("Wide message layout"), NEXT, combo_box);
+ add_show_menu(_("Wide screen layout"), CLOSE, combo_box);
+ return combo_box;
+}
+
+static GtkWidget *
create_action_after_move_menu(void)
{
GtkWidget *combo_box = pm_combo_box_new();
diff --git a/src/save-restore.c b/src/save-restore.c
index 3f012b5..dc8f3d2 100644
--- a/src/save-restore.c
+++ b/src/save-restore.c
@@ -778,7 +778,11 @@ config_global_load(void)
balsa_app.show_notebook_tabs = libbalsa_conf_get_bool("ShowTabs=false");
/* ... alternative layout of main window */
- balsa_app.alternative_layout = libbalsa_conf_get_bool("AlternativeLayout=false");
+ balsa_app.layout_type = libbalsa_conf_get_int("LayoutType=0");
+ if (balsa_app.layout_type != LAYOUT_DEFAULT &&
+ balsa_app.layout_type != LAYOUT_WIDE_MSG &&
+ balsa_app.layout_type != LAYOUT_WIDE_SCREEN)
+ balsa_app.layout_type = LAYOUT_DEFAULT;
balsa_app.view_message_on_open = libbalsa_conf_get_bool("ViewMessageOnOpen=true");
balsa_app.pgdownmod = libbalsa_conf_get_bool("PageDownMod=false");
balsa_app.pgdown_percent = libbalsa_conf_get_int("PageDownPercent=50");
@@ -1277,7 +1281,7 @@ config_save(void)
libbalsa_conf_set_bool("ShowMailboxList", balsa_app.show_mblist);
libbalsa_conf_set_bool("ShowTabs", balsa_app.show_notebook_tabs);
libbalsa_conf_set_int("ProgressWindow", balsa_app.pwindow_option);
- libbalsa_conf_set_bool("AlternativeLayout", balsa_app.alternative_layout);
+ libbalsa_conf_set_int("LayoutType", balsa_app.layout_type);
libbalsa_conf_set_bool("ViewMessageOnOpen", balsa_app.view_message_on_open);
libbalsa_conf_set_bool("PageDownMod", balsa_app.pgdownmod);
libbalsa_conf_set_int("PageDownPercent", balsa_app.pgdown_percent);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]