diff --git a/src/main.cpp b/src/main.cpp
index 6e184f4d713380a762335b55815b0d18b77506a1..dff671c638650b8f42ff98cfb9bd7a271df39d85 100644 (file)
--- a/src/main.cpp
+++ b/src/main.cpp
#include <gtk/gtkwindow.h>
#include <gtk/gtkbox.h>
-#include <gtk/gtkmain.h>
-
#include "gc-core.h"
#include "macros.h"
#include "application/application.h"
+#include "main-cmdlineact.h"
+
enum {
SP_ARG_NONE,
SP_ARG_NOGUI,
SP_ARG_EXPORT_EPS,
SP_ARG_EXPORT_PDF,
SP_ARG_EXPORT_TEXT_TO_PATH,
+ SP_ARG_EXPORT_FONT,
SP_ARG_EXPORT_BBOX_PAGE,
SP_ARG_EXTENSIONDIR,
+ SP_ARG_FIT_PAGE_TO_DRAWING,
SP_ARG_SLIDESHOW,
SP_ARG_QUERY_X,
SP_ARG_QUERY_Y,
SP_ARG_QUERY_HEIGHT,
SP_ARG_QUERY_ID,
SP_ARG_VERSION,
- SP_ARG_NEW_GUI,
SP_ARG_VACUUM_DEFS,
+ SP_ARG_VERB_LIST,
+ SP_ARG_VERB,
+ SP_ARG_SELECT,
SP_ARG_LAST
};
static gchar *sp_export_eps = NULL;
static gchar *sp_export_pdf = NULL;
static gboolean sp_export_text_to_path = FALSE;
+static gboolean sp_export_font = FALSE;
static gboolean sp_export_bbox_page = FALSE;
static gboolean sp_query_x = FALSE;
static gboolean sp_query_y = FALSE;
N_("Convert text object to paths on export (EPS)"),
NULL},
+ {"export-embed-fonts", 'F',
+ POPT_ARG_NONE, &sp_export_font, SP_ARG_EXPORT_FONT,
+ N_("Embed fonts on export (Type 1 only) (EPS)"),
+ NULL},
+
{"export-bbox-page", 'B',
POPT_ARG_NONE, &sp_export_bbox_page, SP_ARG_EXPORT_BBOX_PAGE,
N_("Export files with the bounding box set to the page size (EPS)"),
N_("Show given files one-by-one, switch to next on any key/mouse event"),
NULL},
- {"new-gui", 'G',
- POPT_ARG_NONE, &sp_new_gui, SP_ARG_NEW_GUI,
- N_("Use the new Gtkmm GUI interface"),
- NULL},
-
{"vacuum-defs", 0,
POPT_ARG_NONE, &sp_vacuum_defs, SP_ARG_VACUUM_DEFS,
N_("Remove unused definitions from the defs section(s) of the document"),
NULL},
+ {"verb-list", 0,
+ POPT_ARG_NONE, NULL, SP_ARG_VERB_LIST,
+ N_("List the IDs of all the verbs in Inkscape"),
+ NULL},
+
+ {"verb", 0,
+ POPT_ARG_STRING, NULL, SP_ARG_VERB,
+ N_("Verb to call when Inkscape opens."),
+ N_("VERB-ID")},
+
+ {"select", 0,
+ POPT_ARG_STRING, NULL, SP_ARG_SELECT,
+ N_("Object ID to select when Inkscape opens."),
+ N_("OBJECT-ID")},
+
POPT_AUTOHELP POPT_TABLEEND
};
bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
#endif
#endif
+ // Allow the user to override the locale directory by setting
+ // the environment variable INKSCAPE_LOCALEDIR.
+ char *inkscape_localedir = getenv("INKSCAPE_LOCALEDIR");
+ if (inkscape_localedir != NULL) {
+ bindtextdomain(GETTEXT_PACKAGE, inkscape_localedir);
+ }
#endif
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
} else if (!strcmp(argv[i], "-g") || !strcmp(argv[i], "--with-gui")) {
use_gui = TRUE;
break;
- } else if (!strcmp(argv[i], "-G") || !strcmp(argv[i], "--new-gui")) {
- sp_new_gui = TRUE;
- break;
}
}
}
}
+ Glib::signal_idle().connect(sigc::ptr_fun(&Inkscape::CmdLineAction::idle));
main_instance.run();
#ifdef WIN32
do_query_dimension (doc, false, sp_query_x? NR::X : NR::Y, sp_query_id);
}
}
+
fl = g_slist_remove(fl, fl->data);
}
@@ -764,15 +789,20 @@ do_query_dimension (SPDocument *doc, bool extent, NR::Dim2 const axis, const gch
if (o) {
sp_document_ensure_up_to_date (doc);
SPItem *item = ((SPItem *) o);
- NR::Rect area = item->invokeBbox(sp_item_i2doc_affine(item)); // "true" SVG bbox for scripting
- Inkscape::SVGOStringStream os;
- if (extent) {
- os << area.extent(axis);
+ // "true" SVG bbox for scripting
+ NR::Maybe<NR::Rect> area = item->getBounds(sp_item_i2doc_affine(item));
+ if (area) {
+ Inkscape::SVGOStringStream os;
+ if (extent) {
+ os << area->extent(axis);
+ } else {
+ os << area->min()[axis];
+ }
+ g_print ("%s", os.str().c_str());
} else {
- os << area.min()[axis];
+ g_print("0");
}
- g_print ("%s", os.str().c_str());
}
}
}
bool old_text_to_path = false;
+ bool old_font_embedded = false;
bool old_bbox_page = false;
try {
@@ -1013,6 +1044,14 @@ static void do_export_ps(SPDocument* doc, gchar const* uri, char const* mime)
g_warning ("Could not set export-text-to-path option for this export.");
}
+ try {
+ old_font_embedded = (*i)->get_param_bool("fontEmbedded");
+ (*i)->set_param_bool("fontEmbedded", sp_export_font);
+ }
+ catch (...) {
+ g_warning ("Could not set export-font option for this export.");
+ }
+
try {
old_bbox_page = (*i)->get_param_bool("pageBoundingBox");
(*i)->set_param_bool("pageBoundingBox", sp_export_bbox_page);
try {
(*i)->set_param_bool("textToPath", old_text_to_path);
+ (*i)->set_param_bool("fontEmbedded", old_font_embedded);
(*i)->set_param_bool("pageBoundingBox", old_bbox_page);
}
catch (...) {
exit(0);
break;
}
+ case SP_ARG_VERB_LIST: {
+ // This really shouldn't go here, we should init the app.
+ // But, since we're just exiting in this path, there is
+ // no harm, and this is really a better place to put
+ // everything else.
+ Inkscape::Extension::init();
+ Inkscape::Verb::list();
+ exit(0);
+ break;
+ }
+ case SP_ARG_VERB:
+ case SP_ARG_SELECT: {
+ gchar const *arg = poptGetOptArg(ctx);
+ if (arg != NULL) {
+ // printf("Adding in: %s\n", arg);
+ new Inkscape::CmdLineAction((a == SP_ARG_VERB), arg);
+ }
+ break;
+ }
default: {
break;
}