[ease] [general] Move PDFExporter functionality to Document



commit 5c6c45f48be55d6db88591243eac09a50aaf1b86
Author: Nate Stedman <natesm gmail com>
Date:   Sat Jul 24 18:31:57 2010 -0400

    [general] Move PDFExporter functionality to Document
    
    - PDFExporter class removed
    - Document gains export_to_pdf

 Makefile.am                 |    1 -
 src/ease-document.vala      |   51 ++++++++++++++++++++++++++++
 src/ease-editor-window.vala |    2 +-
 src/ease-pdf-exporter.vala  |   77 -------------------------------------------
 4 files changed, 52 insertions(+), 79 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 791988f..442396f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -36,7 +36,6 @@ ease_SOURCES = \
 	src/ease-json-parser.vala \
 	src/ease-media-element.vala \
 	src/ease-open-dialog.vala \
-	src/ease-pdf-exporter.vala \
 	src/ease-player.vala \
 	src/ease-scrollable-embed.vala \
 	src/ease-selection-rectangle.vala \
diff --git a/src/ease-document.vala b/src/ease-document.vala
index cec3a96..757e5da 100644
--- a/src/ease-document.vala
+++ b/src/ease-document.vala
@@ -163,6 +163,57 @@ public class Ease.Document : SlideSet
 	}
 	
 	/**
+	 * Exports this as a PDF file.
+	 *
+	 * @param win The window that dialogs should be modal for.
+	 */
+	public void export_to_pdf(Gtk.Window win)
+	{
+		string path;
+		
+		var dialog = new Gtk.FileChooserDialog(_("Export to PDF"),
+		                                       win,
+		                                       Gtk.FileChooserAction.SAVE,
+		                                       "gtk-save",
+		                                       Gtk.ResponseType.ACCEPT,
+		                                       "gtk-cancel",
+		                                       Gtk.ResponseType.CANCEL,
+		                                       null);
+		
+		if (dialog.run() == Gtk.ResponseType.ACCEPT)
+		{
+			// clean up the file dialog
+			path = dialog.get_filename();
+			dialog.destroy();
+		}
+		else
+		{
+			dialog.destroy();
+			return;
+		}
+		
+		try
+		{
+			// create a PDF surface
+			var surface = new Cairo.PdfSurface(path, width, height);
+			var context = new Cairo.Context(surface);
+		
+			foreach (var s in slides)
+			{
+				s.cairo_render(context);
+				context.show_page();
+			}
+		
+			surface.flush();
+			surface.finish();
+		}
+		catch (Error e)
+		{
+			error_dialog(_("Error Exporting to PDF"), e.message);
+		}
+	}
+	
+	/**
 	 * Exports this Document to an HTML file.
 	 *
 	 * @param window The window that the progress dialog should be modal for.
diff --git a/src/ease-editor-window.vala b/src/ease-editor-window.vala
index ed525f2..499938b 100644
--- a/src/ease-editor-window.vala
+++ b/src/ease-editor-window.vala
@@ -434,7 +434,7 @@ public class Ease.EditorWindow : Gtk.Window
 	[CCode (instance_pos = -1)]
 	public void export_to_pdf(Gtk.Widget sender)
 	{
-		PDFExporter.export(document, this);
+		document.export_to_pdf(this);
 	}
 	
 	[CCode (instance_pos = -1)]



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