X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fapp.cpp;h=7ea2e74cf1447ac3eccb96576816d8d1bf26ca28;hb=463ee5de2f498c86ffa7ad30f851729da621c908;hp=beb061d2efe6242934480610cadc1b017adfc5b2;hpb=6378887f493519667554c9cb3eb7a576440459d6;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/app.cpp b/synfig-studio/trunk/src/gtkmm/app.cpp index beb061d..7ea2e74 100644 --- a/synfig-studio/trunk/src/gtkmm/app.cpp +++ b/synfig-studio/trunk/src/gtkmm/app.cpp @@ -8,6 +8,7 @@ ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley ** Copyright (c) 2007, 2008 Chris Moore ** Copyright (c) 2008 Gerald Young +** Copyright (c) 2008 Carlos López ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -274,6 +275,7 @@ bool studio::App::use_colorspace_gamma=true; bool studio::App::single_threaded=false; #endif bool studio::App::restrict_radius_ducks=false; +bool studio::App::resize_imported_images=false; String studio::App::custom_filename_prefix(DEFAULT_FILENAME_PREFIX); int studio::App::preferred_x_size=480; int studio::App::preferred_y_size=270; @@ -510,6 +512,11 @@ public: value=strprintf("%i",(int)App::restrict_radius_ducks); return true; } + if(key=="resize_imported_images") + { + value=strprintf("%i",(int)App::resize_imported_images); + return true; + } if(key=="browser_command") { value=App::browser_command; @@ -599,6 +606,12 @@ public: App::restrict_radius_ducks=i; return true; } + if(key=="resize_imported_images") + { + int i(atoi(value.c_str())); + App::resize_imported_images=i; + return true; + } if(key=="browser_command") { App::browser_command=value; @@ -642,6 +655,7 @@ public: #endif ret.push_back("auto_recover_backup_interval"); ret.push_back("restrict_radius_ducks"); + ret.push_back("resize_imported_images"); ret.push_back("browser_command"); ret.push_back("custom_filename_prefix"); ret.push_back("preferred_x_size"); @@ -1142,6 +1156,11 @@ App::App(int *argc, char ***argv): // Initialize the Synfig library try { synfigapp_main=etl::smart_ptr(new synfigapp::Main(etl::dirname((*argv)[0]),&synfig_init_cb)); } + catch(std::runtime_error x) + { + get_ui_interface()->error(strprintf("%s\n\n%s", _("Failed to initialize synfig!"), x.what())); + throw; + } catch(...) { get_ui_interface()->error(_("Failed to initialize synfig!")); @@ -1256,9 +1275,7 @@ App::App(int *argc, char ***argv): if(!getenv("SYNFIG_DISABLE_DRAW" )) state_manager->add_state(&state_draw); // Enabled for now. Let's see whether they're good enough yet. if(!getenv("SYNFIG_DISABLE_SKETCH" )) state_manager->add_state(&state_sketch); - - // Disabled by default - it doesn't work properly? - if(getenv("SYNFIG_ENABLE_WIDTH" )) state_manager->add_state(&state_width); + if(!getenv("SYNFIG_DISABLE_WIDTH" )) state_manager->add_state(&state_width); // Enabled since 0.61.09 studio_init_cb.task(_("Init ModPalette...")); module_list_.push_back(new ModPalette()); module_list_.back()->start(); @@ -1728,6 +1745,7 @@ App::reset_initial_window_configuration() synfigapp::Main::settings().set_value("pref.single_threaded","0"); #endif synfigapp::Main::settings().set_value("pref.restrict_radius_ducks","0"); + synfigapp::Main::settings().set_value("pref.resize_imported_images","0"); synfigapp::Main::settings().set_value("pref.custom_filename_prefix",DEFAULT_FILENAME_PREFIX); synfigapp::Main::settings().set_value("pref.preferred_x_size","480"); synfigapp::Main::settings().set_value("pref.preferred_y_size","270"); @@ -2340,8 +2358,9 @@ App::open_as(std::string filename,std::string as) try { OneMoment one_moment; + String errors; - etl::handle canvas(open_canvas_as(filename,as)); + etl::handle canvas(open_canvas_as(filename,as,errors)); if(canvas && get_instance(canvas)) { get_instance(canvas)->find_canvas_view(canvas)->present(); @@ -2351,7 +2370,7 @@ App::open_as(std::string filename,std::string as) else { if(!canvas) - throw (String)strprintf(_("Unable to open file \"%s\""),filename.c_str()); + throw (String)strprintf(_("Unable to load \"%s\":\n\n"),filename.c_str()) + errors; if (as.find(custom_filename_prefix.c_str()) != 0) add_recent_file(as); @@ -2398,8 +2417,10 @@ App::new_instance() canvas->rend_desc().set_time_end(5.0); canvas->rend_desc().set_x_res(DPI2DPM(72.0f)); canvas->rend_desc().set_y_res(DPI2DPM(72.0f)); - canvas->rend_desc().set_tl(Vector(-4,2.25)); - canvas->rend_desc().set_br(Vector(4,-2.25)); + // The top left and botton right positions are expressed in units + // Original convention is that 1 unit = 60 pixels + canvas->rend_desc().set_tl(Vector(-(preferred_x_size/60.0)/2.0,(preferred_y_size/60.0)/2.0)); + canvas->rend_desc().set_br(Vector((preferred_x_size/60.0)/2.0,-(preferred_y_size/60.0)/2.0)); canvas->rend_desc().set_w(preferred_x_size); canvas->rend_desc().set_h(preferred_y_size); canvas->rend_desc().set_antialias(1);