[balsa/wip/gtk4: 325/351] main-window: Declare it derivable
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/wip/gtk4: 325/351] main-window: Declare it derivable
- Date: Wed, 23 May 2018 21:44:18 +0000 (UTC)
commit 4f44520a0e2f7f217b6f1dcd3586f08ad8a17d97
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Tue May 1 21:49:28 2018 -0400
main-window: Declare it derivable
…with a private structure, and a getter for the statusbar.
src/balsa-mime-widget-text.c | 24 +-
src/information-dialog.c | 6 +-
src/mailbox-node.c | 2 +-
src/main-window.c | 649 +++++++++++++++++++++++++-----------------
src/main-window.h | 62 +---
5 files changed, 415 insertions(+), 328 deletions(-)
---
diff --git a/src/balsa-mime-widget-text.c b/src/balsa-mime-widget-text.c
index 3468595..0189ed4 100644
--- a/src/balsa-mime-widget-text.c
+++ b/src/balsa-mime-widget-text.c
@@ -811,14 +811,17 @@ find_url(BalsaMimeWidgetText * mwt, gint x, gint y)
static gboolean
statusbar_pop(gpointer data)
{
- if (BALSA_IS_WINDOW(balsa_app.main_window)
- && GTK_IS_STATUSBAR(balsa_app.main_window->statusbar)) {
+ if (BALSA_IS_WINDOW(balsa_app.main_window)) {
GtkStatusbar *statusbar;
- guint context_id;
- statusbar = (GtkStatusbar *) balsa_app.main_window->statusbar;
- context_id = gtk_statusbar_get_context_id(statusbar, "BalsaMimeWidget message");
- gtk_statusbar_pop(statusbar, context_id);
+ statusbar = balsa_window_get_statusbar(balsa_app.main_window);
+ if (GTK_IS_STATUSBAR(statusbar)) {
+ guint context_id;
+
+ context_id = gtk_statusbar_get_context_id(statusbar,
+ "BalsaMimeWidget message");
+ gtk_statusbar_pop(statusbar, context_id);
+ }
}
return FALSE;
@@ -839,7 +842,7 @@ handle_url(const gchar * url)
gchar *notice = g_strdup_printf(_("Calling URL %s…"), url);
GError *err = NULL;
- statusbar = GTK_STATUSBAR(balsa_app.main_window->statusbar);
+ statusbar = balsa_window_get_statusbar(balsa_app.main_window);
context_id =
gtk_statusbar_get_context_id(statusbar,
"BalsaMimeWidget message");
@@ -1033,14 +1036,15 @@ bm_widget_on_url(const gchar *url)
GtkStatusbar *statusbar;
guint context_id;
- statusbar = GTK_STATUSBAR(balsa_app.main_window->statusbar);
+ statusbar = balsa_window_get_statusbar(balsa_app.main_window);
context_id = gtk_statusbar_get_context_id(statusbar, "BalsaMimeWidget URL");
- if( url ) {
+ if (url != NULL) {
gtk_statusbar_push(statusbar, context_id, url);
SCHEDULE_BAR_REFRESH();
- } else
+ } else {
gtk_statusbar_pop(statusbar, context_id);
+ }
}
#ifdef HAVE_HTML_WIDGET
diff --git a/src/information-dialog.c b/src/information-dialog.c
index 8b30950..4afd981 100644
--- a/src/information-dialog.c
+++ b/src/information-dialog.c
@@ -290,7 +290,7 @@ balsa_information_list(GtkWindow *parent, LibBalsaInformationType type,
GtkStatusbar *statusbar;
guint context_id;
- statusbar = GTK_STATUSBAR(balsa_app.main_window->statusbar);
+ statusbar = balsa_window_get_statusbar(balsa_app.main_window);
context_id = gtk_statusbar_get_context_id(statusbar, "Information list");
gtk_statusbar_pop(statusbar, context_id);
@@ -309,7 +309,7 @@ status_bar_refresh(gpointer data)
GtkStatusbar *statusbar;
guint context_id;
- statusbar = GTK_STATUSBAR(balsa_app.main_window->statusbar);
+ statusbar = balsa_window_get_statusbar(balsa_app.main_window);
context_id = gtk_statusbar_get_context_id(statusbar, "Information bar");
gtk_statusbar_pop(statusbar, context_id);
}
@@ -330,7 +330,7 @@ balsa_information_bar(GtkWindow *parent, LibBalsaInformationType type,
if (!balsa_app.main_window)
return;
- statusbar = GTK_STATUSBAR(balsa_app.main_window->statusbar);
+ statusbar = balsa_window_get_statusbar(balsa_app.main_window);
context_id = gtk_statusbar_get_context_id(statusbar, "Information bar");
/* First clear any current message. */
diff --git a/src/mailbox-node.c b/src/mailbox-node.c
index 3eae091..e57a239 100644
--- a/src/mailbox-node.c
+++ b/src/mailbox-node.c
@@ -488,7 +488,7 @@ imap_dir_cb(BalsaMailboxNode *mb)
if (!balsa_app.main_window)
return;
- statusbar = GTK_STATUSBAR(balsa_app.main_window->statusbar);
+ statusbar = balsa_window_get_statusbar(balsa_app.main_window);
context_id = gtk_statusbar_get_context_id(statusbar, "MailboxNode imap");
if (restore_children_from_cache(mb))
diff --git a/src/main-window.c b/src/main-window.c
index 015a034..cd724b6 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -187,7 +187,46 @@ static void bw_reset_filter(BalsaWindow * bw);
proponents of GNOME2 dumbify approach (OK, I am bit unfair here).
*/
-G_DEFINE_TYPE (BalsaWindow, balsa_window, GTK_TYPE_APPLICATION_WINDOW)
+typedef struct _BalsaWindowPrivate BalsaWindowPrivate;
+
+struct _BalsaWindowPrivate {
+ GtkApplicationWindow window;
+
+ GtkWidget *toolbar;
+ GtkWidget *sos_bar;
+ GtkWidget *bottom_bar;
+ GtkWidget *progress_bar;
+ GtkWidget *statusbar;
+ GtkWidget *mblist;
+ GtkWidget *sos_entry; /* SenderOrSubject filter entry */
+ GtkWidget *notebook;
+ GtkWidget *preview; /* message is child */
+ GtkWidget *paned_master;
+ GtkWidget *paned_slave;
+ GtkWidget *current_index;
+ GtkWidget *filter_choice;
+ GtkWidget *vbox;
+ GtkWidget *content;
+
+ guint set_message_id;
+
+ /* Progress bar stuff: */
+ BalsaWindowProgress progress_type;
+ guint activity_handler;
+ guint activity_counter;
+ GSList *activity_messages;
+
+#ifdef HAVE_NOTIFY
+ NotifyNotification *new_mail_note;
+#endif /* HAVE_NOTIFY */
+
+ /* Support GNetworkMonitor: */
+ gboolean network_available;
+ time_t last_check_time;
+ guint network_changed_source_id;
+};
+
+G_DEFINE_TYPE_WITH_PRIVATE(BalsaWindow, balsa_window, GTK_TYPE_APPLICATION_WINDOW)
static guint window_signals[LAST_SIGNAL] = { 0 };
@@ -238,16 +277,17 @@ bw_network_changed_cb(GNetworkMonitor * monitor,
gboolean available,
gpointer user_data)
{
- BalsaWindow *window = user_data;
+ BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
- if (window->network_available != available) {
- window->network_available = available;
+ if (priv->network_available != available) {
+ priv->network_available = available;
print_network_status(available);
}
- if (window->network_changed_source_id == 0) {
+ if (priv->network_changed_source_id == 0) {
/* Wait 2 seconds or so to let the network stabilize */
- window->network_changed_source_id =
+ priv->network_changed_source_id =
g_timeout_add_seconds(2, bw_change_connection_status_idle, window);
}
}
@@ -255,15 +295,16 @@ bw_network_changed_cb(GNetworkMonitor * monitor,
static void
balsa_window_init(BalsaWindow * window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
GNetworkMonitor *monitor;
monitor = g_network_monitor_get_default();
- window->network_available =
+ priv->network_available =
g_network_monitor_get_network_available(monitor);
- print_network_status(window->network_available);
+ print_network_status(priv->network_available);
g_signal_connect(monitor, "network-changed",
G_CALLBACK(bw_network_changed_cb), window);
- window->last_check_time = 0;
+ priv->last_check_time = 0;
}
static gboolean
@@ -313,9 +354,9 @@ bw_frame(GtkWidget * widget)
actually insert the 'c' character in the entry. */
static void
-bw_check_filter(GtkWidget *widget, GParamSpec *pspec, gpointer data)
+bw_check_filter(GtkWidget *widget, GParamSpec *pspec, gpointer user_data)
{
- BalsaWindow *window = data;
+ BalsaWindow *window = BALSA_WINDOW(user_data);
libbalsa_window_block_accels((GtkApplicationWindow *) window,
gtk_widget_has_focus(widget));
@@ -340,11 +381,12 @@ bw_set_view_filter(BalsaWindow * bw, gint filter_no, GtkWidget * entry)
static void
bw_filter_entry_activate(GtkWidget * entry, GtkWidget * button)
{
- BalsaWindow *bw = balsa_app.main_window;
+ BalsaWindow *window = balsa_app.main_window;
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
int filter_no =
- gtk_combo_box_get_active(GTK_COMBO_BOX(bw->filter_choice));
+ gtk_combo_box_get_active(GTK_COMBO_BOX(priv->filter_choice));
- bw_set_view_filter(bw, filter_no, entry);
+ bw_set_view_filter(window, filter_no, entry);
gtk_widget_set_sensitive(button, FALSE);
}
@@ -446,6 +488,7 @@ static gboolean view_filters_translated = FALSE;
static GtkWidget*
bw_create_index_widget(BalsaWindow *bw)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(bw);
GtkWidget *vbox, *button;
unsigned i;
GList *focusable_widgets;
@@ -456,40 +499,40 @@ bw_create_index_widget(BalsaWindow *bw)
view_filters_translated = TRUE;
}
- bw->sos_bar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
+ priv->sos_bar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
- bw->filter_choice = gtk_combo_box_text_new();
- gtk_box_pack_start(GTK_BOX(bw->sos_bar), bw->filter_choice);
+ priv->filter_choice = gtk_combo_box_text_new();
+ gtk_box_pack_start(GTK_BOX(priv->sos_bar), priv->filter_choice);
for(i=0; i<G_N_ELEMENTS(view_filters); i++)
- gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(bw->filter_choice),
+ gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(priv->filter_choice),
i, view_filters[i].str);
- gtk_combo_box_set_active(GTK_COMBO_BOX(bw->filter_choice), 0);
- bw->sos_entry = gtk_entry_new();
- /* gtk_label_set_mnemonic_widget(GTK_LABEL(bw->filter_choice),
- bw->sos_entry); */
- g_signal_connect(G_OBJECT(bw->sos_entry), "notify::has-focus",
+ gtk_combo_box_set_active(GTK_COMBO_BOX(priv->filter_choice), 0);
+ priv->sos_entry = gtk_entry_new();
+ /* gtk_label_set_mnemonic_widget(GTK_LABEL(priv->filter_choice),
+ priv->sos_entry); */
+ g_signal_connect(G_OBJECT(priv->sos_entry), "notify::has-focus",
G_CALLBACK(bw_check_filter), bw);
- gtk_widget_set_hexpand(bw->sos_entry, TRUE);
- gtk_box_pack_start(GTK_BOX(bw->sos_bar), bw->sos_entry);
+ gtk_widget_set_hexpand(priv->sos_entry, TRUE);
+ gtk_box_pack_start(GTK_BOX(priv->sos_bar), priv->sos_entry);
button = gtk_button_new_from_icon_name("gtk-ok");
- gtk_box_pack_start(GTK_BOX(bw->sos_bar), button);
- g_signal_connect(G_OBJECT(bw->sos_entry), "activate",
+ gtk_box_pack_start(GTK_BOX(priv->sos_bar), button);
+ g_signal_connect(G_OBJECT(priv->sos_entry), "activate",
G_CALLBACK(bw_filter_entry_activate),
button);
g_signal_connect_swapped(G_OBJECT(button), "clicked",
G_CALLBACK(bw_filter_entry_activate),
- bw->sos_entry);
- g_signal_connect(G_OBJECT(bw->sos_entry), "changed",
+ priv->sos_entry);
+ g_signal_connect(G_OBJECT(priv->sos_entry), "changed",
G_CALLBACK(bw_filter_entry_changed),
button);
- g_signal_connect(G_OBJECT(bw->filter_choice), "changed",
+ g_signal_connect(G_OBJECT(priv->filter_choice), "changed",
G_CALLBACK(bw_filter_entry_changed), button);
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
- gtk_box_pack_start(GTK_BOX(vbox), bw->sos_bar);
- gtk_widget_set_vexpand(bw->notebook, TRUE);
- gtk_box_pack_start(GTK_BOX(vbox), bw->notebook);
+ gtk_box_pack_start(GTK_BOX(vbox), priv->sos_bar);
+ gtk_widget_set_vexpand(priv->notebook, TRUE);
+ gtk_box_pack_start(GTK_BOX(vbox), priv->notebook);
- focusable_widgets = g_list_append(NULL, bw->notebook);
+ focusable_widgets = g_list_append(NULL, priv->notebook);
gtk_container_set_focus_chain(GTK_CONTAINER(vbox), focusable_widgets);
g_list_free(focusable_widgets);
@@ -501,67 +544,68 @@ bw_create_index_widget(BalsaWindow *bw)
static void
bw_set_panes(BalsaWindow * window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
GtkWidget *index_widget = bw_create_index_widget(window);
GtkWidget *bindex;
BalsaIndexWidthPreference width_preference;
switch (balsa_app.layout_type) {
case LAYOUT_WIDE_MSG:
- window->paned_master = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
- window->paned_slave = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
- if (window->content)
- gtk_container_remove(GTK_CONTAINER(window->vbox),
- window->content);
- window->content = window->paned_master;
- gtk_widget_set_vexpand(window->content, TRUE);
- gtk_box_pack_start(GTK_BOX(window->vbox), window->content);
- gtk_paned_pack1(GTK_PANED(window->paned_slave),
- bw_frame(window->mblist), TRUE, TRUE);
- gtk_paned_pack2(GTK_PANED(window->paned_slave),
+ priv->paned_master = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
+ priv->paned_slave = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
+ if (priv->content)
+ gtk_container_remove(GTK_CONTAINER(priv->vbox),
+ priv->content);
+ priv->content = priv->paned_master;
+ gtk_widget_set_vexpand(priv->content, TRUE);
+ gtk_box_pack_start(GTK_BOX(priv->vbox), priv->content);
+ gtk_paned_pack1(GTK_PANED(priv->paned_slave),
+ bw_frame(priv->mblist), TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(priv->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);
+ gtk_paned_pack1(GTK_PANED(priv->paned_master),
+ priv->paned_slave, TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(priv->paned_master),
+ bw_frame(priv->preview), TRUE, TRUE);
width_preference = BALSA_INDEX_WIDE;
break;
case LAYOUT_WIDE_SCREEN:
- window->paned_master = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
- window->paned_slave = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
- if (window->content)
- gtk_container_remove(GTK_CONTAINER(window->vbox),
- window->content);
- window->content = window->paned_master;
- gtk_widget_set_vexpand(window->content, TRUE);
- gtk_box_pack_start(GTK_BOX(window->vbox), window->content);
- 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,
+ priv->paned_master = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
+ priv->paned_slave = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
+ if (priv->content)
+ gtk_container_remove(GTK_CONTAINER(priv->vbox),
+ priv->content);
+ priv->content = priv->paned_master;
+ gtk_widget_set_vexpand(priv->content, TRUE);
+ gtk_box_pack_start(GTK_BOX(priv->vbox), priv->content);
+ gtk_paned_pack1(GTK_PANED(priv->paned_master),
+ bw_frame(priv->mblist), TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(priv->paned_master), priv->paned_slave,
TRUE, TRUE);
- gtk_paned_pack1(GTK_PANED(window->paned_slave),
+ gtk_paned_pack1(GTK_PANED(priv->paned_slave),
bw_frame(index_widget), TRUE, FALSE);
- gtk_paned_pack2(GTK_PANED(window->paned_slave),
- bw_frame(window->preview), TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(priv->paned_slave),
+ bw_frame(priv->preview), TRUE, TRUE);
width_preference = BALSA_INDEX_NARROW;
break;
case LAYOUT_DEFAULT:
default:
- window->paned_master = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
- window->paned_slave = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
- if (window->content)
- gtk_container_remove(GTK_CONTAINER(window->vbox),
- window->content);
- window->content = window->paned_master;
- gtk_widget_set_vexpand(window->content, TRUE);
- gtk_box_pack_start(GTK_BOX(window->vbox), window->content);
- 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,
+ priv->paned_master = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
+ priv->paned_slave = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
+ if (priv->content)
+ gtk_container_remove(GTK_CONTAINER(priv->vbox),
+ priv->content);
+ priv->content = priv->paned_master;
+ gtk_widget_set_vexpand(priv->content, TRUE);
+ gtk_box_pack_start(GTK_BOX(priv->vbox), priv->content);
+ gtk_paned_pack1(GTK_PANED(priv->paned_master),
+ bw_frame(priv->mblist), TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(priv->paned_master), priv->paned_slave,
TRUE, TRUE);
- gtk_paned_pack1(GTK_PANED(window->paned_slave),
+ gtk_paned_pack1(GTK_PANED(priv->paned_slave),
bw_frame(index_widget), TRUE, TRUE);
- gtk_paned_pack2(GTK_PANED(window->paned_slave),
- bw_frame(window->preview), TRUE, TRUE);
+ gtk_paned_pack2(GTK_PANED(priv->paned_slave),
+ bw_frame(priv->preview), TRUE, TRUE);
width_preference = BALSA_INDEX_WIDE;
}
if ( (bindex=balsa_window_find_current_index(window)) != NULL)
@@ -649,9 +693,10 @@ bw_is_active_notify(GObject * gobject, GParamSpec * pspec,
if (gtk_window_is_active(gtk_window)) {
#ifdef HAVE_NOTIFY
BalsaWindow *window = BALSA_WINDOW(gobject);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
- if (window->new_mail_note)
- notify_notification_close(window->new_mail_note, NULL);
+ if (priv->new_mail_note)
+ notify_notification_close(priv->new_mail_note, NULL);
#endif /* HAVE_NOTIFY */
gtk_window_set_urgency_hint(gtk_window, FALSE);
}
@@ -745,12 +790,13 @@ bw_action_set_enabled(BalsaWindow * window,
const gchar * action_name,
gboolean enabled)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
GAction *action;
g_assert(window != NULL);
/* Is the window being destroyed? */
- if (window->preview == NULL)
+ if (priv->preview == NULL)
return;
action = bw_get_action(window, action_name);
@@ -1159,9 +1205,10 @@ find_in_message_activated(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
if (balsa_app.previewpane)
- balsa_message_find_in_message(BALSA_MESSAGE(window->preview));
+ balsa_message_find_in_message(BALSA_MESSAGE(priv->preview));
}
static void
@@ -1211,7 +1258,8 @@ zoom_in_activated(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
- GtkWidget *bm = window->preview;
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
+ GtkWidget *bm = priv->preview;
balsa_message_zoom(BALSA_MESSAGE(bm), 1);
}
@@ -1222,7 +1270,8 @@ zoom_out_activated(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
- GtkWidget *bm = window->preview;
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
+ GtkWidget *bm = priv->preview;
balsa_message_zoom(BALSA_MESSAGE(bm), -1);
}
@@ -1233,7 +1282,8 @@ zoom_normal_activated(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
- GtkWidget *bm = window->preview;
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
+ GtkWidget *bm = priv->preview;
balsa_message_zoom(BALSA_MESSAGE(bm), 0);
}
@@ -1291,13 +1341,14 @@ reset_filter_activated(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
GtkWidget *index;
/* do it by resetting the sos filder */
- gtk_entry_set_text(GTK_ENTRY(window->sos_entry), "");
+ gtk_entry_set_text(GTK_ENTRY(priv->sos_entry), "");
index = balsa_window_find_current_index(window);
bw_set_view_filter(window, BALSA_INDEX(index)->filter_no,
- window->sos_entry);
+ priv->sos_entry);
}
static void
@@ -1486,8 +1537,9 @@ next_part_activated(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
- balsa_message_next_part(BALSA_MESSAGE(window->preview));
+ balsa_message_next_part(BALSA_MESSAGE(priv->preview));
}
static void
@@ -1496,8 +1548,9 @@ previous_part_activated(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
- balsa_message_previous_part(BALSA_MESSAGE(window->preview));
+ balsa_message_previous_part(BALSA_MESSAGE(priv->preview));
}
static void
@@ -1506,8 +1559,9 @@ save_part_activated(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
- balsa_message_save_current_part(BALSA_MESSAGE(window->preview));
+ balsa_message_save_current_part(BALSA_MESSAGE(priv->preview));
}
static void
@@ -1542,8 +1596,9 @@ copy_message_activated(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
- if (balsa_message_grab_focus(BALSA_MESSAGE(window->preview)))
+ if (balsa_message_grab_focus(BALSA_MESSAGE(priv->preview)))
copy_activated(action, parameter, user_data);
}
@@ -1553,8 +1608,9 @@ select_text_activated(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
- if (balsa_message_grab_focus(BALSA_MESSAGE(window->preview)))
+ if (balsa_message_grab_focus(BALSA_MESSAGE(priv->preview)))
balsa_window_select_all(user_data);
}
@@ -1651,9 +1707,10 @@ show_mailbox_tabs_change_state(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
balsa_app.show_notebook_tabs = g_variant_get_boolean(state);
- gtk_notebook_set_show_tabs(GTK_NOTEBOOK(window->notebook),
+ gtk_notebook_set_show_tabs(GTK_NOTEBOOK(priv->notebook),
balsa_app.show_notebook_tabs);
g_simple_action_set_state(action, state);
}
@@ -1664,9 +1721,10 @@ show_toolbar_change_state(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
bw_show_or_hide_widget(action, state, &balsa_app.show_main_toolbar,
- window->toolbar);
+ priv->toolbar);
}
static void
@@ -1675,9 +1733,10 @@ show_statusbar_change_state(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
bw_show_or_hide_widget(action, state, &balsa_app.show_statusbar,
- window->bottom_bar);
+ priv->bottom_bar);
}
static void
@@ -1686,9 +1745,10 @@ show_sos_bar_change_state(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
bw_show_or_hide_widget(action, state, &balsa_app.show_sos_bar,
- window->sos_bar);
+ priv->sos_bar);
}
static void
@@ -1697,10 +1757,11 @@ wrap_change_state(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
balsa_app.browse_wrap = g_variant_get_boolean(state);
- balsa_message_set_wrap(BALSA_MESSAGE(window->preview),
+ balsa_message_set_wrap(BALSA_MESSAGE(priv->preview),
balsa_app.browse_wrap);
refresh_preferences_manager();
@@ -1717,10 +1778,11 @@ show_all_headers_change_state(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
balsa_app.show_all_headers = g_variant_get_boolean(state);
- balsa_message_set_displayed_headers(BALSA_MESSAGE(window->preview),
+ balsa_message_set_displayed_headers(BALSA_MESSAGE(priv->preview),
balsa_app.show_all_headers ?
HEADERS_ALL :
balsa_app.shown_headers);
@@ -1826,6 +1888,7 @@ header_change_state(GSimpleAction * action,
gpointer user_data)
{
BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
const gchar *value;
ShownHeaders sh;
@@ -1844,7 +1907,7 @@ header_change_state(GSimpleAction * action,
balsa_app.shown_headers = sh;
bw_reset_show_all_headers(window);
- balsa_message_set_displayed_headers(BALSA_MESSAGE(window->preview),
+ balsa_message_set_displayed_headers(BALSA_MESSAGE(priv->preview),
sh);
g_simple_action_set_state(action, state);
@@ -2028,6 +2091,7 @@ balsa_window_add_action_entries(GActionMap * action_map)
static void
bw_set_menus(BalsaWindow * window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
GtkBuilder *builder;
gchar *ui_file;
GError *err = NULL;
@@ -2061,7 +2125,7 @@ bw_set_menus(BalsaWindow * window)
#if HAVE_MACOSX_DESKTOP
libbalsa_macosx_menu(window, GTK_MENU_SHELL(menubar));
#else
- gtk_box_pack_start(GTK_BOX(window->vbox), menubar);
+ gtk_box_pack_start(GTK_BOX(priv->vbox), menubar);
#endif
}
#endif /* SET_MENUBAR_SETS_A_VISIBLE_MENUBAR */
@@ -2096,9 +2160,10 @@ bw_alt_n_cb(GtkAccelGroup * accel_group,
GdkModifierType modifier,
gpointer user_data)
{
- BalsaWindow *window = user_data;
+ BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
- gtk_notebook_set_current_page(GTK_NOTEBOOK(window->notebook),
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(priv->notebook),
keyval - GDK_KEY_1);
}
@@ -2186,6 +2251,7 @@ GtkWidget *
balsa_window_new()
{
BalsaWindow *window;
+ BalsaWindowPrivate *priv;
BalsaToolbarModel *model;
GtkWidget *hbox;
static const gchar *const header_targets[] =
@@ -2204,14 +2270,15 @@ balsa_window_new()
window = g_object_new(BALSA_TYPE_WINDOW,
"application", balsa_app.application,
NULL);
+ priv = balsa_window_get_instance_private(window);
/* Set up the GMenu structures */
/* Set up <alt>n key bindings */
bw_set_alt_bindings(window);
- window->vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
- gtk_container_add(GTK_CONTAINER(window), window->vbox);
+ priv->vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_add(GTK_CONTAINER(window), priv->vbox);
bw_set_menus(window);
@@ -2220,24 +2287,24 @@ balsa_window_new()
model = balsa_window_get_toolbar_model();
- window->toolbar = balsa_toolbar_new(model, G_ACTION_MAP(window));
- gtk_box_pack_start(GTK_BOX(window->vbox), window->toolbar);
+ priv->toolbar = balsa_toolbar_new(model, G_ACTION_MAP(window));
+ gtk_box_pack_start(GTK_BOX(priv->vbox), priv->toolbar);
- window->bottom_bar = hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_box_pack_end(GTK_BOX(window->vbox), hbox);
+ priv->bottom_bar = hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_box_pack_end(GTK_BOX(priv->vbox), hbox);
- window->progress_bar = gtk_progress_bar_new();
- gtk_widget_set_valign(window->progress_bar, GTK_ALIGN_CENTER);
- gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(window->progress_bar), 0.01);
- gtk_widget_set_size_request(window->progress_bar, balsa_app.mblist_width, -1);
- gtk_box_pack_start(GTK_BOX(hbox), window->progress_bar);
+ priv->progress_bar = gtk_progress_bar_new();
+ gtk_widget_set_valign(priv->progress_bar, GTK_ALIGN_CENTER);
+ gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(priv->progress_bar), 0.01);
+ gtk_widget_set_size_request(priv->progress_bar, balsa_app.mblist_width, -1);
+ gtk_box_pack_start(GTK_BOX(hbox), priv->progress_bar);
- window->statusbar = gtk_statusbar_new();
+ priv->statusbar = gtk_statusbar_new();
g_signal_connect(window, "notify::is-maximized",
G_CALLBACK(bw_notify_is_maximized_cb),
- window->statusbar);
- gtk_widget_set_hexpand(window->statusbar, TRUE);
- gtk_box_pack_start(GTK_BOX(hbox), window->statusbar);
+ priv->statusbar);
+ gtk_widget_set_hexpand(priv->statusbar, TRUE);
+ gtk_box_pack_start(GTK_BOX(hbox), priv->statusbar);
gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
gtk_window_set_default_size(GTK_WINDOW(window), balsa_app.mw_width,
@@ -2245,32 +2312,32 @@ balsa_window_new()
if (balsa_app.mw_maximized)
gtk_window_maximize(GTK_WINDOW(window));
- window->notebook = gtk_notebook_new();
- gtk_notebook_set_show_tabs(GTK_NOTEBOOK(window->notebook),
+ priv->notebook = gtk_notebook_new();
+ gtk_notebook_set_show_tabs(GTK_NOTEBOOK(priv->notebook),
balsa_app.show_notebook_tabs);
- gtk_notebook_set_show_border (GTK_NOTEBOOK(window->notebook), FALSE);
- gtk_notebook_set_scrollable (GTK_NOTEBOOK (window->notebook), TRUE);
- g_signal_connect(G_OBJECT(window->notebook), "switch_page",
+ gtk_notebook_set_show_border (GTK_NOTEBOOK(priv->notebook), FALSE);
+ gtk_notebook_set_scrollable (GTK_NOTEBOOK (priv->notebook), TRUE);
+ g_signal_connect(G_OBJECT(priv->notebook), "switch_page",
G_CALLBACK(bw_notebook_switch_page_cb), window);
formats = gdk_content_formats_new(notebook_drop_types, NUM_DROP_TYPES);
- gtk_drag_dest_set (GTK_WIDGET (window->notebook), GTK_DEST_DEFAULT_ALL,
+ gtk_drag_dest_set (GTK_WIDGET (priv->notebook), GTK_DEST_DEFAULT_ALL,
formats,
GDK_ACTION_DEFAULT | GDK_ACTION_COPY | GDK_ACTION_MOVE);
gdk_content_formats_unref(formats);
- g_signal_connect(G_OBJECT (window->notebook), "drag-data-received",
+ g_signal_connect(G_OBJECT (priv->notebook), "drag-data-received",
G_CALLBACK (bw_notebook_drag_received_cb), NULL);
- g_signal_connect(G_OBJECT (window->notebook), "drag-motion",
+ g_signal_connect(G_OBJECT (priv->notebook), "drag-motion",
G_CALLBACK (bw_notebook_drag_motion_cb), NULL);
- balsa_app.notebook = window->notebook;
- g_object_add_weak_pointer(G_OBJECT(window->notebook),
+ balsa_app.notebook = priv->notebook;
+ g_object_add_weak_pointer(G_OBJECT(priv->notebook),
(gpointer) &balsa_app.notebook);
- window->preview = balsa_message_new();
- gtk_widget_hide(window->preview);
+ priv->preview = balsa_message_new();
+ gtk_widget_hide(priv->preview);
- g_signal_connect(G_OBJECT(window->preview), "select-part",
+ g_signal_connect(G_OBJECT(priv->preview), "select-part",
G_CALLBACK(bw_select_part_cb), window);
/* XXX */
@@ -2278,11 +2345,11 @@ balsa_window_new()
g_object_get(G_OBJECT(balsa_app.mblist), "hadjustment", &hadj,
"vadjustment", &vadj, NULL);
- window->mblist = gtk_scrolled_window_new(hadj, vadj);
+ priv->mblist = gtk_scrolled_window_new(hadj, vadj);
- gtk_container_add(GTK_CONTAINER(window->mblist),
+ gtk_container_add(GTK_CONTAINER(priv->mblist),
GTK_WIDGET(balsa_app.mblist));
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(window->mblist),
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(priv->mblist),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
g_signal_connect_swapped(balsa_app.mblist, "has-unread-mailbox",
G_CALLBACK(bw_enable_next_unread), window);
@@ -2295,19 +2362,19 @@ balsa_window_new()
balsa_app.show_mblist);
if (balsa_app.show_mblist) {
- gtk_paned_set_position(GTK_PANED(window->paned_master),
+ gtk_paned_set_position(GTK_PANED(priv->paned_master),
balsa_app.mblist_width);
} else {
- gtk_paned_set_position(GTK_PANED(window->paned_master), 0);
+ gtk_paned_set_position(GTK_PANED(priv->paned_master), 0);
}
/*PKGW: do it this way, without the usizes. */
if (balsa_app.previewpane)
- gtk_paned_set_position(GTK_PANED(window->paned_slave),
+ gtk_paned_set_position(GTK_PANED(priv->paned_slave),
balsa_app.notebook_height);
else
/* Set it to something really high */
- gtk_paned_set_position(GTK_PANED(window->paned_slave), G_MAXINT);
+ gtk_paned_set_position(GTK_PANED(priv->paned_slave), G_MAXINT);
/* set the toolbar style */
balsa_window_refresh(window);
@@ -2368,18 +2435,20 @@ balsa_window_new()
gboolean
balsa_window_fix_paned(BalsaWindow *window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
+
if (balsa_app.show_mblist) {
- gtk_paned_set_position(GTK_PANED(window->paned_master),
+ gtk_paned_set_position(GTK_PANED(priv->paned_master),
balsa_app.mblist_width);
}
if (balsa_app.previewpane) {
- gtk_paned_set_position(GTK_PANED(window->paned_slave),
+ gtk_paned_set_position(GTK_PANED(priv->paned_slave),
balsa_app.notebook_height);
}
- g_signal_connect(window->paned_master, "notify::position",
+ g_signal_connect(priv->paned_master, "notify::position",
G_CALLBACK(bw_master_position_cb), NULL);
- g_signal_connect(window->paned_slave, "notify::position",
+ g_signal_connect(priv->paned_slave, "notify::position",
G_CALLBACK(bw_slave_position_cb), NULL);
return FALSE;
@@ -2469,12 +2538,13 @@ bw_enable_mailbox_menus(BalsaWindow * window, BalsaIndex * index)
void
balsa_window_update_book_menus(BalsaWindow * window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
gboolean has_books = balsa_app.address_book_list != NULL;
bw_action_set_enabled(window, "address-book", has_books);
bw_action_set_enabled(window, "store-address", has_books &&
- window->current_index &&
- BALSA_INDEX(window->current_index)->current_msgno);
+ priv->current_index &&
+ BALSA_INDEX(priv->current_index)->current_msgno);
}
/*
@@ -2484,8 +2554,9 @@ balsa_window_update_book_menus(BalsaWindow * window)
static void
bw_enable_message_menus(BalsaWindow * window, guint msgno)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
gboolean enable, enable_mod, enable_store;
- BalsaIndex *bindex = BALSA_INDEX(window->current_index);
+ BalsaIndex *bindex = BALSA_INDEX(priv->current_index);
enable = (msgno != 0 && bindex != NULL);
bw_actions_set_enabled(window, current_message_actions,
@@ -2616,7 +2687,8 @@ balsa_window_enable_continue(BalsaWindow * window)
static void
bw_enable_part_menu_items(BalsaWindow * window)
{
- BalsaMessage *msg = window ? BALSA_MESSAGE(window->preview) : NULL;
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
+ BalsaMessage *msg = window ? BALSA_MESSAGE(priv->preview) : NULL;
bw_action_set_enabled(window, "next-part",
balsa_message_has_next_part(msg));
@@ -2802,6 +2874,7 @@ bw_real_open_mbnode_idle_cb(BalsaWindowRealOpenMbnodeInfo * info)
BalsaIndex *index = info->index;
BalsaMailboxNode *mbnode = info->mbnode;
BalsaWindow *window = info->window;
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
LibBalsaMailbox *mailbox = mbnode->mailbox;
GtkWidget *label;
GtkWidget *scroll;
@@ -2842,14 +2915,14 @@ bw_real_open_mbnode_idle_cb(BalsaWindowRealOpenMbnodeInfo * info)
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(scroll), GTK_WIDGET(index));
- page_num = gtk_notebook_append_page(GTK_NOTEBOOK(window->notebook),
+ page_num = gtk_notebook_append_page(GTK_NOTEBOOK(priv->notebook),
scroll, label);
- gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(window->notebook),
+ gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(priv->notebook),
scroll, TRUE);
if (info->set_current)
/* change the page to the newly selected notebook item */
- gtk_notebook_set_current_page(GTK_NOTEBOOK(window->notebook),
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(priv->notebook),
page_num);
bw_register_open_mailbox(mailbox);
@@ -2973,6 +3046,7 @@ static void
balsa_window_real_close_mbnode(BalsaWindow * window,
BalsaMailboxNode * mbnode)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
GtkWidget *index = NULL;
gint i;
LibBalsaMailbox **mailbox;
@@ -2982,7 +3056,7 @@ balsa_window_real_close_mbnode(BalsaWindow * window,
i = balsa_find_notebook_page_num(mbnode->mailbox);
if (i != -1) {
- gtk_notebook_remove_page(GTK_NOTEBOOK(window->notebook), i);
+ gtk_notebook_remove_page(GTK_NOTEBOOK(priv->notebook), i);
bw_unregister_open_mailbox(mbnode->mailbox);
/* If this is the last notebook page clear the message preview
@@ -2996,7 +3070,7 @@ balsa_window_real_close_mbnode(BalsaWindow * window,
gtk_window_set_title(GTK_WINDOW(window), "Balsa");
bw_idle_replace(window, NULL);
- statusbar = GTK_STATUSBAR(window->statusbar);
+ statusbar = GTK_STATUSBAR(priv->statusbar);
context_id = gtk_statusbar_get_context_id(statusbar, "BalsaWindow mailbox");
gtk_statusbar_pop(statusbar, context_id);
gtk_statusbar_push(statusbar, context_id, "Mailbox closed");
@@ -3004,11 +3078,11 @@ balsa_window_real_close_mbnode(BalsaWindow * window,
/* Disable menus */
bw_enable_mailbox_menus(window, NULL);
bw_enable_message_menus(window, 0);
- if (window->current_index)
- g_object_remove_weak_pointer(G_OBJECT(window->current_index),
+ if (priv->current_index)
+ g_object_remove_weak_pointer(G_OBJECT(priv->current_index),
(gpointer)
- &window->current_index);
- window->current_index = NULL;
+ &priv->current_index);
+ priv->current_index = NULL;
/* Just in case... */
g_object_set_data(G_OBJECT(window), BALSA_INDEX_GRAB_FOCUS, NULL);
@@ -3078,15 +3152,15 @@ bw_close_mailbox_on_timer(BalsaWindow * window)
static void
balsa_window_dispose(GObject * object)
{
- BalsaWindow *window;
+ BalsaWindow *window = BALSA_WINDOW(object);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
- window = BALSA_WINDOW(object);
bw_idle_remove(window);
/* The preview window seems to get finalized without notification;
* we no longer need it, so we just drop our pointer: */
- window->preview = NULL;
+ priv->preview = NULL;
- libbalsa_clear_source_id(&window->network_changed_source_id);
+ libbalsa_clear_source_id(&priv->network_changed_source_id);
balsa_unregister_pixmaps();
@@ -3100,6 +3174,7 @@ balsa_window_dispose(GObject * object)
void
balsa_window_refresh(BalsaWindow * window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
GtkWidget *index;
BalsaIndex *bindex;
@@ -3116,12 +3191,12 @@ balsa_window_refresh(BalsaWindow * window)
}
if (balsa_app.previewpane) {
bw_idle_replace(window, bindex);
- gtk_paned_set_position(GTK_PANED(window->paned_slave),
+ gtk_paned_set_position(GTK_PANED(priv->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(window->paned_slave), G_MAXINT);
+ gtk_paned_set_position(GTK_PANED(priv->paned_slave), G_MAXINT);
}
}
@@ -3203,10 +3278,13 @@ bw_check_mailbox_done(bw_pop_mbox_t *bw_pop_mbox)
static void
bw_check_mailbox_list(struct check_messages_thread_info *info, GList *mailbox_list)
{
- GList *check_mbx = NULL;
+ GList *check_mbx = NULL;
- if ((info->window != NULL) && !info->window->network_available) {
- return;
+ if (info->window != NULL) {
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(info->window);
+
+ if (!priv->network_available)
+ return;
}
for ( ; mailbox_list; mailbox_list = mailbox_list->next) {
@@ -3385,9 +3463,13 @@ bw_mailbox_check(LibBalsaMailbox * mailbox, struct check_messages_thread_info *i
g_debug("checking mailbox %s", libbalsa_mailbox_get_name(mailbox));
if (LIBBALSA_IS_MAILBOX_IMAP(mailbox)) {
- if ((info->window != NULL) && !info->window->network_available) {
- return;
- }
+ if (info->window != NULL) {
+ BalsaWindowPrivate *priv =
+ balsa_window_get_instance_private(info->window);
+
+ if (!priv->network_available)
+ return;
+ }
if (info->with_progress_dialog) {
libbalsa_progress_dialog_update(&progress_dialog, _("Mailboxes"), FALSE, INFINITY,
@@ -3443,11 +3525,13 @@ bw_check_messages_thread(struct check_messages_thread_info *info)
g_atomic_int_inc(&checking_mail);
- if (info->window) {
+ if (info->window != NULL) {
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(info->window);
+
g_idle_add((GSourceFunc) bw_check_messages_thread_idle_cb,
g_object_ref(info->window));
- if (info->window->network_available)
- time(&info->window->last_check_time);
+ if (priv->network_available)
+ time(&priv->last_check_time);
g_object_unref(info->window);
}
@@ -3480,6 +3564,8 @@ static void
bw_display_new_mail_notification(int num_new, int has_new)
{
GtkWindow *window = GTK_WINDOW(balsa_app.main_window);
+ BalsaWindowPrivate *priv =
+ balsa_window_get_instance_private(balsa_app.main_window);
static GtkWidget *dlg = NULL;
static gint num_total = 0;
gchar *msg = NULL;
@@ -3502,27 +3588,24 @@ bw_display_new_mail_notification(int num_new, int has_new)
if (gtk_window_is_active(window))
return;
- if (balsa_app.main_window->new_mail_note) {
+ if (priv->new_mail_note) {
/* the user didn't acknowledge the last info, so we'll
* accumulate the count */
num_total += num_new;
} else {
num_total = num_new;
#if HAVE_NOTIFY >=7
- balsa_app.main_window->new_mail_note =
+ priv->new_mail_note =
notify_notification_new("Balsa", NULL, NULL);
- notify_notification_set_hint(balsa_app.main_window->
- new_mail_note, "desktop-entry",
+ notify_notification_set_hint(priv-> new_mail_note, "desktop-entry",
g_variant_new_string("balsa"));
#else
- balsa_app.main_window->new_mail_note =
+ priv->new_mail_note =
notify_notification_new("Balsa", NULL, NULL, NULL);
#endif
- g_object_add_weak_pointer(G_OBJECT(balsa_app.main_window->
- new_mail_note),
- (gpointer) & balsa_app.main_window->
- new_mail_note);
- g_signal_connect(balsa_app.main_window->new_mail_note,
+ g_object_add_weak_pointer(G_OBJECT(priv-> new_mail_note),
+ (gpointer) & priv-> new_mail_note);
+ g_signal_connect(priv->new_mail_note,
"closed", G_CALLBACK(g_object_unref), NULL);
}
} else {
@@ -3550,14 +3633,12 @@ bw_display_new_mail_notification(int num_new, int has_new)
}
msg = bw_get_new_message_notification_string(num_new, num_total);
- if (balsa_app.main_window->new_mail_note) {
- notify_notification_update(balsa_app.main_window->new_mail_note,
+ if (priv->new_mail_note != NULL) {
+ notify_notification_update(priv->new_mail_note,
"Balsa", msg, "dialog-information");
/* 30 seconds: */
- notify_notification_set_timeout(balsa_app.main_window->
- new_mail_note, 30000);
- notify_notification_show(balsa_app.main_window->new_mail_note,
- NULL);
+ notify_notification_set_timeout(priv->new_mail_note, 30000);
+ notify_notification_show(priv->new_mail_note, NULL);
} else
gtk_message_dialog_set_markup(GTK_MESSAGE_DIALOG(dlg), msg);
#else
@@ -3636,10 +3717,11 @@ bw_change_connection_status_can_reach_cb(GObject * object,
gboolean can_reach,
gpointer user_data)
{
- BalsaWindow *window = user_data;
+ BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
if (can_reach &&
- difftime(time(NULL), window->last_check_time) >
+ difftime(time(NULL), priv->last_check_time) >
balsa_app.check_mail_timer * 60) {
/* Check the mail now, and reset the timer */
bw_check_new_messages(window);
@@ -3651,17 +3733,18 @@ bw_change_connection_status_can_reach_cb(GObject * object,
static gboolean
bw_change_connection_status_idle(gpointer user_data)
{
- BalsaWindow *window = user_data;
+ BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
BalsaMailboxNode *mbnode;
LibBalsaMailbox *mailbox;
- window->network_changed_source_id = 0;
+ priv->network_changed_source_id = 0;
gtk_tree_model_foreach(GTK_TREE_MODEL(balsa_app.mblist_tree_store),
(GtkTreeModelForeachFunc)
mw_mbox_change_connection_status, NULL);
- if (!window->network_available)
+ if (!priv->network_available)
return FALSE;
/* GLib timeouts are now triggered by g_get_monotonic_time(),
@@ -3685,9 +3768,11 @@ bw_change_connection_status_idle(gpointer user_data)
GtkWidget *
balsa_window_find_current_index(BalsaWindow * window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
+
g_return_val_if_fail(window != NULL, NULL);
- return window->current_index;
+ return priv->current_index;
}
static GtkToggleButton*
@@ -3965,6 +4050,7 @@ bw_mailbox_tab_close_cb(GtkWidget * widget, gpointer data)
static LibBalsaCondition*
bw_get_view_filter(BalsaWindow *window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
LibBalsaCondition *filter, *flag_filter;
gint i;
@@ -3972,9 +4058,9 @@ bw_get_view_filter(BalsaWindow *window)
/* add string filter on top of that */
- i = gtk_combo_box_get_active(GTK_COMBO_BOX(window->filter_choice));
+ i = gtk_combo_box_get_active(GTK_COMBO_BOX(priv->filter_choice));
if (i >= 0) {
- const gchar *str = gtk_entry_get_text(GTK_ENTRY(window->sos_entry));
+ const gchar *str = gtk_entry_get_text(GTK_ENTRY(priv->sos_entry));
g_assert(((guint) i) < G_N_ELEMENTS(view_filters));
filter = view_filters[i].filter(str);
} else filter = NULL;
@@ -4027,13 +4113,14 @@ bw_hide_changed_set_view_filter(BalsaWindow * window)
}
static void
-bw_reset_filter(BalsaWindow * bw)
+bw_reset_filter(BalsaWindow * window)
{
- BalsaIndex *bindex = BALSA_INDEX(balsa_window_find_current_index(bw));
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
+ BalsaIndex *bindex = BALSA_INDEX(balsa_window_find_current_index(window));
/* do it by resetting the sos filder */
- gtk_entry_set_text(GTK_ENTRY(bw->sos_entry), "");
- bw_set_view_filter(bw, bindex->filter_no, bw->sos_entry);
+ gtk_entry_set_text(GTK_ENTRY(priv->sos_entry), "");
+ bw_set_view_filter(window, bindex->filter_no, priv->sos_entry);
}
/* empty_trash:
@@ -4077,21 +4164,22 @@ empty_trash(BalsaWindow * window)
}
static void
-bw_show_mbtree(BalsaWindow * bw)
+bw_show_mbtree(BalsaWindow * window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
GtkWidget *parent;
- parent = gtk_widget_get_ancestor(bw->mblist, GTK_TYPE_PANED);
+ parent = gtk_widget_get_ancestor(priv->mblist, GTK_TYPE_PANED);
while (gtk_orientable_get_orientation(GTK_ORIENTABLE(parent)) !=
GTK_ORIENTATION_HORIZONTAL) {
parent = gtk_widget_get_ancestor(parent, GTK_TYPE_PANED);
}
if (balsa_app.show_mblist) {
- gtk_widget_show(bw->mblist);
+ gtk_widget_show(priv->mblist);
gtk_paned_set_position(GTK_PANED(parent), balsa_app.mblist_width);
} else {
- gtk_widget_hide(bw->mblist);
+ gtk_widget_hide(priv->mblist);
gtk_paned_set_position(GTK_PANED(parent), 0);
}
}
@@ -4099,28 +4187,29 @@ bw_show_mbtree(BalsaWindow * bw)
void
balsa_change_window_layout(BalsaWindow *window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
- g_object_ref(window->notebook);
- g_object_ref(window->mblist);
- g_object_ref(window->preview);
+ g_object_ref(priv->notebook);
+ g_object_ref(priv->mblist);
+ g_object_ref(priv->preview);
gtk_container_remove(GTK_CONTAINER
- (gtk_widget_get_parent(window->notebook)),
- window->notebook);
+ (gtk_widget_get_parent(priv->notebook)),
+ priv->notebook);
gtk_container_remove(GTK_CONTAINER
- (gtk_widget_get_parent(window->mblist)),
- window->mblist);
+ (gtk_widget_get_parent(priv->mblist)),
+ priv->mblist);
gtk_container_remove(GTK_CONTAINER
- (gtk_widget_get_parent(window->preview)),
- window->preview);
+ (gtk_widget_get_parent(priv->preview)),
+ priv->preview);
bw_set_panes(window);
- g_object_unref(window->notebook);
- g_object_unref(window->mblist);
- g_object_unref(window->preview);
+ g_object_unref(priv->notebook);
+ g_object_unref(priv->mblist);
+ g_object_unref(priv->preview);
- gtk_paned_set_position(GTK_PANED(window->paned_master),
+ gtk_paned_set_position(GTK_PANED(priv->paned_master),
balsa_app.show_mblist ?
balsa_app.mblist_width : 0);
}
@@ -4153,17 +4242,18 @@ bw_notebook_switch_page_cb(GtkWidget * notebook,
gpointer data)
{
BalsaWindow *window = BALSA_WINDOW(data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
GtkWidget *page;
BalsaIndex *index;
LibBalsaMailbox *mailbox;
gchar *title;
- if (window->current_index) {
- g_object_remove_weak_pointer(G_OBJECT(window->current_index),
- (gpointer) &window->current_index);
+ if (priv->current_index) {
+ g_object_remove_weak_pointer(G_OBJECT(priv->current_index),
+ (gpointer) &priv->current_index);
/* Note when this mailbox was hidden, for use in auto-closing. */
- time(&BALSA_INDEX(window->current_index)->mailbox_node->last_use);
- window->current_index = NULL;
+ time(&BALSA_INDEX(priv->current_index)->mailbox_node->last_use);
+ priv->current_index = NULL;
}
if (!balsa_app.mblist_tree_store)
@@ -4173,9 +4263,9 @@ bw_notebook_switch_page_cb(GtkWidget * notebook,
page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page_num);
index = BALSA_INDEX(gtk_bin_get_child(GTK_BIN(page)));
- window->current_index = GTK_WIDGET(index);
+ priv->current_index = GTK_WIDGET(index);
g_object_add_weak_pointer(G_OBJECT(index),
- (gpointer) &window->current_index);
+ (gpointer) &priv->current_index);
/* Note when this mailbox was exposed, for use in auto-expunge. */
time(&index->mailbox_node->last_use);
@@ -4198,9 +4288,9 @@ bw_notebook_switch_page_cb(GtkWidget * notebook,
bw_enable_message_menus(window, index->current_msgno);
bw_enable_mailbox_menus(window, index);
- gtk_entry_set_text(GTK_ENTRY(window->sos_entry),
+ gtk_entry_set_text(GTK_ENTRY(priv->sos_entry),
index->filter_string ? index->filter_string : "");
- gtk_combo_box_set_active(GTK_COMBO_BOX(window->filter_choice),
+ gtk_combo_box_set_active(GTK_COMBO_BOX(priv->filter_choice),
index->filter_no);
balsa_mblist_focus_mailbox(balsa_app.mblist, mailbox);
@@ -4215,21 +4305,22 @@ bw_notebook_switch_page_cb(GtkWidget * notebook,
}
static void
-bw_index_changed_cb(GtkWidget * widget, gpointer data)
+bw_index_changed_cb(GtkWidget * widget, gpointer user_data)
{
- BalsaWindow *window = data;
+ BalsaWindow *window = BALSA_WINDOW(user_data);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
BalsaIndex *index;
guint current_msgno;
- if (widget != window->current_index)
+ if (widget != priv->current_index)
return;
index = BALSA_INDEX(widget);
bw_enable_message_menus(window, index->current_msgno);
bw_enable_mailbox_menus(window, index);
- current_msgno = BALSA_MESSAGE(window->preview)->message ?
- libbalsa_message_get_msgno(BALSA_MESSAGE(window->preview)->message) : 0;
+ current_msgno = BALSA_MESSAGE(priv->preview)->message ?
+ libbalsa_message_get_msgno(BALSA_MESSAGE(priv->preview)->message) : 0;
if (current_msgno != index->current_msgno)
bw_idle_replace(window, index);
@@ -4238,13 +4329,15 @@ bw_index_changed_cb(GtkWidget * widget, gpointer data)
static void
bw_idle_replace(BalsaWindow * window, BalsaIndex * bindex)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
+
if (balsa_app.previewpane) {
bw_idle_remove(window);
/* Skip if the window is being destroyed: */
- if (window->preview != NULL) {
- window->set_message_id = g_idle_add((GSourceFunc) bw_idle_cb, window);
- if (BALSA_MESSAGE(window->preview)->message != NULL)
- gtk_widget_hide(window->preview);
+ if (priv->preview != NULL) {
+ priv->set_message_id = g_idle_add((GSourceFunc) bw_idle_cb, window);
+ if (BALSA_MESSAGE(priv->preview)->message != NULL)
+ gtk_widget_hide(priv->preview);
}
}
}
@@ -4252,7 +4345,9 @@ bw_idle_replace(BalsaWindow * window, BalsaIndex * bindex)
static void
bw_idle_remove(BalsaWindow * window)
{
- libbalsa_clear_source_id(&window->set_message_id);
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
+
+ libbalsa_clear_source_id(&priv->set_message_id);
}
@@ -4261,9 +4356,10 @@ static volatile gboolean bw_idle_cb_active = FALSE;
static gboolean
bw_idle_cb(BalsaWindow * window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
BalsaIndex *index;
- if (window->set_message_id == 0) {
+ if (priv->set_message_id == 0) {
return FALSE;
}
if (bw_idle_cb_active) {
@@ -4271,15 +4367,15 @@ bw_idle_cb(BalsaWindow * window)
}
bw_idle_cb_active = TRUE;
- window->set_message_id = 0;
+ priv->set_message_id = 0;
- index = (BalsaIndex *) window->current_index;
+ index = (BalsaIndex *) priv->current_index;
if (index)
- balsa_message_set(BALSA_MESSAGE(window->preview),
+ balsa_message_set(BALSA_MESSAGE(priv->preview),
index->mailbox_node->mailbox,
index->current_msgno);
else
- balsa_message_set(BALSA_MESSAGE(window->preview), NULL, 0);
+ balsa_message_set(BALSA_MESSAGE(priv->preview), NULL, 0);
index = g_object_get_data(G_OBJECT(window), BALSA_INDEX_GRAB_FOCUS);
if (index) {
@@ -4425,9 +4521,12 @@ static gboolean bw_notebook_drag_motion_cb(GtkWidget * widget,
static gint
bw_progress_timeout(BalsaWindow ** window)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(*window);
+
if (balsa_app.show_statusbar
- && *window && (*window)->progress_type == BALSA_PROGRESS_ACTIVITY)
- gtk_progress_bar_pulse(GTK_PROGRESS_BAR((*window)->progress_bar));
+ && *window != NULL
+ && priv->progress_type == BALSA_PROGRESS_ACTIVITY)
+ gtk_progress_bar_pulse(GTK_PROGRESS_BAR(priv->progress_bar));
/* return true so it continues to be called */
return *window != NULL;
@@ -4444,6 +4543,7 @@ bw_progress_timeout(BalsaWindow ** window)
void
balsa_window_increase_activity(BalsaWindow * window, const gchar * message)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
static BalsaWindow *window_save = NULL;
if (!window_save) {
@@ -4452,22 +4552,22 @@ balsa_window_increase_activity(BalsaWindow * window, const gchar * message)
(gpointer) &window_save);
}
- if (!window->activity_handler)
+ if (!priv->activity_handler)
/* add a timeout to make the activity bar move */
- window->activity_handler =
+ priv->activity_handler =
g_timeout_add(50, (GSourceFunc) bw_progress_timeout,
&window_save);
/* increment the reference counter */
- ++window->activity_counter;
- if (window->progress_type == BALSA_PROGRESS_NONE)
- window->progress_type = BALSA_PROGRESS_ACTIVITY;
+ ++priv->activity_counter;
+ if (priv->progress_type == BALSA_PROGRESS_NONE)
+ priv->progress_type = BALSA_PROGRESS_ACTIVITY;
- if (window->progress_type == BALSA_PROGRESS_ACTIVITY)
- gtk_progress_bar_set_text(GTK_PROGRESS_BAR(window->progress_bar),
+ if (priv->progress_type == BALSA_PROGRESS_ACTIVITY)
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(priv->progress_bar),
message);
- window->activity_messages =
- g_slist_prepend(window->activity_messages, g_strdup(message));
+ priv->activity_messages =
+ g_slist_prepend(priv->activity_messages, g_strdup(message));
}
@@ -4480,27 +4580,28 @@ balsa_window_increase_activity(BalsaWindow * window, const gchar * message)
void
balsa_window_decrease_activity(BalsaWindow * window, const gchar * message)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
GSList *link;
GtkProgressBar *progress_bar;
- link = g_slist_find_custom(window->activity_messages, message,
+ link = g_slist_find_custom(priv->activity_messages, message,
(GCompareFunc) strcmp);
g_free(link->data);
- window->activity_messages =
- g_slist_delete_link(window->activity_messages, link);
+ priv->activity_messages =
+ g_slist_delete_link(priv->activity_messages, link);
- progress_bar = GTK_PROGRESS_BAR(window->progress_bar);
- if (window->progress_type == BALSA_PROGRESS_ACTIVITY)
+ progress_bar = GTK_PROGRESS_BAR(priv->progress_bar);
+ if (priv->progress_type == BALSA_PROGRESS_ACTIVITY)
gtk_progress_bar_set_text(progress_bar,
- window->activity_messages ?
- window->activity_messages->data : NULL);
+ priv->activity_messages ?
+ priv->activity_messages->data : NULL);
/* decrement the counter if positive */
- if (window->activity_counter > 0 && --window->activity_counter == 0) {
+ if (priv->activity_counter > 0 && --priv->activity_counter == 0) {
/* clear the bar and make it available for others to use */
- libbalsa_clear_source_id(&window->activity_handler);
- if (window->progress_type == BALSA_PROGRESS_ACTIVITY) {
- window->progress_type = BALSA_PROGRESS_NONE;
+ libbalsa_clear_source_id(&priv->activity_handler);
+ if (priv->progress_type == BALSA_PROGRESS_ACTIVITY) {
+ priv->progress_type = BALSA_PROGRESS_NONE;
gtk_progress_bar_set_fraction(progress_bar, 0);
}
}
@@ -4542,20 +4643,21 @@ bw_setup_progress_idle_cb(BalsaWindowSetupProgressInfo * info)
gboolean
balsa_window_setup_progress(BalsaWindow * window, const gchar * text)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
BalsaWindowSetupProgressInfo *info;
if (text) {
/* make sure the progress bar is currently unused */
- if (window->progress_type == BALSA_PROGRESS_INCREMENT)
+ if (priv->progress_type == BALSA_PROGRESS_INCREMENT)
return FALSE;
- window->progress_type = BALSA_PROGRESS_INCREMENT;
+ priv->progress_type = BALSA_PROGRESS_INCREMENT;
} else
- window->progress_type = BALSA_PROGRESS_NONE;
+ priv->progress_type = BALSA_PROGRESS_NONE;
/* Update the display in an idle callback, in case we were called in
* a sub-thread.*/
info = g_new(BalsaWindowSetupProgressInfo, 1);
- info->progress_bar = GTK_PROGRESS_BAR(g_object_ref(window->progress_bar));
+ info->progress_bar = GTK_PROGRESS_BAR(g_object_ref(priv->progress_bar));
info->text = g_strdup(text);
g_idle_add((GSourceFunc) bw_setup_progress_idle_cb, info);
@@ -4577,11 +4679,13 @@ void
balsa_window_increment_progress(BalsaWindow * window, gdouble fraction,
gboolean flush)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
+
/* make sure the progress bar is being incremented */
- if (window->progress_type != BALSA_PROGRESS_INCREMENT)
+ if (priv->progress_type != BALSA_PROGRESS_INCREMENT)
return;
- gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(window->progress_bar),
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(priv->progress_bar),
fraction);
if (flush)
@@ -4664,6 +4768,7 @@ balsa_window_select_all(GtkWindow * window)
void
balsa_window_set_statusbar(BalsaWindow * window, LibBalsaMailbox * mailbox)
{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
gint total_messages = libbalsa_mailbox_total_messages(mailbox);
gint unread_messages = libbalsa_mailbox_get_unread_messages(mailbox);
gint hidden_messages;
@@ -4701,7 +4806,7 @@ balsa_window_set_statusbar(BalsaWindow * window, LibBalsaMailbox * mailbox)
hidden_messages);
}
- statusbar = GTK_STATUSBAR(window->statusbar);
+ statusbar = GTK_STATUSBAR(priv->statusbar);
context_id =
gtk_statusbar_get_context_id(statusbar, "BalsaMBList message");
gtk_statusbar_pop(statusbar, context_id);
@@ -4766,3 +4871,15 @@ balsa_window_next_unread(BalsaWindow * window)
BALSA_INDEX_VIEW_ON_OPEN, GINT_TO_POINTER(TRUE));
return TRUE;
}
+
+/*
+ * Getter
+ */
+
+GtkStatusbar *
+balsa_window_get_statusbar(BalsaWindow * window)
+{
+ BalsaWindowPrivate *priv = balsa_window_get_instance_private(window);
+
+ return (GtkStatusbar *) priv->statusbar;
+}
diff --git a/src/main-window.h b/src/main-window.h
index 0b5fd0d..6b6d150 100644
--- a/src/main-window.h
+++ b/src/main-window.h
@@ -33,17 +33,14 @@
#include "mailbox-node.h"
#include "toolbar-factory.h"
-#define BALSA_TYPE_WINDOW (balsa_window_get_type ())
-#define BALSA_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST (obj, BALSA_TYPE_WINDOW,
BalsaWindow))
-#define BALSA_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST (klass, BALSA_TYPE_WINDOW,
BalsaWindowClass))
-#define BALSA_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, BALSA_TYPE_WINDOW))
-#define BALSA_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE (klass, BALSA_TYPE_WINDOW))
-#define BALSA_WINDOW_GET_CLASS(window) \
- (G_TYPE_INSTANCE_GET_CLASS ((window), BALSA_TYPE_WINDOW, \
- BalsaWindowClass))
-
-typedef struct _BalsaWindow BalsaWindow;
-typedef struct _BalsaWindowClass BalsaWindowClass;
+#define BALSA_TYPE_WINDOW balsa_window_get_type()
+
+G_DECLARE_DERIVABLE_TYPE(BalsaWindow,
+ balsa_window,
+ BALSA,
+ WINDOW,
+ GtkApplicationWindow)
+
typedef enum {
BALSA_PROGRESS_NONE = 0,
BALSA_PROGRESS_ACTIVITY,
@@ -51,43 +48,6 @@ typedef enum {
} BalsaWindowProgress;
-struct _BalsaWindow {
- GtkApplicationWindow window;
-
- GtkWidget *toolbar;
- GtkWidget *sos_bar;
- GtkWidget *bottom_bar;
- GtkWidget *progress_bar;
- GtkWidget *statusbar;
- GtkWidget *mblist;
- GtkWidget *sos_entry; /* SenderOrSubject filter entry */
- GtkWidget *notebook;
- GtkWidget *preview; /* message is child */
- GtkWidget *paned_master;
- GtkWidget *paned_slave;
- GtkWidget *current_index;
- GtkWidget *filter_choice;
- GtkWidget *vbox;
- GtkWidget *content;
-
- guint set_message_id;
-
- /* Progress bar stuff: */
- BalsaWindowProgress progress_type;
- guint activity_handler;
- guint activity_counter;
- GSList *activity_messages;
-
-#ifdef HAVE_NOTIFY
- NotifyNotification *new_mail_note;
-#endif /* HAVE_NOTIFY */
-
- /* Support GNetworkMonitor: */
- gboolean network_available;
- time_t last_check_time;
- guint network_changed_source_id;
-};
-
struct _BalsaWindowClass {
GtkApplicationWindowClass parent_class;
@@ -156,6 +116,12 @@ void balsa_window_decrease_activity(BalsaWindow * window,
void balsa_window_set_statusbar(BalsaWindow * window,
LibBalsaMailbox * mailbox);
+/*
+ * Getter
+ */
+
+GtkStatusbar * balsa_window_get_statusbar(BalsaWindow * window);
+
#if defined(__FILE__) && defined(__LINE__)
# ifdef __FUNCTION__
# define BALSA_DEBUG_MSG(message) if (balsa_app.debug) fprintf(stderr, "[%lu] %12s | %4d | %30s: %s\n",
(unsigned long) time(NULL), __FILE__, __LINE__, __FUNCTION__, message)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]