* Allow choice of interpolation mode only for Linear Controls
authorHans Baier <hansfbaier@googlemail.com>
Wed, 28 Jan 2009 07:40:43 +0000 (07:40 +0000)
committerHans Baier <hansfbaier@googlemail.com>
Wed, 28 Jan 2009 07:40:43 +0000 (07:40 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@4453 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/automation_time_axis.cc

index 3fa98003ce3d0ad9e7b6f6d236554a228197402d..151f3edb72f53b7bd9957abf4d0a28b3cfbdad14 100644 (file)
@@ -532,8 +532,6 @@ AutomationTimeAxisView::build_display_menu ()
        
        /* mode menu */
 
-       // To be deleted: MIDI events should always be discrete, so no choice for the user here.
-       /*
        if ( EventTypeMap::instance().is_midi_parameter(_control->parameter()) ) {
                
                Menu* auto_mode_menu = manage (new Menu);
@@ -541,22 +539,24 @@ AutomationTimeAxisView::build_display_menu ()
                MenuList& am_items = auto_mode_menu->items();
        
                RadioMenuItem::Group group;
-
+               
                am_items.push_back (RadioMenuElem (group, _("Discrete"), bind (
                                                mem_fun(*this, &AutomationTimeAxisView::set_interpolation),
                                                AutomationList::Discrete)));
                mode_discrete_item = dynamic_cast<CheckMenuItem*>(&am_items.back());
                mode_discrete_item->set_active(_control->list()->interpolation() == AutomationList::Discrete);
 
-               am_items.push_back (RadioMenuElem (group, _("Line"), bind (
-                                               mem_fun(*this, &AutomationTimeAxisView::set_interpolation),
-                                               AutomationList::Linear)));
-               mode_line_item = dynamic_cast<CheckMenuItem*>(&am_items.back());
-               mode_line_item->set_active(_control->list()->interpolation() == AutomationList::Linear);
+               // For discrete types we dont allow the linear option since it makes no sense for those Controls
+               if (EventTypeMap::instance().interpolation_of(_control->parameter()) == Evoral::ControlList::Linear) {
+                       am_items.push_back (RadioMenuElem (group, _("Line"), bind (
+                                                       mem_fun(*this, &AutomationTimeAxisView::set_interpolation),
+                                                       AutomationList::Linear)));
+                       mode_line_item = dynamic_cast<CheckMenuItem*>(&am_items.back());
+                       mode_line_item->set_active(_control->list()->interpolation() == AutomationList::Linear);
+               }
 
                items.push_back (MenuElem (_("Mode"), *auto_mode_menu));
        }
-       */
 
        /* make sure the automation menu state is correct */