Code

Patch from Debian bug tracker from Daniel Kahn Gillmor
[inkscape.git] / src / inkscape.cpp
index 71c5d422fcb4217868ff36a7b6341b3933becf01..b7af482b2f87c583f9df51c593a8883c8109a993 100644 (file)
@@ -473,9 +473,9 @@ inkscape_segv_handler (int signum)
 
     /* Show nice dialog box */
 
-    char const *istr = N_("Inkscape encountered an internal error and will close now.\n");
-    char const *sstr = N_("Automatic backups of unsaved documents were done to the following locations:\n");
-    char const *fstr = N_("Automatic backup of the following documents failed:\n");
+    char const *istr = _("Inkscape encountered an internal error and will close now.\n");
+    char const *sstr = _("Automatic backups of unsaved documents were done to the following locations:\n");
+    char const *fstr = _("Automatic backup of the following documents failed:\n");
     gint nllen = strlen ("\n");
     gint len = strlen (istr) + strlen (sstr) + strlen (fstr);
     for (GSList *l = savednames; l != NULL; l = l->next) {
@@ -561,16 +561,18 @@ inkscape_application_init (const gchar *argv0, gboolean use_gui)
     Inkscape::Preferences::load();
     inkscape_load_menus(inkscape);
 
-    /* DebugDialog redirection.  On Linux, default to OFF, on Win32, default to ON */
+    /* DebugDialog redirection.  On Linux, default to OFF, on Win32, default to ON.
+        * Use only if use_gui is enabled 
+        */
 #ifdef WIN32
 #define DEFAULT_LOG_REDIRECT true
 #else
 #define DEFAULT_LOG_REDIRECT false
 #endif
 
-    if (prefs_get_int_attribute("dialogs.debug", "redirect", DEFAULT_LOG_REDIRECT))
+    if (use_gui == TRUE && prefs_get_int_attribute("dialogs.debug", "redirect", DEFAULT_LOG_REDIRECT))
     {
-        Inkscape::UI::Dialogs::DebugDialog::getInstance()->captureLogMessages();
+               Inkscape::UI::Dialogs::DebugDialog::getInstance()->captureLogMessages();
     }
 
     /* Initialize the extensions */
@@ -711,6 +713,7 @@ inkscape_get_repr (Inkscape::Application *inkscape, const gchar *key)
     }
 
     Inkscape::XML::Node *repr = sp_repr_document_root (Inkscape::Preferences::get());
+    if (!repr) return NULL;
     g_assert (!(strcmp (repr->name(), "inkscape")));
 
     gchar const *s = key;
@@ -839,9 +842,9 @@ inkscape_add_desktop (SPDesktop * desktop)
 
     if (DESKTOP_IS_ACTIVE (desktop)) {
         g_signal_emit (G_OBJECT (inkscape), inkscape_signals[ACTIVATE_DESKTOP], 0, desktop);
-        g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_EVENTCONTEXT], 0, SP_DT_EVENTCONTEXT (desktop));
-        g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_SELECTION], 0, SP_DT_SELECTION (desktop));
-        g_signal_emit (G_OBJECT (inkscape), inkscape_signals[CHANGE_SELECTION], 0, SP_DT_SELECTION (desktop));
+        g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_EVENTCONTEXT], 0, sp_desktop_event_context (desktop));
+        g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_SELECTION], 0, sp_desktop_selection (desktop));
+        g_signal_emit (G_OBJECT (inkscape), inkscape_signals[CHANGE_SELECTION], 0, sp_desktop_selection (desktop));
     }
 }
 
@@ -867,13 +870,13 @@ inkscape_remove_desktop (SPDesktop * desktop)
             inkscape->desktops = g_slist_remove (inkscape->desktops, new_desktop);
             inkscape->desktops = g_slist_prepend (inkscape->desktops, new_desktop);
             g_signal_emit (G_OBJECT (inkscape), inkscape_signals[ACTIVATE_DESKTOP], 0, new_desktop);
-            g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_EVENTCONTEXT], 0, SP_DT_EVENTCONTEXT (new_desktop));
-            g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_SELECTION], 0, SP_DT_SELECTION (new_desktop));
-            g_signal_emit (G_OBJECT (inkscape), inkscape_signals[CHANGE_SELECTION], 0, SP_DT_SELECTION (new_desktop));
+            g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_EVENTCONTEXT], 0, sp_desktop_event_context (new_desktop));
+            g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_SELECTION], 0, sp_desktop_selection (new_desktop));
+            g_signal_emit (G_OBJECT (inkscape), inkscape_signals[CHANGE_SELECTION], 0, sp_desktop_selection (new_desktop));
         } else {
             g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_EVENTCONTEXT], 0, NULL);
-            if (SP_DT_SELECTION(desktop))
-                SP_DT_SELECTION(desktop)->clear();
+            if (sp_desktop_selection(desktop))
+                sp_desktop_selection(desktop)->clear();
         }
     }
 
@@ -912,9 +915,9 @@ inkscape_activate_desktop (SPDesktop * desktop)
     inkscape->desktops = g_slist_prepend (inkscape->desktops, desktop);
 
     g_signal_emit (G_OBJECT (inkscape), inkscape_signals[ACTIVATE_DESKTOP], 0, desktop);
-    g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_EVENTCONTEXT], 0, SP_DT_EVENTCONTEXT (desktop));
-    g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_SELECTION], 0, SP_DT_SELECTION (desktop));
-    g_signal_emit (G_OBJECT (inkscape), inkscape_signals[CHANGE_SELECTION], 0, SP_DT_SELECTION (desktop));
+    g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_EVENTCONTEXT], 0, sp_desktop_event_context (desktop));
+    g_signal_emit (G_OBJECT (inkscape), inkscape_signals[SET_SELECTION], 0, sp_desktop_selection (desktop));
+    g_signal_emit (G_OBJECT (inkscape), inkscape_signals[CHANGE_SELECTION], 0, sp_desktop_selection (desktop));
 }
 
 
@@ -1145,7 +1148,7 @@ inkscape_active_document (void)
         return Inkscape::NSApplication::Editor::getActiveDocument();
 
     if (SP_ACTIVE_DESKTOP) {
-        return SP_DT_DOCUMENT (SP_ACTIVE_DESKTOP);
+        return sp_desktop_document (SP_ACTIVE_DESKTOP);
     }
 
     return NULL;
@@ -1170,7 +1173,7 @@ SPEventContext *
 inkscape_active_event_context (void)
 {
     if (SP_ACTIVE_DESKTOP) {
-        return SP_DT_EVENTCONTEXT (SP_ACTIVE_DESKTOP);
+        return sp_desktop_event_context (SP_ACTIVE_DESKTOP);
     }
 
     return NULL;
@@ -1399,6 +1402,14 @@ inkscape_get_menus (Inkscape::Application * inkscape)
     return repr->firstChild();
 }
 
+void
+inkscape_get_all_desktops(std::list< SPDesktop* >& listbuf)
+{
+    for(GSList* l = inkscape->desktops; l != NULL; l = l->next) {
+        listbuf.push_back(static_cast< SPDesktop* >(l->data));
+    }
+}
+
 
 
 /*