X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui.cc;h=524d16e017c002e8191ba0ec0959a74028b54f28;hb=5e7d9d30e28e8022661497244ccd43a1f5a836c6;hp=f3483769d854175c14fbfd5e2d4c05599336b77a;hpb=b531c878b0bd85f0fe98f0b37659f66c41e8eb0b;p=ardour.git diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index f3483769d8..524d16e017 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -28,6 +28,8 @@ #include #include +#include + #ifndef PLATFORM_WINDOWS #include #endif @@ -55,6 +57,8 @@ #include "pbd/file_utils.h" #include "pbd/localtime_r.h" #include "pbd/pthread_utils.h" +#include "pbd/replace_all.h" +#include "pbd/xml++.h" #include "gtkmm2ext/application.h" #include "gtkmm2ext/bindings.h" @@ -181,6 +185,36 @@ ask_about_configuration_copy (string const & old_dir, string const & new_dir, in return (msg.run() == Gtk::RESPONSE_YES); } +static void +libxml_generic_error_func (void* /* parsing_context*/, + const char* msg, + ...) +{ + va_list ap; + char buf[2048]; + + va_start (ap, msg); + vsnprintf (buf, sizeof (buf), msg, ap); + error << buf << endmsg; + va_end (ap); +} + +static void +libxml_structured_error_func (void* /* parsing_context*/, + xmlErrorPtr err) +{ + string msg = err->message; + + replace_all (msg, "\n", ""); + + error << X_("XML error: ") << msg << " in " << err->file << " at line " << err->line; + if (err->int2) { + error << ':' << err->int2; + } + error << endmsg; +} + + ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir, UIConfiguration* uic) : Gtkmm2ext::UI (PROGRAM_NAME, argcp, argvp) @@ -205,6 +239,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir, UIConfi , auto_loop_controllable (new TransportControllable ("transport auto loop", *this, TransportControllable::AutoLoop)) , play_selection_controllable (new TransportControllable ("transport play selection", *this, TransportControllable::PlaySelection)) , rec_controllable (new TransportControllable ("transport rec-enable", *this, TransportControllable::RecordEnable)) + , auto_return_button (ArdourButton::led_default_elements) , follow_edits_button (ArdourButton::led_default_elements) , auto_input_button (ArdourButton::led_default_elements) , auditioning_alert_button (_("Audition")) @@ -258,6 +293,11 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir, UIConfi theArdourUI = this; } + /* stop libxml from spewing to stdout/stderr */ + + xmlSetGenericErrorFunc (this, libxml_generic_error_func); + xmlSetStructuredErrorFunc (this, libxml_structured_error_func); + ui_config->ParameterChanged.connect (sigc::mem_fun (*this, &ARDOUR_UI::parameter_changed)); boost::function pc (boost::bind (&ARDOUR_UI::parameter_changed, this, _1)); ui_config->map_parameters (pc); @@ -3169,6 +3209,9 @@ ARDOUR_UI::load_session (const std::string& path, const std::string& snap_name, msg.set_position (Gtk::WIN_POS_CENTER); pop_back_splash (msg); msg.present (); + + dump_errors (cerr); + (void) msg.run (); msg.hide (); @@ -4788,16 +4831,16 @@ ARDOUR_UI::transport_numpad_event (int num) _pending_locate_num = _pending_locate_num*10 + num; } else { switch (num) { - case 0: toggle_roll(false, false); break; - case 1: transport_rewind(1); break; - case 2: transport_forward(1); break; - case 3: transport_record(true); break; - case 4: toggle_session_auto_loop(); break; - case 5: transport_record(false); toggle_session_auto_loop(); break; - case 6: toggle_punch(); break; - case 7: toggle_click(); break; - case 8: toggle_all_auto_return (); break; - case 9: toggle_follow_edits(); break; + case 0: toggle_roll(false, false); break; + case 1: transport_rewind(1); break; + case 2: transport_forward(1); break; + case 3: transport_record(true); break; + case 4: toggle_session_auto_loop(); break; + case 5: transport_record(false); toggle_session_auto_loop(); break; + case 6: toggle_punch(); break; + case 7: toggle_click(); break; + case 8: toggle_auto_return(); break; + case 9: toggle_follow_edits(); break; } } } @@ -4870,29 +4913,3 @@ ARDOUR_UI::hide_application () { Application::instance ()-> hide (); } - -void -ARDOUR_UI::toggle_auto_return_state (AutoReturnTarget t) -{ - AutoReturnTarget art = Config->get_auto_return_target_list (); - if (art & t) { - Config->set_auto_return_target_list (AutoReturnTarget (art & ~t)); - } else { - Config->set_auto_return_target_list (AutoReturnTarget (art | t)); - } -} - -void -ARDOUR_UI::toggle_all_auto_return () -{ - AutoReturnTarget art = Config->get_auto_return_target_list (); - if (art) { - Config->set_auto_return_target_list (AutoReturnTarget (0)); - } else { - Config->set_auto_return_target_list (AutoReturnTarget (LastLocate| - RangeSelectionStart| - RegionSelectionStart| - Loop)); - } -} -