Author: bcoudoin Date: Sun Feb 17 02:16:03 2008 New Revision: 3258 URL: http://svn.gnome.org/viewvc/gcompris?rev=3258&view=rev
Log: implemented a movable bar Added: branches/gcomprixogoo/boards/skins/babytoy/bar_bg.png (contents, props changed) branches/gcomprixogoo/boards/skins/gartoon/bar_bg.png (contents, props changed) Removed: branches/gcomprixogoo/boards/skins/babytoy/bar_bg.jpg branches/gcomprixogoo/boards/skins/gartoon/bar_bg.jpg Modified: branches/gcomprixogoo/src/gcompris/bar.c branches/gcomprixogoo/src/gcompris/gameutil.c branches/gcomprixogoo/src/gcompris/gcompris.c Added: branches/gcomprixogoo/boards/skins/babytoy/bar_bg.png ============================================================================== Binary file. No diff available. Added: branches/gcomprixogoo/boards/skins/gartoon/bar_bg.png ============================================================================== Binary file. No diff available. Modified: branches/gcomprixogoo/src/gcompris/bar.c ============================================================================== --- branches/gcomprixogoo/src/gcompris/bar.c (original) +++ branches/gcomprixogoo/src/gcompris/bar.c Sun Feb 17 02:16:03 2008 @@ -48,6 +48,8 @@ gchar *data); static void bar_reset_sound_id (void); static void setup_item_signals (GooCanvasItem *item, gchar* name); +static void _bar_down(); +static void _bar_up(); static gint current_level = -1; static gint current_flags = -1; @@ -60,6 +62,7 @@ static GooCanvasItem *repeat_item = NULL; static GooCanvasItem *config_item = NULL; static GooCanvasItem *about_item = NULL; +static GooCanvasItem *rootitem = NULL; static gint sound_play_id = 0; @@ -79,7 +82,6 @@ { GcomprisProperties *properties = gc_prop_get(); GdkPixbuf *pixmap = NULL; - GooCanvasItem *rootitem; gint16 width, height; double zoom; @@ -89,13 +91,15 @@ bar_reset_sound_id(); rootitem = goo_canvas_group_new (goo_canvas_get_root_item(theCanvas), NULL); + goo_canvas_item_translate(rootitem, 0, BOARDHEIGHT - BARHEIGHT); - pixmap = gc_skin_pixmap_load("bar_bg.jpg"); + pixmap = gc_skin_pixmap_load("bar_bg.png"); bar_item = goo_canvas_image_new (rootitem, pixmap, 0, 0, NULL); + setup_item_signals(bar_item, "bar"); gdk_pixbuf_unref(pixmap); // EXIT @@ -231,7 +235,10 @@ g_object_set (about_item, "visibility", GOO_CANVAS_ITEM_INVISIBLE, - NULL);} + NULL); + + _bar_down(); +} void gc_bar_set_level(GcomprisBoard *gcomprisBoard) @@ -378,6 +385,35 @@ } +static void +_bar_down() +{ + goo_canvas_item_animate(rootitem, + 0, + BOARDHEIGHT - 20, + 1, + 0, + TRUE, + 1000, + 80, + GOO_CANVAS_ANIMATE_FREEZE); +} + +static void +_bar_up() +{ + goo_canvas_item_raise(rootitem, NULL); + goo_canvas_item_animate(rootitem, + 0, + BOARDHEIGHT - BARHEIGHT, + 1, + 0, + TRUE, + 700, + 80, + GOO_CANVAS_ANIMATE_FREEZE); +} + /* Hide all icons in the control bar * or retore the icons to the previous value */ @@ -385,11 +421,7 @@ gc_bar_hide (gboolean hide) { /* Non yet initialized : Something Wrong */ - if(level_item==NULL) - { - g_message("in bar_set_level, level_item uninitialized : should not happen\n"); - return; - } + g_assert(level_item); if(hide) { @@ -411,12 +443,14 @@ "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); g_object_set(about_item, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL); + } else { g_object_set(home_item, "visibility", GOO_CANVAS_ITEM_VISIBLE, NULL); gc_bar_set(current_flags); + } } @@ -487,6 +521,7 @@ { bar_reset_sound_id(); sound_play_id = g_timeout_add (1000, (GtkFunction) bar_play_sound, data); + _bar_up(); return FALSE; } @@ -497,6 +532,7 @@ char *data) { bar_reset_sound_id(); + _bar_down(); return FALSE; } @@ -624,5 +660,6 @@ (GtkSignalFunc) item_event_bar, name); - gc_item_focus_init(item, NULL); + if(strcmp(name, "bar")) + gc_item_focus_init(item, NULL); } Modified: branches/gcomprixogoo/src/gcompris/gameutil.c ============================================================================== --- branches/gcomprixogoo/src/gcompris/gameutil.c (original) +++ branches/gcomprixogoo/src/gcompris/gameutil.c Sun Feb 17 02:16:03 2008 @@ -250,7 +250,12 @@ target_item = source_item; goo_canvas_item_get_bounds(target_item, &bounds); - + goo_canvas_convert_to_item_space(goo_canvas_item_get_canvas(target_item), + goo_canvas_item_get_parent(target_item), + &bounds.x1, &bounds.y1); + goo_canvas_convert_to_item_space(goo_canvas_item_get_canvas(target_item), + goo_canvas_item_get_parent(target_item), + &bounds.x2, &bounds.y2); highlight_item = g_object_get_data (G_OBJECT(target_item), "highlight_item"); Modified: branches/gcomprixogoo/src/gcompris/gcompris.c ============================================================================== --- branches/gcomprixogoo/src/gcompris/gcompris.c (original) +++ branches/gcomprixogoo/src/gcompris/gcompris.c Sun Feb 17 02:16:03 2008 @@ -58,7 +58,6 @@ static GtkWidget *window; static GtkWidget *canvas; -static GtkWidget *canvas_bar; static GtkWidget *fixed; static GtkWidget *drawing_area; gchar * exec_prefix = NULL; @@ -280,9 +279,9 @@ &screen_width, &screen_height); - yratio=screen_height/(float)(BOARDHEIGHT+BARHEIGHT); + yratio=screen_height/(float)(BOARDHEIGHT); xratio=screen_width/(float)BOARDWIDTH; - zoom_factor=MIN(xratio, yratio); + zoom_factor = MIN(xratio, yratio); g_message("The screen_width=%f screen_height=%f ratio=%f\n", (double)screen_width, (double)screen_height, zoom_factor); @@ -290,15 +289,7 @@ goo_canvas_set_scale (GOO_CANVAS(canvas), zoom_factor); gtk_fixed_move(GTK_FIXED(fixed), canvas, (screen_width-BOARDWIDTH*zoom_factor)/2, - (screen_height-(BOARDHEIGHT+BARHEIGHT)*zoom_factor)/2); - - gtk_widget_set_usize (GTK_WIDGET(canvas_bar), - BOARDWIDTH*zoom_factor, BARHEIGHT*zoom_factor); - goo_canvas_set_scale (GOO_CANVAS(canvas_bar), zoom_factor); - gtk_fixed_move(GTK_FIXED(fixed), canvas_bar, - (screen_width-BOARDWIDTH*zoom_factor)/2, - (screen_height-(BOARDHEIGHT+BARHEIGHT)*zoom_factor)/2 - + BOARDHEIGHT*zoom_factor); + (screen_height-BOARDHEIGHT*zoom_factor)/2); _expose_background_callback (drawing_area, NULL, NULL); @@ -616,7 +607,7 @@ init_background() { drawing_area = gtk_drawing_area_new (); - gtk_widget_set_size_request (drawing_area, BOARDWIDTH, BOARDHEIGHT+BARHEIGHT); + gtk_widget_set_size_request (drawing_area, BOARDWIDTH, BOARDHEIGHT); g_signal_connect (G_OBJECT (drawing_area), "expose_event", G_CALLBACK (_expose_background_callback), NULL); /* Create a vertical box in which I put first the play board area, then the button bar */ @@ -625,11 +616,9 @@ gtk_fixed_put (GTK_FIXED(fixed), GTK_WIDGET(drawing_area), 0, 0); gtk_fixed_put (GTK_FIXED(fixed), GTK_WIDGET(canvas), 0, 0); - gtk_fixed_put (GTK_FIXED(fixed), GTK_WIDGET(canvas_bar), 0, BOARDHEIGHT); gtk_widget_show (GTK_WIDGET(fixed)); gtk_widget_show (GTK_WIDGET(canvas)); - gtk_widget_show (GTK_WIDGET(canvas_bar)); gtk_widget_set_usize (GTK_WIDGET(canvas), BOARDWIDTH, BOARDHEIGHT); goo_canvas_set_bounds (GOO_CANVAS(canvas), @@ -637,11 +626,6 @@ BOARDWIDTH, BOARDHEIGHT); - gtk_widget_set_usize (canvas_bar, BOARDWIDTH, BARHEIGHT); - goo_canvas_set_bounds (GOO_CANVAS(canvas_bar), - 0, 0, - BOARDWIDTH, - BARHEIGHT); } static void setup_window () @@ -691,8 +675,8 @@ hints.min_height = 144; hints.width_inc = 1; hints.height_inc = 1; - hints.min_aspect = (float)BOARDWIDTH/(BOARDHEIGHT+BARHEIGHT); - hints. max_aspect = (float)BOARDWIDTH/(BOARDHEIGHT+BARHEIGHT); + hints.min_aspect = (float)BOARDWIDTH/BOARDHEIGHT; + hints. max_aspect = (float)BOARDWIDTH/BOARDHEIGHT; gtk_window_set_geometry_hints (GTK_WINDOW (window), NULL, &hints, @@ -727,9 +711,7 @@ // Set the cursor gc_cursor_set(GCOMPRIS_DEFAULT_CURSOR); - /* For non anti alias canvas */ canvas = goo_canvas_new(); - canvas_bar = goo_canvas_new(); g_object_set (G_OBJECT(goo_canvas_get_root_item(GOO_CANVAS(canvas))), "can-focus", TRUE, @@ -741,9 +723,6 @@ g_signal_connect_after (canvas, "key_press_event", GTK_SIGNAL_FUNC (board_widget_key_press_callback), 0); - g_signal_connect_after (canvas_bar, - "key_press_event", - GTK_SIGNAL_FUNC (board_widget_key_press_callback), 0); GTK_WIDGET_SET_FLAGS (canvas, GTK_CAN_FOCUS); gtk_widget_grab_focus (canvas); @@ -799,7 +778,7 @@ } /* Run the bar */ - gc_bar_start(GOO_CANVAS(canvas_bar)); + gc_bar_start(GOO_CANVAS(canvas)); init_background(); _______________________________________________ SVN-commits-list mailing list (read only) http://mail.gnome.org/mailman/listinfo/svn-commits-list Want to limit the commits to a few modules? Go to above URL, log in to edit your options and select the modules ('topics') you want. Module maintainer? It is possible to set the reply-to to your development mailing list. Email [EMAIL PROTECTED] if interested.