size-based scrolling and right-click pages for editor notebook
[ardour.git] / gtk2_ardour / ardour_ui_dialogs.cc
index 5f6459c041acd952e25fd3810d74db2a8c77af02..1a0ba6618f6f8361a241fd132082f138c61e9dd4 100644 (file)
@@ -38,6 +38,7 @@
 #include "i18n.h"
 
 using namespace ARDOUR;
+using namespace Glib;
 using namespace Gtk;
 using namespace Gtkmm2ext;
 
@@ -225,7 +226,7 @@ ARDOUR_UI::toggle_options_window ()
 {
        if (option_editor == 0) {
                option_editor = new OptionEditor (*this, *editor, *mixer);
-               option_editor->signal_unmap().connect(sigc::bind (ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleOptionsWindow")));
+               option_editor->signal_unmap().connect(sigc::bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleOptionsEditor")));
                option_editor->set_session (session);
        } 
 
@@ -251,7 +252,7 @@ ARDOUR_UI::create_location_ui ()
        if (location_ui == 0) {
                location_ui = new LocationUI ();
                location_ui->set_session (session);
-               location_ui->signal_unmap().connect (sigc::bind (ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleLocations")));
+               location_ui->signal_unmap().connect (sigc::bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleLocations")));
        }
        return 0;
 }
@@ -276,7 +277,7 @@ ARDOUR_UI::create_route_params ()
        if (route_params == 0) {
                route_params = new RouteParams_UI (*engine);
                route_params->set_session (session);
-               route_params->signal_unmap().connect (sigc::bind(ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleInspector")));
+               route_params->signal_unmap().connect (sigc::bind(sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleInspector")));
        }
        return 0;
 }
@@ -294,14 +295,33 @@ ARDOUR_UI::toggle_route_params_window ()
                route_params->present ();
        }
 }
+
+int
+ARDOUR_UI::create_sound_file_browser ()
+{
+       if (sfdb == 0) {
+               sfdb = new SoundFileBrowser (_("Sound File Browser"));
+               sfdb->set_session (session);
+               sfdb->signal_unmap().connect (sigc::bind(sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleSoundFileBrowser")));
+       }
+       return 0;
+}
        
 void
 ARDOUR_UI::toggle_sound_file_browser ()
 {
-       using namespace Glib;
-
-       SoundFileBrowser sfdb(_("Sound File Browser"));
-       sfdb.run();
+       if (create_sound_file_browser()) {
+               return;
+       }
 
-       ActionManager::uncheck_toggleaction(X_("<Actions>/Common/ToggleSoundFileBrowser"));
+       RefPtr<Action> act = ActionManager::ui_manager->get_action (X_("<Actions>/Common/ToggleSoundFileBrowser"));
+       if (act) {
+               RefPtr<ToggleAction> tact = RefPtr<ToggleAction>::cast_dynamic(act);
+       
+               if (tact->get_active()) {
+                       sfdb->present();
+               } else {
+                       sfdb->hide ();
+               }
+       }
 }