X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fautomation_time_axis.cc;h=24d4c13903e3b863923c71d8fb2c80aba611ff89;hb=3346c69f2dd15968e164561850b647cf51bea900;hp=263073fc3b8ccdba52ee2e8197f167be88338715;hpb=eee83c25a9e1e182d0ce1d90f5469b0a836f082c;p=ardour.git diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc index 263073fc3b..24d4c13903 100644 --- a/gtk2_ardour/automation_time_axis.cc +++ b/gtk2_ardour/automation_time_axis.cc @@ -52,7 +52,7 @@ #include "item_counts.h" #include "ui_config.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace ARDOUR; @@ -84,7 +84,7 @@ AutomationTimeAxisView::AutomationTimeAxisView ( const string & nom, const string & nomparent ) - : AxisView (s) + : SessionHandlePtr (s) , TimeAxisView (s, e, &parent, canvas) , _route (r) , _control (c) @@ -92,7 +92,7 @@ AutomationTimeAxisView::AutomationTimeAxisView ( , _parameter (p) , _base_rect (new ArdourCanvas::Rectangle (_canvas_display)) , _view (show_regions ? new AutomationStreamView (*this) : 0) - , auto_button (X_("")) /* force addition of a label */ + , auto_dropdown () , _show_regions (show_regions) { //concatenate plugin name and param name into the tooltip @@ -128,7 +128,6 @@ AutomationTimeAxisView::AutomationTimeAxisView ( ? "midi automation track fill" : "audio automation track fill"); - automation_menu = 0; auto_off_item = 0; auto_touch_item = 0; auto_write_item = 0; @@ -149,18 +148,35 @@ AutomationTimeAxisView::AutomationTimeAxisView ( _base_rect->lower_to_bottom(); } + using namespace Menu_Helpers; + + auto_dropdown.AddMenuElem (MenuElem (S_("Automation|Manual"), sigc::bind (sigc::mem_fun(*this, + &AutomationTimeAxisView::set_automation_state), (AutoState) ARDOUR::Off))); + auto_dropdown.AddMenuElem (MenuElem (_("Play"), sigc::bind (sigc::mem_fun(*this, + &AutomationTimeAxisView::set_automation_state), (AutoState) Play))); + auto_dropdown.AddMenuElem (MenuElem (_("Write"), sigc::bind (sigc::mem_fun(*this, + &AutomationTimeAxisView::set_automation_state), (AutoState) Write))); + auto_dropdown.AddMenuElem (MenuElem (_("Touch"), sigc::bind (sigc::mem_fun(*this, + &AutomationTimeAxisView::set_automation_state), (AutoState) Touch))); + + /* XXX translators: use a string here that will be at least as long + as the longest automation label (see ::automation_state_changed() + below). be sure to include a descender. + */ + auto_dropdown.set_sizing_text(_("Mgnual")); + hide_button.set_icon (ArdourIcon::CloseCross); hide_button.set_tweaks(ArdourButton::TrackHeader); - auto_button.set_name ("route button"); + auto_dropdown.set_name ("route button"); hide_button.set_name ("route button"); - auto_button.unset_flags (Gtk::CAN_FOCUS); + auto_dropdown.unset_flags (Gtk::CAN_FOCUS); hide_button.unset_flags (Gtk::CAN_FOCUS); controls_table.set_no_show_all(); - set_tooltip(auto_button, _("automation state")); + set_tooltip(auto_dropdown, _("automation state")); set_tooltip(hide_button, _("hide track")); const string str = gui_property ("height"); @@ -190,7 +206,7 @@ AutomationTimeAxisView::AutomationTimeAxisView ( controls_table.set_border_width (1); controls_table.attach (hide_button, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); controls_table.attach (name_label, 2, 3, 1, 3, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 2, 0); - controls_table.attach (auto_button, 3, 4, 2, 3, Gtk::SHRINK, Gtk::SHRINK, 0, 0); + controls_table.attach (auto_dropdown, 3, 4, 2, 3, Gtk::SHRINK, Gtk::SHRINK, 0, 0); Gtk::DrawingArea *blank0 = manage (new Gtk::DrawingArea()); Gtk::DrawingArea *blank1 = manage (new Gtk::DrawingArea()); @@ -239,7 +255,6 @@ AutomationTimeAxisView::AutomationTimeAxisView ( controls_table.show_all (); hide_button.signal_clicked.connect (sigc::mem_fun(*this, &AutomationTimeAxisView::hide_clicked)); - auto_button.signal_clicked.connect (sigc::mem_fun(*this, &AutomationTimeAxisView::auto_clicked)); controls_base_selected_name = X_("AutomationTrackControlsBaseSelected"); controls_base_unselected_name = X_("AutomationTrackControlsBase"); @@ -270,6 +285,7 @@ AutomationTimeAxisView::AutomationTimeAxisView ( ); line->set_line_color (UIConfiguration::instance().color ("processor automation line")); + line->set_fill (true); line->queue_reset (); add_line (line); } @@ -296,29 +312,6 @@ AutomationTimeAxisView::route_going_away () _route.reset (); } -void -AutomationTimeAxisView::auto_clicked () -{ - using namespace Menu_Helpers; - - if (automation_menu == 0) { - automation_menu = manage (new Menu); - automation_menu->set_name ("ArdourContextMenu"); - MenuList& items (automation_menu->items()); - - items.push_back (MenuElem (S_("Automation|Manual"), sigc::bind (sigc::mem_fun(*this, - &AutomationTimeAxisView::set_automation_state), (AutoState) ARDOUR::Off))); - items.push_back (MenuElem (_("Play"), sigc::bind (sigc::mem_fun(*this, - &AutomationTimeAxisView::set_automation_state), (AutoState) Play))); - items.push_back (MenuElem (_("Write"), sigc::bind (sigc::mem_fun(*this, - &AutomationTimeAxisView::set_automation_state), (AutoState) Write))); - items.push_back (MenuElem (_("Touch"), sigc::bind (sigc::mem_fun(*this, - &AutomationTimeAxisView::set_automation_state), (AutoState) Touch))); - } - - automation_menu->popup (1, gtk_get_current_event_time()); -} - void AutomationTimeAxisView::set_automation_state (AutoState state) { @@ -358,7 +351,7 @@ AutomationTimeAxisView::automation_state_changed () switch (state & (ARDOUR::Off|Play|Touch|Write)) { case ARDOUR::Off: - auto_button.set_text (S_("Automation|Manual")); + auto_dropdown.set_text (S_("Automation|Manual")); if (auto_off_item) { ignore_state_request = true; auto_off_item->set_active (true); @@ -369,7 +362,7 @@ AutomationTimeAxisView::automation_state_changed () } break; case Play: - auto_button.set_text (_("Play")); + auto_dropdown.set_text (_("Play")); if (auto_play_item) { ignore_state_request = true; auto_play_item->set_active (true); @@ -380,7 +373,7 @@ AutomationTimeAxisView::automation_state_changed () } break; case Write: - auto_button.set_text (_("Write")); + auto_dropdown.set_text (_("Write")); if (auto_write_item) { ignore_state_request = true; auto_write_item->set_active (true); @@ -391,7 +384,7 @@ AutomationTimeAxisView::automation_state_changed () } break; case Touch: - auto_button.set_text (_("Touch")); + auto_dropdown.set_text (_("Touch")); if (auto_touch_item) { ignore_state_request = true; auto_touch_item->set_active (true); @@ -402,7 +395,7 @@ AutomationTimeAxisView::automation_state_changed () } break; default: - auto_button.set_text (_("???")); + auto_dropdown.set_text (_("???")); break; } } @@ -482,14 +475,14 @@ AutomationTimeAxisView::set_height (uint32_t h, TrackHeightMode m) if (h >= preset_height (HeightNormal)) { if (!(_parameter.type() >= MidiCCAutomation && _parameter.type() <= MidiChannelPressureAutomation)) { - auto_button.show(); + auto_dropdown.show(); } name_label.show(); hide_button.show(); } else if (h >= preset_height (HeightSmall)) { controls_table.hide_all (); - auto_button.hide(); + auto_dropdown.hide(); name_label.hide(); } } @@ -657,7 +650,7 @@ AutomationTimeAxisView::add_automation_event (GdkEvent* event, framepos_t when, } bool -AutomationTimeAxisView::paste (framepos_t pos, const Selection& selection, PasteContext& ctx) +AutomationTimeAxisView::paste (framepos_t pos, const Selection& selection, PasteContext& ctx, const int32_t sub_num) { if (_line) { return paste_one (pos, ctx.count, ctx.times, selection, ctx.counts, ctx.greedy); @@ -797,7 +790,7 @@ AutomationTimeAxisView::add_line (boost::shared_ptr line) _line = line; - line->set_height (height); + line->set_height (height - 2.5); /* pick up the current state */ automation_state_changed (); @@ -1044,3 +1037,15 @@ AutomationTimeAxisView::presentation_info () const { return _route->presentation_info(); } + +boost::shared_ptr +AutomationTimeAxisView::stripable () const +{ + return _route; +} + +Gdk::Color +AutomationTimeAxisView::color () const +{ + return gdk_color_from_rgb (_route->presentation_info().color()); +}