diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/actions.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/actions.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 12 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_dialogs.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_ed.cc | 13 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/mixer_strip.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/route_time_axis.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/route_ui.cc | 2 |
9 files changed, 23 insertions, 17 deletions
diff --git a/gtk2_ardour/actions.cc b/gtk2_ardour/actions.cc index 5e9c067476..19a33ef177 100644 --- a/gtk2_ardour/actions.cc +++ b/gtk2_ardour/actions.cc @@ -47,6 +47,7 @@ using namespace PBD; using namespace ARDOUR; vector<RefPtr<Gtk::Action> > ActionManager::session_sensitive_actions; +vector<RefPtr<Gtk::Action> > ActionManager::write_sensitive_actions; vector<RefPtr<Gtk::Action> > ActionManager::region_list_selection_sensitive_actions; vector<RefPtr<Gtk::Action> > ActionManager::plugin_selection_sensitive_actions; vector<RefPtr<Gtk::Action> > ActionManager::region_selection_sensitive_actions; diff --git a/gtk2_ardour/actions.h b/gtk2_ardour/actions.h index 3a20f4d542..35331fdac2 100644 --- a/gtk2_ardour/actions.h +++ b/gtk2_ardour/actions.h @@ -42,6 +42,7 @@ class ActionManager static void init (); static std::vector<Glib::RefPtr<Gtk::Action> > session_sensitive_actions; + static std::vector<Glib::RefPtr<Gtk::Action> > write_sensitive_actions; static std::vector<Glib::RefPtr<Gtk::Action> > region_list_selection_sensitive_actions; static std::vector<Glib::RefPtr<Gtk::Action> > plugin_selection_sensitive_actions; diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index ea89b062c8..45f6191dd3 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -577,7 +577,7 @@ ARDOUR_UI::update_autosave () { ENSURE_GUI_THREAD (mem_fun (*this, &ARDOUR_UI::update_autosave)); - if (session->dirty()) { + if (session && session->dirty()) { if (_autosave_connection.connected()) { _autosave_connection.disconnect(); } @@ -2397,16 +2397,6 @@ ARDOUR_UI::load_session (const Glib::ustring& path, const Glib::ustring& snap_na goto out; } - /* if it already exists, we must have write access */ - - if (Glib::file_test (path.c_str(), Glib::FILE_TEST_EXISTS) && ::access (path.c_str(), W_OK)) { - MessageDialog msg (*editor, _("You do not have write access to this session.\n" - "This prevents the session from being loaded.")); - pop_back_splash (); - msg.run (); - goto out; - } - loading_message (_("Please wait while Ardour loads your session")); try { diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 91ff10d473..e816c3ce91 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -57,6 +57,7 @@ ARDOUR_UI::connect_to_session (Session *s) /* sensitize menu bar options that are now valid */ ActionManager::set_sensitive (ActionManager::session_sensitive_actions, true); + ActionManager::set_sensitive (ActionManager::write_sensitive_actions, session->writable()); if (session->locations()->num_range_markers()) { ActionManager::set_sensitive (ActionManager::range_sensitive_actions, true); diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index b827625db2..d76ff43791 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -89,8 +89,8 @@ ARDOUR_UI::install_actions () /* menus + submenus that need action items */ ActionManager::register_action (main_actions, X_("Session"), _("Session")); - ActionManager::register_action (main_actions, X_("Files"), _("Import/Export")); - ActionManager::register_action (main_actions, X_("Cleanup"), _("Cleanup")); + act = ActionManager::register_action (main_actions, X_("Cleanup"), _("Cleanup")); + ActionManager::write_sensitive_actions.push_back (act); ActionManager::register_action (main_actions, X_("Sync"), _("Sync")); ActionManager::register_action (main_actions, X_("TransportOptions"), _("Options")); ActionManager::register_action (main_actions, X_("Help"), _("Help")); @@ -117,7 +117,7 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (main_actions, X_("AddTrackBus"), _("Add Track/Bus..."), bind (mem_fun(*this, &ARDOUR_UI::add_route), (Gtk::Window*) 0)); ActionManager::session_sensitive_actions.push_back (act); - + ActionManager::write_sensitive_actions.push_back (act); #ifdef WITH_CMT @@ -132,6 +132,7 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (main_actions, X_("Snapshot"), _("Snapshot..."), mem_fun(*this, &ARDOUR_UI::snapshot_session)); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); act = ActionManager::register_action (main_actions, X_("SaveTemplate"), _("Save Template..."), mem_fun(*this, &ARDOUR_UI::save_template)); ActionManager::session_sensitive_actions.push_back (act); @@ -153,7 +154,10 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (main_actions, X_("CleanupUnused"), _("Cleanup Unused Sources"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::cleanup)); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); + act = ActionManager::register_action (main_actions, X_("FlushWastebasket"), _("Flush Wastebasket"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::flush_trash)); + ActionManager::write_sensitive_actions.push_back (act); ActionManager::session_sensitive_actions.push_back (act); /* JACK actions for controlling ... JACK */ @@ -226,6 +230,7 @@ ARDOUR_UI::install_actions () //ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (common_actions, X_("Save"), _("Save"), bind (mem_fun(*this, &ARDOUR_UI::save_state), string(""))); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); act = ActionManager::register_action (common_actions, X_("RemoveLastCapture"), _("Remove Last Capture"), mem_fun(*this, &ARDOUR_UI::remove_last_capture)); ActionManager::session_sensitive_actions.push_back (act); @@ -277,8 +282,10 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (transport_actions, X_("Record"), _("Enable Record"), bind (mem_fun(*this, &ARDOUR_UI::transport_record), false)); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); act = ActionManager::register_action (transport_actions, X_("record-roll"), _("Start Recording"), bind (mem_fun(*this, &ARDOUR_UI::transport_record), true)); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); act = ActionManager::register_action (transport_actions, X_("Rewind"), _("Rewind"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 0)); ActionManager::session_sensitive_actions.push_back (act); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index db99e3529e..0418942164 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -847,10 +847,14 @@ Editor::register_actions () act = ActionManager::register_action (editor_actions, X_("addExistingAudioFiles"), _("Import"), mem_fun (*this, &Editor::external_audio_dialog)); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); + act = ActionManager::register_action (editor_actions, X_("addExternalAudioToRegionList"), _("Import to Region List"), bind (mem_fun(*this, &Editor::add_external_audio_action), ImportAsRegion)); ActionManager::session_sensitive_actions.push_back (act); - - ActionManager::register_action (editor_actions, X_("importFromSession"), _("Import From Session"), mem_fun(*this, &Editor::session_import_dialog)); + ActionManager::write_sensitive_actions.push_back (act); + + act = ActionManager::register_action (editor_actions, X_("importFromSession"), _("Import From Session"), mem_fun(*this, &Editor::session_import_dialog)); + ActionManager::write_sensitive_actions.push_back (act); ActionManager::register_toggle_action (editor_actions, X_("ToggleWaveformsWhileRecording"), _("Show Waveforms While Recording"), mem_fun (*this, &Editor::toggle_waveforms_while_recording)); diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 5f7a89d90a..4b3cb3649f 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -369,6 +369,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt) connections.push_back (at->FreezeChange.connect (mem_fun(*this, &MixerStrip::map_frozen))); button_table.attach (*rec_enable_button, 0, 2, 2, 3); + rec_enable_button->set_sensitive (_session.writable()); rec_enable_button->show(); } else if (!is_track()) { diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index 68ca7008c7..9a3a6a3124 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -188,6 +188,7 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh controls_table.attach (*rec_enable_button, 5, 6, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0); ARDOUR_UI::instance()->tooltips().set_tip(*rec_enable_button, _("Record")); + rec_enable_button->set_sensitive (_session.writable()); } controls_hbox.pack_start(gm.get_level_meter(), false, false); diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index 9a64ca8aa3..703857bc6b 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -190,7 +190,7 @@ RouteUI::set_route (boost::shared_ptr<Route> rp) connections.push_back (_route->listen_changed.connect (mem_fun(*this, &RouteUI::listen_changed))); connections.push_back (_route->solo_isolated_changed.connect (mem_fun(*this, &RouteUI::solo_changed))); - if (is_track()) { + if (_session.writable() && is_track()) { boost::shared_ptr<Track> t = boost::dynamic_pointer_cast<Track>(_route); connections.push_back (t->diskstream()->RecordEnableChanged.connect (mem_fun (*this, &RouteUI::route_rec_enable_changed))); |