summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext/gtk_ui.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-06-29 16:27:03 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2015-06-29 16:27:03 -0400
commit0274aafdb08238548dd4c20c52cd5375217f4e00 (patch)
treec2698b60932ae5ebcc524dd6d567b7af8ac67218 /libs/gtkmm2ext/gtk_ui.cc
parentb79bfe8793047a0a30388457bd8f0abb9641bba2 (diff)
store all error/info/etc messages in a list inside Gtkmm2ext::UI, and provide a method to dump them all to a std::ostream
Diffstat (limited to 'libs/gtkmm2ext/gtk_ui.cc')
-rw-r--r--libs/gtkmm2ext/gtk_ui.cc32
1 files changed, 32 insertions, 0 deletions
diff --git a/libs/gtkmm2ext/gtk_ui.cc b/libs/gtkmm2ext/gtk_ui.cc
index b5319fbea7..c4df2b7d5c 100644
--- a/libs/gtkmm2ext/gtk_ui.cc
+++ b/libs/gtkmm2ext/gtk_ui.cc
@@ -482,8 +482,40 @@ UI::do_request (UIRequest* req)
======================================================================*/
void
+UI::dump_errors (std::ostream& ostr)
+{
+ Glib::Threads::Mutex::Lock lm (error_lock);
+ ostr << endl << X_("Errors/Messages:") << endl;
+ for (list<string>::const_iterator i = error_stack.begin(); i != error_stack.end(); ++i) {
+ ostr << *i << endl;
+ }
+ ostr << endl;
+}
+
+void
UI::receive (Transmitter::Channel chn, const char *str)
{
+ {
+ Glib::Threads::Mutex::Lock lm (error_lock);
+ switch (chn) {
+ case Transmitter::Fatal:
+ error_stack.push_back (string (X_("FATAL: ")) + str);
+ break;
+ case Transmitter::Error:
+ error_stack.push_back (string (X_("ERROR: ")) + str);
+ break;
+ case Transmitter::Warning:
+ error_stack.push_back (string (X_("WARNING: ")) + str);
+ break;
+ case Transmitter::Info:
+ error_stack.push_back (string (X_("INFO: ")) + str);
+ break;
+ case Transmitter::Throw:
+ error_stack.push_back (string (X_("THROW: ")) + str);
+ break;
+ }
+ }
+
if (caller_is_ui_thread()) {
process_error_message (chn, str);
} else {