r294 - in trunk/src/target/OM-2007: examples/openmoko-finger-demo/src openmoko-libs/libmokoui

mickey at gta01.hmw-consulting.de mickey at gta01.hmw-consulting.de
Mon Dec 4 17:25:22 CET 2006


Author: mickey
Date: 2006-12-04 16:25:21 +0000 (Mon, 04 Dec 2006)
New Revision: 294

Modified:
   trunk/src/target/OM-2007/examples/openmoko-finger-demo/src/demo-main.c
   trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-tool-box.c
   trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.c
   trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.h
   trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-window.c
   trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-window.h
Log:
mokoui: start linking MokoFingerWheel and MokoToolBox so that they know about each other and work together.
Most logic works now, missing is the automated resize if the finger wheel gets hidden or shown after the tool box is visible.


Modified: trunk/src/target/OM-2007/examples/openmoko-finger-demo/src/demo-main.c
===================================================================
--- trunk/src/target/OM-2007/examples/openmoko-finger-demo/src/demo-main.c	2006-12-04 11:51:08 UTC (rev 293)
+++ trunk/src/target/OM-2007/examples/openmoko-finger-demo/src/demo-main.c	2006-12-04 16:25:21 UTC (rev 294)
@@ -38,14 +38,11 @@
 {
     g_debug( "openmoko-finger-demo: orange button clicked" );
     static gboolean show = TRUE;
-    static MokoFingerWheel* wheel = NULL;
 
-    if (!wheel) wheel = moko_finger_wheel_new();
-
     if ( show )
-        gtk_widget_show( GTK_WIDGET(wheel) );
+        gtk_widget_show( GTK_WIDGET(moko_finger_window_get_wheel(window)) );
     else
-        gtk_widget_hide( GTK_WIDGET(wheel) );
+        gtk_widget_hide( GTK_WIDGET(moko_finger_window_get_wheel(window)) );
 
     show = !show;
 }
@@ -57,7 +54,7 @@
 
     if (!tools)
     {
-        tools = moko_finger_tool_box_new();
+        tools = moko_finger_window_get_toolbox(window);
         for ( int i = 0; i < 1; ++i )
             moko_finger_tool_box_add_button( tools );
     }
@@ -97,13 +94,13 @@
     moko_finger_window_set_application_menu( window, appmenu );
 
     /* connect close event */
-    g_signal_connect( G_OBJECT(window), "delete_event", G_CALLBACK( gtk_main_quit ), NULL );
+    g_signal_connect( G_OBJECT(window), "delete_event", G_CALLBACK(gtk_main_quit), NULL );
 
     /* contents */
     vbox = gtk_vbox_new( TRUE, 0 );
     GtkLabel* label1 = gtk_label_new( "Populate this area with finger widgets\n \nThere are three types of finger buttons:" );
 
-    GtkLabel* label2 = gtk_label_new( "Orange button toggles finger scrolling wheel\nBlack button toggles finger toolbar\nDialer Button does nothing :)" );
+    GtkLabel* label2 = gtk_label_new( "Orange button toggles finger scrolling wheel\nBlack button toggles finger toolbar\nDialer Button adds a tool button" );
 
     GtkHBox* hbox = gtk_hbox_new( TRUE, 10 );
 

Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-tool-box.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-tool-box.c	2006-12-04 11:51:08 UTC (rev 293)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-tool-box.c	2006-12-04 16:25:21 UTC (rev 294)
@@ -17,6 +17,7 @@
  */
 
 #include "moko-finger-tool-box.h"
+#include "moko-finger-window.h"
 #include "moko-pixmap-button.h"
 #include "moko-window.h"
 
@@ -216,6 +217,28 @@
 
 static void moko_finger_tool_box_show(GtkWidget* widget)
 {
+    MokoFingerWheel* wheel = NULL;
+    MokoWindow* window = moko_application_get_main_window( moko_application_get_instance() );
+    if ( MOKO_IS_FINGER_WINDOW(window) )
+    {
+        wheel = moko_finger_window_get_wheel( MOKO_FINGER_WINDOW(window) );
+        if ( GTK_WIDGET_VISIBLE(wheel) )
+        {
+            moko_debug( "moko_finger_tool_box: wheel is visible" );
+            //FIXME get from theme
+            gtk_widget_set_size_request( widget, 350, 104 );
+        }
+        else
+        {
+            moko_debug( "moko_finger_tool_box: wheel not visible" );
+            //FIXME get from theme
+            gtk_widget_set_size_request( widget, 640, 104 );
+        }
+    }
+    else
+    {
+        g_warning( "moko_finger_tool_box: main window not a finger window" );
+    }
     //gtk_widget_ensure_style( widget ); //FIXME needed here?
     moko_debug( "moko_finger_wheel_show" );
     GTK_WIDGET_CLASS(parent_class)->show(widget);
@@ -244,6 +267,8 @@
         gtk_window_move( priv->popup, absx + w - req.width, absy + h - req.height );
     }
     gtk_widget_show( priv->popup );
+    if ( wheel && GTK_WIDGET_VISIBLE(wheel) )
+        moko_finger_wheel_raise( wheel );
 }
 
 static void moko_finger_tool_box_hide(GtkWidget* widget)
@@ -259,8 +284,7 @@
 {
     MokoFingerToolBoxPrivate* priv = MOKO_FINGER_TOOL_BOX_GET_PRIVATE(self);
     gtk_widget_set_name( GTK_WIDGET(self), "mokofingertoolbox" );
-    //FIXME get from theme
-    //gtk_alignment_set_padding( GTK_ALIGNMENT(self), 0, 0, OUTER_PADDING, 0 );
+
     priv->rightarrow = MOKO_PIXMAP_BUTTON( moko_pixmap_button_new() );
     gtk_widget_set_name( GTK_WIDGET(priv->rightarrow), "mokofingertoolbox-rightarrow" );
 
@@ -273,9 +297,6 @@
 
     g_signal_connect( G_OBJECT(priv->rightarrow), "clicked", G_CALLBACK(cb_right_button_pressed), self );
     g_signal_connect_after( G_OBJECT(self), "size-allocate", G_CALLBACK(cb_configure), self );
-
-    //FIXME link with wheel
-    gtk_widget_set_size_request( GTK_WIDGET(self), 350, 104 );
 }
 
 /* public API */

Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.c	2006-12-04 11:51:08 UTC (rev 293)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.c	2006-12-04 16:25:21 UTC (rev 294)
@@ -16,12 +16,22 @@
  *  Current Version: $Rev$ ($Date) [$Author: mickey $]
  */
 
-#include "moko-application.h"
 #include "moko-finger-wheel.h"
 
+#include "moko-application.h"
+#include "moko-finger-tool-box.h"
+#include "moko-finger-window.h"
+
 #include <gtk/gtkbutton.h>
 #include <gtk/gtkwindow.h>
 
+#define DEBUG_THIS_FILE
+#ifdef DEBUG_THIS_FILE
+#define moko_debug(fmt,...) g_debug(fmt,##__VA_ARGS__)
+#else
+#define moko_debug(fmt,...)
+#endif
+
 enum {
     PRESS_LEFT_UP,
     PRESS_RIGHT_DOWN,
@@ -92,7 +102,7 @@
     klass->press_bottom = NULL;
 
     /** Press the left up area */
-    wheel_signals[PRESS_LEFT_UP] = 
+    wheel_signals[PRESS_LEFT_UP] =
                  g_signal_new ("press_left_up",
                  G_OBJECT_CLASS_TYPE (object_class),
                  G_SIGNAL_RUN_FIRST,
@@ -102,7 +112,7 @@
                  G_TYPE_NONE, 0);
 
     /** Press the right down area */
-    wheel_signals[PRESS_RIGHT_DOWN] = 
+    wheel_signals[PRESS_RIGHT_DOWN] =
                  g_signal_new ("press_right_down",
                  G_OBJECT_CLASS_TYPE (object_class),
                  G_SIGNAL_RUN_FIRST,
@@ -112,7 +122,7 @@
                  G_TYPE_NONE, 0);
 
     /** Press the bottom area */
-    wheel_signals[PRESS_BOTTOM] = 
+    wheel_signals[PRESS_BOTTOM] =
                  g_signal_new ("press_bottom",
                  G_OBJECT_CLASS_TYPE (object_class),
                  G_SIGNAL_RUN_FIRST,
@@ -167,7 +177,7 @@
 static void moko_finger_wheel_show(GtkWidget* widget)
 {
     gtk_widget_ensure_style( widget ); //FIXME needed here?
-    g_debug( "moko_finger_wheel_show" );
+    moko_debug( "moko_finger_wheel_show" );
     GTK_WIDGET_CLASS(parent_class)->show(widget);
     MokoFingerWheelPrivate* priv = MOKO_FINGER_WHEEL_GET_PRIVATE(widget);
     if ( !priv->popup )
@@ -179,15 +189,15 @@
         MokoWindow* window = moko_application_get_main_window( moko_application_get_instance() );
         GtkRequisition req;
         gtk_widget_size_request( widget, &req );
-        //g_debug( "My requisition is %d, %d", req.width, req.height );
+        //moko_debug( "My requisition is %d, %d", req.width, req.height );
         int x, y, w, h;
         gdk_window_get_geometry( GTK_WIDGET(window)->window, &x, &y, &w, &h, NULL );
-        //g_debug( "WINDOW geometry is %d, %d * %d, %d", x, y, w, h );
+        //moko_debug( "WINDOW geometry is %d, %d * %d, %d", x, y, w, h );
         int absx;
         int absy;
         gdk_window_get_origin( GTK_WIDGET(window)->window, &absx, &absy );
         GtkAllocation* alloc = &GTK_WIDGET(window)->allocation;
-        //g_debug( "WINDOW allocation is %d, %d * %d, %d", alloc->x, alloc->y, alloc->width, alloc->height );
+        //moko_debug( "WINDOW allocation is %d, %d * %d, %d", alloc->x, alloc->y, alloc->width, alloc->height );
         gtk_window_move( priv->popup, absx, absy + h - req.height );
 
         //FIXME Isn't there a way to get this as a mask directly from the style without having to reload it?
@@ -201,16 +211,43 @@
         gtk_widget_shape_combine_mask(priv->popup, mask, 0, 0);
     }
     gtk_widget_show( priv->popup );
+
+    /* resize FingerToolBox, if visible */
+    MokoWindow* window = moko_application_get_main_window( moko_application_get_instance() );
+    if ( MOKO_IS_FINGER_WINDOW(window) )
+    {
+        MokoFingerToolBox* toolbox = moko_finger_window_get_toolbox( MOKO_FINGER_WINDOW(window) );
+        if ( GTK_WIDGET_VISIBLE(toolbox) )
+        {
+            moko_debug( "moko_finger_wheel: toolbox is visible, sending resize" );
+        }
+        else
+        {
+            moko_debug( "moko_finger_wheel: toolbox not visible, doing nothing" );
+        }
+    }
+    else
+    {
+        g_warning( "moko_finger_wheel: main window is not a finger window" );
+    }
 }
 
 static void moko_finger_wheel_hide(GtkWidget* widget)
 {
-    g_debug( "moko_finger_wheel_hide" );
+    moko_debug( "moko_finger_wheel_hide" );
     GTK_WIDGET_CLASS(parent_class)->hide(widget);
     MokoFingerWheelPrivate* priv = MOKO_FINGER_WHEEL_GET_PRIVATE(widget);
     gtk_widget_hide( priv->popup );
 }
 
+void moko_finger_wheel_raise(MokoFingerWheel* self)
+{
+    moko_debug( "moko_finger_wheel_raise" );
+    MokoFingerWheelPrivate* priv = MOKO_FINGER_WHEEL_GET_PRIVATE(self);
+    g_return_if_fail(priv->popup);
+    gdk_window_raise( GTK_WIDGET(priv->popup)->window );
+}
+
 /**
  * @brief Caculate the area that user checked
  */
@@ -221,9 +258,9 @@
     g_return_if_fail (MOKO_IS_FINGER_WHEEL (widget));
 
     gtk_widget_size_request( widget, &req );
-    g_debug ("moko_finger_wheel_button_check_area");
-    g_debug ("The event x=%d, y=%d", (int)event->x, (int)event->y);
-    g_debug ("The req width=%d, height=%d", req.width, req.height);
+    moko_debug ("moko_finger_wheel_button_check_area");
+    moko_debug ("The event x=%d, y=%d", (int)event->x, (int)event->y);
+    moko_debug ("The req width=%d, height=%d", req.width, req.height);
     if ( ((int)event->x) < ((int)req.width/2))
     {
         if ( ((int)event->y) < ((int)req.height/2))
@@ -266,7 +303,7 @@
 
 static gint moko_finger_wheel_button_press(GtkWidget* widget, GdkEventButton* event)
 {
-    g_debug( "moko_finger_wheel_button_press" );
+    moko_debug( "moko_finger_wheel_button_press" );
 
     gtk_grab_add( widget );
     gtk_widget_set_state( widget, GTK_STATE_ACTIVE );
@@ -293,14 +330,14 @@
     }
 
     if (state & GDK_BUTTON1_MASK)
-        g_debug( "FIXME: emit scroll values here..." );
+        moko_debug( "FIXME: emit scroll values here..." );
 
     return TRUE;
 }
 
 static gint moko_finger_wheel_button_release(GtkWidget* widget, GdkEventButton* event)
 {
-    g_debug( "moko_finger_wheel_button_release" );
+    moko_debug( "moko_finger_wheel_button_release" );
     gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
     gtk_widget_set_state( widget, GTK_STATE_NORMAL );
     gtk_grab_remove( widget );

Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.h
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.h	2006-12-04 11:51:08 UTC (rev 293)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-wheel.h	2006-12-04 16:25:21 UTC (rev 294)
@@ -45,10 +45,10 @@
     void (* press_bottom) (GtkWidget *button);
 } MokoFingerWheelClass;
 
-GType moko_finger_wheel_get_type (void);
+GType moko_finger_wheel_get_type();
+GtkWidget* moko_finger_wheel_new();
+void moko_finger_wheel_raise(MokoFingerWheel* self);
 
-GtkWidget* moko_finger_wheel_new (void);
-
 G_END_DECLS
 
 #endif // _MOKO_FINGER_WHEEL_H_

Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-window.c
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-window.c	2006-12-04 11:51:08 UTC (rev 293)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-window.c	2006-12-04 16:25:21 UTC (rev 294)
@@ -41,8 +41,9 @@
     GtkVBox* vbox;
     GtkHBox* hbox;
     GtkLabel* label;
-    GtkButton* scroller;
     MokoMenuBox* menubox;
+    MokoFingerWheel* wheel;
+    MokoFingerToolBox* tools;
 } MokoFingerWindowPriv;
 
 static void moko_finger_window_dispose (GObject *object)
@@ -96,19 +97,20 @@
 {
     moko_debug( "moko_finger_window_set_contents" );
     MokoFingerWindowPriv* priv = MOKO_FINGER_WINDOW_PRIVATE(self);
-
     gtk_box_pack_start( GTK_BOX(priv->vbox), GTK_WIDGET(child), TRUE, TRUE, 0 );
 }
 
-void moko_finger_window_show_wheel(MokoFingerWindow* self)
+MokoFingerWheel* moko_finger_window_get_wheel(MokoFingerWindow* self)
 {
+    moko_debug( "moko_finger_window_get_wheel" );
+    MokoFingerWindowPriv* priv = MOKO_FINGER_WINDOW_PRIVATE(self);
+    if (!priv->wheel) priv->wheel = moko_finger_wheel_new();
+    return priv->wheel;
 }
-void moko_finger_window_hide_wheel(MokoFingerWindow* self)
+MokoFingerToolBox* moko_finger_window_get_toolbox(MokoFingerWindow* self)
 {
+    moko_debug( "moko_finger_window_get_toolbox" );
+    MokoFingerWindowPriv* priv = MOKO_FINGER_WINDOW_PRIVATE(self);
+    if (!priv->tools) priv->tools = moko_finger_tool_box_new();
+    return priv->tools;
 }
-void moko_finger_window_show_tools(MokoFingerWindow* self)
-{
-}
-void moko_finger_window_hide_tools(MokoFingerWindow* self)
-{
-}

Modified: trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-window.h
===================================================================
--- trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-window.h	2006-12-04 11:51:08 UTC (rev 293)
+++ trunk/src/target/OM-2007/openmoko-libs/libmokoui/moko-finger-window.h	2006-12-04 16:25:21 UTC (rev 294)
@@ -21,6 +21,9 @@
 
 #include "moko-window.h"
 
+#include "moko-finger-tool-box.h"
+#include "moko-finger-wheel.h"
+
 #include <gtk/gtkmenu.h>
 
 #include <glib-object.h>
@@ -46,10 +49,8 @@
 GtkWidget* moko_finger_window_new (void);
 void moko_finger_window_set_application_menu(MokoFingerWindow* self, GtkMenu* menu);
 void moko_finger_window_set_contents(MokoFingerWindow* self, GtkWidget* child);
-void moko_finger_window_show_wheel(MokoFingerWindow* self);
-void moko_finger_window_hide_wheel(MokoFingerWindow* self);
-void moko_finger_window_show_tools(MokoFingerWindow* self);
-void moko_finger_window_hide_tools(MokoFingerWindow* self);
+MokoFingerWheel* moko_finger_window_get_wheel(MokoFingerWindow* self);
+MokoFingerToolBox* moko_finger_window_get_toolbox(MokoFingerWindow* self);
 
 G_END_DECLS
 





More information about the commitlog mailing list