X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain.cpp;h=dff671c638650b8f42ff98cfb9bd7a271df39d85;hb=ed7e0c1c7763ae6961d4fe2a987536657323cdad;hp=4476b3892940c5f9d0f4d93934c8d23dfde331f0;hpb=3abacc56a45005317f51918f7c96c898065cb738;p=inkscape.git diff --git a/src/main.cpp b/src/main.cpp index 4476b3892..dff671c63 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, @@ -145,6 +147,8 @@ enum { SP_ARG_VERSION, SP_ARG_VACUUM_DEFS, SP_ARG_VERB_LIST, + SP_ARG_VERB, + SP_ARG_SELECT, SP_ARG_LAST }; @@ -372,6 +376,16 @@ struct poptOption options[] = { 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 }; @@ -660,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 @@ -742,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); } @@ -773,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()); } } @@ -1386,6 +1407,15 @@ sp_process_args(poptContext ctx) 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; }