X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Fsrc%2Fgui%2Fapp.cpp;h=0f8d3bdd87953eca8b01c95975cdc574400759f6;hb=477fd4ea9c6133e098572554a9eadbf503e27fab;hp=01a4f8fb1191a3e08088e6564ae6f00af0cc58b3;hpb=254e11cc9af58ba7978466da54cbebf69096eb91;p=synfig.git diff --git a/synfig-studio/src/gui/app.cpp b/synfig-studio/src/gui/app.cpp index 01a4f8f..0f8d3bd 100644 --- a/synfig-studio/src/gui/app.cpp +++ b/synfig-studio/src/gui/app.cpp @@ -66,65 +66,64 @@ #include #include "app.h" -#include "about.h" +#include "dialogs/about.h" #include "splash.h" #include "instance.h" #include "canvasview.h" -#include "dialog_setup.h" -#include "dialog_gradient.h" -#include "dialog_color.h" +#include "dialogs/dialog_setup.h" +#include "dialogs/dialog_gradient.h" +#include "dialogs/dialog_color.h" #include "toolbox.h" #include "onemoment.h" -#include "dockmanager.h" - -#include "state_eyedrop.h" -#include "state_normal.h" -#include "state_draw.h" -#include "state_fill.h" -#include "state_bline.h" -#include "state_polygon.h" -#include "state_sketch.h" -#include "state_gradient.h" -#include "state_circle.h" -#include "state_rectangle.h" -#include "state_smoothmove.h" -#include "state_scale.h" -#include "state_star.h" -#include "state_text.h" -#include "state_width.h" -#include "state_rotate.h" -#include "state_zoom.h" +#include "docks/dockmanager.h" + +#include "states/state_eyedrop.h" +#include "states/state_normal.h" +#include "states/state_mirror.h" +#include "states/state_draw.h" +#include "states/state_fill.h" +#include "states/state_bline.h" +#include "states/state_polygon.h" +#include "states/state_sketch.h" +#include "states/state_gradient.h" +#include "states/state_circle.h" +#include "states/state_rectangle.h" +#include "states/state_smoothmove.h" +#include "states/state_scale.h" +#include "states/state_star.h" +#include "states/state_text.h" +#include "states/state_width.h" +#include "states/state_rotate.h" +#include "states/state_zoom.h" #include "devicetracker.h" -#include "dialog_tooloptions.h" -#include "widget_enum.h" +#include "docks/dialog_tooloptions.h" +#include "widgets/widget_enum.h" #include "autorecover.h" #include -#include "dock_history.h" -#include "dock_canvases.h" -#include "dock_keyframes.h" -#include "dock_layers.h" -#include "dock_params.h" -#include "dock_metadata.h" -#include "dock_children.h" -#include "dock_info.h" -#include "dock_navigator.h" -#include "dock_layergroups.h" -#include "dock_timetrack.h" -#include "dock_curves.h" - -#include "mod_palette/mod_palette.h" -#include "mod_mirror/mod_mirror.h" +#include "docks/dock_history.h" +#include "docks/dock_canvases.h" +#include "docks/dock_keyframes.h" +#include "docks/dock_layers.h" +#include "docks/dock_params.h" +#include "docks/dock_metadata.h" +#include "docks/dock_children.h" +#include "docks/dock_info.h" +#include "docks/dock_navigator.h" +#include "docks/dock_layergroups.h" +#include "docks/dock_timetrack.h" +#include "docks/dock_curves.h" + +#include "modules/module.h" +#include "modules/mod_palette/mod_palette.h" #include #include "ipc.h" -#include "module.h" - #include "statemanager.h" #ifdef WITH_FMOD @@ -272,8 +271,12 @@ std::list< etl::handle< studio::Module > > module_list_; bool studio::App::use_colorspace_gamma=true; #ifdef SINGLE_THREADED -bool studio::App::single_threaded=false; -#endif + #ifdef WIN32 + bool studio::App::single_threaded=true; + #else + bool studio::App::single_threaded=false; + #endif // WIN32 +#endif // SINGLE THREADED bool studio::App::restrict_radius_ducks=false; bool studio::App::resize_imported_images=false; String studio::App::custom_filename_prefix(DEFAULT_FILENAME_PREFIX); @@ -495,202 +498,216 @@ class Preferences : public synfigapp::Settings public: virtual bool get_value(const synfig::String& key, synfig::String& value)const { - if(key=="gamma") - { - value=strprintf("%f %f %f %f", - App::gamma.get_gamma_r(), - App::gamma.get_gamma_g(), - App::gamma.get_gamma_b(), - App::gamma.get_black_level() - ); - return true; - } - if(key=="time_format") - { - value=strprintf("%i",App::get_time_format()); - return true; - } - if(key=="file_history.size") - { - value=strprintf("%i",App::get_max_recent_files()); - return true; - } - if(key=="use_colorspace_gamma") - { - value=strprintf("%i",(int)App::use_colorspace_gamma); - return true; - } - if(key=="distance_system") + try { - value=strprintf("%s",Distance::system_name(App::distance_system).c_str()); - return true; - } + synfig::ChangeLocale change_locale(LC_NUMERIC, "C"); + if(key=="gamma") + { + value=strprintf("%f %f %f %f", + App::gamma.get_gamma_r(), + App::gamma.get_gamma_g(), + App::gamma.get_gamma_b(), + App::gamma.get_black_level() + ); + return true; + } + if(key=="time_format") + { + value=strprintf("%i",App::get_time_format()); + return true; + } + if(key=="file_history.size") + { + value=strprintf("%i",App::get_max_recent_files()); + return true; + } + if(key=="use_colorspace_gamma") + { + value=strprintf("%i",(int)App::use_colorspace_gamma); + return true; + } + if(key=="distance_system") + { + value=strprintf("%s",Distance::system_name(App::distance_system).c_str()); + return true; + } #ifdef SINGLE_THREADED - if(key=="single_threaded") - { - value=strprintf("%i",(int)App::single_threaded); - return true; - } + if(key=="single_threaded") + { + value=strprintf("%i",(int)App::single_threaded); + return true; + } #endif - if(key=="auto_recover_backup_interval") - { - value=strprintf("%i",App::auto_recover->get_timeout()); - return true; - } - if(key=="restrict_radius_ducks") - { - 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; - return true; - } - if(key=="custom_filename_prefix") - { - value=App::custom_filename_prefix; - return true; - } - if(key=="preferred_x_size") - { - value=strprintf("%i",App::preferred_x_size); - return true; - } - if(key=="preferred_y_size") - { - value=strprintf("%i",App::preferred_y_size); - return true; - } - if(key=="predefined_size") - { - value=strprintf("%s",App::predefined_size.c_str()); - return true; - } - if(key=="preferred_fps") - { - value=strprintf("%f",App::preferred_fps); - return true; + if(key=="auto_recover_backup_interval") + { + value=strprintf("%i",App::auto_recover->get_timeout()); + return true; + } + if(key=="restrict_radius_ducks") + { + 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; + return true; + } + if(key=="custom_filename_prefix") + { + value=App::custom_filename_prefix; + return true; + } + if(key=="preferred_x_size") + { + value=strprintf("%i",App::preferred_x_size); + return true; + } + if(key=="preferred_y_size") + { + value=strprintf("%i",App::preferred_y_size); + return true; + } + if(key=="predefined_size") + { + value=strprintf("%s",App::predefined_size.c_str()); + return true; + } + if(key=="preferred_fps") + { + value=strprintf("%f",App::preferred_fps); + return true; + } + if(key=="predefined_fps") + { + value=strprintf("%s",App::predefined_fps.c_str()); + return true; + } } - if(key=="predefined_fps") + catch(...) { - value=strprintf("%s",App::predefined_fps.c_str()); - return true; + synfig::warning("Preferences: Caught exception when attempting to get value."); } - return synfigapp::Settings::get_value(key,value); } virtual bool set_value(const synfig::String& key,const synfig::String& value) { - if(key=="gamma") + try { - float r,g,b,blk; + synfig::ChangeLocale change_locale(LC_NUMERIC, "C"); + if(key=="gamma") + { + float r,g,b,blk; - strscanf(value,"%f %f %f %f", - &r, - &g, - &b, - &blk - ); + strscanf(value,"%f %f %f %f", + &r, + &g, + &b, + &blk + ); - App::gamma.set_all(r,g,b,blk); + App::gamma.set_all(r,g,b,blk); - return true; - } - if(key=="time_format") - { - int i(atoi(value.c_str())); - App::set_time_format(static_cast(i)); - return true; - } - if(key=="auto_recover_backup_interval") - { - int i(atoi(value.c_str())); - App::auto_recover->set_timeout(i); - return true; - } - if(key=="file_history.size") - { - int i(atoi(value.c_str())); - App::set_max_recent_files(i); - return true; - } - if(key=="use_colorspace_gamma") - { - int i(atoi(value.c_str())); - App::use_colorspace_gamma=i; - return true; - } - if(key=="distance_system") - { - App::distance_system=Distance::ident_system(value);; - return true; - } + return true; + } + if(key=="time_format") + { + int i(atoi(value.c_str())); + App::set_time_format(static_cast(i)); + return true; + } + if(key=="auto_recover_backup_interval") + { + int i(atoi(value.c_str())); + App::auto_recover->set_timeout(i); + return true; + } + if(key=="file_history.size") + { + int i(atoi(value.c_str())); + App::set_max_recent_files(i); + return true; + } + if(key=="use_colorspace_gamma") + { + int i(atoi(value.c_str())); + App::use_colorspace_gamma=i; + return true; + } + if(key=="distance_system") + { + App::distance_system=Distance::ident_system(value);; + return true; + } #ifdef SINGLE_THREADED - if(key=="single_threaded") - { - int i(atoi(value.c_str())); - App::single_threaded=i; - return true; - } + if(key=="single_threaded") + { + int i(atoi(value.c_str())); + App::single_threaded=i; + return true; + } #endif - if(key=="restrict_radius_ducks") - { - int i(atoi(value.c_str())); - 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; - return true; - } - if(key=="custom_filename_prefix") - { - App::custom_filename_prefix=value; - return true; - } - if(key=="preferred_x_size") - { - int i(atoi(value.c_str())); - App::preferred_x_size=i; - return true; - } - if(key=="preferred_y_size") - { - int i(atoi(value.c_str())); - App::preferred_y_size=i; - return true; - } - if(key=="predefined_size") - { - App::predefined_size=value; - return true; - } - if(key=="preferred_fps") - { - float i(atof(value.c_str())); - App::preferred_fps=i; - return true; + if(key=="restrict_radius_ducks") + { + int i(atoi(value.c_str())); + 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; + return true; + } + if(key=="custom_filename_prefix") + { + App::custom_filename_prefix=value; + return true; + } + if(key=="preferred_x_size") + { + int i(atoi(value.c_str())); + App::preferred_x_size=i; + return true; + } + if(key=="preferred_y_size") + { + int i(atoi(value.c_str())); + App::preferred_y_size=i; + return true; + } + if(key=="predefined_size") + { + App::predefined_size=value; + return true; + } + if(key=="preferred_fps") + { + float i(atof(value.c_str())); + App::preferred_fps=i; + return true; + } + if(key=="predefined_fps") + { + App::predefined_fps=value; + return true; + } } - if(key=="predefined_fps") + catch(...) { - App::predefined_fps=value; - return true; + synfig::warning("Preferences: Caught exception when attempting to set value."); } - return synfigapp::Settings::set_value(key,value); } @@ -1150,7 +1167,7 @@ App::App(int *argc, char ***argv): "different version of libsynfig than what is currently\n" "installed. Synfig Studio will now abort. Try downloading\n" "the latest version from the Synfig website at\n" - "http://synfig.org/Download" + "http://synfig.org/en/current-release" ); throw 40; } @@ -1266,24 +1283,26 @@ App::App(int *argc, char ***argv): state_manager->add_state(&state_smooth_move); state_manager->add_state(&state_scale); state_manager->add_state(&state_rotate); - studio_init_cb.task(_("Init ModMirror...")); module_list_.push_back(new ModMirror()); module_list_.back()->start(); - if(!getenv("SYNFIG_DISABLE_WIDTH" )) state_manager->add_state(&state_width); // Enabled since 0.61.09 + state_manager->add_state(&state_mirror); - /* new objects */ + /* geometry */ state_manager->add_state(&state_circle); state_manager->add_state(&state_rectangle); state_manager->add_state(&state_star); state_manager->add_state(&state_gradient); if(!getenv("SYNFIG_DISABLE_POLYGON")) state_manager->add_state(&state_polygon); // Enabled - for working without ducks - state_manager->add_state(&state_text); + + /* bline tools */ state_manager->add_state(&state_bline); if(!getenv("SYNFIG_DISABLE_DRAW" )) state_manager->add_state(&state_draw); // Enabled for now. Let's see whether they're good enough yet. - - /* other */ + if(!getenv("SYNFIG_DISABLE_WIDTH" )) state_manager->add_state(&state_width); // Enabled since 0.61.09 state_manager->add_state(&state_fill); state_manager->add_state(&state_eyedrop); - state_manager->add_state(&state_zoom); + + /* other */ + state_manager->add_state(&state_text); if(!getenv("SYNFIG_DISABLE_SKETCH" )) state_manager->add_state(&state_sketch); + state_manager->add_state(&state_zoom); studio_init_cb.task(_("Init ModPalette...")); module_list_.push_back(new ModPalette()); module_list_.back()->start(); @@ -1312,10 +1331,9 @@ App::App(int *argc, char ***argv): if(auto_recover->recovery_needed()) { splash_screen.hide(); - if (get_ui_interface()->confirmation("Crash Recovery", + if (get_ui_interface()->confirmation(_("Crash Recovery"), _("Auto recovery file found"), - _("Synfig Studio seems to have crashed\n" - "before you could save all your files.\n" + _("Synfig Studio seems to have crashed before you could save all your files. " "Recover unsaved changes?"), _("Recover"), _("Ignore")) == synfigapp::UIInterface::RESPONSE_OK) @@ -1327,11 +1345,10 @@ App::App(int *argc, char ***argv): else get_ui_interface()->error(_("Unable to recover from previous crash")); else - get_ui_interface()->error( - _("Synfig Studio has attempted to recover\n" - "from a previous crash. The files that it has\n" - "recovered are NOT YET SAVED. It would be a good\n" - "idea to review them and save them now.")); + dialog_warning_blocking(_("Warning"), + _("Synfig Studio has attempted to recover from a previous crash. " + "The files that it has recovered are NOT YET SAVED. It would be a " + "good idea to review them and save them now.")); if (number_recovered) opened_any = true; @@ -1358,6 +1375,15 @@ App::App(int *argc, char ***argv): studio_init_cb.task(_("Done.")); studio_init_cb.amount_complete(10000,10000); + // To avoid problems with some window managers and gtk >= 2.18 + // we should show dock dialogs after the settings load. + // If dock dialogs are shown before the settings are loaded, + // the windows manager can act over it. + // See discussions here: + // * http://synfig.org/forums/viewtopic.php?f=1&t=1131&st=0&sk=t&sd=a&start=30 + // * http://synfig.org/forums/viewtopic.php?f=15&t=1062 + dock_manager->show_all_dock_dialogs(); + toolbox->present(); } catch(String x) @@ -1428,13 +1454,10 @@ App::get_config_file(const synfig::String& file) return Glib::build_filename(get_user_app_directory(),file); } -#define SCALE_FACTOR (1280) //! set the \a instance's canvas(es) position and size to be those specified in the first entry of recent_files_window_size void App::set_recent_file_window_size(etl::handle instance) { - int screen_w(Gdk::screen_width()); - int screen_h(Gdk::screen_height()); const std::string &canvas_window_size = *recent_files_window_size.begin(); @@ -1480,22 +1503,9 @@ App::set_recent_file_window_size(etl::handle instance) current = separator+1; continue; } - - if (x > SCALE_FACTOR) x = SCALE_FACTOR - 150; if (x < 0) x = 0; - if (y > SCALE_FACTOR) y = SCALE_FACTOR - 150; if (y < 0) y = 0; - x=x*screen_w/SCALE_FACTOR; - y=y*screen_h/SCALE_FACTOR; - if(getenv("SYNFIG_WINDOW_POSITION_X_OFFSET")) - x += atoi(getenv("SYNFIG_WINDOW_POSITION_X_OFFSET")); - if(getenv("SYNFIG_WINDOW_POSITION_Y_OFFSET")) - y += atoi(getenv("SYNFIG_WINDOW_POSITION_Y_OFFSET")); - - if (w > SCALE_FACTOR) w = 150; if (w < 0) w = 0; - if (h > SCALE_FACTOR) h = 150; if (h < 0) h = 0; - CanvasView::Handle canvasview = instance->find_canvas_view(canvas); canvasview->move(x,y); - canvasview->resize(w*screen_w/SCALE_FACTOR,h*screen_h/SCALE_FACTOR); + canvasview->resize(w,h); canvasview->present(); current = separator+1; @@ -1508,8 +1518,6 @@ App::set_recent_file_window_size(etl::handle instance) void App::add_recent_file(const etl::handle instance) { - int screen_w(Gdk::screen_width()); - int screen_h(Gdk::screen_height()); std::string canvas_window_size; @@ -1528,13 +1536,12 @@ App::add_recent_file(const etl::handle instance) canvas_window_size += strprintf("%s %d %d %d %d\t", canvas->get_relative_id(canvas->get_root()).c_str(), - x_pos*SCALE_FACTOR/screen_w, y_pos*SCALE_FACTOR/screen_h, - x_size*SCALE_FACTOR/screen_w, y_size*SCALE_FACTOR/screen_h); + x_pos, y_pos, + x_size, y_size); } add_recent_file(absolute_path(instance->get_file_name()), canvas_window_size); } -#undef SCALE_FACTOR void App::add_recent_file(const std::string &file_name, const std::string &window_size) @@ -1607,11 +1614,9 @@ App::set_time_format(synfig::Time::Format x) void App::save_settings() { - char * old_locale; try { - old_locale=strdup(setlocale(LC_NUMERIC, NULL)); - setlocale(LC_NUMERIC, "C"); + synfig::ChangeLocale change_locale(LC_NUMERIC, "C"); { std::string filename=get_config_file("accelrc"); Gtk::AccelMap::save(filename); @@ -1651,7 +1656,7 @@ App::save_settings() }while(0); std::string filename=get_config_file("settings"); synfigapp::Main::settings().save_to_file(filename); - setlocale(LC_NUMERIC,old_locale); + } catch(...) { @@ -1662,11 +1667,9 @@ App::save_settings() void App::load_settings() { - char * old_locale; try { - old_locale=strdup(setlocale(LC_NUMERIC, NULL)); - setlocale(LC_NUMERIC, "C"); + synfig::ChangeLocale change_locale(LC_NUMERIC, "C"); { std::string filename=get_config_file("accelrc"); Gtk::AccelMap::load(filename); @@ -1722,7 +1725,7 @@ App::load_settings() reset_initial_window_configuration(); } } - setlocale(LC_NUMERIC,old_locale); + } catch(...) { @@ -1733,16 +1736,94 @@ App::load_settings() void App::reset_initial_window_configuration() { + Glib::RefPtr display(Gdk::Display::get_default()); + Glib::RefPtr screen(display->get_default_screen()); + Gdk::Rectangle rect; + // A proper way to obtain the primary monitor is to use the + // Gdk::Screen::get_primary_monitor () const member. But as it + // was introduced in gtkmm 2.20 I assume that the monitor 0 is the + // primary one. + screen->get_monitor_geometry(0,rect); +#define hpanel_width 79.0f +#define hpanel_height 25.0f +#define vpanel_width 20.0f +#define vpanel_height 100.0f +#define vdock 20.0f +#define hdock 20.0f + +/* percentages referred to width or height of the screen + *---------------------------------------------------------------------* + * t | | + * o | | + * o | |vdock% + * l | | + * b | |------------ + * o | | + * x | |vdock% + * -------- | + * | + * |------------ + * | + * |vdock% + * | + * | + *-----hdock%----------------------------------------------|------------ + * | | + * | |vdock% + * | | + * | | + * --------------------------------------------------------------------* +*/ +// Vertical Panel + int v_xpos=rect.get_x() + rect.get_width()*(1.0-vpanel_width/100.0); + int v_xsize=rect.get_width()*vpanel_width/100.0; + int v_ypos=rect.get_y(); + int v_ysize=rect.get_height()*vpanel_height/100.0; + std::string v_pos(strprintf("%d %d", v_xpos, v_ypos)); + std::string v_size(strprintf("%d %d", v_xsize, v_ysize)); +// Horizontal Panel + int h_xpos=rect.get_x(); + int h_xsize=rect.get_width()*hpanel_width/100.0; + int h_ypos=rect.get_y()+ rect.get_height()*(1.0-hpanel_height/100.0);; + int h_ysize=rect.get_height()*hpanel_height/100.0; + std::string h_pos(strprintf("%d %d", h_xpos, h_ypos)); + std::string h_size(strprintf("%d %d", h_xsize, h_ysize)); + int v_dock1 = rect.get_height()*vdock*0.8/100.0; + int v_dock2 = rect.get_height()*vdock*0.6/100.0; + int v_dock3 = rect.get_height()*vdock*1.1/100.0; + int h_dock = rect.get_width()*hdock/100.0; +//Contents size + std::string v_contents(strprintf("%d %d %d", v_dock1, v_dock2, v_dock3)); + std::string h_contents(strprintf("%d", h_dock)); +// Tool Box position + std::string tbox_pos(strprintf("%d %d", rect.get_x(), rect.get_y())); +/* + synfig::info("tool box pos: %s", tbox_pos.c_str()); + synfig::info("v_contents sizes: %s", v_contents.c_str()); + synfig::info("v_pos: %s", v_pos.c_str()); + synfig::info("v_sizes: %s", v_size.c_str()); + synfig::info("h_contents sizes: %s", h_contents.c_str()); + synfig::info("h_pos: %s", h_pos.c_str()); + synfig::info("h_sizes: %s", h_size.c_str()); +*/ synfigapp::Main::settings().set_value("dock.dialog.1.comp_selector","1"); synfigapp::Main::settings().set_value("dock.dialog.1.contents","navigator - info pal_edit pal_browse - tool_options history canvases - layers groups"); - synfigapp::Main::settings().set_value("dock.dialog.1.contents_size","225 167 207"); - synfigapp::Main::settings().set_value("dock.dialog.1.pos","1057 32"); - synfigapp::Main::settings().set_value("dock.dialog.1.size","208 1174"); + synfigapp::Main::settings().set_value("dock.dialog.1.contents_size",v_contents); + synfigapp::Main::settings().set_value("dock.dialog.1.size",v_size); + synfigapp::Main::settings().set_value("dock.dialog.1.pos",v_pos); synfigapp::Main::settings().set_value("dock.dialog.2.comp_selector","0"); synfigapp::Main::settings().set_value("dock.dialog.2.contents","params children keyframes | timetrack curves meta_data"); - synfigapp::Main::settings().set_value("dock.dialog.2.contents_size","263"); - synfigapp::Main::settings().set_value("dock.dialog.2.pos","0 973"); - synfigapp::Main::settings().set_value("dock.dialog.2.size","1045 235"); + synfigapp::Main::settings().set_value("dock.dialog.2.contents_size",h_contents); + synfigapp::Main::settings().set_value("dock.dialog.2.size",h_size); + synfigapp::Main::settings().set_value("dock.dialog.2.pos",h_pos); + synfigapp::Main::settings().set_value("window.toolbox.pos",tbox_pos); + + dock_manager->show_all_dock_dialogs(); +} + +void +App::reset_initial_preferences() +{ synfigapp::Main::settings().set_value("pref.distance_system","pt"); synfigapp::Main::settings().set_value("pref.use_colorspace_gamma","1"); #ifdef SINGLE_THREADED @@ -1756,7 +1837,7 @@ App::reset_initial_window_configuration() synfigapp::Main::settings().set_value("pref.predefined_size",DEFAULT_PREDEFINED_SIZE); synfigapp::Main::settings().set_value("pref.preferred_fps","24.0"); synfigapp::Main::settings().set_value("pref.predefined_fps",DEFAULT_PREDEFINED_FPS); - synfigapp::Main::settings().set_value("window.toolbox.pos","4 4"); + } bool @@ -2016,11 +2097,13 @@ App::dialog_save_file(const std::string &title, std::string &filename, std::stri { file_type_enum = manage(new Widget_Enum()); file_type_enum->set_param_desc(ParamDesc().set_hint("enum") - .add_enum_value(synfig::RELEASE_VERSION_0_62_00, "0.62.00", strprintf("0.62.00 (%s)", _("current"))) - .add_enum_value(synfig::RELEASE_VERSION_0_61_09, "0.61.09", "0.61.09") - .add_enum_value(synfig::RELEASE_VERSION_0_61_08, "0.61.08", "0.61.08") - .add_enum_value(synfig::RELEASE_VERSION_0_61_07, "0.61.07", "0.61.07") - .add_enum_value(synfig::RELEASE_VERSION_0_61_06, "0.61.06", strprintf("0.61.06 %s", _("and older")))); + .add_enum_value(synfig::RELEASE_VERSION_0_62_02, "0.62.02", strprintf("0.62.02 (%s)", _("current"))) + .add_enum_value(synfig::RELEASE_VERSION_0_62_01, "0.62.01", "0.62.01") + .add_enum_value(synfig::RELEASE_VERSION_0_62_00, "0.62.00", "0.61.00") + .add_enum_value(synfig::RELEASE_VERSION_0_61_09, "0.61.09", "0.61.09") + .add_enum_value(synfig::RELEASE_VERSION_0_61_08, "0.61.08", "0.61.08") + .add_enum_value(synfig::RELEASE_VERSION_0_61_07, "0.61.07", "0.61.07") + .add_enum_value(synfig::RELEASE_VERSION_0_61_06, "0.61.06", strprintf("0.61.06 %s", _("and older")))); file_type_enum->set_value(RELEASE_VERSION_END-1); // default to the most recent version Gtk::HBox *hbox = manage(new Gtk::HBox); @@ -2207,10 +2290,10 @@ try_open_url(const std::string &url) void App::dialog_help() { - if (!try_open_url("http://synfig.org/Documentation")) + if (!try_open_url("http://synfig.org/wiki/Category:Manual")) { Gtk::MessageDialog dialog(_("Documentation"), false, Gtk::MESSAGE_INFO, Gtk::BUTTONS_CLOSE, true); - dialog.set_secondary_text(_("Documentation for Synfig Studio is available on the website:\n\nhttp://www.synfig.org/Documentation")); + dialog.set_secondary_text(_("Documentation for Synfig Studio is available on the website:\n\nhttp://synfig.org/wiki/Category:Manual")); dialog.set_title(_("Help")); dialog.run(); }