Code

Merge and cleanup of GSoC C++-ification project.
[inkscape.git] / src / main.cpp
index a25343991077ce4af4018041e76b1fe7b9fee625..a1b21cc4d0f65b1cf1fb3ad2cba4787ab2648ec0 100644 (file)
@@ -1,5 +1,3 @@
-#define __MAIN_C__
-
 /** \file
  * Inkscape - an ambitious vector drawing program
  *
@@ -15,6 +13,8 @@
  *   Pawel Palucha
  *   Bryce Harrington <bryce@bryceharrington.com>
  * ... and various people who have worked with various projects
+ *   Jon A. Cruz <jon@oncruz.org>
+ *   Abhishek Sharma
  *
  * Copyright (C) 1999-2004 authors
  * Copyright (C) 2001-2002 Ximian, Inc.
@@ -114,7 +114,6 @@ using Inkscape::Extension::Internal::PrintWin32;
 #define bind_textdomain_codeset(p,c)
 #endif
 
-#include "application/application.h"
 #include "main-cmdlineact.h"
 #include "widgets/icon.h"
 #include "ui/widget/panel.h"
@@ -208,7 +207,6 @@ static gboolean sp_query_width = FALSE;
 static gboolean sp_query_height = FALSE;
 static gboolean sp_query_all = FALSE;
 static gchar *sp_query_id = NULL;
-static int sp_new_gui = FALSE;
 static gboolean sp_shell = FALSE;
 static gboolean sp_vacuum_defs = FALSE;
 
@@ -713,10 +711,15 @@ main(int argc, char **argv)
     }
 #endif // WIN32
 
-    /// \todo  Should this be a static object (see inkscape.cpp)?
-    Inkscape::NSApplication::Application app(argc, argv, use_gui, sp_new_gui);
+    int retcode;
+
+    if (use_gui) {
+        retcode = sp_main_gui(argc, (const char **) argv);
+    } else {
+        retcode = sp_main_console(argc, (const char **) argv);
+    }
 
-    return app.run();
+    return retcode;
 }
 
 
@@ -1020,7 +1023,7 @@ void sp_process_file_list(GSList *fl)
             g_warning("Specified document %s cannot be opened (does not exist or not a valid SVG file)", filename);
         } else {
             if (sp_vacuum_defs) {
-                doc->vacuum_document();
+                doc->vacuumDocument();
             }
             if (sp_vacuum_defs && !sp_export_svg) {
                 // save under the name given in the command line
@@ -1037,9 +1040,9 @@ void sp_process_file_list(GSList *fl)
                 Inkscape::XML::Node *repr;
                 rdoc = sp_repr_document_new("svg:svg");
                 repr = rdoc->root();
-                repr = sp_document_root(doc)->updateRepr(rdoc, repr, SP_OBJECT_WRITE_BUILD);
+                repr = doc->getRoot()->updateRepr(rdoc, repr, SP_OBJECT_WRITE_BUILD);
                 sp_repr_save_rebased_file(repr->document(), sp_export_svg, SP_SVG_NS_URI,
-                                          doc->base, sp_export_svg);
+                                          doc->getBase(), sp_export_svg);
             }
             if (sp_export_ps) {
                 do_export_ps_pdf(doc, sp_export_ps, "image/x-postscript");
@@ -1193,11 +1196,11 @@ do_query_dimension (SPDocument *doc, bool extent, Geom::Dim2 const axis, const g
             return;
         }
     } else {
-        o = SP_DOCUMENT_ROOT(doc);
+        o = doc->getRoot();
     }
 
     if (o) {
-        doc->ensure_up_to_date ();
+        doc->ensureUpToDate();
         SPItem *item = ((SPItem *) o);
 
         // "true" SVG bbox for scripting
@@ -1216,15 +1219,12 @@ do_query_dimension (SPDocument *doc, bool extent, Geom::Dim2 const axis, const g
     }
 }
 
-static void
-do_query_all (SPDocument *doc)
+static void do_query_all(SPDocument *doc)
 {
-    SPObject *o = NULL;
-
-    o = SP_DOCUMENT_ROOT(doc);
+    SPObject *o = doc->getRoot();
 
     if (o) {
-        doc->ensure_up_to_date ();
+        doc->ensureUpToDate();
         do_query_all_recurse(o);
     }
 }
@@ -1274,12 +1274,12 @@ sp_do_export_png(SPDocument *doc)
         SPObject *o_area = NULL;
         if (sp_export_id && sp_export_area_drawing) {
             o = doc->getObjectById(sp_export_id);
-            o_area = SP_DOCUMENT_ROOT (doc);
+            o_area = doc->getRoot();
         } else if (sp_export_id) {
             o = doc->getObjectById(sp_export_id);
             o_area = o;
         } else if (sp_export_area_drawing) {
-            o = SP_DOCUMENT_ROOT (doc);
+            o = doc->getRoot();
             o_area = o;
         }
 
@@ -1327,7 +1327,7 @@ sp_do_export_png(SPDocument *doc)
             }
 
             // write object bbox to area
-            doc->ensure_up_to_date ();
+            doc->ensureUpToDate();
             Geom::OptRect areaMaybe;
             static_cast<SPItem *>(o_area)->invoke_bbox( areaMaybe, static_cast<SPItem *>(o_area)->i2d_affine(), TRUE);
             if (areaMaybe) {
@@ -1345,14 +1345,14 @@ sp_do_export_png(SPDocument *doc)
     if (sp_export_area) {
         /* Try to parse area (given in SVG pixels) */
         gdouble x0,y0,x1,y1;
-        if (!sscanf(sp_export_area, "%lg:%lg:%lg:%lg", &x0, &y0, &x1, &y1) == 4) {
+        if (sscanf(sp_export_area, "%lg:%lg:%lg:%lg", &x0, &y0, &x1, &y1) != 4) {
             g_warning("Cannot parse export area '%s'; use 'x0:y0:x1:y1'. Nothing exported.", sp_export_area);
             return;
         }
         area = Geom::Rect(Geom::Interval(x0,x1), Geom::Interval(y0,y1));
     } else if (sp_export_area_page || !(sp_export_id || sp_export_area_drawing)) {
         /* Export the whole page: note: Inkscape uses 'page' in all menus and dialogs, not 'canvas' */
-        doc->ensure_up_to_date ();
+        doc->ensureUpToDate();
         Geom::Point origin (SP_ROOT(doc->root)->x.computed, SP_ROOT(doc->root)->y.computed);
         area = Geom::Rect(origin, origin + doc->getDimensions());
     }
@@ -1448,8 +1448,8 @@ sp_do_export_png(SPDocument *doc)
     gchar *path = 0;
     if (filename_from_hint) {
         //Make relative paths go from the document location, if possible:
-        if (!g_path_is_absolute(filename) && doc->uri) {
-            gchar *dirname = g_path_get_dirname(doc->uri);
+        if (!g_path_is_absolute(filename) && doc->getURI()) {
+            gchar *dirname = g_path_get_dirname(doc->getURI());
             if (dirname) {
                 path = g_build_filename(dirname, filename, NULL);
                 g_free(dirname);