X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fpatch_change_dialog.cc;h=2ecfd4bdd7d47c98b1e3e55367d82932a6ab3c09;hb=741f9de3f7dda286181419c33cfe361a4f75c775;hp=07e9d963856b2ea41c5448be6403e34273384ffb;hpb=557f56a7f2173fdf9b01dfb3f3410f227d05f8e2;p=ardour.git diff --git a/gtk2_ardour/patch_change_dialog.cc b/gtk2_ardour/patch_change_dialog.cc index 07e9d96385..2ecfd4bdd7 100644 --- a/gtk2_ardour/patch_change_dialog.cc +++ b/gtk2_ardour/patch_change_dialog.cc @@ -25,6 +25,8 @@ #include "gtkmm2ext/utils.h" +#include "midi++/midnam_patch.h" + #include "ardour/midi_patch_manager.h" #include "ardour/beats_frames_converter.h" #include "ardour/instrument_info.h" @@ -40,12 +42,12 @@ using namespace Gtkmm2ext; /** @param tc If non-0, a time converter for this patch change. If 0, time control will be desensitized */ PatchChangeDialog::PatchChangeDialog ( - const ARDOUR::BeatsFramesConverter* tc, - ARDOUR::Session* session, + const ARDOUR::BeatsFramesConverter* tc, + ARDOUR::Session* session, Evoral::PatchChange const & patch, - ARDOUR::InstrumentInfo& info, - const Gtk::BuiltinStockID& ok - ) + ARDOUR::InstrumentInfo& info, + const Gtk::BuiltinStockID& ok, + bool allow_delete) : ArdourDialog (_("Patch Change"), true) , _time_converter (tc) , _info (info) @@ -114,6 +116,9 @@ PatchChangeDialog::PatchChangeDialog ( add_button (Stock::CANCEL, RESPONSE_CANCEL); add_button (ok, RESPONSE_ACCEPT); + if (allow_delete) { + add_button (Stock::DELETE, RESPONSE_REJECT); + } set_default_response (RESPONSE_ACCEPT); fill_bank_combo (); @@ -156,6 +161,8 @@ PatchChangeDialog::patch () const void PatchChangeDialog::fill_bank_combo () { + _bank_combo.clear (); + boost::shared_ptr cns = _info.get_patches (_channel.get_value_as_int() - 1); if (!cns) { @@ -250,8 +257,8 @@ PatchChangeDialog::fill_patch_combo () return; } - const MIDI::Name::PatchBank::PatchNameList& patches = _current_patch_bank->patch_name_list (); - for (MIDI::Name::PatchBank::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) { + const MIDI::Name::PatchNameList& patches = _current_patch_bank->patch_name_list (); + for (MIDI::Name::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) { string n = (*j)->name (); boost::replace_all (n, "_", " "); _patch_combo.append_text (n); @@ -273,8 +280,8 @@ PatchChangeDialog::set_active_patch_combo () return; } - const MIDI::Name::PatchBank::PatchNameList& patches = _current_patch_bank->patch_name_list (); - for (MIDI::Name::PatchBank::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) { + const MIDI::Name::PatchNameList& patches = _current_patch_bank->patch_name_list (); + for (MIDI::Name::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) { string n = (*j)->name (); boost::replace_all (n, "_", " "); @@ -300,15 +307,14 @@ PatchChangeDialog::patch_combo_changed () return; } - const MIDI::Name::PatchBank::PatchNameList& patches = _current_patch_bank->patch_name_list (); + const MIDI::Name::PatchNameList& patches = _current_patch_bank->patch_name_list (); - for (MIDI::Name::PatchBank::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) { + for (MIDI::Name::PatchNameList::const_iterator j = patches.begin(); j != patches.end(); ++j) { string n = (*j)->name (); boost::replace_all (n, "_", " "); - std::cerr << "Looking for " << n << " vs " << _patch_combo.get_active_text() << std::endl; + if (n == _patch_combo.get_active_text ()) { _ignore_signals = true; - std::cerr << " reset pgm number to " << (int) (*j)->program_number() << std::endl; _program.set_value ((*j)->program_number() + 1); _ignore_signals = false; break;