diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index 850a5d285a..77c10ef677 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -1038,3 +1038,32 @@ ARDOUR_UI_UTILS::track_number_to_string ( rv += Glib::Markup::escape_text(postfix); return rv; } + +std::string +ARDOUR_UI_UTILS::split_on_lines (std::string message, size_t n_characters_in_line) +{ + if (message.size() words; + boost::split (words, message, boost::is_any_of(" ")); + + size_t i = 0; + + while( i < words.size() ) { + + std::string new_line = words[i++]; + + // Create next line + while ( (i < words.size()) && (new_line.size() + words[i].size() < n_characters_in_line) ) + new_line += " " + words[i++]; + + if ( splited_message.size() > 0 ) // not first line + splited_message += "\n"; + splited_message += new_line; + } + + return splited_message; +} diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h index bafb855f8d..58951691ab 100644 --- a/gtk2_ardour/utils.h +++ b/gtk2_ardour/utils.h @@ -100,6 +100,7 @@ std::string rate_as_string (float r); ARDOUR::framecnt_t string_as_rate (const std::string& string_sr); std::string track_number_to_string (int64_t tracknumber, std::string sep = "", std::string postfix = ""); +std::string split_on_lines (std::string message, size_t n_characters_in_line); } // namespace #endif /* __ardour_gtk_utils_h__ */