Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-studio / trunk / src / gtkmm / app.cpp
index 58d6c61..24e2bcf 100644 (file)
@@ -280,6 +280,8 @@ String studio::App::custom_filename_prefix(DEFAULT_FILENAME_PREFIX);
 int studio::App::preferred_x_size=480;
 int studio::App::preferred_y_size=270;
 String studio::App::predefined_size(DEFAULT_PREDEFINED_SIZE);
+String studio::App::predefined_fps(DEFAULT_PREDEFINED_FPS);
+float studio::App::preferred_fps=24.0;
 #ifdef USE_OPEN_FOR_URLS
 String studio::App::browser_command("open"); // MacOS only
 #else
@@ -322,6 +324,34 @@ class GlobalUIInterface : public synfigapp::UIInterface
 {
 public:
 
+       virtual Response confirmation(const std::string &title,
+                       const std::string &primaryText,
+                       const std::string &secondaryText,
+                       const std::string &confirmPhrase,
+                       const std::string &cancelPhrase,
+                       Response defaultResponse)
+       {
+               Gtk::MessageDialog dialog(
+                       primaryText,            // Message
+                       false,                  // Markup
+                       Gtk::MESSAGE_WARNING,   // Type
+                       Gtk::BUTTONS_NONE,      // Buttons
+                       true                    // Modal
+               );
+
+               if (! title.empty())
+                       dialog.set_title(title);
+               if (! secondaryText.empty())
+                       dialog.set_secondary_text(secondaryText);
+
+               dialog.add_button(cancelPhrase, RESPONSE_CANCEL);
+               dialog.add_button(confirmPhrase, RESPONSE_OK);
+               dialog.set_default_response(defaultResponse);
+
+               dialog.show_all();
+               return (Response) dialog.run();
+       }
+
        virtual Response yes_no(const std::string &title, const std::string &message,Response dflt=RESPONSE_YES)
        {
                Gtk::Dialog dialog(
@@ -542,6 +572,16 @@ public:
                        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;
+               }
 
                return synfigapp::Settings::get_value(key,value);
        }
@@ -639,6 +679,18 @@ public:
                        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;
+               }
+
                return synfigapp::Settings::set_value(key,value);
        }
 
@@ -661,6 +713,8 @@ public:
                ret.push_back("preferred_x_size");
                ret.push_back("preferred_y_size");
                ret.push_back("predefined_size");
+               ret.push_back("preferred_fps");
+               ret.push_back("predefined_fps");
                return ret;
        }
 };
@@ -687,7 +741,7 @@ init_ui_manager()
        menus_action_group->add( Gtk::Action::create("menu-layer-new", _("New Layer")) );
        menus_action_group->add( Gtk::Action::create("menu-keyframe", _("Keyframe")) );
        menus_action_group->add( Gtk::Action::create("menu-group", _("Group")) );
-       menus_action_group->add( Gtk::Action::create("menu-state", _("State")) );
+       menus_action_group->add( Gtk::Action::create("menu-state", _("Tool")) );
        menus_action_group->add( Gtk::Action::create("menu-toolbox", _("Toolbox")) );
 
        // Add the synfigapp actions...
@@ -1280,6 +1334,8 @@ App::App(int *argc, char ***argv):
                studio_init_cb.amount_complete(9250,10000);
                studio_init_cb.task(_("Loading Settings..."));
                load_settings();
+               device_tracker->load_preferences();
+
                studio_init_cb.task(_("Checking auto-recover..."));
 
                studio_init_cb.amount_complete(9900,10000);
@@ -1288,12 +1344,13 @@ App::App(int *argc, char ***argv):
                if(auto_recover->recovery_needed())
                {
                        splash_screen.hide();
-                       if (get_ui_interface()->yes_no(_("Auto Recovery"),
-                                                                                  _("Synfig Studio seems to have crashed\n"
-                                                                                        "before you could save all your files.\n"
-                                                                                        "Would you like to re-open those files\n"
-                                                                                        "and recover your unsaved changes?")) ==
-                               synfigapp::UIInterface::RESPONSE_YES)
+                       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"
+                                         "Recover unsaved changes?"),
+                                       _("Recover"), _("Ignore"))
+                               == synfigapp::UIInterface::RESPONSE_OK)
                        {
                                int number_recovered;
                                if(!auto_recover->recover(number_recovered))
@@ -1737,6 +1794,8 @@ App::reset_initial_window_configuration()
        synfigapp::Main::settings().set_value("pref.preferred_x_size","480");
        synfigapp::Main::settings().set_value("pref.preferred_y_size","270");
        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");
 }
 
@@ -2407,7 +2466,7 @@ App::new_instance()
        canvas->set_name(file_name);
        file_name += ".sifz";
 
-       canvas->rend_desc().set_frame_rate(24.0);
+       canvas->rend_desc().set_frame_rate(preferred_fps);
        canvas->rend_desc().set_time_start(0.0);
        canvas->rend_desc().set_time_end(5.0);
        canvas->rend_desc().set_x_res(DPI2DPM(72.0f));