diff --git a/synfig-studio/src/gui/app.cpp b/synfig-studio/src/gui/app.cpp index b3ea2e9..79b67c9 100644 --- a/synfig-studio/src/gui/app.cpp +++ b/synfig-studio/src/gui/app.cpp @@ -353,7 +353,8 @@ delete_widget(Gtk::Widget *widget) } //Static members need to be initialized outside of class declaration -Mix_Chunk* App::gRenderDone = NULL; +Mix_Chunk* App::gRenderDone = NULL; +bool App::use_render_done_sound = true; }; // END of namespace studio studio::StateManager* state_manager; @@ -637,6 +638,11 @@ public: value=App::workarea_renderer; return true; } + if(key=="use_render_done_sound") + { + value=strprintf("%i",(int)App::use_render_done_sound); + return true; + } if(key=="enable_mainwin_menubar") { value=strprintf("%i", (int)App::enable_mainwin_menubar); @@ -802,6 +808,12 @@ public: App::workarea_renderer=value; return true; } + if(key=="use_render_done_sound") + { + int i(atoi(value.c_str())); + App::use_render_done_sound=i; + return true; + } if(key=="enable_mainwin_menubar") { int i(atoi(value.c_str())); @@ -851,6 +863,7 @@ public: ret.push_back("sequence_separator"); ret.push_back("navigator_renderer"); ret.push_back("workarea_renderer"); + ret.push_back("use_render_done_sound"); ret.push_back("enable_mainwin_menubar"); ret.push_back("ui_handle_tooltip_flag"); diff --git a/synfig-studio/src/gui/app.h b/synfig-studio/src/gui/app.h index 22f0168..8a3f6bd 100644 --- a/synfig-studio/src/gui/app.h +++ b/synfig-studio/src/gui/app.h @@ -238,8 +238,9 @@ public: static synfig::String ui_language; static long ui_handle_tooltip_flag; - //The sound effects that will be used - static Mix_Chunk* gRenderDone; + //The sound effects that will be used + static Mix_Chunk* gRenderDone; + static bool use_render_done_sound; /* -- ** -- S I G N A L S ------------------------------------------------------- diff --git a/synfig-studio/src/gui/dialogs/dialog_setup.cpp b/synfig-studio/src/gui/dialogs/dialog_setup.cpp index 83dbc3f..40b72e4 100644 --- a/synfig-studio/src/gui/dialogs/dialog_setup.cpp +++ b/synfig-studio/src/gui/dialogs/dialog_setup.cpp @@ -439,7 +439,7 @@ Dialog_Setup::create_render_page(PageInfo pi) * sequence separator _________ * navigator [ Legacy ] * workarea [ Legacy ] - * + * play sound on render done [x| ] * */ @@ -454,6 +454,14 @@ Dialog_Setup::create_render_page(PageInfo pi) // Render - WorkArea attach_label(pi.grid, _("WorkArea renderer"), ++row); pi.grid->attach(workarea_renderer_combo, 1, row, 1, 1); + // Render - Render Done sound + attach_label(pi.grid, _("Chime on render done"), ++row); + pi.grid->attach(toggle_play_sound_on_render_done, 1, row, 1, 1); + toggle_play_sound_on_render_done.set_halign(Gtk::ALIGN_START); + toggle_play_sound_on_render_done.set_hexpand(false); + toggle_play_sound_on_render_done.set_tooltip_text(_("A chime is played when render has finished.")); + toggle_play_sound_on_render_done.property_active().signal_changed().connect( + sigc::mem_fun(*this, &Dialog_Setup::on_play_sound_on_render_done_changed)); synfig::rendering::Renderer::Handle default_renderer = synfig::rendering::Renderer::get_renderer(""); navigator_renderer_combo.append("", String() + _("Default") + " - " + default_renderer->get_name()); @@ -676,6 +684,9 @@ Dialog_Setup::on_apply_pressed() // Set the workarea render flag App::workarea_renderer=workarea_renderer_combo.get_active_id(); + // Set the use of a render done sound + App::use_render_done_sound = toggle_play_sound_on_render_done.get_active(); + // Set ui language if (pref_modification_flag&CHANGE_UI_LANGUAGE) App::ui_language = ui_language_combo.get_active_id().c_str(); @@ -798,6 +809,12 @@ Dialog_Setup::on_autobackup_changed() } void +Dialog_Setup::on_play_sound_on_render_done_changed() +{ + App::use_render_done_sound = toggle_play_sound_on_render_done.get_active(); +} + +void Dialog_Setup::on_tooltip_transformation_changed() { toggle_handle_tooltip_transfo_name.set_sensitive(toggle_handle_tooltip_transformation.get_active()); @@ -852,6 +869,9 @@ Dialog_Setup::refresh() // Refresh the status of the theme flag toggle_use_dark_theme.set_active(App::use_dark_theme); + // Refresh the status of the render done sound flag + toggle_play_sound_on_render_done.set_active(App::use_render_done_sound); + // Refresh the status of file toolbar flag toggle_show_file_toolbar.set_active(App::show_file_toolbar); diff --git a/synfig-studio/src/gui/dialogs/dialog_setup.h b/synfig-studio/src/gui/dialogs/dialog_setup.h index eec5564..fc1cd9d 100644 --- a/synfig-studio/src/gui/dialogs/dialog_setup.h +++ b/synfig-studio/src/gui/dialogs/dialog_setup.h @@ -135,6 +135,7 @@ class Dialog_Setup : public Dialog_Template void on_time_format_changed(); void on_autobackup_changed(); void on_tooltip_transformation_changed(); + void on_play_sound_on_render_done_changed(); void on_brush_path_add_clicked(); void on_brush_path_remove_clicked(); @@ -196,9 +197,10 @@ class Dialog_Setup : public Dialog_Template Gtk::SpinButton* pref_y_size_spinbutton; Gtk::SpinButton* pref_x_size_spinbutton; - Gtk::Entry image_sequence_separator; + Gtk::Entry image_sequence_separator; Gtk::ComboBoxText navigator_renderer_combo; Gtk::ComboBoxText workarea_renderer_combo; + Gtk::Switch toggle_play_sound_on_render_done; Gtk::Switch toggle_handle_tooltip_widthpoint; Gtk::Switch toggle_handle_tooltip_radius; diff --git a/synfig-studio/src/gui/render.cpp b/synfig-studio/src/gui/render.cpp index 54d06aa..24ae19b 100644 --- a/synfig-studio/src/gui/render.cpp +++ b/synfig-studio/src/gui/render.cpp @@ -434,7 +434,7 @@ RenderSettings::on_finished() submit_next_render_pass(); //Sound effect - RenderDone (-1 : play on first free channel, 0 : no repeat) - Mix_PlayChannel( -1, App::gRenderDone, 0 ); + if (App::use_render_done_sound) Mix_PlayChannel( -1, App::gRenderDone, 0 ); } void