#include <cerrno>
#include <fstream>
+#include <stdarg.h>
+
#ifndef PLATFORM_WINDOWS
#include <sys/resource.h>
#endif
#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"
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)
, 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"))
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<void (string)> pc (boost::bind (&ARDOUR_UI::parameter_changed, this, _1));
ui_config->map_parameters (pc);
msg.set_position (Gtk::WIN_POS_CENTER);
pop_back_splash (msg);
msg.present ();
+
+ dump_errors (cerr);
+
(void) msg.run ();
msg.hide ();
_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;
}
}
}
{
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));
- }
-}
-