X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui.cc;h=1887f046b8ad26ea3c7de2d6f756bcc606737c80;hb=50a4504e488227182374b39c7ea50a1147f3557d;hp=3c01e73514d5155a11c38c1850485991e9c961fb;hpb=e27ac3278b0d335be0ccd9d6d6373287d406adb5;p=ardour.git diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 3c01e73514..1887f046b8 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -29,10 +29,10 @@ #include #include +#include #include #include -#include #include #include #include @@ -50,8 +50,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include @@ -76,6 +76,7 @@ #include "i18n.h" using namespace ARDOUR; +using namespace PBD; using namespace Gtkmm2ext; using namespace Gtk; using namespace sigc; @@ -146,9 +147,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile) color_manager->load (color_file); - m_new_session_dialog = 0; - m_new_session_dialog_ref = NewSessionDialogFactory::create(); - m_new_session_dialog_ref->get_widget_derived (NewSessionDialogFactory::top_level_widget_name(), m_new_session_dialog); + m_new_session_dialog = new NewSessionDialog(); editor = 0; mixer = 0; session = 0; @@ -186,10 +185,9 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile) gettimeofday (&last_peak_grab, 0); gettimeofday (&last_shuttle_request, 0); - ARDOUR::DiskStream::CannotRecordNoInput.connect (mem_fun(*this, &ARDOUR_UI::cannot_record_no_input)); - ARDOUR::DiskStream::DeleteSources.connect (mem_fun(*this, &ARDOUR_UI::delete_sources_in_the_right_thread)); - ARDOUR::DiskStream::DiskOverrun.connect (mem_fun(*this, &ARDOUR_UI::disk_overrun_handler)); - ARDOUR::DiskStream::DiskUnderrun.connect (mem_fun(*this, &ARDOUR_UI::disk_underrun_handler)); + ARDOUR::AudioDiskstream::DeleteSources.connect (mem_fun(*this, &ARDOUR_UI::delete_sources_in_the_right_thread)); + ARDOUR::AudioDiskstream::DiskOverrun.connect (mem_fun(*this, &ARDOUR_UI::disk_overrun_handler)); + ARDOUR::AudioDiskstream::DiskUnderrun.connect (mem_fun(*this, &ARDOUR_UI::disk_underrun_handler)); /* handle pending state with a dialog */ @@ -198,22 +196,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile) /* have to wait for AudioEngine and Configuration before proceeding */ } -void -ARDOUR_UI::cannot_record_no_input (DiskStream* ds) -{ - ENSURE_GUI_THREAD (bind (mem_fun(*this, &ARDOUR_UI::cannot_record_no_input), ds)); - - string msg = string_compose (_("\ -You cannot record-enable\n\ -track %1\n\ -because it has no input connections.\n\ -You would be wasting space recording silence."), - ds->name()); - - MessageDialog message (*editor, msg); - message.run (); -} - void ARDOUR_UI::set_engine (AudioEngine& e) { @@ -227,23 +209,6 @@ ARDOUR_UI::set_engine (AudioEngine& e) _tooltips.enable(); keyboard = new Keyboard; - install_keybindings (); - - string meter_path; - - meter_path = ARDOUR::find_data_file("v_meter_strip.xpm", "pixmaps"); - if (meter_path.empty()) { - error << _("no vertical meter strip image found") << endmsg; - exit (1); - } - FastMeter::set_vertical_xpm (meter_path); - - meter_path = ARDOUR::find_data_file("h_meter_strip.xpm", "pixmaps"); - if (meter_path.empty()) { - error << _("no horizontal meter strip image found") << endmsg; - exit (1); - } - FastMeter::set_horizontal_xpm (meter_path); if (setup_windows ()) { throw failed_constructor (); @@ -277,10 +242,10 @@ ARDOUR_UI::set_engine (AudioEngine& e) /* this being a GUI and all, we want peakfiles */ - FileSource::set_build_peakfiles (true); - FileSource::set_build_missing_peakfiles (true); + AudioFileSource::set_build_peakfiles (true); + AudioFileSource::set_build_missing_peakfiles (true); - if (Source::start_peak_thread ()) { + if (AudioSource::start_peak_thread ()) { throw failed_constructor(); } @@ -317,7 +282,7 @@ ARDOUR_UI::~ARDOUR_UI () delete add_route_dialog; } - Source::stop_peak_thread (); + AudioSource::stop_peak_thread (); } gint @@ -374,16 +339,20 @@ ARDOUR_UI::save_ardour_state () Config->add_extra_xml (*node); Config->save_state(); - XMLNode& enode (static_cast(editor)->get_state()); - XMLNode& mnode (mixer->get_state()); + XMLNode* enode = new XMLNode (static_cast(editor)->get_state()); + XMLNode* mnode = new XMLNode (mixer->get_state()); if (session) { - session->add_instant_xml(enode, session->path()); - session->add_instant_xml(mnode, session->path()); + session->add_instant_xml(*enode, session->path()); + session->add_instant_xml(*mnode, session->path()); } else { - Config->add_instant_xml(enode, get_user_ardour_path()); - Config->add_instant_xml(mnode, get_user_ardour_path()); + Config->add_instant_xml(*enode, get_user_ardour_path()); + Config->add_instant_xml(*mnode, get_user_ardour_path()); } + + /* keybindings */ + + AccelMap::save ("ardour.saved_bindings"); } void @@ -424,7 +393,7 @@ If you still wish to quit, please use the\n\n\ break; } } - + Config->save_state(); quit (); } @@ -432,15 +401,20 @@ int ARDOUR_UI::ask_about_saving_session (const string & what) { ArdourDialog window (_("ardour: save session?")); + Gtk::HBox dhbox; // the hbox for the image and text Gtk::Label prompt_label; + Gtk::Image* dimage = manage (new Gtk::Image(Stock::DIALOG_WARNING, Gtk::ICON_SIZE_DIALOG)); + string msg; - msg = string_compose(_("Save and %1"), what); - window.add_button (msg, RESPONSE_ACCEPT); - msg = string_compose(_("Just %1"), what); - window.add_button (msg, RESPONSE_APPLY); msg = string_compose(_("Don't %1"), what); window.add_button (msg, RESPONSE_REJECT); + msg = string_compose(_("Just %1"), what); + window.add_button (msg, RESPONSE_APPLY); + msg = string_compose(_("Save and %1"), what); + window.add_button (msg, RESPONSE_ACCEPT); + + window.set_default_response (RESPONSE_ACCEPT); Gtk::Button noquit_button (msg); noquit_button.set_name ("EditorGTKButton"); @@ -453,18 +427,24 @@ ARDOUR_UI::ask_about_saving_session (const string & what) } else { type = _("snapshot"); } - prompt = string_compose(_("The %1\n\"%2\"\nhas not been saved.\n\nAny changes made this time\nwill be lost unless you save it.\n\nWhat do you want to do?"), + prompt = string_compose(_("The %1\"%2\"\nhas not been saved.\n\nAny changes made this time\nwill be lost unless you save it.\n\nWhat do you want to do?"), type, session->snap_name()); prompt_label.set_text (prompt); - prompt_label.set_alignment (0.5, 0.5); prompt_label.set_name (X_("PrompterLabel")); - - window.get_vbox()->pack_start (prompt_label); + prompt_label.set_alignment(ALIGN_LEFT, ALIGN_TOP); + + dimage->set_alignment(ALIGN_CENTER, ALIGN_TOP) +; + dhbox.set_homogeneous (false); + dhbox.pack_start (*dimage, false, false, 5); + dhbox.pack_start (prompt_label, true, false, 5); + window.get_vbox()->pack_start (dhbox); window.set_name (_("Prompter")); window.set_position (Gtk::WIN_POS_MOUSE); window.set_modal (true); + window.set_resizable (false); window.show_all (); save_the_session = 0; @@ -493,27 +473,12 @@ ARDOUR_UI::every_second () update_cpu_load (); update_buffer_load (); update_disk_space (); - // update_disk_rate (); return TRUE; } gint ARDOUR_UI::every_point_one_seconds () { - struct timeval now; - struct timeval diff; - - /* do not attempt to grab peak power more than once per cycle. - */ - - gettimeofday (&now, 0); - timersub (&now, &last_peak_grab, &diff); - - if ((diff.tv_usec + (diff.tv_sec * 1000000)) >= engine->usecs_per_cycle()) { - IO::GrabPeakPower(); /* EMIT_SIGNAL */ - last_peak_grab = now; - } - update_speed_display (); RapidScreenUpdate(); /* EMIT_SIGNAL */ return TRUE; @@ -563,20 +528,6 @@ ARDOUR_UI::update_cpu_load () cpu_load_label.set_text (buf); } -void -ARDOUR_UI::update_disk_rate () -{ - char buf[64]; - - if (session) { - snprintf (buf, sizeof (buf), _("Disk r:%5.1f w:%5.1f MB/s"), - session->read_data_rate()/1048576.0f, session->write_data_rate()/1048576.0f); - disk_rate_label.set_text (buf); - } else { - disk_rate_label.set_text (""); - } -} - void ARDOUR_UI::update_buffer_load () { @@ -592,7 +543,7 @@ ARDOUR_UI::update_buffer_load () } void -ARDOUR_UI::count_recenabled_diskstreams (DiskStream& ds) +ARDOUR_UI::count_recenabled_diskstreams (AudioDiskstream& ds) { if (ds.record_enabled()) { rec_enabled_diskstreams++; @@ -620,7 +571,7 @@ ARDOUR_UI::update_disk_space() if (session->actively_recording()){ rec_enabled_diskstreams = 0; - session->foreach_diskstream (this, &ARDOUR_UI::count_recenabled_diskstreams); + session->foreach_audio_diskstream (this, &ARDOUR_UI::count_recenabled_diskstreams); if (rec_enabled_diskstreams) { frames /= rec_enabled_diskstreams; @@ -750,7 +701,7 @@ ARDOUR_UI::redisplay_recent_sessions () TreeModel::Row row = *(recent_session_model->append()); - row[recent_session_columns.visible_name] = PBD::basename (fullpath); + row[recent_session_columns.visible_name] = Glib::path_get_basename (fullpath); row[recent_session_columns.fullpath] = fullpath; if (states->size() > 1) { @@ -783,12 +734,15 @@ ARDOUR_UI::build_session_selector () Gtk::ScrolledWindow *scroller = manage (new Gtk::ScrolledWindow); session_selector_window->add_button (Stock::CANCEL, RESPONSE_CANCEL); - session_selector_window->add_button (Stock::OK, RESPONSE_ACCEPT); - + session_selector_window->add_button (Stock::OPEN, RESPONSE_ACCEPT); + session_selector_window->set_default_response (RESPONSE_ACCEPT); recent_session_model = TreeStore::create (recent_session_columns); recent_session_display.set_model (recent_session_model); recent_session_display.append_column (_("Recent Sessions"), recent_session_columns.visible_name); recent_session_display.set_headers_visible (false); + recent_session_display.get_selection()->set_mode (SELECTION_SINGLE); + + recent_session_display.signal_row_activated().connect (mem_fun (*this, &ARDOUR_UI::recent_session_row_activated)); scroller->add (recent_session_display); scroller->set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); @@ -799,6 +753,12 @@ ARDOUR_UI::build_session_selector () session_selector_window->show_all_children(); } +void +ARDOUR_UI::recent_session_row_activated (const TreePath& path, TreeViewColumn* col) +{ + session_selector_window->response (RESPONSE_ACCEPT); +} + void ARDOUR_UI::open_recent_session () { @@ -848,9 +808,11 @@ ARDOUR_UI::filter_ardour_session_dirs (const FileFilter::Info& info) return false; } + // XXX Portability + string session_file = info.filename; session_file += '/'; - session_file += PBD::basename (info.filename); + session_file += Glib::path_get_basename (info.filename); session_file += ".ardour"; if (stat (session_file.c_str(), &statbuf) != 0) { @@ -956,7 +918,7 @@ restart JACK with more ports.")); } void -ARDOUR_UI::diskstream_added (DiskStream* ds) +ARDOUR_UI::diskstream_added (AudioDiskstream* ds) { } @@ -1197,31 +1159,21 @@ ARDOUR_UI::transport_forward (int option) } void -ARDOUR_UI::toggle_monitor_enable (guint32 dstream) +ARDOUR_UI::toggle_record_enable (uint32_t dstream) { if (session == 0) { return; } - DiskStream *ds; - - if ((ds = session->diskstream_by_id (dstream)) != 0) { - Port *port = ds->io()->input (0); - port->request_monitor_input (!port->monitoring_input()); - } -} - -void -ARDOUR_UI::toggle_record_enable (guint32 dstream) -{ - if (session == 0) { - return; - } + Route* r; + + if ((r = session->route_by_remote_id (dstream)) != 0) { - DiskStream *ds; + AudioTrack* at; - if ((ds = session->diskstream_by_id (dstream)) != 0) { - ds->set_record_enabled (!ds->record_enabled(), this); + if ((at = dynamic_cast(r)) != 0) { + at->disk_stream().set_record_enabled (!at->disk_stream().record_enabled(), this); + } } } @@ -1247,14 +1199,6 @@ ARDOUR_UI::map_transport_state () } } -void -ARDOUR_UI::send_all_midi_feedback () -{ - if (session) { - session->send_all_midi_feedback(); - } -} - void ARDOUR_UI::allow_local_only () { @@ -1431,63 +1375,6 @@ ARDOUR_UI::stop_blinking () } } - -void -ARDOUR_UI::add_diskstream_to_menu (DiskStream& dstream) -{ - using namespace Gtk; - using namespace Menu_Helpers; - - if (dstream.hidden()) { - return; - } - - MenuList& items = diskstream_menu->items(); - items.push_back (MenuElem (dstream.name(), bind (mem_fun(*this, &ARDOUR_UI::diskstream_selected), (gint32) dstream.id()))); -} - -void -ARDOUR_UI::diskstream_selected (gint32 id) -{ - selected_dstream = id; - Main::quit (); -} - -gint32 -ARDOUR_UI::select_diskstream (GdkEventButton *ev) -{ - using namespace Gtk; - using namespace Menu_Helpers; - - if (session == 0) { - return -1; - } - - diskstream_menu = new Menu(); - diskstream_menu->set_name ("ArdourContextMenu"); - using namespace Gtk; - using namespace Menu_Helpers; - - MenuList& items = diskstream_menu->items(); - items.push_back (MenuElem (_("No Stream"), (bind (mem_fun(*this, &ARDOUR_UI::diskstream_selected), -1)))); - - session->foreach_diskstream (this, &ARDOUR_UI::add_diskstream_to_menu); - - if (ev) { - diskstream_menu->popup (ev->button, ev->time); - } else { - diskstream_menu->popup (0, 0); - } - - selected_dstream = -1; - - Main::run (); - - delete diskstream_menu; - - return selected_dstream; -} - void ARDOUR_UI::name_io_setup (AudioEngine& engine, string& buf, @@ -1543,10 +1430,12 @@ ARDOUR_UI::snapshot_session () time (&n); now = ctime (&n); - now = now.substr (0, now.length() - 1); + now = now.substr (20, 4) + now.substr (3, 16) + " (" + now.substr (0, 3) + ")"; prompter.set_name ("Prompter"); - prompter.set_prompt (_("Name for snapshot")); + prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); + prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false); + prompter.set_prompt (_("Name of New Snapshot")); prompter.set_initial_text (now); switch (prompter.run()) { @@ -1614,7 +1503,7 @@ ARDOUR_UI::secondary_clock_value_changed () } void -ARDOUR_UI::rec_enable_button_blink (bool onoff, DiskStream *dstream, Widget *w) +ARDOUR_UI::rec_enable_button_blink (bool onoff, AudioDiskstream *dstream, Widget *w) { if (session && dstream && dstream->record_enabled()) { @@ -1694,7 +1583,9 @@ ARDOUR_UI::save_template () prompter.set_name (X_("Prompter")); prompter.set_prompt (_("Name for mix template:")); prompter.set_initial_text(session->name() + _("-template")); - + prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); + prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false); + switch (prompter.run()) { case RESPONSE_ACCEPT: prompter.get_result (name); @@ -1712,26 +1603,53 @@ ARDOUR_UI::save_template () void ARDOUR_UI::new_session (bool startup, std::string predetermined_path) { - m_new_session_dialog->show_all(); - m_new_session_dialog->set_transient_for(*editor); + m_new_session_dialog->show(); + m_new_session_dialog->set_modal(true); m_new_session_dialog->set_name(predetermined_path); + m_new_session_dialog->reset_recent(); int response = Gtk::RESPONSE_CANCEL; do { response = m_new_session_dialog->run (); - - if(response == Gtk::RESPONSE_OK) { + if(response == Gtk::RESPONSE_CANCEL || response == Gtk::RESPONSE_DELETE_EVENT) { + quit(); + return; + + } else if (response == Gtk::RESPONSE_NONE) { + /* Clear was pressed */ + m_new_session_dialog->reset(); + + } else if (response == Gtk::RESPONSE_YES) { + /* YES == OPEN, but there's no enum for that */ + std::string session_name = m_new_session_dialog->session_name(); + std::string session_path = m_new_session_dialog->session_folder(); + load_session (session_path, session_name); + + + } else if (response == Gtk::RESPONSE_OK) { + if (m_new_session_dialog->get_current_page() == 1) { + + /* XXX this is a bit of a hack.. + i really want the new sesion dialog to return RESPONSE_YES + if we're on page 1 (the load page) + Unfortunately i can't see how atm.. + */ + std::string session_name = m_new_session_dialog->session_name(); + std::string session_path = m_new_session_dialog->session_folder(); + load_session (session_path, session_name); + + } else { _session_is_new = true; 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. - */ + + //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(); @@ -1787,11 +1705,21 @@ ARDOUR_UI::new_session (bool startup, std::string predetermined_path) nphysin, nphysout, engine->frame_rate() * 60 * 5); - } + } + } } + + } while (response == Gtk::RESPONSE_NONE); + m_new_session_dialog->hide(); + show(); - } while(response == Gtk::RESPONSE_HELP); - m_new_session_dialog->hide_all(); +} + +void +ARDOUR_UI::close_session() +{ + unload_session(); + new_session (); } int @@ -1844,6 +1772,8 @@ ARDOUR_UI::make_session_clean () session->set_clean (); } + show (); + return FALSE; } @@ -1932,17 +1862,21 @@ ARDOUR_UI::display_cleanup_results (Session::cleanup_report& rep, const gchar* l removed = rep.paths.size(); if (removed == 0) { - MessageDialog msg (*editor, X_("cleanupresults"), - _("\ -No audio files were ready for cleanup\n\n\ -If this seems suprising, check for any existing\n\ -snapshots. These may still include regions that\n\ + MessageDialog msgd (*editor, + _("No audio files were ready for cleanup"), + true, + Gtk::MESSAGE_INFO, + (Gtk::ButtonsType)(Gtk::BUTTONS_CLOSE) ); + msgd.set_secondary_text (_("If this seems suprising, \n\ +check for any existing snapshots.\n\ +These may still include regions that\n\ require some unused files to continue to exist.")); - msg.run (); + + msgd.run (); return; } - ArdourDialog results (_("ardour: cleanup"), true); + ArdourDialog results (_("ardour: cleanup"), true, false); struct CleanupResultsModelColumns : public Gtk::TreeModel::ColumnRecord { CleanupResultsModelColumns() { @@ -1954,34 +1888,45 @@ require some unused files to continue to exist.")); }; - Glib::RefPtr results_model; CleanupResultsModelColumns results_columns; + Glib::RefPtr results_model; Gtk::TreeView results_display; results_model = ListStore::create (results_columns); results_display.set_model (results_model); results_display.append_column (list_title, results_columns.visible_name); + + results_display.set_name ("CleanupResultsList"); results_display.set_headers_visible (true); + results_display.set_headers_clickable (false); + results_display.set_reorderable (false); Gtk::ScrolledWindow list_scroller; Gtk::Label txt; + Gtk::VBox dvbox; + Gtk::HBox dhbox; // the hbox for the image and text + Gtk::HBox ddhbox; // the hbox we eventually pack into the dialog's vbox + Gtk::Image* dimage = manage (new Gtk::Image(Stock::DIALOG_INFO, Gtk::ICON_SIZE_DIALOG)); + + dimage->set_alignment(ALIGN_LEFT, ALIGN_TOP); if (rep.space < 1048576.0f) { if (removed > 1) { - txt.set_text (string_compose (msg, removed, _("files"), (float) rep.space / 1024.0f, "kilo")); + txt.set_text (string_compose (msg, removed, _("files were"), session->path() + "dead_sounds", (float) rep.space / 1024.0f, "kilo")); } else { - txt.set_text (string_compose (msg, removed, _("file"), (float) rep.space / 1024.0f, "kilo")); + txt.set_text (string_compose (msg, removed, _("file was"), session->path() + "dead_sounds", (float) rep.space / 1024.0f, "kilo")); } } else { if (removed > 1) { - txt.set_text (string_compose (msg, removed, _("files"), (float) rep.space / 1048576.0f, "mega")); + txt.set_text (string_compose (msg, removed, _("files were"), session->path() + "dead_sounds", (float) rep.space / 1048576.0f, "mega")); } else { - txt.set_text (string_compose (msg, removed, _("file"), (float) rep.space / 1048576.0f, "mega")); + txt.set_text (string_compose (msg, removed, _("file was"), session->path() + "dead_sounds", (float) rep.space / 1048576.0f, "mega")); } } - results.get_vbox()->pack_start (txt, false, false); - + dhbox.pack_start (*dimage, true, false, 5); + dhbox.pack_start (txt, true, false, 5); + for (vector::iterator i = rep.paths.begin(); i != rep.paths.end(); ++i) { TreeModel::Row row = *(results_model->append()); row[results_columns.visible_name] = *i; @@ -1989,14 +1934,22 @@ require some unused files to continue to exist.")); } list_scroller.add (results_display); - list_scroller.set_size_request (-1, 250); + list_scroller.set_size_request (-1, 150); list_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); - - results.get_vbox()->pack_start (list_scroller, true, true); - results.add_button (Stock::OK, RESPONSE_ACCEPT); + + dvbox.pack_start (dhbox, true, false, 5); + dvbox.pack_start (list_scroller, true, false, 5); + ddhbox.pack_start (dvbox, true, false, 5); + + results.get_vbox()->pack_start (ddhbox, true, false, 5); + results.add_button (Stock::CLOSE, RESPONSE_CLOSE); + results.set_default_response (RESPONSE_CLOSE); results.set_position (Gtk::WIN_POS_MOUSE); + results.show_all_children (); + results.set_resizable (false); results.run (); + } void @@ -2007,15 +1960,20 @@ ARDOUR_UI::cleanup () return; } - ArdourDialog checker (_("ardour cleanup")); - Gtk::Label label (_("\ -Cleanup is a destructive operation.\n\ + + MessageDialog checker (_("Are you sure you want to cleanup?"), + true, + Gtk::MESSAGE_QUESTION, + (Gtk::ButtonsType)(Gtk::BUTTONS_NONE)); + + checker.set_secondary_text(_("Cleanup is a destructive operation.\n\ ALL undo/redo information will be lost if you cleanup.\n\ -Unused audio files will be moved to a \"dead sounds\" location.")); +After cleanup, unused audio files will be moved to a \ +\"dead sounds\" location.")); - checker.get_vbox()->pack_start (label, false, false); - checker.add_button (Stock::OK, RESPONSE_ACCEPT); checker.add_button (Stock::CANCEL, RESPONSE_CANCEL); + checker.add_button (_("Clean Up"), RESPONSE_ACCEPT); + checker.set_default_response (RESPONSE_CANCEL); checker.set_name (_("CleanupDialog")); checker.set_wmclass (_("ardour_cleanup"), "Ardour"); @@ -2035,14 +1993,16 @@ Unused audio files will be moved to a \"dead sounds\" location.")); if (session->cleanup_sources (rep)) { return; } - + checker.hide(); display_cleanup_results (rep, _("cleaned files"), _("\ -The following %1 %2 were not in use.\n\ -The next time you flush the wastebasket\n\ -it will release an additional %3 %4bytes\n\ -of disk space" +The following %1 %2 not in use and \n\ +have been moved to:\n\ +%3. \n\n\ +Flushing the wastebasket will \n\ +release an additional\n\ +%4 %5bytes of disk space.\n" )); } @@ -2062,7 +2022,9 @@ ARDOUR_UI::flush_trash () display_cleanup_results (rep, _("deleted file"), - _("The following %1 file%2 were deleted, releasing %3 %4bytes of disk space")); + _("The following %1 %2 deleted from\n\ +%3,\n\ +releasing %4 %5bytes of disk space")); } void @@ -2188,11 +2150,11 @@ ARDOUR_UI::halt_on_xrun_message () } void -ARDOUR_UI::delete_sources_in_the_right_thread (list* deletion_list) +ARDOUR_UI::delete_sources_in_the_right_thread (list* deletion_list) { ENSURE_GUI_THREAD (bind (mem_fun(*this, &ARDOUR_UI::delete_sources_in_the_right_thread), deletion_list)); - for (list::iterator i = deletion_list->begin(); i != deletion_list->end(); ++i) { + for (list::iterator i = deletion_list->begin(); i != deletion_list->end(); ++i) { delete *i; } @@ -2269,15 +2231,12 @@ what you would like to do.\n")); switch (dialog.run ()) { case RESPONSE_ACCEPT: - break; - default: return 1; + default: + return 0; } - - return 0; } - void ARDOUR_UI::disconnect_from_jack () { @@ -2352,6 +2311,12 @@ ARDOUR_UI::set_native_file_header_format (HeaderFormat hf) case RF64: act = ActionManager::get_action (X_("options"), X_("FileHeaderFormatRF64")); break; + case CAF: + act = ActionManager::get_action (X_("options"), X_("FileHeaderFormatCAF")); + break; + case AIFF: + act = ActionManager::get_action (X_("options"), X_("FileHeaderFormatAIFF")); + break; } if (act) { @@ -2426,6 +2391,12 @@ ARDOUR_UI::use_config () case RF64: act = ActionManager::get_action (X_("options"), X_("FileHeaderFormatRF64")); break; + case CAF: + act = ActionManager::get_action (X_("options"), X_("FileHeaderFormatCAF")); + break; + case AIFF: + act = ActionManager::get_action (X_("options"), X_("FileHeaderFormatAIFF")); + break; } if (act) {