[anjal] Support settings in tab.



commit 93a5ba3386cc85148b20a850e1441ec593498d80
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Wed Apr 29 11:38:55 2009 +0530

    Support settings in tab.
---
 src/mail-settings-view.c |   80 ++++++++++++++++++++++++++++++++++++++++++++++
 src/mail-settings-view.h |    2 +
 2 files changed, 82 insertions(+), 0 deletions(-)

diff --git a/src/mail-settings-view.c b/src/mail-settings-view.c
index cf9f369..a8d2015 100644
--- a/src/mail-settings-view.c
+++ b/src/mail-settings-view.c
@@ -27,6 +27,8 @@
 #include <glib/gi18n.h>
 #include "mail-settings-view.h"
 #include "mail-component.h"
+#include "mail-view.h"
+#include "e-util/e-icon-factory.h"
 
 struct _MailSettingsViewPrivate {
 	GtkWidget *tab_str;
@@ -34,6 +36,13 @@ struct _MailSettingsViewPrivate {
 
 G_DEFINE_TYPE (MailSettingsView, mail_settings_view, GTK_TYPE_VBOX)
 
+enum {
+	VIEW_CLOSE,
+	LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
 static void
 mail_settings_view_init (MailSettingsView  *shell)
 {
@@ -57,6 +66,16 @@ mail_settings_view_class_init (MailSettingsViewClass *klass)
 
 	mail_settings_view_parent_class = g_type_class_peek_parent (klass);
 	object_class->finalize = mail_settings_view_finalize;
+
+	signals[VIEW_CLOSE] =
+		g_signal_new ("view-close",
+			      G_OBJECT_CLASS_TYPE (object_class),
+			      G_SIGNAL_RUN_FIRST,
+			      G_STRUCT_OFFSET (MailSettingsViewClass , view_close),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__VOID,
+			      G_TYPE_NONE, 0);
+	
 }
 
 void
@@ -68,8 +87,69 @@ MailSettingsView *
 mail_settings_view_new ()
 {
 	MailSettingsView *view = g_object_new (MAIL_SETTINGS_VIEW_TYPE, NULL);
+	view->type = MAIL_VIEW_SETTINGS;
+	view->uri = "settings://";
+
 	mail_settings_view_construct (view);
 	
 	return view;
 }
 
+static gboolean
+msv_btn_expose (GtkWidget *w, GdkEventExpose *event, MailSettingsView *mfv)
+{
+	GdkPixbuf *img = g_object_get_data (w, "pbuf");
+	cairo_t *cr = gdk_cairo_create (w->window);
+	int wid = w->allocation.width;
+	int heig = w->allocation.height;
+	cairo_save (cr);
+	gdk_cairo_set_source_pixbuf (cr, img, event->area.x-4, event->area.y-5);
+	cairo_paint(cr);
+	cairo_restore(cr);
+	cairo_destroy (cr);
+
+	return TRUE;
+}
+
+static void
+msv_close (GtkButton *w, MailSettingsView *mfv)
+{
+	g_signal_emit (mfv, signals[VIEW_CLOSE], 0);			
+}
+
+
+
+GtkWidget *
+mail_settings_view_get_tab_widget(MailSettingsView *mcv)
+{
+	GdkPixbuf *pbuf = e_icon_factory_get_icon ("gtk-close", E_ICON_SIZE_MENU);
+	GtkWidget *tool, *box, *img;
+	int w=-1, h=-1;
+	GtkWidget *tab_label;
+
+	img = gtk_image_new_from_pixbuf (pbuf);
+	g_object_set_data (img, "pbuf", pbuf);
+	g_signal_connect (img, "expose-event", msv_btn_expose, mcv);
+	
+	tool = gtk_button_new ();
+	gtk_button_set_relief(tool, GTK_RELIEF_NONE);
+	gtk_button_set_focus_on_click (tool, FALSE);
+	gtk_widget_set_tooltip_text (tool, _("Close Tab"));
+	g_signal_connect (tool, "clicked", G_CALLBACK(msv_close), mcv);
+	
+	box = gtk_hbox_new (FALSE, 0);
+	gtk_box_pack_start (box, img, FALSE, FALSE, 0);
+	gtk_container_add (tool, box);
+	gtk_widget_show_all (tool);
+	gtk_icon_size_lookup_for_settings (gtk_widget_get_settings(tool) , GTK_ICON_SIZE_MENU, &w, &h);
+	gtk_widget_set_size_request (tool, w+2, h+2);
+
+	box = gtk_label_new (_("Settings"));
+	tab_label = gtk_hbox_new (FALSE, 0);
+	gtk_box_pack_start (tab_label, box, FALSE, FALSE, 0);
+	gtk_box_pack_start (tab_label, tool, FALSE, FALSE, 0);
+	gtk_widget_show_all (tab_label);
+
+	return tab_label;
+	
+}
diff --git a/src/mail-settings-view.h b/src/mail-settings-view.h
index 9ee176d..5043691 100644
--- a/src/mail-settings-view.h
+++ b/src/mail-settings-view.h
@@ -48,6 +48,8 @@ typedef struct _MailSettingsView {
 typedef struct _MailSettingsViewClass {
 	GtkVBoxClass parent_class;
 
+	void (* view_close) (MailSettingsView *);	
+
 } MailSettingsViewClass;
 
 MailSettingsView *mail_settings_view_new (void);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]