diff options
author | Nick Mainsbridge <beatroute@iprimus.com.au> | 2006-04-26 16:04:04 +0000 |
---|---|---|
committer | Nick Mainsbridge <beatroute@iprimus.com.au> | 2006-04-26 16:04:04 +0000 |
commit | 1855ed57fd65f3338b8aa94d2c10d0d2d406d549 (patch) | |
tree | 569c1c5023548b675abffa846e342445023f5d69 | |
parent | 56f0a56805054c9e96f52b2b173996987aa73c02 (diff) |
Plugin selector useability changes, fix mouse grab bug in plugin barcontroller, prevent alpah key entry in tempo/meter dialogs
git-svn-id: svn://localhost/trunk/ardour2@483 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/plugin_selector.cc | 52 | ||||
-rw-r--r-- | gtk2_ardour/plugin_selector.h | 5 | ||||
-rw-r--r-- | gtk2_ardour/plugin_ui.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/tempo_dialog.cc | 97 | ||||
-rw-r--r-- | gtk2_ardour/tempo_dialog.h | 2 | ||||
-rw-r--r-- | libs/gtkmm2ext/barcontroller.cc | 1 |
6 files changed, 155 insertions, 4 deletions
diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc index 9171815bcd..56f5fab9c8 100644 --- a/gtk2_ardour/plugin_selector.cc +++ b/gtk2_ardour/plugin_selector.cc @@ -93,9 +93,11 @@ PluginSelector::PluginSelector (PluginManager *mgr) ascroller.set_border_width(10); ascroller.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); ascroller.add(added_list); - Gtk::Button *btn_add = manage(new Gtk::Button(Stock::ADD)); + btn_add = manage(new Gtk::Button(Stock::ADD)); ARDOUR_UI::instance()->tooltips().set_tip(*btn_add, _("Add a plugin to the effect list")); - Gtk::Button *btn_remove = manage(new Gtk::Button(Stock::REMOVE)); + btn_add->set_sensitive (false); + btn_remove = manage(new Gtk::Button(Stock::REMOVE)); + btn_remove->set_sensitive (false); ARDOUR_UI::instance()->tooltips().set_tip(*btn_remove, _("Remove a plugin from the effect list")); Gtk::Button *btn_update = manage(new Gtk::Button(Stock::REFRESH)); ARDOUR_UI::instance()->tooltips().set_tip(*btn_update, _("Update available plugins")); @@ -116,7 +118,7 @@ PluginSelector::PluginSelector (PluginManager *mgr) add_button (Stock::CANCEL, RESPONSE_CANCEL); add_button (Stock::CONNECT, RESPONSE_APPLY); set_default_response (RESPONSE_APPLY); - + set_response_sensitive (RESPONSE_APPLY, false); get_vbox()->pack_start (*table); using namespace Gtk::Notebook_Helpers; @@ -136,12 +138,15 @@ PluginSelector::PluginSelector (PluginManager *mgr) #ifdef VST_SUPPORT if (Config->get_use_vst()) { vst_display.signal_button_press_event().connect_notify (mem_fun(*this, &PluginSelector::row_clicked)); + vst_display.get_selection()->signal_changed().connect (mem_fun(*this, &PluginSelector::vst_display_selection_changed)); } #endif btn_update->signal_clicked().connect (mem_fun(*this, &PluginSelector::btn_update_clicked)); btn_add->signal_clicked().connect(mem_fun(*this, &PluginSelector::btn_add_clicked)); btn_remove->signal_clicked().connect(mem_fun(*this, &PluginSelector::btn_remove_clicked)); + ladspa_display.get_selection()->signal_changed().connect (mem_fun(*this, &PluginSelector::ladspa_display_selection_changed)); + added_list.get_selection()->signal_changed().connect (mem_fun(*this, &PluginSelector::added_list_selection_changed)); input_refiller (); } @@ -274,6 +279,10 @@ PluginSelector::btn_add_clicked() } newrow[acols.text] = name; newrow[acols.plugin] = pi; + + if (!amodel->children().empty()) { + set_response_sensitive (RESPONSE_APPLY, true); + } } void @@ -285,6 +294,11 @@ PluginSelector::btn_remove_clicked() added_plugins.erase(i); amodel->erase(iter); + if (amodel->children().empty()) { + set_response_sensitive (RESPONSE_APPLY, false); + } + + } void @@ -294,6 +308,38 @@ PluginSelector::btn_update_clicked() input_refiller (); } +#ifdef VST_SUPPORT +void +PluginSelector::vst_display_selection_changed() +{ + if (vst_display.get_selection()->count_selected_rows() != 0) { + btn_add->set_sensitive (true); + } else { + btn_add->set_sensitive (false); + } +} +#endif + +void +PluginSelector::ladspa_display_selection_changed() +{ + if (ladspa_display.get_selection()->count_selected_rows() != 0) { + btn_add->set_sensitive (true); + } else { + btn_add->set_sensitive (false); + } +} + +void +PluginSelector::added_list_selection_changed() +{ + if (added_list.get_selection()->count_selected_rows() != 0) { + btn_remove->set_sensitive (true); + } else { + btn_remove->set_sensitive (false); + } +} + int PluginSelector::run () { diff --git a/gtk2_ardour/plugin_selector.h b/gtk2_ardour/plugin_selector.h index 2f0395e82b..cbd076918e 100644 --- a/gtk2_ardour/plugin_selector.h +++ b/gtk2_ardour/plugin_selector.h @@ -67,6 +67,8 @@ class PluginSelector : public ArdourDialog Glib::RefPtr<Gtk::ListStore> lmodel; Glib::RefPtr<Gtk::TreeSelection> lselection; Gtk::TreeView ladspa_display; + Gtk::Button* btn_add; + Gtk::Button* btn_remove; struct AddedColumns : public Gtk::TreeModel::ColumnRecord { AddedColumns () { @@ -101,6 +103,7 @@ class PluginSelector : public ArdourDialog Gtk::TreeView vst_display; static void _vst_refiller (void *); void vst_refiller (); + void vst_dispaly_selection_changed(); #endif ARDOUR::PluginInfo* i_selected_plug; @@ -119,6 +122,8 @@ class PluginSelector : public ArdourDialog void btn_add_clicked(); void btn_remove_clicked(); void btn_update_clicked(); + void added_list_selection_changed(); + void ladspa_display_selection_changed(); void btn_apply_clicked(); void use_plugin (ARDOUR::PluginInfo*); void cleanup (); diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc index e0d22d8834..7965bd1257 100644 --- a/gtk2_ardour/plugin_ui.cc +++ b/gtk2_ardour/plugin_ui.cc @@ -100,7 +100,7 @@ PluginUIWindow::PluginUIWindow (AudioEngine &engine, PluginInsert& insert, bool set_position (Gtk::WIN_POS_MOUSE); set_name ("PluginEditor"); - add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK); + add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), reinterpret_cast<Window*> (this))); insert.GoingAway.connect (mem_fun(*this, &PluginUIWindow::plugin_going_away)); diff --git a/gtk2_ardour/tempo_dialog.cc b/gtk2_ardour/tempo_dialog.cc index 43c9ece5ba..fc37550172 100644 --- a/gtk2_ardour/tempo_dialog.cc +++ b/gtk2_ardour/tempo_dialog.cc @@ -102,11 +102,60 @@ TempoDialog::init (const BBT_Time& when, double bpm, bool movable) bpm_entry.show(); set_name ("MetricDialog"); + bpm_entry.signal_key_press_event().connect (mem_fun (*this, &TempoDialog::bpm_key_press), false); bpm_entry.signal_activate().connect (bind (mem_fun (*this, &TempoDialog::response), RESPONSE_ACCEPT)); bpm_entry.signal_key_release_event().connect (mem_fun (*this, &TempoDialog::bpm_key_release)); } bool +TempoDialog::bpm_key_press (GdkEventKey* ev) +{ + +switch (ev->keyval) { + + case GDK_0: + case GDK_1: + case GDK_2: + case GDK_3: + case GDK_4: + case GDK_5: + case GDK_6: + case GDK_7: + case GDK_8: + case GDK_9: + case GDK_KP_0: + case GDK_KP_1: + case GDK_KP_2: + case GDK_KP_3: + case GDK_KP_4: + case GDK_KP_5: + case GDK_KP_6: + case GDK_KP_7: + case GDK_KP_8: + case GDK_KP_9: + case GDK_period: + case GDK_comma: + case GDK_KP_Delete: + case GDK_KP_Enter: + case GDK_Delete: + case GDK_BackSpace: + case GDK_Escape: + case GDK_Return: + case GDK_Home: + case GDK_End: + case GDK_Left: + case GDK_Right: + case GDK_Num_Lock: + case GDK_Tab: + return FALSE; + default: + break; + } + + return TRUE; +} + +bool TempoDialog::bpm_key_release (GdkEventKey* ev) { if (bpm_entry.get_text() != "") { @@ -280,6 +329,54 @@ MeterDialog::init (const BBT_Time& when, double bpb, double note_type, bool mova } bool +MeterDialog::bpb_key_press (GdkEventKey* ev) +{ + +switch (ev->keyval) { + + case GDK_0: + case GDK_1: + case GDK_2: + case GDK_3: + case GDK_4: + case GDK_5: + case GDK_6: + case GDK_7: + case GDK_8: + case GDK_9: + case GDK_KP_0: + case GDK_KP_1: + case GDK_KP_2: + case GDK_KP_3: + case GDK_KP_4: + case GDK_KP_5: + case GDK_KP_6: + case GDK_KP_7: + case GDK_KP_8: + case GDK_KP_9: + case GDK_period: + case GDK_comma: + case GDK_KP_Delete: + case GDK_KP_Enter: + case GDK_Delete: + case GDK_BackSpace: + case GDK_Escape: + case GDK_Return: + case GDK_Home: + case GDK_End: + case GDK_Left: + case GDK_Right: + case GDK_Num_Lock: + case GDK_Tab: + return FALSE; + default: + break; + } + + return TRUE; +} + +bool MeterDialog::bpb_key_release (GdkEventKey* ev) { if (bpb_entry.get_text() != "") { diff --git a/gtk2_ardour/tempo_dialog.h b/gtk2_ardour/tempo_dialog.h index 4d41e2250c..2c6827954f 100644 --- a/gtk2_ardour/tempo_dialog.h +++ b/gtk2_ardour/tempo_dialog.h @@ -41,6 +41,7 @@ struct TempoDialog : public ArdourDialog private: void init (const ARDOUR::BBT_Time& start, double, bool); + bool bpm_key_press (GdkEventKey* ); bool bpm_key_release (GdkEventKey* ); }; @@ -74,6 +75,7 @@ struct MeterDialog : public ArdourDialog private: void init (const ARDOUR::BBT_Time&, double, double, bool); + bool bpb_key_press (GdkEventKey* ); bool bpb_key_release (GdkEventKey* ); void note_types_change (); }; diff --git a/libs/gtkmm2ext/barcontroller.cc b/libs/gtkmm2ext/barcontroller.cc index 1ce19770e3..c977f3e5f7 100644 --- a/libs/gtkmm2ext/barcontroller.cc +++ b/libs/gtkmm2ext/barcontroller.cc @@ -170,6 +170,7 @@ BarController::button_release (GdkEventButton* ev) darea.remove_modal_grab(); grabbed = false; StopGesture (); + grabbed = false; break; case 2: |