X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui.cc;h=5588e2e5a9cb616305f4b948fa32abb28811b65a;hb=d0227fe5b7c30271cd2950a71d429cf03b0db2db;hp=1e0b75d3cb2510e76e779d8331c4f6a0358b75f8;hpb=5de741c4ab9970bee830a60efa07e26f219aecef;p=ardour.git diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 1e0b75d3cb..5588e2e5a9 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -80,34 +80,35 @@ typedef uint64_t microseconds_t; +#include "about.h" #include "actions.h" +#include "add_route_dialog.h" +#include "ambiguous_file_dialog.h" #include "ardour_ui.h" -#include "public_editor.h" #include "audio_clock.h" +#include "bundle_manager.h" +#include "engine_dialog.h" +#include "gain_meter.h" +#include "global_port_matrix.h" +#include "gui_thread.h" #include "keyboard.h" +#include "location_ui.h" +#include "missing_file_dialog.h" +#include "missing_plugin_dialog.h" #include "mixer_ui.h" -#include "prompter.h" #include "opts.h" -#include "add_route_dialog.h" -#include "about.h" -#include "splash.h" -#include "utils.h" -#include "gui_thread.h" -#include "theme_manager.h" -#include "bundle_manager.h" -#include "session_metadata_dialog.h" -#include "gain_meter.h" +#include "processor_box.h" +#include "prompter.h" +#include "public_editor.h" #include "route_time_axis.h" +#include "session_metadata_dialog.h" +#include "speaker_dialog.h" +#include "splash.h" #include "startup.h" -#include "engine_dialog.h" -#include "processor_box.h" +#include "theme_manager.h" #include "time_axis_view_item.h" +#include "utils.h" #include "window_proxy.h" -#include "global_port_matrix.h" -#include "location_ui.h" -#include "missing_file_dialog.h" -#include "missing_plugin_dialog.h" -#include "ambiguous_file_dialog.h" #include "i18n.h" @@ -317,6 +318,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[]) location_ui = new ActionWindowProxy (X_("locations"), Config->extra_xml (X_("UI")), X_("ToggleLocations")); big_clock_window = new ActionWindowProxy (X_("bigclock"), Config->extra_xml (X_("UI")), X_("ToggleBigClock")); + speaker_config_window = new ActionWindowProxy (X_("speakerconf"), Config->extra_xml (X_("UI")), X_("toggle-speaker-config")); for (ARDOUR::DataType::iterator i = ARDOUR::DataType::begin(); i != ARDOUR::DataType::end(); ++i) { _global_port_matrix[*i] = new ActionWindowProxy ( @@ -327,6 +329,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[]) } setup_clock (); + speaker_config_window->set (new SpeakerDialog); starting.connect (sigc::mem_fun(*this, &ARDOUR_UI::startup)); stopping.connect (sigc::mem_fun(*this, &ARDOUR_UI::shutdown)); @@ -419,10 +422,11 @@ ARDOUR_UI::post_engine () if (ARDOUR_COMMAND_LINE::show_key_actions) { vector names; vector paths; + vector tooltips; vector keys; vector bindings; - ActionManager::get_all_actions (names, paths, keys, bindings); + ActionManager::get_all_actions (names, paths, tooltips, keys, bindings); vector::iterator n; vector::iterator k; @@ -1330,7 +1334,7 @@ ARDOUR_UI::open_session () void -ARDOUR_UI::session_add_midi_route (bool disk, RouteGroup* route_group, uint32_t how_many) +ARDOUR_UI::session_add_midi_route (bool disk, RouteGroup* route_group, uint32_t how_many, string const & name_template) { list > tracks; @@ -1342,7 +1346,7 @@ ARDOUR_UI::session_add_midi_route (bool disk, RouteGroup* route_group, uint32_t try { if (disk) { - tracks = _session->new_midi_track (ARDOUR::Normal, route_group, how_many); + tracks = _session->new_midi_track (ARDOUR::Normal, route_group, how_many, name_template); if (tracks.size() != how_many) { if (how_many == 1) { @@ -1370,7 +1374,15 @@ restart JACK with more ports."), PROGRAM_NAME)); void -ARDOUR_UI::session_add_audio_route (bool track, int32_t input_channels, int32_t output_channels, ARDOUR::TrackMode mode, RouteGroup* route_group, uint32_t how_many) +ARDOUR_UI::session_add_audio_route ( + bool track, + int32_t input_channels, + int32_t output_channels, + ARDOUR::TrackMode mode, + RouteGroup* route_group, + uint32_t how_many, + string const & name_template + ) { list > tracks; RouteList routes; @@ -1382,7 +1394,7 @@ ARDOUR_UI::session_add_audio_route (bool track, int32_t input_channels, int32_t try { if (track) { - tracks = _session->new_audio_track (input_channels, output_channels, mode, route_group, how_many); + tracks = _session->new_audio_track (input_channels, output_channels, mode, route_group, how_many, name_template); if (tracks.size() != how_many) { if (how_many == 1) { @@ -1395,7 +1407,7 @@ ARDOUR_UI::session_add_audio_route (bool track, int32_t input_channels, int32_t } else { - routes = _session->new_audio_route (input_channels, output_channels, route_group, how_many); + routes = _session->new_audio_route (input_channels, output_channels, route_group, how_many, name_template); if (routes.size() != how_many) { if (how_many == 1) { @@ -2235,8 +2247,8 @@ ARDOUR_UI::save_template () } prompter.set_name (X_("Prompter")); - prompter.set_title (_("Save Mix Template")); - prompter.set_prompt (_("Name for mix template:")); + prompter.set_title (_("Save Template")); + prompter.set_prompt (_("Name for template:")); prompter.set_initial_text(_session->name() + _("-template")); prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); @@ -2642,6 +2654,12 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri } else { ret = load_session (session_path, session_name, template_name); + + if (ret == -2) { + /* not connected to the AudioEngine, so quit to avoid an infinite loop */ + exit (1); + } + if (!ARDOUR_COMMAND_LINE::immediate_save.empty()) { _session->save_state (ARDOUR_COMMAND_LINE::immediate_save, false); exit (1); @@ -2672,6 +2690,7 @@ ARDOUR_UI::close_session() goto_editor_window (); } +/** @return -2 if the load failed because we are not connected to the AudioEngine */ int ARDOUR_UI::load_session (const std::string& path, const std::string& snap_name, std::string mix_template) { @@ -2682,7 +2701,7 @@ ARDOUR_UI::load_session (const std::string& path, const std::string& snap_name, session_loaded = false; if (!check_audioengine()) { - return -1; + return -2; } unload_status = unload_session (); @@ -2694,7 +2713,7 @@ ARDOUR_UI::load_session (const std::string& path, const std::string& snap_name, goto out; } - loading_message (string_compose (_("Please wait while %1loads your session"), PROGRAM_NAME)); + loading_message (string_compose (_("Please wait while %1 loads your session"), PROGRAM_NAME)); try { new_session = new Session (*engine, path, snap_name, 0, mix_template); @@ -2837,8 +2856,11 @@ ARDOUR_UI::build_session (const std::string& path, const std::string& snap_name, } /* Put the playhead at 0 and scroll fully left */ - new_session->instant_xml(X_("Editor"))->add_property (X_("playhead"), X_("0")); - new_session->instant_xml(X_("Editor"))->add_property (X_("left-frame"), X_("0")); + n = new_session->instant_xml (X_("Editor")); + if (n) { + n->add_property (X_("playhead"), X_("0")); + n->add_property (X_("left-frame"), X_("0")); + } set_session (new_session); @@ -2934,7 +2956,7 @@ ARDOUR_UI::display_cleanup_results (ARDOUR::CleanupReport& rep, const gchar* lis if (removed == 0) { MessageDialog msgd (*editor, - _("No audio files were ready for cleanup"), + _("No files were ready for cleanup"), true, Gtk::MESSAGE_INFO, (Gtk::ButtonsType)(Gtk::BUTTONS_OK) ); @@ -2981,11 +3003,11 @@ require some unused files to continue to exist.")); dimage->set_alignment(ALIGN_LEFT, ALIGN_TOP); - const string dead_sound_directory = _session->session_directory().dead_sound_path().to_string(); + const string dead_directory = _session->session_directory().dead_path().to_string(); /* subst: %1 - number of files removed - %2 - location of "dead_sounds" + %2 - location of "dead" %3 - size of files affected %4 - prefix for "bytes" to produce sensible results (e.g. mega, kilo, giga) */ @@ -2993,20 +3015,24 @@ require some unused files to continue to exist.")); const char* bprefix; double space_adjusted = 0; - if (rep.space < 100000.0f) { - bprefix = X_("kilo"); - } else if (rep.space < 1000000.0f * 1000) { - bprefix = X_("mega"); + if (rep.space < 1000) { + bprefix = X_(""); + space_adjusted = rep.space; + } else if (rep.space < 1000000) { + bprefix = X_("kilo"); space_adjusted = truncf((float)rep.space / 1000.0); + } else if (rep.space < 1000000 * 1000) { + bprefix = X_("mega"); + space_adjusted = truncf((float)rep.space / (1000.0 * 1000.0)); } else { bprefix = X_("giga"); - space_adjusted = truncf((float)rep.space / (1000000.0 * 1000)); + space_adjusted = truncf((float)rep.space / (1000.0 * 1000 * 1000.0)); } if (removed > 1) { - txt.set_text (string_compose (plural_msg, removed, _session->path() + "dead_sounds", space_adjusted, bprefix)); + txt.set_text (string_compose (plural_msg, removed, dead_directory, space_adjusted, bprefix)); } else { - txt.set_text (string_compose (singular_msg, removed, _session->path() + "dead_sounds", space_adjusted, bprefix)); + txt.set_text (string_compose (singular_msg, removed, dead_directory, space_adjusted, bprefix)); } dhbox.pack_start (*dimage, true, false, 5); @@ -3044,7 +3070,7 @@ require some unused files to continue to exist.")); results.run (); -} +} void ARDOUR_UI::cleanup () @@ -3062,8 +3088,7 @@ ARDOUR_UI::cleanup () checker.set_secondary_text(_("Cleanup is a destructive operation.\n\ ALL undo/redo information will be lost if you cleanup.\n\ -After cleanup, unused audio files will be moved to a \ -\"dead sounds\" location.")); +Cleanup will move all unused files to a \"dead\" location.")); checker.add_button (Stock::CANCEL, RESPONSE_CANCEL); checker.add_button (_("Clean Up"), RESPONSE_ACCEPT); @@ -3103,17 +3128,19 @@ After cleanup, unused audio files will be moved to a \ _("cleaned files"), _("\ The following %1 files were not in use and \n\ -have been moved to:\n\ -%2. \n\n\ -Flushing the wastebasket will \n\ -release an additional\n\ +have been moved to:\n\n\ +%2\n\n\ +After a restart of Ardour,\n\n\ +Session -> Cleanup -> Flush Wastebasket\n\n\ +will release an additional\n\ %3 %4bytes of disk space.\n"), _("\ The following file was not in use and \n \ has been moved to:\n \ -%2. \n\n\ -Flushing the wastebasket will \n\ -release an additional\n\ +%2\n\n\ +After a restart of Ardour,\n\n\ +Session -> Cleanup -> Flush Wastebasket\n\n\ +will release an additional\n\ %3 %4bytes of disk space.\n" )); @@ -3205,7 +3232,7 @@ ARDOUR_UI::add_route (Gtk::Window* float_window) if (add_route_dialog->type() == ARDOUR::DataType::MIDI) { if (track) { - session_add_midi_track (route_group, count); + session_add_midi_track (route_group, count, name_template); } else { MessageDialog msg (*editor, _("Sorry, MIDI Busses are not supported at this time.")); @@ -3214,9 +3241,9 @@ ARDOUR_UI::add_route (Gtk::Window* float_window) } } else { if (track) { - session_add_audio_track (input_chan, output_chan, add_route_dialog->mode(), route_group, count); + session_add_audio_track (input_chan, output_chan, add_route_dialog->mode(), route_group, count, name_template); } else { - session_add_audio_bus (input_chan, output_chan, route_group, count); + session_add_audio_bus (input_chan, output_chan, route_group, count, name_template); } } }