Merge remote-tracking branch 'remotes/origin/master' into windows+cc

This commit is contained in:
John Emmas 2013-10-16 15:55:59 +01:00
commit 75b933eadb
13 changed files with 1861 additions and 1666 deletions

View file

@ -722,6 +722,7 @@ ARDOUR_UI::starting ()
{ {
Application* app = Application::instance (); Application* app = Application::instance ();
char *nsm_url; char *nsm_url;
bool brand_new_user = ArdourStartup::required ();
app->ShouldQuit.connect (sigc::mem_fun (*this, &ARDOUR_UI::queue_finish)); app->ShouldQuit.connect (sigc::mem_fun (*this, &ARDOUR_UI::queue_finish));
app->ShouldLoad.connect (sigc::mem_fun (*this, &ARDOUR_UI::idle_load)); app->ShouldLoad.connect (sigc::mem_fun (*this, &ARDOUR_UI::idle_load));
@ -782,17 +783,17 @@ ARDOUR_UI::starting ()
} }
} else { } else {
if (ArdourStartup::required()) { if (brand_new_user) {
ArdourStartup s; ArdourStartup s;
s.present (); s.present ();
main().run(); main().run();
s.hide (); s.hide ();
switch (s.response ()) { switch (s.response ()) {
case Gtk::RESPONSE_REJECT: case Gtk::RESPONSE_OK:
return -1;
default:
break; break;
default:
return -1;
} }
} }
@ -808,7 +809,9 @@ ARDOUR_UI::starting ()
/* go get a session */ /* go get a session */
if (get_session_parameters (false, ARDOUR_COMMAND_LINE::new_session, ARDOUR_COMMAND_LINE::load_template)) { const bool new_session_required = (ARDOUR_COMMAND_LINE::new_session || brand_new_user);
if (get_session_parameters (false, new_session_required, ARDOUR_COMMAND_LINE::load_template)) {
return -1; return -1;
} }
} }

View file

@ -77,7 +77,7 @@ EngineControl::EngineControl ()
, ports_adjustment (128, 8, 1024, 1, 16) , ports_adjustment (128, 8, 1024, 1, 16)
, ports_spinner (ports_adjustment) , ports_spinner (ports_adjustment)
, control_app_button (_("Device Control Panel")) , control_app_button (_("Device Control Panel"))
, lm_measure_button (_("Measure")) , lm_measure_label (_("Measure"))
, lm_use_button (_("Use results")) , lm_use_button (_("Use results"))
, lm_back_button (_("Back to settings ... (ignore results)")) , lm_back_button (_("Back to settings ... (ignore results)"))
, lm_button (_("Calibrate...")) , lm_button (_("Calibrate..."))
@ -179,6 +179,8 @@ EngineControl::EngineControl ()
xopt = AttachOptions(0); xopt = AttachOptions(0);
lm_measure_label.set_padding (10, 10);
lm_measure_button.add (lm_measure_label);
lm_measure_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::latency_button_clicked)); lm_measure_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::latency_button_clicked));
lm_use_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::use_latency_button_clicked)); lm_use_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::use_latency_button_clicked));
lm_back_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (notebook, &Gtk::Notebook::set_current_page), 0)); lm_back_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (notebook, &Gtk::Notebook::set_current_page), 0));
@ -191,10 +193,6 @@ EngineControl::EngineControl ()
Gtk::Misc* l; Gtk::Misc* l;
if ((l = dynamic_cast<Gtk::Misc*>(lm_measure_button.get_child())) != 0) {
l->set_padding (10, 10);
}
if ((l = dynamic_cast<Gtk::Misc*>(lm_use_button.get_child())) != 0) { if ((l = dynamic_cast<Gtk::Misc*>(lm_use_button.get_child())) != 0) {
l->set_padding (10, 10); l->set_padding (10, 10);
} }
@ -336,7 +334,7 @@ EngineControl::EngineControl ()
basic_packer.attach (*label, 0, 1, 0, 1, xopt, (AttachOptions) 0); basic_packer.attach (*label, 0, 1, 0, 1, xopt, (AttachOptions) 0);
basic_packer.attach (backend_combo, 1, 2, 0, 1, xopt, (AttachOptions) 0); basic_packer.attach (backend_combo, 1, 2, 0, 1, xopt, (AttachOptions) 0);
lm_button.signal_clicked.connect (sigc::bind (sigc::mem_fun (notebook, &Gtk::Notebook::set_current_page), latency_tab)); lm_button.signal_clicked.connect (sigc::mem_fun (*this, &EngineControl::calibrate_latency));
lm_button.set_name ("record enable button"); lm_button.set_name ("record enable button");
if (_have_control) { if (_have_control) {
build_full_control_notebook (); build_full_control_notebook ();
@ -514,14 +512,34 @@ EngineControl::EngineControl ()
EngineControl::enable_latency_tab () EngineControl::enable_latency_tab ()
{ {
vector<string> outputs; vector<string> outputs;
ARDOUR::AudioEngine::instance()->get_physical_outputs (ARDOUR::DataType::AUDIO, outputs);
set_popdown_strings (lm_output_channel_combo, outputs);
lm_output_channel_combo.set_active_text (outputs.front());
vector<string> inputs; vector<string> inputs;
ARDOUR::AudioEngine::instance()->get_physical_outputs (ARDOUR::DataType::AUDIO, outputs);
ARDOUR::AudioEngine::instance()->get_physical_inputs (ARDOUR::DataType::AUDIO, inputs); ARDOUR::AudioEngine::instance()->get_physical_inputs (ARDOUR::DataType::AUDIO, inputs);
set_popdown_strings (lm_input_channel_combo, inputs);
lm_input_channel_combo.set_active_text (inputs.front()); if (inputs.empty() || outputs.empty()) {
MessageDialog msg (_("Your selected audio configuration is playback- or capture-only.\n\nLatency calibration requires playback and capture"));
lm_measure_button.set_sensitive (false);
notebook.set_current_page (0);
msg.run ();
return;
}
if (!outputs.empty()) {
set_popdown_strings (lm_output_channel_combo, outputs);
lm_output_channel_combo.set_active_text (outputs.front());
lm_output_channel_combo.set_sensitive (true);
} else {
lm_output_channel_combo.set_sensitive (false);
}
if (!inputs.empty()) {
set_popdown_strings (lm_input_channel_combo, inputs);
lm_input_channel_combo.set_active_text (inputs.front());
lm_input_channel_combo.set_sensitive (true);
} else {
lm_input_channel_combo.set_sensitive (false);
}
lm_measure_button.set_sensitive (true); lm_measure_button.set_sensitive (true);
} }
@ -1272,9 +1290,9 @@ EngineControl::EngineControl ()
/* backend never started, so we have to force a group /* backend never started, so we have to force a group
of settings. of settings.
*/ */
change_driver = true; change_device = true;
if (backend->requires_driver_selection()) { if (backend->requires_driver_selection()) {
change_device = true; change_driver = true;
} }
change_rate = true; change_rate = true;
change_bufsize = true; change_bufsize = true;
@ -1619,7 +1637,9 @@ EngineControl::EngineControl ()
enable_latency_tab (); enable_latency_tab ();
} else { } else {
ARDOUR::AudioEngine::instance()->stop_latency_detection(); if (lm_running) {
ARDOUR::AudioEngine::instance()->stop_latency_detection();
}
} }
} }
@ -1688,7 +1708,7 @@ EngineControl::start_latency_detection ()
if (ARDOUR::AudioEngine::instance()->start_latency_detection () == 0) { if (ARDOUR::AudioEngine::instance()->start_latency_detection () == 0) {
lm_results.set_markup (string_compose (results_markup, _("Detecting ..."))); lm_results.set_markup (string_compose (results_markup, _("Detecting ...")));
latency_timeout = Glib::signal_timeout().connect (mem_fun (*this, &EngineControl::check_latency_measurement), 100); latency_timeout = Glib::signal_timeout().connect (mem_fun (*this, &EngineControl::check_latency_measurement), 100);
lm_measure_button.set_label (_("Cancel")); lm_measure_label.set_text (_("Cancel"));
have_lm_results = false; have_lm_results = false;
lm_use_button.set_sensitive (false); lm_use_button.set_sensitive (false);
lm_input_channel_combo.set_sensitive (false); lm_input_channel_combo.set_sensitive (false);
@ -1702,7 +1722,7 @@ EngineControl::end_latency_detection ()
{ {
latency_timeout.disconnect (); latency_timeout.disconnect ();
ARDOUR::AudioEngine::instance()->stop_latency_detection (); ARDOUR::AudioEngine::instance()->stop_latency_detection ();
lm_measure_button.set_label (_("Measure")); lm_measure_label.set_text (_("Measure"));
if (!have_lm_results) { if (!have_lm_results) {
lm_results.set_markup (string_compose (results_markup, _("No measurement results yet"))); lm_results.set_markup (string_compose (results_markup, _("No measurement results yet")));
} else { } else {
@ -1793,3 +1813,10 @@ EngineControl::connect_disconnect_click()
ARDOUR_UI::instance()->reconnect_to_engine (); ARDOUR_UI::instance()->reconnect_to_engine ();
} }
} }
void
EngineControl::calibrate_latency ()
{
notebook.set_current_page (latency_tab);
}

View file

@ -86,6 +86,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
Gtk::ComboBoxText lm_output_channel_combo; Gtk::ComboBoxText lm_output_channel_combo;
Gtk::ComboBoxText lm_input_channel_combo; Gtk::ComboBoxText lm_input_channel_combo;
Gtk::Label lm_measure_label;
Gtk::Button lm_measure_button; Gtk::Button lm_measure_button;
Gtk::Button lm_use_button; Gtk::Button lm_use_button;
Gtk::Button lm_back_button; Gtk::Button lm_back_button;
@ -212,6 +213,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
PBD::ScopedConnection stopped_connection; PBD::ScopedConnection stopped_connection;
void connect_disconnect_click (); void connect_disconnect_click ();
void calibrate_latency ();
}; };
#endif /* __gtk2_ardour_engine_dialog_h__ */ #endif /* __gtk2_ardour_engine_dialog_h__ */

File diff suppressed because it is too large Load diff

View file

@ -243,6 +243,7 @@ Where would you like new %1 sessions to be stored by default?\n\n\
vbox->pack_start (*txt, false, false); vbox->pack_start (*txt, false, false);
vbox->pack_start (*hbox, false, true); vbox->pack_start (*hbox, false, true);
cerr << "set default folder to " << poor_mans_glob (Config->get_default_session_parent_dir()) << endl;
default_dir_chooser->set_current_folder (poor_mans_glob (Config->get_default_session_parent_dir())); default_dir_chooser->set_current_folder (poor_mans_glob (Config->get_default_session_parent_dir()));
default_dir_chooser->signal_current_folder_changed().connect (sigc::mem_fun (*this, &ArdourStartup::default_dir_changed)); default_dir_chooser->signal_current_folder_changed().connect (sigc::mem_fun (*this, &ArdourStartup::default_dir_changed));
default_dir_chooser->show (); default_dir_chooser->show ();

View file

@ -137,7 +137,7 @@ VideoServerDialog::VideoServerDialog (Session* s)
t->attach (cachesize_spinner, 1, 2, 2, 3); t->attach (cachesize_spinner, 1, 2, 2, 3);
l = manage (new Label (string_compose( l = manage (new Label (string_compose(
_("%1 relies on an external Video Server for the videotimeline.\nThe server configured in Edit -> Prefereces -> Video is not reachable.\nDo you want ardour to launch 'harvid' on this machine?"), PROGRAM_NAME) _("%1 relies on an external video server for the videotimeline.\nThe server configured in Edit -> Preferences -> Video is not reachable.\nDo you want %1 to launch 'harvid' on this machine?"), PROGRAM_NAME)
, Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false)); , Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false));
l->set_max_width_chars(80); l->set_max_width_chars(80);
l->set_line_wrap(); l->set_line_wrap();

File diff suppressed because it is too large Load diff

View file

@ -83,7 +83,8 @@ namespace {
const char * const dummy_driver_command_line_name = X_("dummy"); const char * const dummy_driver_command_line_name = X_("dummy");
// should we provide more "pretty" names like above? // should we provide more "pretty" names like above?
const char * const alsaint_midi_driver_name = X_("alsa"); const char * const alsa_seq_midi_driver_name = X_("alsa");
const char * const alsa_raw_midi_driver_name = X_("alsarawmidi");
const char * const alsaseq_midi_driver_name = X_("seq"); const char * const alsaseq_midi_driver_name = X_("seq");
const char * const alsaraw_midi_driver_name = X_("raw"); const char * const alsaraw_midi_driver_name = X_("raw");
const char * const winmme_midi_driver_name = X_("winmme"); const char * const winmme_midi_driver_name = X_("winmme");
@ -744,9 +745,12 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c
#endif #endif
if (options.driver == alsa_driver_name) { if (options.driver == alsa_driver_name) {
if (options.midi_driver == alsaint_midi_driver_name) { if (options.midi_driver == alsa_seq_midi_driver_name) {
args.push_back ("-I"); args.push_back ("-X");
args.push_back ("alsa_midi"); args.push_back ("alsa_midi");
} else if (options.midi_driver == alsa_raw_midi_driver_name) {
args.push_back ("-X");
args.push_back ("alsarawmidi");
} }
} }
@ -860,7 +864,7 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c
if (options.driver == alsa_driver_name || options.driver == coreaudio_driver_name) { if (options.driver == alsa_driver_name || options.driver == coreaudio_driver_name) {
if (options.midi_driver != alsaint_midi_driver_name) { if (options.midi_driver != alsa_seq_midi_driver_name) {
if (!options.midi_driver.empty() && options.midi_driver != get_none_string ()) { if (!options.midi_driver.empty() && options.midi_driver != get_none_string ()) {
args.push_back ("-X"); args.push_back ("-X");
args.push_back (options.midi_driver); args.push_back (options.midi_driver);
@ -921,9 +925,10 @@ ARDOUR::enumerate_midi_options ()
{ {
if (midi_options.empty()) { if (midi_options.empty()) {
#ifdef HAVE_ALSA #ifdef HAVE_ALSA
midi_options.push_back (make_pair (_("ALSA"), alsaint_midi_driver_name));
midi_options.push_back (make_pair (_("(legacy) ALSA raw devices"), alsaraw_midi_driver_name)); midi_options.push_back (make_pair (_("(legacy) ALSA raw devices"), alsaraw_midi_driver_name));
midi_options.push_back (make_pair (_("(legacy) ALSA sequencer"), alsaseq_midi_driver_name)); midi_options.push_back (make_pair (_("(legacy) ALSA sequencer"), alsaseq_midi_driver_name));
midi_options.push_back (make_pair (_("ALSA (JACK1, 0.124 and later)"), alsa_seq_midi_driver_name));
midi_options.push_back (make_pair (_("ALSA (JACK2, 1.9.8 and later)"), alsa_raw_midi_driver_name));
#endif #endif
#ifdef HAVE_PORTAUDIO #ifdef HAVE_PORTAUDIO
/* Windows folks: what name makes sense here? Are there other /* Windows folks: what name makes sense here? Are there other

View file

@ -7,26 +7,25 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gtkmm2ext\n" "Project-Id-Version: gtkmm2ext\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-08-15 15:09-0400\n" "POT-Creation-Date: 2013-10-15 21:33+0400\n"
"PO-Revision-Date: 2012-12-31 01:38+0300\n" "PO-Revision-Date: 2013-10-15 21:54+0300\n"
"Last-Translator: Александр Прокудин <alexandre.prokoudine@gmail.com>\n" "Last-Translator: Александр Прокудин <alexandre.prokoudine@gmail.com>\n"
"Language-Team: русский <>\n" "Language-Team: русский <>\n"
"Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); 10<=4 && (n%100<10 || n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); 10<=4 && (n%100<10 || n"
"%100>=20) ? 1 : 2);\n" "%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 1.5.4\n"
#: actions.cc:386 #: actions.cc:386
msgid "Unknown action name: %1" msgid "Unknown action name: %1"
msgstr "Неизвестное название действия: %1" msgstr "Неизвестное название действия: %1"
#: binding_proxy.cc:84 #: binding_proxy.cc:84
#, fuzzy
msgid "operate controller now" msgid "operate controller now"
msgstr "включить MIDI-контроллер" msgstr ""
#: bindable_button.cc:48 #: bindable_button.cc:48
msgid "button cannot watch state of non-existing Controllable\n" msgid "button cannot watch state of non-existing Controllable\n"
@ -36,7 +35,7 @@ msgstr ""
msgid "Log" msgid "Log"
msgstr "Журнал" msgstr "Журнал"
#: gtk_ui.cc:361 #: gtk_ui.cc:363
msgid "" msgid ""
"\n" "\n"
"\n" "\n"
@ -46,11 +45,11 @@ msgstr ""
"\n" "\n"
"Комбинация клавиш: " "Комбинация клавиш: "
#: gtk_ui.cc:633 #: gtk_ui.cc:635
msgid "Press To Exit" msgid "Press To Exit"
msgstr "Нажмите для выхода" msgstr "Нажмите для выхода"
#: gtk_ui.cc:669 #: gtk_ui.cc:671
msgid "I'm sorry %1, I can't do that" msgid "I'm sorry %1, I can't do that"
msgstr "" msgstr ""
@ -78,21 +77,21 @@ msgstr "Alt"
msgid "Meta" msgid "Meta"
msgstr "Meta" msgstr "Meta"
#: keyboard.cc:139 keyboard.cc:531 #: keyboard.cc:139 keyboard.cc:535
msgid "Unknown" msgid "Unknown"
msgstr "Неизвестно" msgstr "Неизвестно"
#: keyboard.cc:542 #: keyboard.cc:546
msgid "key bindings file not found at \"%2\" or contains errors." msgid "key bindings file not found at \"%2\" or contains errors."
msgstr "" msgstr ""
#: tearoff.cc:57 #: tearoff.cc:57
msgid "Click to tear this into its own window" msgid "Click to tear this into its own window"
msgstr "" msgstr "Щелкните, чтобы превратить эту панель инструментов в плавающее окно"
#: tearoff.cc:63 #: tearoff.cc:63
msgid "Click to put this back in the main window" msgid "Click to put this back in the main window"
msgstr "" msgstr "Щелкните, чтобы превратить это плавающее окно в панель инструментов"
#: textviewer.cc:34 #: textviewer.cc:34
msgid "Close" msgid "Close"

View file

@ -84,6 +84,7 @@ MackieControlProtocolGUI::MackieControlProtocolGUI (MackieControlProtocol& p)
Gtk::Table* table = Gtk::manage (new Gtk::Table (2, 9)); Gtk::Table* table = Gtk::manage (new Gtk::Table (2, 9));
table->set_row_spacings (4); table->set_row_spacings (4);
table->set_col_spacings (6); table->set_col_spacings (6);
table->set_border_width (12);
l = manage (new Gtk::Label (_("Device Type:"))); l = manage (new Gtk::Label (_("Device Type:")));
l->set_alignment (1.0, 0.5); l->set_alignment (1.0, 0.5);
table->attach (*l, 0, 1, 0, 1, AttachOptions(FILL|EXPAND), AttachOptions(0)); table->attach (*l, 0, 1, 0, 1, AttachOptions(FILL|EXPAND), AttachOptions(0));
@ -182,11 +183,10 @@ MackieControlProtocolGUI::MackieControlProtocolGUI (MackieControlProtocol& p)
fkey_packer->pack_start (function_key_scroller, true, true); fkey_packer->pack_start (function_key_scroller, true, true);
fkey_packer->pack_start (*observation_packer, false, false); fkey_packer->pack_start (*observation_packer, false, false);
fkey_packer->set_spacing (12); fkey_packer->set_spacing (12);
function_key_scroller.set_size_request (700,700);
function_key_scroller.property_shadow_type() = Gtk::SHADOW_NONE; function_key_scroller.property_shadow_type() = Gtk::SHADOW_NONE;
function_key_scroller.add (function_key_editor); function_key_scroller.add (function_key_editor);
append_page (*fkey_packer, _("Function Keys")); append_page (*fkey_packer, _("Function Keys"));
build_available_action_menu (); build_available_action_menu ();
build_function_key_editor (); build_function_key_editor ();
refresh_function_key_editor (); refresh_function_key_editor ();

View file

@ -531,6 +531,7 @@ fi
# share stuff # share stuff
cp -R ../../gtk2_ardour/splash.png $Shared cp -R ../../gtk2_ardour/splash.png $Shared
cp -R ../../gtk2_ardour/small-splash.png $Shared
cp -R ../../gtk2_ardour/ArdourMono.ttf $Shared cp -R ../../gtk2_ardour/ArdourMono.ttf $Shared
# go through and recursively remove any .svn dirs in the bundle # go through and recursively remove any .svn dirs in the bundle

View file

@ -409,6 +409,7 @@ cp -r ../../gtk2_ardour/pixmaps $Resources
# shared stuff # shared stuff
cp -R ../../gtk2_ardour/splash.png $Shared cp -R ../../gtk2_ardour/splash.png $Shared
cp -R ../../gtk2_ardour/small-splash.png $Shared
cp -R ../../gtk2_ardour/ArdourMono.ttf $Shared cp -R ../../gtk2_ardour/ArdourMono.ttf $Shared
# go through and recursively remove any .svn dirs in the bundle # go through and recursively remove any .svn dirs in the bundle

View file

@ -8,7 +8,7 @@ import subprocess
import sys import sys
MAJOR = '3' MAJOR = '3'
MINOR = '4' MINOR = '5'
VERSION = MAJOR + '.' + MINOR VERSION = MAJOR + '.' + MINOR
APPNAME = 'Ardour' + MAJOR APPNAME = 'Ardour' + MAJOR