[gbrainy] More work on mouse support



commit ba9ee1539006c8f898004d35a4569608fb0772df
Author: Jordi Mas <jmas softcatala org>
Date:   Fri Feb 19 18:10:19 2010 +0100

    More work on mouse support

 src/Games/Logic/PuzzleClocks.cs      |   79 ++++++++++++++++++++++---------
 src/Games/Logic/PuzzleLargerShape.cs |   84 ++++++++++++++++++++++++++++------
 src/Games/Logic/PuzzleTetris.cs      |   33 +++++++++----
 3 files changed, 149 insertions(+), 47 deletions(-)
---
diff --git a/src/Games/Logic/PuzzleClocks.cs b/src/Games/Logic/PuzzleClocks.cs
index 6799065..8c050db 100644
--- a/src/Games/Logic/PuzzleClocks.cs
+++ b/src/Games/Logic/PuzzleClocks.cs
@@ -23,6 +23,7 @@ using System;
 
 using gbrainy.Core.Main;
 using gbrainy.Core.Libraries;
+using gbrainy.Core.Toolkit;
 
 namespace gbrainy.Games.Logic
 {
@@ -89,6 +90,61 @@ namespace gbrainy.Games.Logic
 		
 			right_answer = handles[7].ToString ();
 
+			// First row
+			HorizontalContainer container = new HorizontalContainer (DrawAreaX, 0.05, 0.8, 0.45);
+			DrawableArea drawable_area;
+			AddWidget (container);
+			
+			drawable_area = new DrawableArea (0.8 / 2, 0.4);
+			drawable_area.Sensitive = false;
+			container.AddChild (drawable_area);
+
+			drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+			{
+				DrawClock (e.Context, 0.2, 0.16, handles[0], handles[1], true);
+				e.Context.DrawTextCentered (drawable_area.Width / 2, 0.36, GetPossibleFigureAnswer (0));
+				e.Context.Stroke ();
+			};
+
+			drawable_area = new DrawableArea (0.8 / 2, 0.4);
+			drawable_area.Sensitive = false;
+			container.AddChild (drawable_area);
+
+			drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+			{
+				DrawClock (e.Context, 0.2, 0.16, handles[2], handles[3], true);
+				e.Context.MoveTo (0.03, 0.29);
+				e.Context.DrawTextCentered (drawable_area.Width / 2, 0.36, GetPossibleFigureAnswer (1));
+				e.Context.Stroke ();
+			};
+
+			// Second row
+			container = new HorizontalContainer (DrawAreaX, 0.05 + 0.45, 0.8, 0.45);
+			AddWidget (container);
+			
+			drawable_area = new DrawableArea (0.8 / 2, 0.4);
+			drawable_area.Sensitive = false;
+			container.AddChild (drawable_area);
+
+			drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+			{
+				DrawClock (e.Context, 0.2, 0.16, handles[4], handles[5], true);
+				e.Context.DrawTextCentered (drawable_area.Width / 2, 0.36, GetPossibleFigureAnswer (2));
+				e.Context.Stroke ();
+			};
+
+			drawable_area = new DrawableArea (0.8 / 2, 0.4);
+			drawable_area.Sensitive = false;
+			container.AddChild (drawable_area);
+
+			drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+			{
+				DrawClock (e.Context, 0.2, 0.16, handles[6], handles[7], DrawAnswer == true);
+				e.Context.MoveTo (0.03, 0.29);
+				e.Context.DrawTextCentered (drawable_area.Width / 2, 0.36, GetPossibleFigureAnswer (3));
+				e.Context.Stroke ();
+			};
+	
 			/*DateTime dt1 = new DateTime (2008, 2, 20, handles[0], handles[1] * 5, 0);
 			DateTime dt2 = new DateTime (2008, 2, 20, handles[2], handles[3] * 5, 0);
 			Console.WriteLine ("t1 {0}", dt1);
@@ -152,30 +208,7 @@ namespace gbrainy.Games.Logic
 
 		public override void Draw (CairoContextEx gr, int area_width, int area_height, bool rtl)
 		{
-			double x = DrawAreaX + 0.1, y = DrawAreaY + 0.05;
-
 			base.Draw (gr, area_width, area_height, rtl);
-
-			DrawClock (gr, x + 0.1, y + 0.1, handles[0], handles[1], true);
-			gr.MoveTo (x + 0.03, y + 0.29);
-			gr.ShowPangoText (GetPossibleFigureAnswer (0));
-			gr.Stroke ();
-	
-			DrawClock (gr, x + 0.5, y + 0.1, handles[2], handles[3], true);
-			gr.MoveTo (x + 0.43, y + 0.29);
-			gr.ShowPangoText (GetPossibleFigureAnswer (1));
-			gr.Stroke ();
-
-			DrawClock (gr, x + 0.1, y + 0.52, handles[4], handles[5], true);
-			gr.MoveTo (x + 0.03, y + 0.71);
-			gr.ShowPangoText (GetPossibleFigureAnswer (2));
-			gr.Stroke ();
-
-			DrawClock (gr, x + 0.5, y + 0.52, handles[6], handles[7], DrawAnswer == true);
-			gr.MoveTo (x + 0.43, y + 0.71);
-			gr.ShowPangoText (GetPossibleFigureAnswer (3));
-			gr.Stroke ();
-
 		}
 	}
 }
diff --git a/src/Games/Logic/PuzzleLargerShape.cs b/src/Games/Logic/PuzzleLargerShape.cs
index 14e1fee..89521e0 100644
--- a/src/Games/Logic/PuzzleLargerShape.cs
+++ b/src/Games/Logic/PuzzleLargerShape.cs
@@ -23,6 +23,7 @@ using System;
 
 using gbrainy.Core.Main;
 using gbrainy.Core.Libraries;
+using gbrainy.Core.Toolkit;
 
 namespace gbrainy.Games.Logic
 {
@@ -153,6 +154,75 @@ namespace gbrainy.Games.Logic
 					break;
 				}
 			}
+
+			double x = DrawAreaX, y = DrawAreaY;
+
+			// Question
+			DrawableArea drawable_area;
+			HorizontalContainer container = new HorizontalContainer (x, y, 0.8, 0.3);
+			AddWidget (container);
+	
+			drawable_area = new DrawableArea (container.Width / 2, 0.25);
+			drawable_area.Sensitive = false;
+			container.AddChild (drawable_area);
+
+			drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+			{
+				DrawSquare (e.Context, 0.15, 0);
+			};
+
+			drawable_area = new DrawableArea (container.Width / 2, 0.25);
+			drawable_area.Sensitive = false;
+			container.AddChild (drawable_area);
+
+			drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+			{
+				DrawLShape (e.Context, 0.15, 0);
+			};
+
+			// Answers
+			y += 0.3;
+			container = new HorizontalContainer (x, y, 0.8, 0.3);
+			AddWidget (container);
+	
+			for (int i = 0; i < 2; i++)
+			{
+				drawable_area = new DrawableArea (container.Width / 2, 0.25);
+				drawable_area.Data = i;
+				drawable_area.DataEx = GetPossibleAnswer (i);
+				container.AddChild (drawable_area);
+
+				drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+				{
+					int n = (int) e.Data;
+					DrawPossibleAnswer (e.Context, 0.12, 0.03, answer, random_indices [n], n);
+
+					e.Context.DrawTextCentered (drawable_area.Width / 2, 0.22, GetPossibleFigureAnswer (n));
+					e.Context.Stroke ();
+				};
+			}
+	
+			container = new HorizontalContainer (x, y + 0.3, 0.8, 0.3);
+			AddWidget (container);
+	
+			for (int i = 2; i < 4; i++)
+			{
+				drawable_area = new DrawableArea (container.Width / 2, 0.25);
+				drawable_area.Data = i;
+				drawable_area.DataEx = GetPossibleAnswer (i);
+				container.AddChild (drawable_area);
+
+				drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+				{
+					int n = (int) e.Data;
+					DrawPossibleAnswer (e.Context, 0.12, 0.03, answer, random_indices [n], n);
+
+					e.Context.DrawTextCentered (drawable_area.Width / 2, 0.22, GetPossibleFigureAnswer (n));
+					e.Context.Stroke ();
+				};
+			}
+
+
 		}
 
 		private Color ColorForPortion (char portion)
@@ -224,29 +294,15 @@ namespace gbrainy.Games.Logic
 					gr.Stroke ();
 				}
 			}
-
-			gr.MoveTo (x, y + 0.18);
-			gr.ShowPangoText (GetPossibleFigureAnswer (seq));
-			gr.Stroke ();
 		}
 
 		public override void Draw (CairoContextEx gr, int area_width, int area_height, bool rtl)
 		{
-			double x = DrawAreaX + 0.1, y = DrawAreaY;
-
 			base.Draw (gr, area_width, area_height, rtl);
-	
-			DrawSquare (gr, x, y);
-			DrawLShape (gr, x + 0.4, y);
 
 			gr.MoveTo (0.1, 0.3);
 			gr.ShowPangoText (Catalog.GetString ("Possible answers are:"));
 			gr.Stroke ();
-		
-			DrawPossibleAnswer (gr, x, y + 0.32, answer, random_indices [0], 0);
-			DrawPossibleAnswer (gr, x + 0.4, y + 0.32, answer, random_indices [1], 1);
-			DrawPossibleAnswer (gr, x, y + 0.6, answer, random_indices [2], 2);
-			DrawPossibleAnswer (gr, x + 0.4, y + 0.6, answer, random_indices [3], 3);
 		}
 	}
 }
diff --git a/src/Games/Logic/PuzzleTetris.cs b/src/Games/Logic/PuzzleTetris.cs
index fcf096c..7cf6ca6 100644
--- a/src/Games/Logic/PuzzleTetris.cs
+++ b/src/Games/Logic/PuzzleTetris.cs
@@ -23,6 +23,7 @@ using System;
 
 using gbrainy.Core.Main;
 using gbrainy.Core.Libraries;
+using gbrainy.Core.Toolkit;
 
 namespace gbrainy.Games.Logic
 {
@@ -64,6 +65,27 @@ namespace gbrainy.Games.Logic
 					break;
 				}
 			}
+
+			HorizontalContainer container = new HorizontalContainer (0.1, 0.5, 0.8, 0.4);
+			DrawableArea drawable_area;
+			AddWidget (container);
+
+			for (int i = 0; i < 3; i++)
+			{
+				drawable_area = new DrawableArea (0.8 / 3, 0.4);
+				drawable_area.Data = i;
+				drawable_area.DataEx = GetPossibleAnswer (i);
+				container.AddChild (drawable_area);
+
+				drawable_area.DrawEventHandler += delegate (object sender, DrawEventArgs e)
+				{
+					int n = (int) e.Data;
+
+					DrawAnswerFigures (e.Context, 0.05, 0.2, random_indices_answers [n]);
+					e.Context.MoveTo (0.05, 0.33);
+					e.Context.ShowPangoText (GetPossibleFigureAnswer (n));
+				};
+			}
 		}
 
 		private static void DrawQuestionFigures (CairoContextEx gr, double x, double y, int figure)
@@ -123,7 +145,7 @@ namespace gbrainy.Games.Logic
 				// X
 				// X
 				for (int i = 0; i < 4; i++) {
-					gr.Rectangle (x, y -  rect_height * i, rect_witdh, rect_height);
+					gr.Rectangle (x + 0.05, y -  rect_height * i, rect_witdh, rect_height);
 				}
 				break;
 			case 2:
@@ -151,15 +173,6 @@ namespace gbrainy.Games.Logic
 
 			gr.MoveTo (0.1, 0.4 - 0.02);
 			gr.ShowPangoText (Catalog.GetString ("Possible answers are:"));
-
-			x = 0.2;
-			y = 0.6;
-			for (int i = 0; i < 3; i++) {
-				DrawAnswerFigures (gr, x, y, random_indices_answers [i]);
-				gr.MoveTo (x, y + 0.13);
-				gr.ShowPangoText (GetPossibleFigureAnswer (i));
-				x += space_figures;
-			}
 		}
 	}
 }



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