[ease/presenter: 3/3] Holds a reference of the player in the PresenterWindow



commit d4d6c3884d263541a0d95127fa5c7aa833161394
Author: Stéphane Maniaci <stephane maniaci gmail com>
Date:   Mon Aug 16 20:40:17 2010 -0500

    Holds a reference of the player in the PresenterWindow

 ease/ease-player.vala           |    5 +++--
 ease/ease-presenter-window.vala |   22 +++++++++++++---------
 2 files changed, 16 insertions(+), 11 deletions(-)
---
diff --git a/ease/ease-player.vala b/ease/ease-player.vala
index 94de01f..90cc40a 100644
--- a/ease/ease-player.vala
+++ b/ease/ease-player.vala
@@ -152,7 +152,7 @@ internal class Ease.Player : Gtk.Window
 		show_all();
 		present();
 		
-		presenter = new PresenterWindow (this.document);
+		presenter = new PresenterWindow (this.document, this);
 		presenter.show_all ();
 		can_animate = true;
 		advance();
@@ -234,8 +234,9 @@ internal class Ease.Player : Gtk.Window
 		switch (event.keyval) {
 		case Key.ESCAPE:
 			debug ("Quitting player.");
-			stage.hide ();
+			this.hide ();
 			presenter_window.hide ();
+			complete ();
 			break;
 		case Key.RIGHT:
 		case Key.DOWN:
diff --git a/ease/ease-presenter-window.vala b/ease/ease-presenter-window.vala
index d432d4f..8193b68 100644
--- a/ease/ease-presenter-window.vala
+++ b/ease/ease-presenter-window.vala
@@ -10,6 +10,7 @@
  */
 internal class Ease.PresenterWindow : Gtk.Window
 {
+	internal Player player;
 	internal Document document { get; set; }
 	internal int slide_index { get; set; }
 	internal Clutter.Stage stage { get; set; }
@@ -19,7 +20,7 @@ internal class Ease.PresenterWindow : Gtk.Window
 	private Clutter.Group current_display;
 	private Clutter.Group bottom_display;
 
-	private SlideActor current_slide;
+	private Clutter.Clone current_slide;
 	private SlideActor next_slide;
 	private Clutter.Text notes;
 	private Clutter.Text time_elapsed;
@@ -28,8 +29,9 @@ internal class Ease.PresenterWindow : Gtk.Window
 	/* other data */
 	Timer timer;
 
-	internal PresenterWindow (Document doc)
+	internal PresenterWindow (Document doc, Player p)
 	{
+		player = p;
 		document = doc;
 		slide_index = -1;
 
@@ -43,7 +45,12 @@ internal class Ease.PresenterWindow : Gtk.Window
 
 		current_display = new Clutter.Group ();
 		bottom_display = new Clutter.Group ();
+		stage.add (current_display, bottom_display);
 
+		current_slide = new Clutter.Clone (p.stage);
+		current_slide.set_size (doc.width/2, doc.height/2);
+		
+		current_display.add_actor (current_slide);
 		int docsize = doc.length;
 		var slidenum = @"Slide n°$slide_index / $docsize";
 		var elapsed = (uint)timer.elapsed ();
@@ -53,14 +60,11 @@ internal class Ease.PresenterWindow : Gtk.Window
 		time_elapsed = new Clutter.Text.full ("Sans 20",
 											  @"$elapsed s",
 											  Clutter.Color.from_string ("white"));
-		time_elapsed.set_position (stage.width - time_elapsed.width,
-								   stage.height - time_elapsed.height);
+		bottom_display.add (slides_elapsed, time_elapsed);
+
+		time_elapsed.set_position (bottom_display.width - time_elapsed.width,
+								   bottom_display.height - time_elapsed.height);
 		bottom_display.set_position (0, stage.height/4*3);
-		bottom_display.add (slides_elapsed,
-							time_elapsed,
-							null);
-		stage.add (current_display,
-				   bottom_display);
 		stage.color = { 0, 0, 0, 255 };
 		stage.set_fullscreen (true);
 		stage.show_all ();



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