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