Code

Adding axis detection to new input dialog
[inkscape.git] / src / print.cpp
index 624021c9a38291c728448fb5c0ef5a210abb4801..cc5d8c0a1fad582db858425eea2d24b4a0a33404 100644 (file)
@@ -6,6 +6,7 @@
 /*
  * Author:
  *   Lauris Kaplinski <lauris@kaplinski.com>
+ *   Kees Cook <kees@outflux.net>
  *
  * This code is in public domain
  */
 # include "config.h"
 #endif
 
-
-
+#include "inkscape.h"
+#include "desktop.h"
 #include "sp-item.h"
 #include "extension/print.h"
 #include "extension/system.h"
 #include "print.h"
 
-#if 0
-# include <extension/internal/ps.h>
+#include "ui/dialog/print.h"
 
-# ifdef WIN32
-#  include <extension/internal/win32.h>
-# endif
-
-# ifdef WITH_GNOME_PRINT
-#  include <extension/internal/gnome.h>
-# endif
-#endif
 
 /* Identity typedef */
 
@@ -131,45 +123,25 @@ sp_print_preview_document(SPDocument *doc)
 }
 
 void
-sp_print_document(SPDocument *doc, unsigned int direct)
+sp_print_document(Gtk::Window& parentWindow, SPDocument *doc)
 {
-    Inkscape::Extension::Print *mod;
-    unsigned int ret;
-
     sp_document_ensure_up_to_date(doc);
 
-    if (direct) {
-        mod = Inkscape::Extension::get_print(SP_MODULE_KEY_PRINT_PS);
-    } else {
-        mod = Inkscape::Extension::get_print(SP_MODULE_KEY_PRINT_DEFAULT);
-    }
-
-    ret = mod->setup();
-
-    if (ret) {
-        SPPrintContext context;
-        context.module = mod;
-
-        /* fixme: This has to go into module constructor somehow */
-        /* Create new arena */
-        mod->base = SP_ITEM(sp_document_root(doc));
-        mod->arena = NRArena::create();
-        mod->dkey = sp_item_display_key_new(1);
-        mod->root = sp_item_invoke_show(mod->base, mod->arena, mod->dkey, SP_ITEM_SHOW_DISPLAY);
-        /* Print document */
-        ret = mod->begin(doc);
-        sp_item_invoke_print(mod->base, &context);
-        ret = mod->finish();
-        /* Release arena */
-        sp_item_invoke_hide(mod->base, mod->dkey);
-        mod->base = NULL;
-        nr_arena_item_unref(mod->root);
-        mod->root = NULL;
-        nr_object_unref((NRObject *) mod->arena);
-        mod->arena = NULL;
-    }
-
-    return;
+    // Build arena
+    SPItem      *base = SP_ITEM(sp_document_root(doc));
+    NRArena    *arena = NRArena::create();
+    unsigned int dkey = sp_item_display_key_new(1);
+    NRArenaItem *root = sp_item_invoke_show(base, arena, dkey, SP_ITEM_SHOW_DISPLAY);
+
+    // Run print dialog
+    Inkscape::UI::Dialog::Print printop(doc,base);
+    Gtk::PrintOperationResult res = printop.run(Gtk::PRINT_OPERATION_ACTION_PRINT_DIALOG, parentWindow);
+    (void)res; // TODO handle this
+
+    // Release arena
+    sp_item_invoke_hide(base, dkey);
+    nr_arena_item_unref(root);
+    nr_object_unref((NRObject *) arena);
 }
 
 void