X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fmain.cpp;h=dff671c638650b8f42ff98cfb9bd7a271df39d85;hb=ed7e0c1c7763ae6961d4fe2a987536657323cdad;hp=6e184f4d713380a762335b55815b0d18b77506a1;hpb=d067a873246bc4e8a1dd7170c1831113167c80aa;p=inkscape.git diff --git a/src/main.cpp b/src/main.cpp index 6e184f4d7..dff671c63 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -48,8 +48,6 @@ #include #include -#include - #include "gc-core.h" #include "macros.h" @@ -110,6 +108,8 @@ using Inkscape::Extension::Internal::PrintWin32; #include "application/application.h" +#include "main-cmdlineact.h" + enum { SP_ARG_NONE, SP_ARG_NOGUI, @@ -134,8 +134,10 @@ enum { 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, @@ -143,8 +145,10 @@ enum { 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 }; @@ -176,6 +180,7 @@ static gchar *sp_export_ps = NULL; 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; @@ -311,6 +316,11 @@ struct poptOption options[] = { 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)"), @@ -356,16 +366,26 @@ struct poptOption options[] = { 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 }; @@ -396,6 +416,12 @@ main(int argc, char **argv) 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"); @@ -467,9 +493,6 @@ main(int argc, char **argv) } 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; } } @@ -651,6 +674,7 @@ sp_main_gui(int argc, char const **argv) } } + Glib::signal_idle().connect(sigc::ptr_fun(&Inkscape::CmdLineAction::idle)); main_instance.run(); #ifdef WIN32 @@ -733,6 +757,7 @@ sp_main_console(int argc, char const **argv) 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 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()); } } @@ -1003,6 +1033,7 @@ static void do_export_ps(SPDocument* doc, gchar const* uri, char const* mime) } 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); @@ -1025,6 +1064,7 @@ static void do_export_ps(SPDocument* doc, gchar const* uri, char const* mime) 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 (...) { @@ -1357,6 +1397,25 @@ sp_process_args(poptContext ctx) 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; }