r153 - in trunk/src/target/OM-2007: applications/openmoko-chordmaster examples/openmoko-paned-demo libraries/mokoui

mickey at gta01.hmw-consulting.de mickey at gta01.hmw-consulting.de
Mon Oct 30 17:10:43 CET 2006


Author: mickey
Date: 2006-10-30 16:10:42 +0000 (Mon, 30 Oct 2006)
New Revision: 153

Modified:
   trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.c
   trunk/src/target/OM-2007/examples/openmoko-paned-demo/demo-main.c
   trunk/src/target/OM-2007/libraries/mokoui/moko-menubox.c
Log:
mokoui: moko_menu_box_set_active_filter works now (for text labels)


Modified: trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.c	2006-10-30 15:35:01 UTC (rev 152)
+++ trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.c	2006-10-30 16:10:42 UTC (rev 153)
@@ -91,8 +91,9 @@
     moko_paned_window_set_filter_menu( window, filtmenu );
     MokoMenuBox* menubox = moko_paned_window_get_menubox( window );
     g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), NULL );
+    //moko_menu_box_set_active_filter( menubox, "All" );
+    moko_menu_box_set_active_filter( menubox, "Seppel" );
 
-
     /* connect close event */
     g_signal_connect( G_OBJECT(window), "delete_event", G_CALLBACK( gtk_main_quit ), NULL );
 

Modified: trunk/src/target/OM-2007/examples/openmoko-paned-demo/demo-main.c
===================================================================
--- trunk/src/target/OM-2007/examples/openmoko-paned-demo/demo-main.c	2006-10-30 15:35:01 UTC (rev 152)
+++ trunk/src/target/OM-2007/examples/openmoko-paned-demo/demo-main.c	2006-10-30 16:10:42 UTC (rev 153)
@@ -83,12 +83,14 @@
 
     /* filter menu */
     GtkMenu* filtmenu = GTK_MENU(gtk_menu_new());
-    GtkMenuItem* item1 = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "All" ));
+    GtkMenuItem* item1 = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "Some" ));
     gtk_menu_shell_append( filtmenu, item1 );
-    GtkMenuItem* item2 = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "Odd" ));
+    GtkMenuItem* item2 = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "Sample" ));
     gtk_menu_shell_append( filtmenu, item2 );
-    GtkMenuItem* item3 = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "Even" ));
+    GtkMenuItem* item3 = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "Filter" ));
     gtk_menu_shell_append( filtmenu, item3 );
+    GtkMenuItem* item4 = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "Entries" ));
+    gtk_menu_shell_append( filtmenu, item4 );
     moko_paned_window_set_filter_menu( window, filtmenu );
     MokoMenuBox* menubox = moko_paned_window_get_menubox( window );
     g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), NULL );

Modified: trunk/src/target/OM-2007/libraries/mokoui/moko-menubox.c
===================================================================
--- trunk/src/target/OM-2007/libraries/mokoui/moko-menubox.c	2006-10-30 15:35:01 UTC (rev 152)
+++ trunk/src/target/OM-2007/libraries/mokoui/moko-menubox.c	2006-10-30 16:10:42 UTC (rev 153)
@@ -22,6 +22,8 @@
 #include <gtk/gtkmenubar.h>
 #include <gtk/gtkmenuitem.h>
 
+#include <string.h>
+
 #define MOKO_MENU_BOX_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), MOKO_TYPE_MENU_BOX, MokoMenuBoxPriv));
 
 typedef struct _MokoMenuBoxPriv
@@ -117,8 +119,8 @@
     GtkAllocation* a = &GTK_WIDGET(children->data)->allocation;
     g_debug( "allocate is %d, %d * %d, %d", a->x, a->y, a->width, a->height );
 
-    if ( event->x > a->x && event->x < (a->x+a->width) &&
-         event->y > a->y && event->y < (a->y+a->height) )
+    if ( event->x >= a->x && event->x <= (a->x+a->width) &&
+         event->y >= a->y && event->y <= (a->y+a->height) )
     {
         g_debug( "INSIDE ITEM" );
         return FALSE;
@@ -214,10 +216,30 @@
 void
 moko_menu_box_set_active_filter(MokoMenuBox* self, gchar* text)
 {
+    //FIXME this only works with text labels
     g_debug( "moko_menu_box_set_active_filter" );
 
     // wander through all filter menu items, check their labels
     // if one is matching, then select it
 
-    /* ... */
+    MokoMenuBoxPriv* priv = MOKO_MENU_BOX_GET_PRIVATE(self);
+
+    GList* child = gtk_container_get_children( GTK_CONTAINER(priv->filtermenu) );
+    while (child && GTK_IS_MENU_ITEM(child->data))
+    {
+        GtkWidget *label = GTK_BIN(child->data)->child;
+        g_assert( GTK_IS_LABEL(label) );
+        gchar* ltext;
+        gtk_label_get( GTK_LABEL(label), &ltext );
+        if ( strcmp( ltext, text ) == 0 )
+        {
+            g_debug( "moko_menu_box_set_active_filter: match found" );
+            gtk_menu_item_activate( child->data );
+            cb_filter_menu_update( priv->filtermenu, self ); //need to sync. manually, since we it didn't go through popupmenu
+            break;
+        }
+        child = g_list_next(child);
+    }
+    if (!child)
+        g_warning( "moko_menu_box_set_active_filter: filter menu entry '%s' not found", text );
 }





More information about the commitlog mailing list