[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