X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fmain.cpp;h=f7be7d9400d86f3a4a1a044972d0d8d1c7726f30;hb=2dab2da6e1e49c33c13eae464884775c71311497;hp=49df2f3cd22e64dc06708e3ce0bfb12f29e465ad;hpb=4c38f98aec76497808cf14864ee2d45e123568b6;p=inkscape.git diff --git a/src/main.cpp b/src/main.cpp index 49df2f3cd..f7be7d940 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -108,6 +108,8 @@ using Inkscape::Extension::Internal::PrintWin32; #include "application/application.h" +#include "main-cmdlineact.h" + enum { SP_ARG_NONE, SP_ARG_NOGUI, @@ -144,6 +146,9 @@ enum { SP_ARG_QUERY_ID, SP_ARG_VERSION, SP_ARG_VACUUM_DEFS, + SP_ARG_VERB_LIST, + SP_ARG_VERB, + SP_ARG_SELECT, SP_ARG_LAST }; @@ -321,12 +326,6 @@ struct poptOption options[] = { N_("Export files with the bounding box set to the page size (EPS)"), NULL}, - /* - {"fit-page-to-drawing", 'S', - POPT_ARG_NONE, &sp_export_bbox_page, SP_ARG_FIT_PAGE_TO_DRAWING, - N_("Fits page to drawing and saves changes in place"), - NULL}, - */ {"query-x", 'X', POPT_ARG_NONE, &sp_query_x, SP_ARG_QUERY_X, // TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" @@ -372,6 +371,21 @@ struct poptOption options[] = { 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 }; @@ -402,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"); @@ -654,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 @@ -736,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); } @@ -1370,6 +1392,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; }