diff --git a/src/main.cpp b/src/main.cpp
index d9e3138f956ece14f226c6e4e5d410d650388c0e..87913a80144e11ea01b536195afd8608b822bc44 100644 (file)
--- a/src/main.cpp
+++ b/src/main.cpp
#include "sp-object.h"
#include "interface.h"
#include "print.h"
-#include "slideshow.h"
#include "color.h"
#include "sp-item.h"
#include "sp-root.h"
#include "io/sys.h"
#include "debug/logger.h"
+#include "debug/log-display-config.h"
#include "helper/png-write.h"
#include "application/application.h"
+#include "main-cmdlineact.h"
+
enum {
SP_ARG_NONE,
SP_ARG_NOGUI,
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,
SP_ARG_QUERY_WIDTH,
@@ -159,7 +160,6 @@ static void do_query_dimension (SPDocument *doc, bool extent, NR::Dim2 const axi
static gchar *sp_global_printer = NULL;
-static gboolean sp_global_slideshow = FALSE;
static gchar *sp_export_png = NULL;
static gchar *sp_export_dpi = NULL;
static gchar *sp_export_area = NULL;
N_("Print out the extension directory and exit"),
NULL},
- {"slideshow", 's',
- POPT_ARG_NONE, &sp_global_slideshow, SP_ARG_SLIDESHOW,
- N_("Show given files one-by-one, switch to next on any key/mouse event"),
- 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"),
POPT_AUTOHELP POPT_TABLEEND
};
-#include <ui/view/view.h>
-#include <desktop.h>
-#include <desktop-handles.h>
-#include <helper/action.h>
-#include <selection.h>
-
-class CmdLineAction {
- gint _type;
- gchar * _arg;
-
- static std::list <CmdLineAction *> _list;
-
-public:
- CmdLineAction (gint type, gchar const * arg) : _type(type), _arg(NULL) {
- if (arg != NULL) {
- _arg = g_strdup(arg);
- }
-
- _list.insert(_list.end(), this);
-
- return;
- }
-
- ~CmdLineAction () {
- if (_arg != NULL) {
- g_free(_arg);
- }
- }
-
- void doIt (Inkscape::UI::View::View * view) {
- //printf("Doing: %s\n", _arg);
- switch (_type) {
- case SP_ARG_VERB: {
- Inkscape::Verb * verb = Inkscape::Verb::getbyid(_arg);
- if (verb == NULL) {
- printf(_("Unable to find verb ID '%s' specified on the command line.\n"), _arg);
- break;
- }
- SPAction * action = verb->get_action(view);
- sp_action_perform(action, NULL);
- break;
- }
- case SP_ARG_SELECT: {
- SPDesktop * desktop = dynamic_cast<SPDesktop *>(view);
- if (desktop == NULL) { break; }
-
- SPDocument * doc = view->doc();
- SPObject * obj = doc->getObjectById(_arg);
- if (obj == NULL) {
- printf("Unable to find node ID: '%s'\n", _arg);
- break;
- }
-
- Inkscape::Selection * selection = sp_desktop_selection(desktop);
- selection->add(obj, false);
- break;
- }
- }
- }
-
- static void doList (Inkscape::UI::View::View * view) {
- for (std::list<CmdLineAction *>::iterator i = _list.begin();
- i != _list.end(); i++) {
- CmdLineAction * entry = *i;
- entry->doIt(view);
- }
- }
-
- static bool 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(desktop);
- }
- return false;
- }
-};
-std::list <CmdLineAction *> CmdLineAction::_list;
-
-
static bool needToRecodeParams = true;
gchar* blankParam = "";
inkscape_gtk_stock_init();
+ Inkscape::Debug::log_display_config();
+
/* Set default icon */
gchar *filename = (gchar *) g_build_filename (INKSCAPE_APPICONDIR, "inkscape.png", NULL);
if (Inkscape::IO::file_test(filename, (GFileTest)(G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_SYMLINK))) {
g_free (filename);
filename = 0;
- if (!sp_global_slideshow) {
- gboolean create_new = TRUE;
+ gboolean create_new = TRUE;
- /// \todo FIXME BROKEN - non-UTF-8 sneaks in here.
- inkscape_application_init(argv[0], true);
+ /// \todo FIXME BROKEN - non-UTF-8 sneaks in here.
+ inkscape_application_init(argv[0], true);
- while (fl) {
- if (sp_file_open((gchar *)fl->data,NULL)) {
- create_new=FALSE;
- }
- fl = g_slist_remove(fl, fl->data);
- }
- if (create_new) {
- sp_file_new_default();
- }
- } else {
- if (fl) {
- GtkWidget *ss;
- /// \todo FIXME BROKEN - non-UTF-8 sneaks in here.
- inkscape_application_init(argv[0], true);
- ss = sp_slideshow_new(fl);
- if (ss) gtk_widget_show(ss);
- } else {
- g_warning ("No slides to display");
- exit(0);
+ while (fl) {
+ if (sp_file_open((gchar *)fl->data,NULL)) {
+ create_new=FALSE;
}
+ fl = g_slist_remove(fl, fl->data);
+ }
+ if (create_new) {
+ sp_file_new_default();
}
- Glib::signal_idle().connect(sigc::ptr_fun(&CmdLineAction::idle));
+ Glib::signal_idle().connect(sigc::ptr_fun(&Inkscape::CmdLineAction::idle));
main_instance.run();
#ifdef WIN32
} else if (sp_query_x || sp_query_y) {
do_query_dimension (doc, false, sp_query_x? NR::X : NR::Y, sp_query_id);
}
-
- //CmdLineAction::doList(doc);
}
fl = g_slist_remove(fl, fl->data);
@@ -875,15 +771,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());
}
}
gchar const *arg = poptGetOptArg(ctx);
if (arg != NULL) {
// printf("Adding in: %s\n", arg);
- new CmdLineAction(a, arg);
+ new Inkscape::CmdLineAction((a == SP_ARG_VERB), arg);
}
break;
}