open session patch from Doug McLain
[ardour.git] / gtk2_ardour / ardour_ui.cc
index d010c90219a60a78c52483c8713d96d88cf96d02..c2edada43df375d13caed8f666762cdd91e68dbb 100644 (file)
@@ -832,6 +832,10 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile)
                theArdourUI = this;
        }
 
+       // allow run-time rebinding of accels
+
+       Settings::get_default()->property_gtk_can_change_accels() = true;
+
        ActionManager::init ();
        
        m_new_session_dialog = 0;
@@ -866,18 +870,9 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile)
        set_shuttle_units (Percentage);
        set_shuttle_behaviour (Sprung);
 
-       Glib::RefPtr<ActionGroup> shuttle_actions = ActionGroup::create ("ShuttleActions");
-       
-       shuttle_actions->add (Action::create (X_("SetShuttleUnitsPercentage"), _("Percentage")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Percentage));
-       shuttle_actions->add (Action::create (X_("SetShuttleUnitsSemitones"), _("Semitones")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Semitones));
-       shuttle_actions->add (Action::create (X_("SetShuttleActionSprung"), _("Sprung")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_behaviour), Sprung));
-       shuttle_actions->add (Action::create (X_("SetShuttleActionWheel"), _("Wheel")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_behaviour), Wheel));
-       
-       ActionManager::add_action_group (shuttle_actions);
+       shuttle_style_menu = 0;
+       shuttle_unit_menu = 0;
 
-       shuttle_style_menu = dynamic_cast<Menu*> (ActionManager::get_widget ("ShuttleStylePopup"));
-       shuttle_unit_menu = dynamic_cast<Menu*> (ActionManager::get_widget ("ShuttleUnitPopup"));
-       
        gettimeofday (&last_peak_grab, 0);
        gettimeofday (&last_shuttle_request, 0);
 
@@ -1796,8 +1791,7 @@ ARDOUR_UI::open_session ()
                
                FileFilter filter_ardour;
                filter_ardour.set_name (_("Ardour sessions"));
-               filter_ardour.add_custom (FILE_FILTER_FILENAME, mem_fun (*this, &ARDOUR_UI::filter_ardour_session_dirs));
-
+               filter_ardour.add_pattern("*.ardour");
                open_session_selector->add_filter (filter_ardour);
        }
 
@@ -2209,10 +2203,8 @@ void
 ARDOUR_UI::engine_stopped ()
 {
        ENSURE_GUI_THREAD (mem_fun(*this, &ARDOUR_UI::engine_stopped));
-
-       jack_disconnect_item->set_sensitive (false);
-       jack_reconnect_item->set_sensitive (true);
-       jack_bufsize_menu->set_sensitive (false);
+       ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, false);
+       ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, true);
 }
 
 
@@ -2220,10 +2212,8 @@ void
 ARDOUR_UI::engine_running ()
 {
        ENSURE_GUI_THREAD (mem_fun(*this, &ARDOUR_UI::engine_running));
-
-       jack_disconnect_item->set_sensitive (true);
-       jack_reconnect_item->set_sensitive (false);
-       jack_bufsize_menu->set_sensitive (true);
+       ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, true);
+       ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, false);
 }
 
 void
@@ -2231,9 +2221,8 @@ ARDOUR_UI::engine_halted ()
 {
        ENSURE_GUI_THREAD (mem_fun(*this, &ARDOUR_UI::engine_halted));
 
-       jack_disconnect_item->set_sensitive (false);
-       jack_reconnect_item->set_sensitive (true);
-       jack_bufsize_menu->set_sensitive (false);
+       ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, false);
+       ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, true);
 
        update_sample_rate (0);
 
@@ -2657,6 +2646,13 @@ ARDOUR_UI::new_session (bool startup, std::string predetermined_path)
                        
                        std::string session_name = m_new_session_dialog->session_name();
                        std::string session_path = m_new_session_dialog->session_folder();
+                       
+                       /*
+                         XXX This is needed because session constructor wants a 
+                         non-existant path. hopefully this will be fixed at some point.
+                       */
+                       session_path = Glib::build_filename(session_path, session_name);
+                       
                        std::string template_name = m_new_session_dialog->session_template_name();
                        
                        if (m_new_session_dialog->use_session_template()) {
@@ -2821,7 +2817,7 @@ ARDOUR_UI::show ()
        }
 
        if (session && mixer) {
-               mixer->show_window ();
+               // mixer->show_window ();
        }
        
        if (about) {