summaryrefslogtreecommitdiffstats
path: root/src/main-cmdlineact.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main-cmdlineact.cpp')
-rw-r--r--src/main-cmdlineact.cpp118
1 files changed, 67 insertions, 51 deletions
diff --git a/src/main-cmdlineact.cpp b/src/main-cmdlineact.cpp
index 496c16d5d..03bf4083c 100644
--- a/src/main-cmdlineact.cpp
+++ b/src/main-cmdlineact.cpp
@@ -10,11 +10,11 @@
#include <ui/view/view.h>
#include <desktop.h>
#include <helper/action.h>
-#include <helper/action-context.h>
#include <selection.h>
#include <verbs.h>
#include <inkscape.h>
#include <document.h>
+#include <file.h>
#include <glibmm/i18n.h>
@@ -25,73 +25,89 @@ namespace Inkscape {
std::list <CmdLineAction *> CmdLineAction::_list;
CmdLineAction::CmdLineAction (bool isVerb, gchar const * arg) : _isVerb(isVerb), _arg(NULL) {
- if (arg != NULL) {
- _arg = g_strdup(arg);
- }
+ if (arg != NULL) {
+ _arg = g_strdup(arg);
+ }
- _list.insert(_list.end(), this);
+ _list.insert(_list.end(), this);
- return;
+ return;
}
CmdLineAction::~CmdLineAction () {
- if (_arg != NULL) {
- g_free(_arg);
- }
+ if (_arg != NULL) {
+ g_free(_arg);
+ }
+}
+
+bool
+CmdLineAction::isExtended() {
+ return false;
+}
+
+void
+CmdLineAction::doItX (ActionContext const & context)
+{
+ (void)context;
+ printf("CmdLineAction::doItX() %s\n", _arg);
}
void
CmdLineAction::doIt (ActionContext const & context) {
- //printf("Doing: %s\n", _arg);
- if (_isVerb) {
- Inkscape::Verb * verb = Inkscape::Verb::getbyid(_arg);
- if (verb == NULL) {
- printf(_("Unable to find verb ID '%s' specified on the command line.\n"), _arg);
- return;
- }
- SPAction * action = verb->get_action(context);
- sp_action_perform(action, NULL);
- } else {
- if (context.getDocument() == NULL || context.getSelection() == NULL) { return; }
-
- SPDocument * doc = context.getDocument();
- SPObject * obj = doc->getObjectById(_arg);
- if (obj == NULL) {
- printf(_("Unable to find node ID: '%s'\n"), _arg);
- return;
- }
-
- Inkscape::Selection * selection = context.getSelection();
- selection->add(obj, false);
- }
- return;
+ //printf("Doing: %s\n", _arg);
+ if (_isVerb) {
+ if (isExtended()) {
+ doItX(context);
+ return;
+ }
+
+ Inkscape::Verb * verb = Inkscape::Verb::getbyid(_arg);
+ if (verb == NULL) {
+ printf(_("Unable to find verb ID '%s' specified on the command line.\n"), _arg);
+ return;
+ }
+ SPAction * action = verb->get_action(context);
+ sp_action_perform(action, NULL);
+ } else {
+ if (context.getDocument() == NULL || context.getSelection() == NULL) { return; }
+
+ SPDocument * doc = context.getDocument();
+ SPObject * obj = doc->getObjectById(_arg);
+ if (obj == NULL) {
+ printf(_("Unable to find node ID: '%s'\n"), _arg);
+ return;
+ }
+
+ Inkscape::Selection * selection = context.getSelection();
+ selection->add(obj);
+ }
+ return;
}
bool
CmdLineAction::doList (ActionContext const & context) {
- bool hasActions = !_list.empty();
- for (std::list<CmdLineAction *>::iterator i = _list.begin();
- i != _list.end(); ++i) {
- CmdLineAction * entry = *i;
- entry->doIt(context);
- }
- return hasActions;
+ bool hasActions = !_list.empty();
+ for (std::list<CmdLineAction *>::iterator i = _list.begin(); i != _list.end(); ++i) {
+ CmdLineAction * entry = *i;
+ entry->doIt(context);
+ }
+ return hasActions;
}
bool
CmdLineAction::idle (void) {
- std::list<SPDesktop *> desktops;
- INKSCAPE.get_all_desktops(desktops);
-
- // We're going to assume one desktop per document, because no one
- // should have had time to make more at this point.
- for (std::list<SPDesktop *>::iterator i = desktops.begin();
- i != desktops.end(); ++i) {
- SPDesktop * desktop = *i;
- //Inkscape::UI::View::View * view = dynamic_cast<Inkscape::UI::View::View *>(desktop);
- doList(ActionContext(desktop));
- }
- return false;
+ std::list<SPDesktop *> desktops;
+ INKSCAPE.get_all_desktops(desktops);
+
+ // We're going to assume one desktop per document, because no one
+ // should have had time to make more at this point.
+ for (std::list<SPDesktop *>::iterator i = desktops.begin();
+ i != desktops.end(); ++i) {
+ SPDesktop * desktop = *i;
+ //Inkscape::UI::View::View * view = dynamic_cast<Inkscape::UI::View::View *>(desktop);
+ doList(ActionContext(desktop));
+ }
+ return false;
}
} // Inkscape