X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmidi_time_axis.cc;h=17a5feff29ae889cdfce5fce705d59c0f190e89e;hb=ea5fa64c0bcfb6a916326756b5f84a78a2478025;hp=9e4d0ed5b1cb4f6a7980b88582a144766689c714;hpb=1166538433a8bea1b7221eeb6f31db5731f103ce;p=ardour.git diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc index 9e4d0ed5b1..17a5feff29 100644 --- a/gtk2_ardour/midi_time_axis.cc +++ b/gtk2_ardour/midi_time_axis.cc @@ -123,7 +123,6 @@ MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session* sess, ArdourCanva , controller_menu (0) , poly_pressure_menu (0) , _step_editor (0) - , _patch_change_dialog (0) { _midnam_model_selector.disable_scrolling(); _midnam_custom_device_mode_selector.disable_scrolling(); @@ -193,10 +192,6 @@ MidiTimeAxisView::set_route (boost::shared_ptr rt) update_control_names(); processors_changed (RouteProcessorChange ()); - _route->processors_changed.connect (*this, invalidator (*this), - boost::bind (&MidiTimeAxisView::processors_changed, this, _1), - gui_context()); - if (is_track()) { _piano_roll_header->SetNoteSelection.connect ( sigc::mem_fun (*this, &MidiTimeAxisView::set_note_selection)); @@ -347,9 +342,6 @@ MidiTimeAxisView::~MidiTimeAxisView () delete controller_menu; delete _step_editor; - - delete _patch_change_dialog; - _patch_change_dialog = 0; } void @@ -391,11 +383,6 @@ MidiTimeAxisView::setup_midnam_patches () } } -void -MidiTimeAxisView::drop_instrument_ref () -{ - midnam_connection.drop_connections (); -} void MidiTimeAxisView::start_scroomer_update () { @@ -417,17 +404,8 @@ MidiTimeAxisView::update_patch_selector () bool pluginprovided = false; if (_route) { - boost::shared_ptr the_instrument (_route->the_instrument()); - boost::shared_ptr pi = boost::dynamic_pointer_cast(the_instrument); + boost::shared_ptr pi = boost::dynamic_pointer_cast (_route->the_instrument ()); if (pi && pi->plugin ()->has_midnam ()) { - midnam_connection.drop_connections (); - the_instrument->DropReferences.connect (midnam_connection, invalidator (*this), - boost::bind (&MidiTimeAxisView::drop_instrument_ref, this), - gui_context()); - pi->plugin()->UpdateMidnam.connect (midnam_connection, invalidator (*this), - boost::bind (&Plugin::read_midnam, pi->plugin ()), - gui_context()); - pluginprovided = true; std::string model_name = pi->plugin ()->midnam_model (); if (gui_property (X_("midnam-model-name")) != model_name) { @@ -445,6 +423,7 @@ MidiTimeAxisView::update_patch_selector () } } + void MidiTimeAxisView::model_changed(const std::string& model) { @@ -486,6 +465,10 @@ MidiTimeAxisView::model_changed(const std::string& model) delete controller_menu; controller_menu = 0; build_automation_action_menu(false); + + if (patch_change_dialog ()) { + patch_change_dialog ()->refresh (); + } } void @@ -565,7 +548,7 @@ MidiTimeAxisView::append_extra_display_menu_items () sigc::mem_fun(*this, &MidiTimeAxisView::toggle_channel_selector))); items.push_back (MenuElem (_("Patch Selector..."), - sigc::mem_fun(*this, &MidiTimeAxisView::send_patch_change))); + sigc::mem_fun(*this, &RouteUI::select_midi_patch))); color_mode_menu = build_color_mode_menu(); if (color_mode_menu) { @@ -1082,22 +1065,6 @@ MidiTimeAxisView::build_color_mode_menu() return mode_menu; } -void -MidiTimeAxisView::send_patch_change () -{ - if (!_route) { - return; - } - if (_patch_change_dialog) { - _patch_change_dialog->present (); - return; - } - - PatchChangeGridDialog* d = new PatchChangeGridDialog (string_compose (_("Select Patch for '%1'"), _route->name ()), _route); - _patch_change_dialog = d; - d->present (); -} - void MidiTimeAxisView::set_note_mode(NoteMode mode, bool apply_to_selection) { @@ -1568,10 +1535,10 @@ MidiTimeAxisView::automation_child_menu_item (Evoral::Parameter param) } boost::shared_ptr -MidiTimeAxisView::add_region (framepos_t f, framecnt_t length, bool commit) +MidiTimeAxisView::add_region (samplepos_t f, samplecnt_t length, bool commit) { Editor* real_editor = dynamic_cast (&_editor); - MusicFrame pos (f, 0); + MusicSample pos (f, 0); if (commit) { real_editor->begin_reversible_command (Operations::create_region); @@ -1589,8 +1556,8 @@ MidiTimeAxisView::add_region (framepos_t f, framecnt_t length, bool commit) boost::shared_ptr region = (RegionFactory::create (src, plist)); /* sets beat position */ - region->set_position (pos.frame, pos.division); - playlist()->add_region (region, pos.frame, 1.0, false, pos.division); + region->set_position (pos.sample, pos.division); + playlist()->add_region (region, pos.sample, 1.0, false, pos.division); _session->add_command (new StatefulDiffCommand (playlist())); if (commit) { @@ -1665,7 +1632,7 @@ MidiTimeAxisView::contents_height_changed () } bool -MidiTimeAxisView::paste (framepos_t pos, const Selection& selection, PasteContext& ctx, const int32_t sub_num) +MidiTimeAxisView::paste (samplepos_t pos, const Selection& selection, PasteContext& ctx, const int32_t sub_num) { if (!_editor.internal_editing()) { // Non-internal paste, paste regions like any other route