From ad0b406bca79580d61b35ce20fca3ebe9dfb90dc Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Tue, 19 Sep 2006 02:37:19 +0000 Subject: [PATCH] Added messages headers display in main window --- src/mailer.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- src/mailer.h | 4 ++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/mailer.c b/src/mailer.c index 0f916f9..464a136 100644 --- a/src/mailer.c +++ b/src/mailer.c @@ -44,10 +44,12 @@ static struct _menubar _mailer_menubar[] = /* Mailer */ +static GtkWidget * _new_headers(Mailer * mailer); Mailer * mailer_new(void) { Mailer * mailer; GtkWidget * vbox; + GtkWidget * vbox2; GtkWidget * toolbar; GtkToolItem * toolitem; GtkWidget * hpaned; @@ -62,8 +64,10 @@ Mailer * mailer_new(void) g_signal_connect(G_OBJECT(mailer->window), "delete_event", G_CALLBACK( on_closex), NULL); vbox = gtk_vbox_new(FALSE, 0); + /* menubar */ widget = common_new_menubar(_mailer_menubar, mailer); gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, FALSE, 0); + /* toolbar */ toolbar = gtk_toolbar_new(); toolitem = gtk_tool_button_new_from_stock(GTK_STOCK_STOP); gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1); @@ -76,12 +80,16 @@ Mailer * mailer_new(void) gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, TRUE, 0); hpaned = gtk_hpaned_new(); gtk_paned_set_position(GTK_PANED(hpaned), 160); + /* folders */ widget = gtk_tree_view_new(); gtk_paned_add1(GTK_PANED(hpaned), widget); vpaned = gtk_vpaned_new(); gtk_paned_set_position(GTK_PANED(vpaned), 160); + /* messages list */ widget = gtk_tree_view_new(); gtk_paned_add1(GTK_PANED(vpaned), widget); + /* messages body */ + vbox2 = _new_headers(mailer); mailer->view_body = gtk_text_view_new(); gtk_text_view_set_editable(GTK_TEXT_VIEW(mailer->view_body), FALSE); widget = gtk_scrolled_window_new(NULL, NULL); @@ -90,7 +98,8 @@ Mailer * mailer_new(void) gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(widget), mailer->view_body); - gtk_paned_add2(GTK_PANED(vpaned), widget); + gtk_box_pack_start(GTK_BOX(vbox2), widget, TRUE, TRUE, 0); + gtk_paned_add2(GTK_PANED(vpaned), vbox2); gtk_paned_add2(GTK_PANED(hpaned), vpaned); gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); mailer->statusbar = gtk_statusbar_new(); @@ -101,6 +110,42 @@ Mailer * mailer_new(void) return mailer; } +static GtkWidget * _new_headers(Mailer * mailer) +{ + struct { + char * hdr; + GtkWidget ** widget; + } widgets[] = + { + { " From: ", &mailer->from }, + { " To: ", &mailer->to }, + { " Subject: ", &mailer->subject }, + { " Date: ", &mailer->date }, + { NULL, NULL } + }; + int i; + GtkWidget * vbox; + GtkWidget * hbox; + GtkWidget * widget; + GtkSizeGroup * group; + + vbox = gtk_vbox_new(FALSE, 0); + group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + for(i = 0; widgets[i].hdr != NULL; i++) + { + hbox = gtk_hbox_new(FALSE, 0); + widget = gtk_label_new(widgets[i].hdr); + gtk_misc_set_alignment(GTK_MISC(widget), 1.0, 0.0); + gtk_size_group_add_widget(GTK_SIZE_GROUP(group), widget); + gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0); + *(widgets[i].widget) = gtk_label_new(""); + gtk_box_pack_start(GTK_BOX(hbox), *(widgets[i].widget), TRUE, + TRUE, 0); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); + } + return vbox; +} + void mailer_delete(Mailer * mailer) { diff --git a/src/mailer.h b/src/mailer.h index f06b97b..70eaf9e 100644 --- a/src/mailer.h +++ b/src/mailer.h @@ -14,6 +14,10 @@ typedef struct _Mailer { /* widgets */ GtkWidget * window; + GtkWidget * from; + GtkWidget * to; + GtkWidget * subject; + GtkWidget * date; GtkWidget * view_body; GtkWidget * statusbar; gint statusbar_id;