gcompris r3258 - in branches/gcomprixogoo: boards/skins/babytoy boards/skins/gartoon src/gcompris



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();
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]