diff --git a/src/main.cpp b/src/main.cpp
index 4476b3892940c5f9d0f4d93934c8d23dfde331f0..dff671c638650b8f42ff98cfb9bd7a271df39d85 100644 (file)
--- a/src/main.cpp
+++ b/src/main.cpp
#include "application/application.h"
+#include "main-cmdlineact.h"
+
enum {
SP_ARG_NONE,
SP_ARG_NOGUI,
SP_ARG_VERSION,
SP_ARG_VACUUM_DEFS,
SP_ARG_VERB_LIST,
+ SP_ARG_VERB,
+ SP_ARG_SELECT,
SP_ARG_LAST
};
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
};
}
}
+ 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);
}
@@ -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<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());
}
}
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;
}