From 2d8aa1d2fff149223d7e30ba23d73e6da4738f8c Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 14 Apr 2015 11:55:39 +0200 Subject: simplify coaxing clock value out of ardour --- gtk2_ardour/audio_clock.cc | 20 ++++++++++++++++++++ gtk2_ardour/audio_clock.h | 2 ++ 2 files changed, 22 insertions(+) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc index 15fd85c229..a90946f3ba 100644 --- a/gtk2_ardour/audio_clock.cc +++ b/gtk2_ardour/audio_clock.cc @@ -2079,6 +2079,24 @@ AudioClock::frames_from_audioframes_string (const string& str) const return f; } +void +AudioClock::copy_text_to_clipboard () const +{ + string val; + if (editing) { + val = pre_edit_string; + } else { + val = _layout->get_text (); + } + const size_t trim = val.find_first_not_of(" "); + if (trim == string::npos) { + assert(0); // empty clock, can't be right. + return; + } + Glib::RefPtr cl = Gtk::Clipboard::get(); + cl->set_text (val.substr(trim)); +} + void AudioClock::build_ops_menu () { @@ -2099,6 +2117,8 @@ AudioClock::build_ops_menu () ops_items.push_back (MenuElem (_("Set From Playhead"), sigc::mem_fun(*this, &AudioClock::set_from_playhead))); ops_items.push_back (MenuElem (_("Locate to This Time"), sigc::mem_fun(*this, &AudioClock::locate))); } + ops_items.push_back (SeparatorElem()); + ops_items.push_back (MenuElem (_("Copy to clipboard"), sigc::mem_fun(*this, &AudioClock::copy_text_to_clipboard))); } void diff --git a/gtk2_ardour/audio_clock.h b/gtk2_ardour/audio_clock.h index 83bc3233c2..5ab75c261f 100644 --- a/gtk2_ardour/audio_clock.h +++ b/gtk2_ardour/audio_clock.h @@ -70,6 +70,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr void set_bbt_reference (framepos_t); void set_is_duration (bool); + void copy_text_to_clipboard () const; + std::string name() const { return _name; } framepos_t current_time (framepos_t position = 0) const; -- cgit v1.2.3