r182 - 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
Sat Nov 4 16:23:15 CET 2006


Author: mickey
Date: 2006-11-04 15:23:14 +0000 (Sat, 04 Nov 2006)
New Revision: 182

Modified:
   trunk/src/target/OM-2007/applications/openmoko-chordmaster/callbacks.c
   trunk/src/target/OM-2007/applications/openmoko-chordmaster/callbacks.h
   trunk/src/target/OM-2007/applications/openmoko-chordmaster/chordsdb.c
   trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.c
   trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.h
   trunk/src/target/OM-2007/examples/openmoko-paned-demo/demo-main.c
   trunk/src/target/OM-2007/libraries/mokoui/moko-menubox.c
Log:
chordmaster: add logic to make filter menu actually filter the selection
paned-demo: add sample application menu entries


Modified: trunk/src/target/OM-2007/applications/openmoko-chordmaster/callbacks.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-chordmaster/callbacks.c	2006-11-03 12:36:29 UTC (rev 181)
+++ trunk/src/target/OM-2007/applications/openmoko-chordmaster/callbacks.c	2006-11-04 15:23:14 UTC (rev 182)
@@ -1,4 +1,7 @@
 #include "callbacks.h"
+
+#include "main.h"
+#include "chordsdb.h"
 #include "fretboard-widget.h"
 
 #include <gtk/gtkwidget.h>
@@ -6,9 +9,27 @@
 #include <gtk/gtktreeview.h>
 #include <gtk/gtktreemodel.h>
 
-gboolean cb_filter_changed(GtkWidget* widget, gchar* text, gpointer user_data)
+gboolean cb_filter_changed(GtkWidget* widget, gchar* text, ChordMasterData* d)
 {
     g_debug( "openmoko-chordmaster: filter changed" );
+    g_assert( d->chordsdb );
+    if ( !d->liststore )
+        d->liststore = gtk_list_store_new( NUM_COLS, G_TYPE_STRING, G_TYPE_STRING );
+    gtk_list_store_clear( d->liststore );
+    GtkTreeIter iter;
+    GSList* chords = chordsdb_get_chords( d->chordsdb );
+    for ( ; chords; chords = g_slist_next( chords ) )
+    {
+        Chord* chord = chords->data;
+        if ( strcmp( text, "All") == 0 || text[0] == chord->name[0] )
+        {
+            g_debug( "chordmaster: adding chord '%s' = '%s'", chord->name, chord->frets );
+            gtk_list_store_append( d->liststore, &iter );
+            gtk_list_store_set( d->liststore, &iter, COLUMN_NAME, chord->name, COLUMN_FRETS, chord->frets, -1 );
+        }
+    }
+
+    //g_assert( FALSE );
     return FALSE;
 }
 
@@ -38,10 +59,11 @@
     GtkTreeView* view = gtk_tree_selection_get_tree_view( selection );
     GtkTreeModel* model;
     GtkTreeIter iter;
-    gtk_tree_selection_get_selected( selection, &model, &iter );
+    gboolean has_selection = gtk_tree_selection_get_selected( selection, &model, &iter );
 
-    gchar* frets;
-    gtk_tree_model_get( model, &iter, COLUMN_FRETS, &frets, -1 );
+    gchar* frets = NULL;
+    if ( has_selection )
+        gtk_tree_model_get( model, &iter, COLUMN_FRETS, &frets, -1 );
 
     fretboard_widget_set_frets( d->fretboard, frets );
     gtk_widget_queue_draw( GTK_WIDGET(d->fretboard) );

Modified: trunk/src/target/OM-2007/applications/openmoko-chordmaster/callbacks.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-chordmaster/callbacks.h	2006-11-03 12:36:29 UTC (rev 181)
+++ trunk/src/target/OM-2007/applications/openmoko-chordmaster/callbacks.h	2006-11-04 15:23:14 UTC (rev 182)
@@ -9,7 +9,7 @@
 
 #include <glib.h>
 
-gboolean cb_filter_changed(GtkWidget* widget, gchar* text, gpointer user_data);
+gboolean cb_filter_changed(GtkWidget* widget, gchar* text, ChordMasterData* d);
 void cb_button1_clicked(GtkButton *button, gpointer user_data);
 void cb_button2_clicked(GtkButton *button, gpointer user_data);
 void cb_button3_clicked(GtkButton *button, gpointer user_data);

Modified: trunk/src/target/OM-2007/applications/openmoko-chordmaster/chordsdb.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-chordmaster/chordsdb.c	2006-11-03 12:36:29 UTC (rev 181)
+++ trunk/src/target/OM-2007/applications/openmoko-chordmaster/chordsdb.c	2006-11-04 15:23:14 UTC (rev 182)
@@ -54,6 +54,7 @@
 static void
 chordsdb_class_init (ChordsDBClass *klass)
 {
+    g_debug( "chordsdb_class_init" );
     GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
     /* register private data */

Modified: trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.c	2006-11-03 12:36:29 UTC (rev 181)
+++ trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.c	2006-11-04 15:23:14 UTC (rev 182)
@@ -43,8 +43,6 @@
 
     /* application data object */
     ChordMasterData* d = g_new( ChordMasterData, 1 );
-
-    /* chords database */
     d->chordsdb = chordsdb_new();
 
     /* application object */
@@ -84,7 +82,7 @@
     }
     moko_paned_window_set_filter_menu( d->window, filtmenu );
     MokoMenuBox* menubox = moko_paned_window_get_menubox( d->window );
-    g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), NULL );
+    g_signal_connect( G_OBJECT(menubox), "filter_changed", G_CALLBACK(cb_filter_changed), d );
     moko_menu_box_set_active_filter( menubox, "All" );
 
     /* connect close event */
@@ -133,19 +131,8 @@
 
 void populate_navigation_area( ChordMasterData* d )
 {
+    g_assert( d->liststore ); // created in callback
 
-    GtkListStore* list = gtk_list_store_new( NUM_COLS, G_TYPE_STRING, G_TYPE_STRING );
-    GtkTreeIter iter;
-
-    GSList* chords = chordsdb_get_chords( d->chordsdb );
-    for ( ; chords; chords = g_slist_next( chords ) )
-    {
-        Chord* chord = chords->data;
-        g_debug( "chordmaster: adding chord '%s' = '%s'", chord->name, chord->frets );
-        gtk_list_store_append( list, &iter );
-        gtk_list_store_set( list, &iter, COLUMN_NAME, chord->name, COLUMN_FRETS, chord->frets, -1 );
-    }
-
     //FIXME get color from style
     GdkColor color;
     color.red = 0x7f << 8;
@@ -156,7 +143,7 @@
     g_value_init (&v, GDK_TYPE_COLOR);
     g_value_set_boxed( &v, &color);
 
-    GtkTreeView* view = gtk_tree_view_new_with_model( list );
+    GtkTreeView* view = gtk_tree_view_new_with_model( d->liststore );
     gtk_tree_view_set_rules_hint( view, TRUE );
     GtkTreeViewColumn* col = gtk_tree_view_column_new();
     gtk_tree_view_column_set_title( col, "Name of the Chord" );

Modified: trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.h	2006-11-03 12:36:29 UTC (rev 181)
+++ trunk/src/target/OM-2007/applications/openmoko-chordmaster/main.h	2006-11-04 15:23:14 UTC (rev 182)
@@ -27,6 +27,8 @@
 #include <mokoui/moko-paned-window.h>
 #include <mokoui/moko-toolbox.h>
 
+#include <gtk/gtkliststore.h>
+
 typedef struct _ChordMasterData {
     MokoApplication* app;
     MokoPanedWindow* window;
@@ -34,6 +36,7 @@
     MokoToolBox* toolbox;
     ChordsDB* chordsdb;
     FretboardWidget* fretboard;
+    GtkListStore* liststore;
 } ChordMasterData;
 
 enum {

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-11-03 12:36:29 UTC (rev 181)
+++ trunk/src/target/OM-2007/examples/openmoko-paned-demo/demo-main.c	2006-11-04 15:23:14 UTC (rev 182)
@@ -76,6 +76,16 @@
 
     /* application menu */
     GtkMenu* appmenu = GTK_MENU(gtk_menu_new());
+    GtkMenuItem* item = gtk_menu_item_new_with_label( "Some" );
+    gtk_menu_shell_append( GTK_MENU_SHELL(appmenu), item );
+    item = gtk_menu_item_new_with_label( "Sample" );
+    gtk_menu_shell_append( GTK_MENU_SHELL(appmenu), item );
+    item = gtk_menu_item_new_with_label( "Menu" );
+    gtk_menu_shell_append( GTK_MENU_SHELL(appmenu), item );
+    item = gtk_menu_item_new_with_label( "Entries" );
+    gtk_menu_shell_append( GTK_MENU_SHELL(appmenu), item );
+    item = gtk_separator_menu_item_new();
+    gtk_menu_shell_append( GTK_MENU_SHELL(appmenu), item );
     GtkMenuItem* closeitem = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "Close" ));
     g_signal_connect( G_OBJECT(closeitem), "activate", G_CALLBACK(gtk_main_quit), NULL );
     gtk_menu_shell_append( appmenu, closeitem );
@@ -84,13 +94,13 @@
     /* filter menu */
     GtkMenu* filtmenu = GTK_MENU(gtk_menu_new());
     GtkMenuItem* item1 = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "Some" ));
-    gtk_menu_shell_append( filtmenu, item1 );
+    gtk_menu_shell_append( GTK_MENU_SHELL(filtmenu), item1 );
     GtkMenuItem* item2 = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "Sample" ));
-    gtk_menu_shell_append( filtmenu, item2 );
+    gtk_menu_shell_append( GTK_MENU_SHELL(filtmenu), item2 );
     GtkMenuItem* item3 = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "Filter" ));
-    gtk_menu_shell_append( filtmenu, item3 );
+    gtk_menu_shell_append( GTK_MENU_SHELL(filtmenu), item3 );
     GtkMenuItem* item4 = GTK_MENU_ITEM(gtk_menu_item_new_with_label( "Entries" ));
-    gtk_menu_shell_append( filtmenu, item4 );
+    gtk_menu_shell_append( GTK_MENU_SHELL(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-11-03 12:36:29 UTC (rev 181)
+++ trunk/src/target/OM-2007/libraries/mokoui/moko-menubox.c	2006-11-04 15:23:14 UTC (rev 182)
@@ -92,7 +92,7 @@
 
 static void moko_menu_box_init (MokoMenuBox *self) /* Instance Construction */
 {
-    g_debug( "moko_paned_window_init" );
+    g_debug( "moko_menu_box_init" );
     MokoMenuBoxPriv* priv = MOKO_MENU_BOX_GET_PRIVATE(self);
 
     priv->menubar_l = NULL;





More information about the commitlog mailing list