r442 - in trunk/src/target/OM-2007/openmoko-libs: . libmokoui
mickey at gta01.hmw-consulting.de
mickey at gta01.hmw-consulting.de
Fri Dec 22 02:08:07 CET 2006
Author: mickey
Date: 2006-12-22 02:08:06 +0100 (Fri, 22 Dec 2006)
New Revision: 442
Added:
trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-panel-applet.c
trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-panel-applet.h
Modified:
trunk/src/target/OM-2007/openmoko-libs/configure.ac
trunk/src/target/OM-2007/openmoko-libs/libmokoui/Makefile.am
trunk/src/target/OM-2007/openmoko-libs/libmokoui/libmokoui.pro
trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-details-window.c
trunk/src/target/OM-2007/openmoko-libs/openmoko-libs.pc.in
Log:
openmoko-libs: add MokoPanelApplet class, encapsulating a MBTrayApp
NOTE: openmoko-libs now depend on libmatchbox
Modified: trunk/src/target/OM-2007/openmoko-libs/configure.ac
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/configure.ac 2006-12-21 16:30:25 UTC (rev 441)
+++ trunk/src/target/OM-2007/openmoko-libs/configure.ac 2006-12-22 01:08:06 UTC (rev 442)
@@ -1,5 +1,5 @@
AC_PREREQ(2.53)
-AC_INIT(openmoko-libs, 0.0.1, http://www.openmoko.org/)
+AC_INIT(openmoko-libs, 0.0.2, http://www.openmoko.org/)
AM_INIT_AUTOMAKE()
AC_CONFIG_SRCDIR(libmokoui/moko-window.c)
AM_CONFIG_HEADER(config.h)
@@ -16,6 +16,12 @@
LIBS="$LIBS $GTK_LIBS"
CFLAGS="$CFLAGS $GTK_CFLAGS"
+PKG_CHECK_MODULES(LIBMB, libmb >= 1.6,,
+ AC_MSG_ERROR([*** Required Matchbox Library >= 1.6 not installed ***]))
+LIBS="$LIBS $LIBMB_LIBS"
+CFLAGS="$CFLAGS $LIBMB_CFLAGS"
+
+
# foo
#AC_ARG_ENABLE(foo,
# [ --enable-foo enable foo support],
Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/Makefile.am
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/Makefile.am 2006-12-21 16:30:25 UTC (rev 441)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/Makefile.am 2006-12-22 01:08:06 UTC (rev 442)
@@ -9,6 +9,7 @@
moko-fixed.h \
moko-menu-box.h \
moko-navigation-list.h \
+ moko-panel-applet.h \
moko-pixmap-button.h \
moko-paned-window.h \
moko-search-bar.h \
@@ -27,6 +28,7 @@
moko-fixed.c \
moko-menu-box.c \
moko-navigation-list.c \
+ moko-panel-applet.c \
moko-pixmap-button.c \
moko-paned-window.c \
moko-search-bar.c \
Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/libmokoui.pro
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/libmokoui.pro 2006-12-21 16:30:25 UTC (rev 441)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/libmokoui.pro 2006-12-22 01:08:06 UTC (rev 442)
@@ -1,5 +1,5 @@
TEMPLATE = lib
-VERSION = 0.0.1
+VERSION = 0.0.2
TARGET = mokoui
HEADERS = \
@@ -13,6 +13,7 @@
moko-fixed.h \
moko-menu-box.h \
moko-nativation-list.h \
+ moko-panel-applet.h \
moko-pixmap-button.h \
moko-paned-window.h \
moko-search-bar.h \
@@ -31,6 +32,7 @@
moko-fixed.c \
moko-menu-box.c \
moko-navigation-list.c \
+ moko-panel-applet.c \
moko-pixmap-button.c \
moko-paned-window.c \
moko-search-bar.c \
@@ -38,6 +40,6 @@
moko-tool-box.c \
moko-window.c
-PKGCONFIG += gtk+-2.0
+PKGCONFIG += gtk+-2.0 libmb
include ( $(OPENMOKODIR)/devel/qmake/openmoko-include.pro )
Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-details-window.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-details-window.c 2006-12-21 16:30:25 UTC (rev 441)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-details-window.c 2006-12-22 01:08:06 UTC (rev 442)
@@ -43,7 +43,7 @@
} MokoDetailsWindowPrivate;
/* parent class pointer */
-GtkScrolledWindowClass* parent_class = NULL;
+static GtkScrolledWindowClass* parent_class = NULL;
/* forward declarations */
static void _cb_fullscreen_clicked(GtkButton* button, MokoDetailsWindow* self);
Added: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-panel-applet.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-panel-applet.c 2006-12-21 16:30:25 UTC (rev 441)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-panel-applet.c 2006-12-22 01:08:06 UTC (rev 442)
@@ -0,0 +1,163 @@
+/* moko-panel-applet.c
+ *
+ * Authored By Michael 'Mickey' Lauer <mlauer at vanille-media.de>
+ *
+ * Copyright (C) 2006 Vanille-Media
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Public License as published by
+ * the Free Software Foundation; version 2.1 of the license.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Public License for more details.
+ *
+ * Current Version: $Rev$ ($Date: 2006/12/07 17:20:16 $) [$Author: mickey $]
+ */
+
+#include "moko-panel-applet.h"
+
+#include <gdk/gdkx.h>
+
+#define DEBUG_THIS_FILE
+#ifdef DEBUG_THIS_FILE
+#define moko_debug(fmt,...) g_debug(fmt,##__VA_ARGS__)
+#else
+#define moko_debug(fmt,...)
+#endif
+
+G_DEFINE_TYPE (MokoPanelApplet, moko_panel_applet, G_TYPE_OBJECT)
+
+#define PANEL_APPLET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MOKO_TYPE_PANEL_APPLET, MokoPanelAppletPrivate))
+
+typedef struct _MokoPanelAppletPrivate
+{
+} MokoPanelAppletPrivate;
+
+/* parent class pointer */
+static GObjectClass* parent_class = NULL;
+static int* app_argc;
+static char*** app_argv;
+
+/* forward declarations */
+void moko_panel_applet_real_resize_callback(MokoPanelApplet* self, int w, int h);
+void moko_panel_applet_real_paint_callback(MokoPanelApplet* self, Drawable drw);
+static void _mb_applet_resize_callback(MBTrayApp* mb_applet, int w, int h);
+static void _mb_applet_paint_callback(MBTrayApp* mb_applet, Drawable drw);
+static GdkFilterReturn _moko_panel_applet_gdk_event_filter(GdkXEvent* xev, GdkEvent* gev, MokoPanelApplet* self);
+
+static void
+moko_panel_applet_dispose(GObject* object)
+{
+ if (G_OBJECT_CLASS (moko_panel_applet_parent_class)->dispose)
+ G_OBJECT_CLASS (moko_panel_applet_parent_class)->dispose (object);
+}
+
+static void
+moko_panel_applet_finalize(GObject* object)
+{
+ G_OBJECT_CLASS (moko_panel_applet_parent_class)->finalize (object);
+}
+
+moko_panel_applet_class_init(MokoPanelAppletClass* klass)
+{
+ /* hook parent */
+ GObjectClass* object_class = G_OBJECT_CLASS (klass);
+ parent_class = g_type_class_peek_parent(klass);
+
+ /* add private */
+ g_type_class_add_private (klass, sizeof(MokoPanelAppletPrivate));
+
+ /* hook destruction */
+ object_class->dispose = moko_panel_applet_dispose;
+ object_class->finalize = moko_panel_applet_finalize;
+
+ /* virtual methods */
+ klass->resize_callback = moko_panel_applet_real_resize_callback;
+ klass->paint_callback = moko_panel_applet_real_paint_callback;
+
+ /* install properties */
+}
+
+MokoPanelApplet*
+moko_panel_applet_new(int* argc, char*** argv)
+{
+ app_argc = argc;
+ app_argv = argv;
+ MokoPanelApplet* self = g_object_new(MOKO_TYPE_PANEL_APPLET, NULL);
+ return self;
+}
+
+static void
+moko_panel_applet_init(MokoPanelApplet* self)
+{
+ moko_debug( "moko_panel_applet_init" );
+
+ MokoPanelAppletClass* klass = MOKO_PANEL_APPLET_GET_CLASS(self);
+ //self->applet = mb_tray_app_new_with_display (unsigned char *app_name, MBTrayAppResizeCB resize_cb, MBTrayAppPaintCB paint_cb, int *argc, char ***argv, Display *display)
+ self->mb_applet = mb_tray_app_new_with_display( "testing", _mb_applet_resize_callback, _mb_applet_paint_callback, app_argc, app_argv, GDK_DISPLAY() );
+ mb_tray_app_set_user_data( self->mb_applet, self );
+
+ self->mb_pixbuf = mb_pixbuf_new( mb_tray_app_xdisplay( self->mb_applet ), mb_tray_app_xscreen( self->mb_applet ) );
+
+ mb_tray_app_main_init( self->mb_applet );
+
+ gdk_window_add_filter( NULL, _moko_panel_applet_gdk_event_filter, self );
+
+
+}
+
+static GdkFilterReturn
+_moko_panel_applet_gdk_event_filter(GdkXEvent* xev, GdkEvent* gev, MokoPanelApplet* self)
+{
+ XEvent* ev = (XEvent*)xev;
+ Display *dpy = ev->xany.display;
+
+ mb_tray_handle_xevent(self->mb_applet, ev);
+
+ return GDK_FILTER_CONTINUE;
+}
+
+static void _mb_applet_resize_callback(MBTrayApp* mb_applet, int w, int h)
+{
+ MokoPanelApplet* self = mb_tray_app_get_user_data( mb_applet );
+ MOKO_PANEL_APPLET_GET_CLASS( self )->resize_callback( self, w, h );
+}
+static void _mb_applet_paint_callback(MBTrayApp* mb_applet, Drawable drw)
+{
+ MokoPanelApplet* self = mb_tray_app_get_user_data( mb_applet );
+ MOKO_PANEL_APPLET_GET_CLASS( self )->paint_callback( self, drw );
+}
+
+void moko_panel_applet_real_resize_callback(MokoPanelApplet* self, int w, int h)
+{
+ moko_debug( "moko_panel_applet_resize_callback" );
+ moko_debug( "-- size = %d, %d", w, h );
+ if ( self->mb_pixbuf_image && self->mb_pixbuf_image->width == w && self->mb_pixbuf_image->height == h ) return;
+ MBPixbufImage* scaled = mb_pixbuf_img_scale( self->mb_pixbuf, self->mb_pixbuf_image, w, h );
+ mb_pixbuf_img_free( self->mb_pixbuf, self->mb_pixbuf_image );
+ self->mb_pixbuf_image = scaled;
+}
+
+void moko_panel_applet_real_paint_callback(MokoPanelApplet* self, Drawable drw)
+{
+ moko_debug( "moko_panel_applet_paint_callback" );
+ if ( !self->mb_pixbuf_image )
+ {
+ g_warning( "no valid icon for panel application during paint callback" );
+ return;
+ }
+
+ MBPixbufImage* background = mb_tray_app_get_background( self->mb_applet, self->mb_pixbuf );
+ mb_pixbuf_img_composite( self->mb_pixbuf, background, self->mb_pixbuf_image, 0, 0 );
+ mb_pixbuf_img_render_to_drawable( self->mb_pixbuf, background, drw, 0, 0 );
+ mb_pixbuf_img_free( self->mb_pixbuf, background );
+}
+
+void moko_panel_applet_set_icon(MokoPanelApplet* self, const gchar* filename)
+{
+ g_assert( self->mb_pixbuf );
+ if ( self->mb_pixbuf_image ) mb_pixbuf_img_free( self->mb_pixbuf, self->mb_pixbuf_image );
+ self->mb_pixbuf_image = mb_pixbuf_img_new_from_file( self->mb_pixbuf, filename );
+}
Property changes on: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-panel-applet.c
___________________________________________________________________
Name: svn:eol-style
+ native
Added: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-panel-applet.h
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-panel-applet.h 2006-12-21 16:30:25 UTC (rev 441)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-panel-applet.h 2006-12-22 01:08:06 UTC (rev 442)
@@ -0,0 +1,59 @@
+/* moko-panel-applet.h
+ *
+ * Authored By Michael 'Mickey' Lauer <mlauer at vanille-media.de>
+ *
+ * Copyright (C) 2006 Vanille-Media
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Public License as published by
+ * the Free Software Foundation; version 2.1 of the license.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Public License for more details.
+ *
+ * Current Version: $Rev$ ($Date: 2006/12/07 17:20:16 $) [$Author: mickey $]
+ */
+
+#ifndef _MOKO_PANEL_APPLET_H_
+#define _MOKO_PANEL_APPLET_H_
+
+#include <libmb/mbtray.h>
+
+#include <X11/X.h>
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define MOKO_TYPE_PANEL_APPLET moko_panel_applet_get_type()
+#define MOKO_PANEL_APPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MOKO_TYPE_PANEL_APPLET, MokoPanelApplet))
+#define MOKO_PANEL_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOKO_TYPE_PANEL_APPLET, MokoPanelAppletClass))
+#define MOKO_IS_PANEL_APPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MOKO_TYPE_PANEL_APPLET))
+#define MOKO_IS_PANEL_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MOKO_TYPE_PANEL_APPLET))
+#define MOKO_PANEL_APPLET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MOKO_TYPE_PANEL_APPLET, MokoPanelAppletClass))
+
+typedef struct {
+ GObject parent;
+ MBTrayApp* mb_applet;
+ MBPixbuf* mb_pixbuf;
+ MBPixbufImage* mb_pixbuf_image;
+ int* argc;
+ char*** argv;
+} MokoPanelApplet;
+
+typedef struct {
+ GObjectClass parent_class;
+
+ void (*resize_callback) (MokoPanelApplet* self, int w, int h);
+ void (*paint_callback) (MokoPanelApplet* self, Drawable drw);
+} MokoPanelAppletClass;
+
+GType moko_panel_applet_get_type();
+MokoPanelApplet* moko_panel_applet_new();
+
+G_END_DECLS
+
+#endif // _MOKO_PANEL_APPLET_H_
+
Property changes on: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-panel-applet.h
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: trunk/src/target/OM-2007/openmoko-libs/openmoko-libs.pc.in
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/openmoko-libs.pc.in 2006-12-21 16:30:25 UTC (rev 441)
+++ trunk/src/target/OM-2007/openmoko-libs/openmoko-libs.pc.in 2006-12-22 01:08:06 UTC (rev 442)
@@ -8,4 +8,4 @@
Version: @VERSION@
Cflags: -I${includedir}
Libs: -L${libdir} -lmokoui
-Requires: gtk+-2.0
+Requires: gtk+-2.0 libmb
More information about the commitlog
mailing list