[Galago-commits] r2461 - in trunk/notification-daemon: . themes/standard

galago-commits at freedesktop.org galago-commits at freedesktop.org
Sun Jan 22 15:14:15 PST 2006


Author: chipx86
Date: 2006-01-22 15:14:13 -0800 (Sun, 22 Jan 2006)
New Revision: 2461

Added:
   trunk/notification-daemon/themes/standard/bgbox.c
   trunk/notification-daemon/themes/standard/bgbox.h
Modified:
   trunk/notification-daemon/ChangeLog
   trunk/notification-daemon/themes/standard/Makefile.am
   trunk/notification-daemon/themes/standard/theme.c
Log:
Added a BgBox widget to the standard theme. This is based off of libview's BaseBGBox widget. It's being used for the themeing of the standard theme, instead of hard-coding white.


Modified: trunk/notification-daemon/ChangeLog
===================================================================
--- trunk/notification-daemon/ChangeLog	2006-01-22 21:29:22 UTC (rev 2460)
+++ trunk/notification-daemon/ChangeLog	2006-01-22 23:14:13 UTC (rev 2461)
@@ -1,3 +1,13 @@
+Sun Jan 22 15:13:08 PST 2006  Christian Hammond <chipx86 at chipx86.com>
+
+	* themes/standard/Makefile.am:
+	A themes/standard/bgbox.c:
+	A themes/standard/bgbox.h:
+	* themes/standard/theme.c:
+	  - Added a BgBox widget to the standard theme. This is based off of
+	    libview's BaseBGBox widget. It's being used for the themeing of the
+	    standard theme, instead of hard-coding white.
+
 Sun Jan 22 13:27:29 PST 2006  Christian Hammond <chipx86 at chipx86.com>
 
 	* src/daemon.c:

Modified: trunk/notification-daemon/themes/standard/Makefile.am
===================================================================
--- trunk/notification-daemon/themes/standard/Makefile.am	2006-01-22 21:29:22 UTC (rev 2460)
+++ trunk/notification-daemon/themes/standard/Makefile.am	2006-01-22 23:14:13 UTC (rev 2461)
@@ -2,7 +2,10 @@
 
 engine_LTLIBRARIES = libstandard.la
 
-libstandard_la_SOURCES = theme.c
+libstandard_la_SOURCES = \
+	bgbox.c \
+	bgbox.h \
+	theme.c
 
 libstandard_la_LIBADD = $(NOTIFICATION_DAEMON_LIBS)
 

Added: trunk/notification-daemon/themes/standard/bgbox.c
===================================================================
--- trunk/notification-daemon/themes/standard/bgbox.c	2006-01-22 21:29:22 UTC (rev 2460)
+++ trunk/notification-daemon/themes/standard/bgbox.c	2006-01-22 23:14:13 UTC (rev 2461)
@@ -0,0 +1,66 @@
+#include "bgbox.h"
+
+G_DEFINE_TYPE(NotifydBgBox, notifyd_bgbox, GTK_TYPE_HBOX);
+
+static gboolean
+notifyd_bgbox_expose_event(GtkWidget *bgbox, GdkEventExpose *event)
+{
+	if (GTK_WIDGET_DRAWABLE(bgbox))
+	{
+		GtkStyle *style = gtk_widget_get_style(bgbox);
+		GtkStateType state = GTK_WIDGET_STATE(bgbox);
+		GdkGC *gc;
+
+		printf("Expose\n");
+
+		switch (NOTIFYD_BGBOX(bgbox)->palette)
+		{
+			case NOTIFYD_BASE:
+				gc = style->base_gc[state];
+				break;
+
+			case NOTIFYD_BG:
+				gc = style->bg_gc[state];
+				break;
+
+			case NOTIFYD_FG:
+				gc = style->fg_gc[state];
+				break;
+
+			default:
+				g_assert_not_reached();
+		}
+
+		gdk_draw_rectangle(GDK_DRAWABLE(bgbox->window), gc, TRUE,
+						   bgbox->allocation.x,
+						   bgbox->allocation.y,
+						   bgbox->allocation.width,
+						   bgbox->allocation.height);
+	}
+
+	return GTK_WIDGET_CLASS(notifyd_bgbox_parent_class)->expose_event(bgbox,
+																	  event);
+}
+
+static void
+notifyd_bgbox_class_init(NotifydBgBoxClass *klass)
+{
+	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
+
+	widget_class->expose_event = notifyd_bgbox_expose_event;
+}
+
+static void
+notifyd_bgbox_init(NotifydBgBox *bgbox)
+{
+	bgbox->palette = NOTIFYD_BASE;
+}
+
+GtkWidget *
+notifyd_bgbox_new(NotifydPalette palette)
+{
+	NotifydBgBox *bgbox = g_object_new(NOTIFYD_TYPE_BGBOX, NULL);
+	bgbox->palette = palette;
+
+	return GTK_WIDGET(bgbox);
+}

Added: trunk/notification-daemon/themes/standard/bgbox.h
===================================================================
--- trunk/notification-daemon/themes/standard/bgbox.h	2006-01-22 21:29:22 UTC (rev 2460)
+++ trunk/notification-daemon/themes/standard/bgbox.h	2006-01-22 23:14:13 UTC (rev 2461)
@@ -0,0 +1,45 @@
+#ifndef _BGBOX_H_
+#define _BGBOX_H_
+
+typedef struct _NotifydBgBox      NotifydBgBox;
+typedef struct _NotifydBgBoxClass NotifydBgBoxClass;
+
+#include <gtk/gtk.h>
+
+#define NOTIFYD_TYPE_BGBOX (notifyd_bgbox_get_type())
+#define NOTIFYD_BGBOX(obj) \
+		(G_TYPE_CHECK_INSTANCE_CAST((obj), NOTIFYD_TYPE_BGBOX, NotifydBgBox))
+#define NOTIFYD_BGBOX_CLASS(klass) \
+		(G_TYPE_CHECK_CLASS_CAST((klass), NOTIFYD_TYPE_BGBOX, NotifydBgBoxClass))
+#define NOTIFYD_IS_BGBOX(obj) \
+		(G_TYPE_CHECK_INSTANCE_TYPE((obj), NOTIFYD_TYPE_BGBOX))
+#define NOTIFYD_IS_BGBOX_CLASS(klass) \
+		(G_TYPE_CHECK_CLASS_TYPE((klass), NOTIFYD_TYPE_BGBOX))
+#define NOTIFYD_BGBOX_GET_CLASS(obj) \
+		(G_TYPE_INSTANCE_GET_CLASS ((obj), NOTIFYD_TYPE_BGBOX, NotifydBgBoxClass))
+
+typedef enum
+{
+	NOTIFYD_BASE,
+	NOTIFYD_BG,
+	NOTIFYD_FG
+
+} NotifydPalette;
+
+struct _NotifydBgBox
+{
+	GtkHBox parent_object;
+
+	NotifydPalette palette;
+};
+
+struct _NotifydBgBoxClass
+{
+	GtkHBoxClass parent_class;
+};
+
+GType notifyd_bgbox_get_type(void);
+
+GtkWidget *notifyd_bgbox_new(NotifydPalette palette);
+
+#endif /* _BGBOX_H_ */

Modified: trunk/notification-daemon/themes/standard/theme.c
===================================================================
--- trunk/notification-daemon/themes/standard/theme.c	2006-01-22 21:29:22 UTC (rev 2460)
+++ trunk/notification-daemon/themes/standard/theme.c	2006-01-22 23:14:13 UTC (rev 2461)
@@ -1,5 +1,6 @@
 #include <gtk/gtk.h>
 #include <libsexy/sexy-url-label.h>
+#include "bgbox.h"
 
 typedef void (*ActionInvokedCb)(GtkWindow *nw, const char *key);
 typedef void (*UrlClickedCb)(GtkWindow *nw, const char *url);
@@ -87,7 +88,6 @@
 	GtkWidget *main_vbox;
 	GtkWidget *hbox;
 	GtkWidget *vbox;
-	GdkColor color;
 	GtkRequisition req;
 	WindowData *windata;
 
@@ -128,12 +128,9 @@
 	gtk_misc_set_alignment(GTK_MISC(windata->icon), 0.5, 0.0);
 	gtk_container_set_border_width(GTK_CONTAINER(windata->iconbox), 12);
 
-	/* TODO: Make this like a view::BaseBGBox */
-	windata->contentbox = gtk_event_box_new();
+	windata->contentbox = notifyd_bgbox_new(NOTIFYD_BASE);
 	gtk_widget_show(windata->contentbox);
 	gtk_box_pack_start(GTK_BOX(hbox), windata->contentbox, TRUE, TRUE, 0);
-	gdk_color_parse("white", &color);
-	gtk_widget_modify_bg(windata->contentbox, GTK_STATE_NORMAL, &color);
 
 	vbox = gtk_vbox_new(FALSE, 6);
 	gtk_widget_show(vbox);
@@ -251,11 +248,11 @@
 }
 
 static void
-action_clicked_cb(GtkWidget *evbox, GdkEventButton *event,
+action_clicked_cb(GtkWidget *w, GdkEventButton *event,
 				  ActionInvokedCb action_cb)
 {
-	GtkWindow *nw   = g_object_get_data(G_OBJECT(evbox), "_nw");
-	const char *key = g_object_get_data(G_OBJECT(evbox), "_action_key");
+	GtkWindow *nw   = g_object_get_data(G_OBJECT(w), "_nw");
+	const char *key = g_object_get_data(G_OBJECT(w), "_action_key");
 
 	action_cb(nw, key);
 }
@@ -269,9 +266,8 @@
 	 *       right-click menu.
 	 */
 	WindowData *windata = g_object_get_data(G_OBJECT(nw), "windata");
-	GtkWidget *evbox;
+	GtkWidget *bgbox;
 	GtkWidget *label;
-	GdkColor color;
 	GdkCursor *cursor;
 	char *buf;
 
@@ -285,27 +281,24 @@
 						    FALSE, FALSE, 0);
 	}
 
-	evbox = gtk_event_box_new();
-	gtk_widget_show(evbox);
-	gtk_box_pack_start(GTK_BOX(windata->actions_box), evbox, FALSE, FALSE, 0);
-	gtk_widget_realize(evbox);
-	gdk_color_parse("white", &color);
-	gtk_widget_modify_bg(evbox, GTK_STATE_NORMAL, &color);
+	bgbox = notifyd_bgbox_new(NOTIFYD_BASE);
+	gtk_widget_show(bgbox);
+	gtk_box_pack_start(GTK_BOX(windata->actions_box), bgbox, FALSE, FALSE, 0);
 
-	g_object_set_data(G_OBJECT(evbox), "_nw", nw);
-	g_object_set_data_full(G_OBJECT(evbox),
+	g_object_set_data(G_OBJECT(bgbox), "_nw", nw);
+	g_object_set_data_full(G_OBJECT(bgbox),
 						   "_action_key", g_strdup(key), g_free);
-	g_signal_connect(G_OBJECT(evbox), "button-release-event",
+	g_signal_connect(G_OBJECT(bgbox), "button-release-event",
 					 G_CALLBACK(action_clicked_cb), cb);
 
-	cursor = gdk_cursor_new_for_display(gtk_widget_get_display(evbox),
+	cursor = gdk_cursor_new_for_display(gtk_widget_get_display(bgbox),
 										GDK_HAND2);
-	gdk_window_set_cursor(evbox->window, cursor);
+	gdk_window_set_cursor(bgbox->window, cursor);
 	gdk_cursor_unref(cursor);
 
 	label = gtk_label_new(NULL);
 	gtk_widget_show(label);
-	gtk_container_add(GTK_CONTAINER(evbox), label);
+	gtk_container_add(GTK_CONTAINER(bgbox), label);
 	buf = g_strdup_printf("<span color=\"blue\""
 						  " underline=\"single\">%s</span>", text);
 	gtk_label_set_markup(GTK_LABEL(label), buf);



More information about the galago-commits mailing list