Add preferred and predefined FPS options in the Setup Dialog
authorCarlos Lopez <carlos@pcnuevo.(none)>
Wed, 17 Jun 2009 22:32:38 +0000 (00:32 +0200)
committerCarlos Lopez <carlos@pcnuevo.(none)>
Wed, 17 Jun 2009 22:32:38 +0000 (00:32 +0200)
synfig-studio/trunk/src/gtkmm/app.cpp
synfig-studio/trunk/src/gtkmm/app.h
synfig-studio/trunk/src/gtkmm/dialog_setup.cpp
synfig-studio/trunk/src/gtkmm/dialog_setup.h

index ffca6fd..ee4cfde 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
@@ -542,6 +544,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 +651,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 +685,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;
        }
 };
@@ -1739,6 +1765,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");
 }
 
@@ -2409,7 +2437,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));
index 507bc75..89cd528 100644 (file)
@@ -204,6 +204,8 @@ public:
        static int preferred_x_size;
        static int preferred_y_size;
        static synfig::String predefined_size;
+       static synfig::String predefined_fps;
+       static float preferred_fps;
        /*
  -- ** -- S I G N A L S -------------------------------------------------------
        */
index 9f849b0..7406566 100644 (file)
@@ -84,7 +84,8 @@ Dialog_Setup::Dialog_Setup():
        toggle_restrict_radius_ducks(_("Restrict Real-Valued Ducks to Top Right Quadrant")),
        toggle_resize_imported_images(_("Scale New Imported Images to Fit Canvas")),
        adj_pref_x_size(480,1,10000,1,10,0),
-       adj_pref_y_size(270,1,10000,1,10,0)
+       adj_pref_y_size(270,1,10000,1,10,0),
+       adj_pref_fps(24.0,1.0,100,0.1,1,0)
 
        {
        // Setup the buttons
@@ -262,6 +263,29 @@ Dialog_Setup::Dialog_Setup():
        size_template_combo->prepend_text(_("360x203   Web 360x HD"));
        size_template_combo->prepend_text(DEFAULT_PREDEFINED_SIZE);
 
+       //Document - Template for predefined fps
+       fps_template_combo=Gtk::manage(new Gtk::ComboBoxText());
+       Gtk::Label* label1(manage(new Gtk::Label(_("Predefined FPS:"))));
+       label1->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
+       document_table->attach(*label1, 2, 3, 3, 4, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, xpadding, ypadding);
+       document_table->attach(*fps_template_combo,2, 3, 4, 5, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, xpadding, ypadding);
+       fps_template_combo->signal_changed().connect(sigc::mem_fun(*this,&studio::Dialog_Setup::on_fps_template_combo_change));
+       fps_template_combo->prepend_text("60,0"); // It seems that the period is a ',' instead of a '.' for GTK.
+       fps_template_combo->prepend_text("50,0");
+       fps_template_combo->prepend_text("30,0");
+       fps_template_combo->prepend_text("25,0");
+       fps_template_combo->prepend_text("24,976");
+       fps_template_combo->prepend_text("24,0");
+       fps_template_combo->prepend_text("15,0");
+       fps_template_combo->prepend_text("12,0");
+       fps_template_combo->prepend_text(DEFAULT_PREDEFINED_FPS);
+
+       // Document - New Document FPS
+       Gtk::SpinButton* pref_fps_spinbutton(manage(new Gtk::SpinButton(adj_pref_fps,1,3)));
+       attach_label(document_table,_("New Document FPS"),4, xpadding, ypadding);
+       document_table->attach(*pref_fps_spinbutton, 1, 2, 4, 5,Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, xpadding, ypadding);
+       tooltips_.set_tip(*pref_fps_spinbutton,_("Frames per second of the new created document"));
+
        show_all_children();
 }
 
@@ -320,6 +344,12 @@ Dialog_Setup::on_apply_pressed()
        // Set the preferred Predefined size
        App::predefined_size=size_template_combo->get_active_text();
 
+       // Set the preferred Predefined fps
+       App::predefined_fps=fps_template_combo->get_active_text();
+
+       // Set the preferred FPS
+       App::preferred_fps=Real(adj_pref_fps.get_value());
+
        App::save_settings();
 }
 
@@ -383,6 +413,18 @@ Dialog_Setup::on_size_template_combo_change()
 }
 
 void
+Dialog_Setup::on_fps_template_combo_change()
+{
+       String selection(fps_template_combo->get_active_text());
+       if(selection==DEFAULT_PREDEFINED_FPS)
+       {
+               return;
+       }
+       adj_pref_fps.set_value(atof(selection.c_str()));
+       return;
+}
+
+void
 Dialog_Setup::refresh()
 {
        // Refresh the temporary gamma; do this before adjusting the sliders,
@@ -439,6 +481,12 @@ Dialog_Setup::refresh()
 
        // Refresh the preferred Predefined size
        size_template_combo->set_active_text(App::predefined_size);
+
+       //Refresh the preferred FPS
+       adj_pref_fps.set_value(App::preferred_fps);
+
+       //Refresh the predefined FPS
+       fps_template_combo->set_active_text(App::predefined_fps);
 }
 
 GammaPattern::GammaPattern():
index e0d8fcd..b9c8c98 100644 (file)
 #ifndef DEFAULT_PREDEFINED_SIZE
 #define DEFAULT_PREDEFINED_SIZE _("Custom Size")
 #endif
+#ifndef DEFAULT_PREDEFINED_FPS
+#define DEFAULT_PREDEFINED_FPS _("Custom fps")
+#endif
+
 /* === T Y P E D E F S ===================================================== */
 
 /* === C L A S S E S & S T R U C T S ======================================= */
@@ -156,6 +160,7 @@ class Dialog_Setup : public Gtk::Dialog
        void on_black_level_change();
        void on_red_blue_level_change();
        void on_size_template_combo_change();
+       void on_fps_template_combo_change();
 
        GammaPattern gamma_pattern;
        BlackLevelSelector black_level_selector;
@@ -187,9 +192,11 @@ class Dialog_Setup : public Gtk::Dialog
        Gtk::Entry textbox_browser_command;
 
        Gtk::ComboBoxText* size_template_combo;
+       Gtk::ComboBoxText* fps_template_combo;
        Gtk::Entry textbox_custom_filename_prefix;
        Gtk::Adjustment adj_pref_x_size;
        Gtk::Adjustment adj_pref_y_size;
+       Gtk::Adjustment adj_pref_fps;
        Gtk::Tooltips tooltips_;
 public: