X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fmain.cpp;h=991a95adda6554cdfb1eee20e3f3145480c661f1;hb=6c595e36654ecec0439ccae1289925017641dc1b;hp=eb060570f1ebd0e3d422622ec0a042e3c6ffa8bc;hpb=c3d688e0db18349170361840c5834631a4d8ea70;p=inkscape.git diff --git a/src/main.cpp b/src/main.cpp index eb060570f..991a95add 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -28,6 +28,9 @@ #endif #include "path-prefix.h" +// This has to be included prior to anything that includes setjmp.h, it croaks otherwise +#include + #include #ifdef HAVE_IEEEFP_H @@ -45,6 +48,7 @@ #include #include +#include #include #include #include @@ -68,8 +72,7 @@ #include "svg/stringstream.h" #include "inkscape-private.h" -#include "inkscape-stock.h" -#include "inkscape_version.h" +#include "inkscape-version.h" #include "sp-namedview.h" #include "sp-guide.h" @@ -110,10 +113,10 @@ using Inkscape::Extension::Internal::PrintWin32; #endif #include "application/application.h" - #include "main-cmdlineact.h" +#include "widgets/icon.h" +#include "ui/widget/panel.h" -#include #include enum { @@ -167,7 +170,7 @@ static void do_export_ps_pdf(SPDocument* doc, gchar const* uri, char const *mime #ifdef WIN32 static void do_export_emf(SPDocument* doc, gchar const* uri, char const *mime); #endif //WIN32 -static void do_query_dimension (SPDocument *doc, bool extent, NR::Dim2 const axis, const gchar *id); +static void do_query_dimension (SPDocument *doc, bool extent, Geom::Dim2 const axis, const gchar *id); static void do_query_all (SPDocument *doc); static void do_query_all_recurse (SPObject *o); @@ -562,6 +565,9 @@ main(int argc, char **argv) rt.setPathInfo(); #endif + // Prevents errors like "Unable to wrap GdkPixbuf..." (in nr-filter-image.cpp for example) + Gtk::Main::init_gtkmm_internals(); + // Bug #197475 set_extensions_env(); @@ -830,19 +836,20 @@ sp_main_gui(int argc, char const **argv) int retVal = sp_common_main( argc, argv, &fl ); g_return_val_if_fail(retVal == 0, 1); - inkscape_gtk_stock_init(); + // Add our icon directory to the search path for icon theme lookups. + gchar *usericondir = profile_path("icons"); + gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(), usericondir); + gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(), INKSCAPE_PIXMAPDIR); + g_free(usericondir); gdk_event_handler_set((GdkEventFunc)snooper, NULL, NULL); - 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))) { - gtk_window_set_default_icon_from_file(filename, NULL); - } - g_free (filename); - filename = 0; + // Set default window icon. Obeys the theme. + gtk_window_set_default_icon_name("inkscape"); + // Do things that were previously in inkscape_gtk_stock_init(). + sp_icon_get_phys_size(GTK_ICON_SIZE_MENU); + Inkscape::UI::Widget::Panel::prep(); gboolean create_new = TRUE; @@ -922,9 +929,9 @@ void sp_process_file_list(GSList *fl) if (sp_query_all) { do_query_all (doc); } else if (sp_query_width || sp_query_height) { - do_query_dimension (doc, true, sp_query_width? NR::X : NR::Y, sp_query_id); + do_query_dimension (doc, true, sp_query_width? Geom::X : Geom::Y, sp_query_id); } else if (sp_query_x || sp_query_y) { - do_query_dimension (doc, false, sp_query_x? NR::X : NR::Y, sp_query_id); + do_query_dimension (doc, false, sp_query_x? Geom::X : Geom::Y, sp_query_id); } delete doc; @@ -948,7 +955,7 @@ int sp_main_shell(char const* command_name) gsize sizeLeft = buffer_size - offset; gchar *useme = command_line + offset; - fprintf(stdout, "Inkscape %s interactive shell mode. Type 'quit' to quit.\n", INKSCAPE_VERSION); + fprintf(stdout, "Inkscape %s interactive shell mode. Type 'quit' to quit.\n", Inkscape::version_string); fflush(stdout); char* linedata = 0; do { @@ -1041,7 +1048,7 @@ int sp_main_console(int argc, char const **argv) } static void -do_query_dimension (SPDocument *doc, bool extent, NR::Dim2 const axis, const gchar *id) +do_query_dimension (SPDocument *doc, bool extent, Geom::Dim2 const axis, const gchar *id) { SPObject *o = NULL; @@ -1191,7 +1198,7 @@ sp_do_export_png(SPDocument *doc) // write object bbox to area sp_document_ensure_up_to_date (doc); Geom::OptRect areaMaybe; - sp_item_invoke_bbox((SPItem *) o_area, areaMaybe, sp_item_i2r_affine((SPItem *) o_area), TRUE); + sp_item_invoke_bbox((SPItem *) o_area, areaMaybe, sp_item_i2d_affine((SPItem *) o_area), TRUE); if (areaMaybe) { area = *areaMaybe; } else { @@ -1721,7 +1728,7 @@ sp_process_args(poptContext ctx) break; } case SP_ARG_VERSION: { - printf("Inkscape %s (%s)\n", INKSCAPE_VERSION, __DATE__); + printf("Inkscape %s (%s)\n", Inkscape::version_string, __DATE__); exit(0); break; }