diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2005-11-27 17:59:03 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2005-11-27 17:59:03 +0000 |
commit | c74f6577e2466d24a74da3ba6a48e2a1957769c8 (patch) | |
tree | c17ca202a457170c1055954372de6514f65d7e59 /gtk2_ardour | |
parent | 8f54e410585907cbecd7047cb0c4e1d79d9b9d5f (diff) |
ripping, tearing, shredding
git-svn-id: svn://localhost/trunk/ardour2@130 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 9 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui2.cc | 19 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_dependents.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_dialogs.cc | 39 | ||||
-rw-r--r-- | gtk2_ardour/keyboard.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/keyboard.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/plugin_selector.cc | 69 | ||||
-rw-r--r-- | gtk2_ardour/plugin_selector.h | 12 | ||||
-rw-r--r-- | gtk2_ardour/redirect_box.cc | 112 | ||||
-rw-r--r-- | gtk2_ardour/redirect_box.h | 12 |
12 files changed, 122 insertions, 165 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index cb41fc652e..cae22667e8 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -847,7 +847,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile) connection_editor = 0; add_route_dialog = 0; route_params = 0; - meter_bridge = 0; option_editor = 0; location_ui = 0; open_session_selector = 0; @@ -1897,7 +1896,6 @@ restart JACK with more ports.")); void ARDOUR_UI::diskstream_added (DiskStream* ds) { - // meter_bridge_dialog_check->set_sensitive (true); } void diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 38cbfc5fb6..5b261a9ef3 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -205,7 +205,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI protected: friend class PublicEditor; - void toggle_metering (); void toggle_clocking (); void toggle_auto_play (); void toggle_auto_input (); @@ -329,9 +328,11 @@ class ARDOUR_UI : public Gtkmm2ext::UI void start_clocking (); void stop_clocking (); - AudioClock big_clock; - Gtk::Frame big_clock_frame; - ArdourDialog* big_clock_window; + void manage_window (Gtk::Window&); + + AudioClock big_clock; + Gtk::Frame big_clock_frame; + Gtk::Window* big_clock_window; /* Transport Control */ diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 64f85c0192..90eee48557 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -66,11 +66,6 @@ ARDOUR_UI::setup_windows () return -1; } - if (create_meter_bridge ()) { - error << _("UI: cannot setup meter_bridge") << endmsg; - return -1; - } - /* all other dialogs are created conditionally */ we_have_dependents (); @@ -425,16 +420,24 @@ ARDOUR_UI::setup_clock () { ARDOUR_UI::Clock.connect (bind (mem_fun (big_clock, &AudioClock::set), false)); - big_clock_window = new ArdourDialog ("big clock window"); + big_clock_window = new Gtk::Window (WINDOW_TOPLEVEL); big_clock_window->set_border_width (0); big_clock_window->add (big_clock); big_clock_window->set_title (_("ardour: clock")); big_clock_window->set_type_hint (Gdk::WINDOW_TYPE_HINT_MENU); + big_clock_window->signal_realize().connect (bind (sigc::ptr_fun (set_decoration), big_clock_window, (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH))); + big_clock_window->signal_unmap().connect (mem_fun(*this, &ARDOUR_UI::big_clock_hiding)); - big_clock_window->signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), static_cast<Gtk::Window*>(big_clock_window))); + manage_window (*big_clock_window); +} - big_clock_window->signal_unmap().connect (mem_fun(*this, &ARDOUR_UI::big_clock_hiding)); +void +ARDOUR_UI::manage_window (Window& win) +{ + win.signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), &win)); + win.signal_enter_notify_event().connect (bind (mem_fun (Keyboard::the_keyboard(), &Keyboard::enter_window), &win)); + win.signal_leave_notify_event().connect (bind (mem_fun (Keyboard::the_keyboard(), &Keyboard::leave_window), &win)); } void diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc index f2b41bd47a..cd6a5c5a1e 100644 --- a/gtk2_ardour/ardour_ui_dependents.cc +++ b/gtk2_ardour/ardour_ui_dependents.cc @@ -27,7 +27,6 @@ #include "ardour_ui.h" #include "public_editor.h" #include "mixer_ui.h" -#include "meter_bridge.h" #include "keyboard.h" #include "route_params_ui.h" #include "i18n.h" @@ -68,8 +67,6 @@ ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s) { editor->connect_to_session (s); mixer->connect_to_session (s); - - meter_bridge->set_session (s); } void diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 9caf2396b2..c524e15526 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -28,7 +28,6 @@ #include "ardour_ui.h" #include "connection_editor.h" #include "location_ui.h" -#include "meter_bridge.h" #include "mixer_ui.h" #include "option_editor.h" #include "public_editor.h" @@ -81,9 +80,7 @@ ARDOUR_UI::connect_to_session (Session *s) /* </CMT Additions> */ - if (session->n_diskstreams()) { - // meter_bridge_dialog_check->set_sensitive (true); - } else { + if (session->n_diskstreams() == 0) { session->DiskStreamAdded.connect (mem_fun(*this, &ARDOUR_UI::diskstream_added)); } @@ -178,10 +175,8 @@ ARDOUR_UI::unload_session () add_track_item->set_sensitive (false); export_item->set_sensitive (false); close_item->set_sensitive (false); - // meter_bridge_dialog_check->set_sensitive (false); connection_editor_check->set_sensitive (false); locations_dialog_check->set_sensitive (false); - // meter_bridge_dialog_check->set_active(false); connection_editor_check->set_active(false); locations_dialog_check->set_active(false); route_params_check->set_sensitive (false); @@ -282,14 +277,10 @@ ARDOUR_UI::big_clock_hiding() void ARDOUR_UI::toggle_big_clock_window () { - if (big_clock_window->within_hiding()) { - return; - } - if (big_clock_window->is_visible()) { - big_clock_window->hide_all (); + big_clock_window->hide (); } else { - big_clock_window->show_all (); + big_clock_window->present (); } } @@ -305,9 +296,9 @@ ARDOUR_UI::toggle_options_window () } if (option_editor->is_visible()) { - option_editor->hide_all (); + option_editor->hide (); } else { - option_editor->show_all (); + option_editor->present (); } } @@ -324,18 +315,6 @@ ARDOUR_UI::toggle_auto_input () toggle_some_session_state (auto_input_button, &Session::get_auto_input, &Session::set_auto_input); - - meter_bridge->clear_all_meters (); -} - -void -ARDOUR_UI::toggle_metering () -{ -#if 0 - if (global_meter_button.get_active()) { - meter_bridge->toggle_metering (); - } -#endif } int @@ -361,9 +340,9 @@ ARDOUR_UI::toggle_location_window () } if (location_ui->is_visible()) { - location_ui->hide_all(); + location_ui->hide(); } else { - location_ui->show_all(); + location_ui->present(); } } @@ -396,9 +375,9 @@ ARDOUR_UI::toggle_route_params_window () } if (route_params->is_visible ()) { - route_params->hide_all (); + route_params->hide (); } else { - route_params->show_all (); + route_params->present (); } } diff --git a/gtk2_ardour/keyboard.cc b/gtk2_ardour/keyboard.cc index 3e187f15d3..de2039620b 100644 --- a/gtk2_ardour/keyboard.cc +++ b/gtk2_ardour/keyboard.cc @@ -657,7 +657,7 @@ Keyboard::get_modifier_masks () } bool -Keyboard::enter_window (GdkEventCrossing *ev) +Keyboard::enter_window (GdkEventCrossing *ev, Gtk::Window* win) { switch (ev->detail) { case GDK_NOTIFY_INFERIOR: @@ -674,7 +674,7 @@ Keyboard::enter_window (GdkEventCrossing *ev) } bool -Keyboard::leave_window (GdkEventCrossing *ev) +Keyboard::leave_window (GdkEventCrossing *ev, Gtk::Window* win) { switch (ev->detail) { case GDK_NOTIFY_INFERIOR: diff --git a/gtk2_ardour/keyboard.h b/gtk2_ardour/keyboard.h index 8e1c0f1b93..9178546c8e 100644 --- a/gtk2_ardour/keyboard.h +++ b/gtk2_ardour/keyboard.h @@ -65,8 +65,8 @@ class Keyboard : public sigc::trackable, Stateful return (ev->state & RelevantModifierKeyMask) == 0; } - bool leave_window (GdkEventCrossing *ev); - bool enter_window (GdkEventCrossing *ev); + bool leave_window (GdkEventCrossing *ev, Gtk::Window*); + bool enter_window (GdkEventCrossing *ev, Gtk::Window*); static bool modifier_state_contains (guint state, ModifierMask); static bool modifier_state_equals (guint state, ModifierMask); diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index a67728b037..364f7b0f3e 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -167,8 +167,6 @@ Mixer_UI::Mixer_UI (AudioEngine& eng) snapshot_display.signal_button_press_event().connect (mem_fun (*this, &Mixer_UI::snapshot_display_button_press)); _plugin_selector = new PluginSelector (PluginManager::the_manager()); - _plugin_selector->signal_delete_event().connect (bind (ptr_fun (just_hide_it), - static_cast<Window *> (_plugin_selector))); signal_configure_event().connect (mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::configure_handler)); diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc index f2a32321d0..d74b46f74f 100644 --- a/gtk2_ardour/plugin_selector.cc +++ b/gtk2_ardour/plugin_selector.cc @@ -21,6 +21,7 @@ #include <lrdf.h> #include <gtkmm/table.h> +#include <gtkmm/stock.h> #include <gtkmm/button.h> #include <gtkmm/notebook.h> @@ -35,14 +36,13 @@ #include "i18n.h" using namespace ARDOUR; +using namespace Gtk; PluginSelector::PluginSelector (PluginManager *mgr) - : ArdourDialog ("plugin selector") + : Dialog (_("ardour: plugins"), true, false) { set_position (Gtk::WIN_POS_MOUSE); set_name ("PluginSelectorWindow"); - set_title (_("ardour: plugins")); - set_modal(true); add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK); manager = mgr; @@ -89,14 +89,9 @@ PluginSelector::PluginSelector (PluginManager *mgr) ARDOUR_UI::instance()->tooltips().set_tip(*btn_add, _("Add a plugin to the effect list")); Gtk::Button *btn_remove = manage(new Gtk::Button(_("Remove"))); ARDOUR_UI::instance()->tooltips().set_tip(*btn_remove, _("Remove a plugin from the effect list")); - Gtk::Button *btn_ok = manage(new Gtk::Button(_("OK"))); - Gtk::Button *btn_cancel = manage(new Gtk::Button(_("Cancel"))); - Gtk::Button *btn_update = manage(new Gtk::Button(_("Update"))); ARDOUR_UI::instance()->tooltips().set_tip(*btn_update, _("Update available plugins")); - btn_ok->set_name("PluginSelectorButton"); - btn_cancel->set_name("PluginSelectorButton"); btn_add->set_name("PluginSelectorButton"); btn_remove->set_name("PluginSelectorButton"); @@ -109,9 +104,11 @@ PluginSelector::PluginSelector (PluginManager *mgr) table->attach(*btn_update, 5, 6, 5, 6, Gtk::FILL, Gtk::FILL, 5, 5); table->attach(added_list, 0, 7, 7, 9); - table->attach(*btn_ok, 1, 3, 9, 10, Gtk::FILL, Gtk::FILL, 5, 5); - table->attach(*btn_cancel, 3, 4, 9, 10, Gtk::FILL, Gtk::FILL, 5, 5); - add (*table); + + add_button (Stock::OK, RESPONSE_ACCEPT); + add_button (Stock::CANCEL, RESPONSE_CANCEL); + + get_vbox()->pack_start (*table); using namespace Gtk::Notebook_Helpers; notebook.pages().push_back (TabElem (ladspa_display, _("LADSPA"))); @@ -142,10 +139,6 @@ PluginSelector::PluginSelector (PluginManager *mgr) 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)); - btn_ok->signal_clicked().connect(mem_fun(*this, &PluginSelector::btn_ok_clicked)); - btn_cancel->signal_clicked().connect(mem_fun(*this,&PluginSelector::btn_cancel_clicked)); - signal_delete_event().connect (mem_fun(*this, &PluginSelector::wm_close)); - } void @@ -328,37 +321,41 @@ PluginSelector::btn_remove_clicked() } } -// Adds a plugin, and closes the window. -void -PluginSelector::btn_ok_clicked() +void +PluginSelector::btn_update_clicked() { + manager->refresh (); + input_refiller (); +} + +int +PluginSelector::run () +{ + ResponseType r; list<PluginInfo*>::iterator i; - for (i = added_plugins.begin(); i != added_plugins.end(); ++i){ - use_plugin (*i); + r = (ResponseType) Dialog::run (); + + switch (r) { + case RESPONSE_ACCEPT: + for (i = added_plugins.begin(); i != added_plugins.end(); ++i){ + use_plugin (*i); + } + break; + + default: + break; } - hide(); - added_plugins.clear(); + cleanup (); + + return (int) r; } void -PluginSelector::btn_cancel_clicked() +PluginSelector::cleanup () { hide(); added_plugins.clear(); } -void -PluginSelector::btn_update_clicked() -{ - manager->refresh (); - input_refiller (); -} - -gint -PluginSelector::wm_close(GdkEventAny* ev) -{ - btn_cancel_clicked(); - return TRUE; -} diff --git a/gtk2_ardour/plugin_selector.h b/gtk2_ardour/plugin_selector.h index d7c32ba28f..77eefd2c02 100644 --- a/gtk2_ardour/plugin_selector.h +++ b/gtk2_ardour/plugin_selector.h @@ -20,25 +20,25 @@ #ifndef __ardour_plugin_selector_h__ #define __ardour_plugin_selector_h__ -#include <gtkmm/notebook.h> +#include <gtkmm/dialog.h> #include <gtkmm/notebook.h> #include <gtkmm/treeview.h> #include <gtkmm2ext/selector.h> -#include <ardour_dialog.h> - namespace ARDOUR { class Session; class PluginManager; class Plugin; } -class PluginSelector : public ArdourDialog +class PluginSelector : public Gtk::Dialog { public: PluginSelector (ARDOUR::PluginManager *); sigc::signal<void,ARDOUR::Plugin *> PluginCreated; + int run (); // XXX should we try not to overload the non-virtual Gtk::Dialog::run() ? + void set_session (ARDOUR::Session*); private: @@ -118,12 +118,10 @@ class PluginSelector : public ArdourDialog void row_clicked(GdkEventButton *); void btn_add_clicked(); void btn_remove_clicked(); - void btn_ok_clicked(); void btn_update_clicked(); void btn_apply_clicked(); - void btn_cancel_clicked(); void use_plugin (ARDOUR::PluginInfo*); - gint wm_close(GdkEventAny* ev); + void cleanup (); }; #endif // __ardour_plugin_selector_h__ diff --git a/gtk2_ardour/redirect_box.cc b/gtk2_ardour/redirect_box.cc index d2507c364e..041f73e5a9 100644 --- a/gtk2_ardour/redirect_box.cc +++ b/gtk2_ardour/redirect_box.cc @@ -64,11 +64,12 @@ using namespace sigc; using namespace ARDOUR; using namespace Gtk; +using namespace Glib; using namespace Gtkmm2ext; - -RedirectBox::RedirectBox (Placement pcmnt, Session& sess, Route& rt, PluginSelector &plugsel, RouteRedirectSelection & rsel, bool owner_is_mixer) +RedirectBox::RedirectBox (Placement pcmnt, Session& sess, Route& rt, PluginSelector &plugsel, + RouteRedirectSelection & rsel, bool owner_is_mixer) : _route(rt), _session(sess), _owner_is_mixer (owner_is_mixer), @@ -83,8 +84,11 @@ RedirectBox::RedirectBox (Placement pcmnt, Session& sess, Route& rt, PluginSelec redirect_drag_in_progress = false; model = ListStore::create(columns); - selection = redirect_display.get_selection(); + + RefPtr<TreeSelection> selection = redirect_display.get_selection(); selection->set_mode (Gtk::SELECTION_MULTIPLE); + selection->signal_changed().connect (mem_fun (*this, &RedirectBox::selection_changed)); + redirect_display.set_model (model); redirect_display.append_column (NULL, columns.text); redirect_display.set_name ("MixerRedirectSelector"); @@ -113,7 +117,6 @@ RedirectBox::RedirectBox (Placement pcmnt, Session& sess, Route& rt, PluginSelec redirect_display.signal_button_release_event().connect (mem_fun(*this, &RedirectBox::redirect_button)); //redirect_display.signal_button_release_event().connect_after (ptr_fun (do_not_propagate)); - //_plugin_selector.hide.connect(mem_fun(*this,&RedirectBox::disconnect_newplug)); set_stuff_from_route (); /* start off as a passthru strip. we'll correct this, if necessary, @@ -323,61 +326,62 @@ RedirectBox::redirect_button (GdkEventButton *ev) Menu * RedirectBox::build_redirect_menu () { - popup_act_grp = Gtk::ActionGroup::create(); - + popup_act_grp = Gtk::ActionGroup::create(X_("redirectmenu")); + Glib::RefPtr<Action> act; + /* new stuff */ + ActionManager::register_action (popup_act_grp, X_("newplugin"), _("New Plugin ..."), mem_fun(*this, &RedirectBox::choose_plugin)); + ActionManager::register_action (popup_act_grp, X_("newinsert"), _("New Insert"), mem_fun(*this, &RedirectBox::choose_insert)); + ActionManager::register_action (popup_act_grp, X_("newsend"), _("New Send ..."), mem_fun(*this, &RedirectBox::choose_send)); + ActionManager::register_action (popup_act_grp, X_("clear"), _("Clear"), mem_fun(*this, &RedirectBox::clear_redirects)); - popup_act_grp->add (Gtk::Action::create("newplugin", _("New Plugin ...")), mem_fun(*this, &RedirectBox::choose_plugin)); - popup_act_grp->add (Gtk::Action::create("newinsert", _("New Insert")), mem_fun(*this, &RedirectBox::choose_insert)); - popup_act_grp->add (Gtk::Action::create("newsend", _("New Send ...")), mem_fun(*this, &RedirectBox::choose_send)); - popup_act_grp->add (Gtk::Action::create("clear", _("Clear")), mem_fun(*this, &RedirectBox::clear_redirects)); - /* standard editing stuff */ - - popup_act_grp->add (Gtk::Action::create("cut", _("Cut")), mem_fun(*this, &RedirectBox::cut_redirects)); - popup_act_grp->add (Gtk::Action::create("copy", _("Copy")), mem_fun(*this, &RedirectBox::copy_redirects)); - popup_act_grp->add (Gtk::Action::create("paste", _("Paste")), mem_fun(*this, &RedirectBox::paste_redirects)); - popup_act_grp->add (Gtk::Action::create("rename", _("Rename")), mem_fun(*this, &RedirectBox::rename_redirects)); - popup_act_grp->add (Gtk::Action::create("selectall", _("Select All")), mem_fun(*this, &RedirectBox::select_all_redirects)); - popup_act_grp->add (Gtk::Action::create("deselectall", _("Deselect All")), mem_fun(*this, &RedirectBox::deselect_all_redirects)); - + act = ActionManager::register_action (popup_act_grp, X_("cut"), _("Cut"), mem_fun(*this, &RedirectBox::cut_redirects)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + act = ActionManager::register_action (popup_act_grp, X_("copy"), _("Copy"), mem_fun(*this, &RedirectBox::copy_redirects)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + ActionManager::ActionManager::register_action (popup_act_grp, X_("paste"), _("Paste"), mem_fun(*this, &RedirectBox::paste_redirects)); + act = ActionManager::register_action (popup_act_grp, X_("rename"), _("Rename"), mem_fun(*this, &RedirectBox::rename_redirects)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + ActionManager::register_action (popup_act_grp, X_("selectall"), _("Select All"), mem_fun(*this, &RedirectBox::select_all_redirects)); + ActionManager::register_action (popup_act_grp, X_("deselectall"), _("Deselect All"), mem_fun(*this, &RedirectBox::deselect_all_redirects)); + /* activation */ - - popup_act_grp->add (Gtk::Action::create("activate", _("Activate")), bind (mem_fun(*this, &RedirectBox::for_selected_redirects), &RedirectBox::activate_redirect)); - popup_act_grp->add (Gtk::Action::create("deactivate", _("Deactivate")), bind (mem_fun(*this, &RedirectBox::for_selected_redirects), &RedirectBox::deactivate_redirect)); - popup_act_grp->add (Gtk::Action::create("activateall", _("Activate All")), bind (mem_fun(*this, &RedirectBox::all_redirects_active), true)); - popup_act_grp->add (Gtk::Action::create("deactivateall", _("Deactivate All")), bind (mem_fun(*this, &RedirectBox::all_redirects_active), false)); - + act = ActionManager::register_action (popup_act_grp, X_("activate"), _("Activate"), bind (mem_fun(*this, &RedirectBox::for_selected_redirects), &RedirectBox::activate_redirect)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + act = ActionManager::register_action (popup_act_grp, X_("deactivate"), _("Deactivate"), bind (mem_fun(*this, &RedirectBox::for_selected_redirects), &RedirectBox::deactivate_redirect)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + ActionManager::register_action (popup_act_grp, X_("activate"), _("Activate"), bind (mem_fun(*this, &RedirectBox::all_redirects_active),true)); + ActionManager::register_action (popup_act_grp, X_("activate"), _("Activate"), bind (mem_fun(*this, &RedirectBox::all_redirects_active), false)); + /* show editors */ - - popup_act_grp->add (Gtk::Action::create("edit", _("Edit")), bind (mem_fun(*this, &RedirectBox::for_selected_redirects), &RedirectBox::edit_redirect)); - - selection_dependent_items.push_back (popup_act_grp->get_action("cut")); - selection_dependent_items.push_back (popup_act_grp->get_action("copy")); - selection_dependent_items.push_back (popup_act_grp->get_action("rename")); - selection_dependent_items.push_back (popup_act_grp->get_action("activate")); - selection_dependent_items.push_back (popup_act_grp->get_action("deactivate")); - selection_dependent_items.push_back (popup_act_grp->get_action("edit")); - - //popup_ui_mgr = Gtk::UIManager::create(); - //popup_ui_mgr->insert_action_group(popup_act_grp); - - redirect_menu = dynamic_cast<Gtk::Menu*>(ActionManager::get_widget("/redirectmenu") ); - redirect_menu->signal_map_event().connect (mem_fun(*this, &RedirectBox::redirect_menu_map_handler)); - redirect_menu->set_name ("ArdourContextMenu"); - show_all_children(); - return redirect_menu; + act = ActionManager::register_action (popup_act_grp, X_("edit"), _("Edit"), bind (mem_fun(*this, &RedirectBox::for_selected_redirects), &RedirectBox::edit_redirect)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + + ActionManager::add_action_group (popup_act_grp); + + redirect_menu = dynamic_cast<Gtk::Menu*>(ActionManager::get_widget("/redirectmenu") ); + redirect_menu->signal_map_event().connect (mem_fun(*this, &RedirectBox::redirect_menu_map_handler)); + redirect_menu->set_name ("ArdourContextMenu"); + + show_all_children(); + + return redirect_menu; } -gint -RedirectBox::redirect_menu_map_handler (GdkEventAny *ev) +void +RedirectBox::selection_changed () { bool sensitive = (redirect_display.get_selection()->count_selected_rows()) ? true : false; - for (vector<Glib::RefPtr<Gtk::Action> >::iterator i = selection_dependent_items.begin(); i != selection_dependent_items.end(); ++i) { + for (vector<Glib::RefPtr<Gtk::Action> >::iterator i = ActionManager::plugin_selection_sensitive_actions.begin(); i != ActionManager::plugin_selection_sensitive_actions.end(); ++i) { (*i)->set_sensitive (sensitive); } +} +gint +RedirectBox::redirect_menu_map_handler (GdkEventAny *ev) +{ popup_act_grp->get_action("paste")->set_sensitive (!_rr_selection.redirects.empty()); return FALSE; } @@ -397,7 +401,9 @@ RedirectBox::deselect_all_redirects () void RedirectBox::choose_plugin () { - show_plugin_selector(); + sigc::connection newplug_connection = _plugin_selector.PluginCreated.connect (mem_fun(*this,&RedirectBox::insert_plugin_chosen)); + _plugin_selector.run (); + newplug_connection.disconnect(); } void @@ -534,18 +540,6 @@ RedirectBox::send_io_finished (IOSelector::Result r, Redirect* redirect, IOSelec delete_when_idle (ios); } -void -RedirectBox::disconnect_newplug () -{ - newplug_connection.disconnect(); -} -void -RedirectBox::show_plugin_selector () -{ - newplug_connection = _plugin_selector.PluginCreated.connect (mem_fun(*this,&RedirectBox::insert_plugin_chosen)); - _plugin_selector.show_all (); -} - void RedirectBox::redirects_changed (void *src) { diff --git a/gtk2_ardour/redirect_box.h b/gtk2_ardour/redirect_box.h index 278c423df4..c5e274b017 100644 --- a/gtk2_ardour/redirect_box.h +++ b/gtk2_ardour/redirect_box.h @@ -107,7 +107,8 @@ class RedirectBox : public Gtk::HBox ModelColumns columns; Glib::RefPtr<Gtk::ListStore> model; - Glib::RefPtr<Gtk::TreeSelection> selection; + + void selection_changed (); Gtk::EventBox redirect_eventbox; Gtk::HBox redirect_hpacker; @@ -118,8 +119,6 @@ class RedirectBox : public Gtk::HBox Width _width; - sigc::connection newplug_connection; - Gtk::Menu *send_action_menu; void build_send_action_menu (); @@ -129,7 +128,6 @@ class RedirectBox : public Gtk::HBox Glib::RefPtr<Gtk::UIManager> popup_ui_mgr; Glib::RefPtr<Gtk::ActionGroup> popup_act_grp; Gtk::Menu *redirect_menu; - vector<Glib::RefPtr<Gtk::Action> > selection_dependent_items; gint redirect_menu_map_handler (GdkEventAny *ev); Gtk::Menu * build_redirect_menu (); void build_redirect_tooltip (Gtk::EventBox&, string); @@ -147,16 +145,10 @@ class RedirectBox : public Gtk::HBox void show_redirect_name (void*, ARDOUR::Redirect *); void add_redirect_to_display (ARDOUR::Redirect *); - void show_plugin_selector (); - - string redirect_name (ARDOUR::Redirect&); - void remove_redirect_gui (ARDOUR::Redirect *); - void disconnect_newplug(); - void redirects_reordered (const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator&, int*); gint compute_redirect_sort_keys (); vector<sigc::connection> redirect_active_connections; |