diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2005-11-28 15:29:49 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2005-11-28 15:29:49 +0000 |
commit | d6a27c9537926e4ec7bd3371da97a2d1f85b6e86 (patch) | |
tree | a2c251749a71a8aa9ba8069658ef3fae5566f339 /gtk2_ardour/redirect_box.cc | |
parent | 14e3f7f21528c4ea3e3782dedade44b70dd3ac45 (diff) |
come up and stay up
git-svn-id: svn://localhost/trunk/ardour2@138 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/redirect_box.cc')
-rw-r--r-- | gtk2_ardour/redirect_box.cc | 253 |
1 files changed, 218 insertions, 35 deletions
diff --git a/gtk2_ardour/redirect_box.cc b/gtk2_ardour/redirect_box.cc index 4c827de7dc..95296f0817 100644 --- a/gtk2_ardour/redirect_box.cc +++ b/gtk2_ardour/redirect_box.cc @@ -67,6 +67,8 @@ using namespace Gtk; using namespace Glib; using namespace Gtkmm2ext; +RedirectBox* RedirectBox::_current_redirect_box = 0; + RedirectBox::RedirectBox (Placement pcmnt, Session& sess, Route& rt, PluginSelector &plugsel, RouteRedirectSelection & rsel, bool owner_is_mixer) @@ -113,6 +115,9 @@ RedirectBox::RedirectBox (Placement pcmnt, Session& sess, Route& rt, PluginSelec _route.redirects_changed.connect (mem_fun(*this, &RedirectBox::redirects_changed)); + redirect_eventbox.signal_enter_notify_event().connect (bind (sigc::ptr_fun (RedirectBox::enter_box), this)); + redirect_eventbox.signal_leave_notify_event().connect (bind (sigc::ptr_fun (RedirectBox::leave_box), this)); + redirect_display.signal_button_press_event().connect (mem_fun(*this, &RedirectBox::redirect_button)); redirect_display.signal_button_release_event().connect (mem_fun(*this, &RedirectBox::redirect_button)); @@ -326,40 +331,6 @@ RedirectBox::redirect_button (GdkEventButton *ev) Menu * RedirectBox::build_redirect_menu () { - 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)); - - /* standard editing stuff */ - 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 */ - 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 */ - 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"); @@ -382,7 +353,8 @@ RedirectBox::selection_changed () gint RedirectBox::redirect_menu_map_handler (GdkEventAny *ev) { - popup_act_grp->get_action("paste")->set_sensitive (!_rr_selection.redirects.empty()); + // GTK2FIX + // popup_act_grp->get_action("paste")->set_sensitive (!_rr_selection.redirects.empty()); return FALSE; } @@ -1094,4 +1066,215 @@ RedirectBox::edit_redirect (Redirect* redirect) } } +bool +RedirectBox::enter_box (GdkEventCrossing *ev, RedirectBox* rb) +{ + switch (ev->detail) { + case GDK_NOTIFY_INFERIOR: + break; + + case GDK_NOTIFY_VIRTUAL: + /* fallthru */ + + default: + _current_redirect_box = rb; + } + + return false; +} + +bool +RedirectBox::leave_box (GdkEventCrossing *ev, RedirectBox* rb) +{ + switch (ev->detail) { + case GDK_NOTIFY_INFERIOR: + break; + + case GDK_NOTIFY_VIRTUAL: + /* fallthru */ + default: + _current_redirect_box = 0; + } + + return false; +} + +void +RedirectBox::register_actions () +{ + Glib::RefPtr<Gtk::ActionGroup> popup_act_grp = Gtk::ActionGroup::create(X_("redirectmenu")); + Glib::RefPtr<Action> act; + + /* new stuff */ + ActionManager::register_action (popup_act_grp, X_("newplugin"), _("New Plugin ..."), sigc::ptr_fun (RedirectBox::rb_choose_plugin)); + ActionManager::register_action (popup_act_grp, X_("newinsert"), _("New Insert"), sigc::ptr_fun (RedirectBox::rb_choose_insert)); + ActionManager::register_action (popup_act_grp, X_("newsend"), _("New Send ..."), sigc::ptr_fun (RedirectBox::rb_choose_send)); + ActionManager::register_action (popup_act_grp, X_("clear"), _("Clear"), sigc::ptr_fun (RedirectBox::rb_clear)); + + /* standard editing stuff */ + act = ActionManager::register_action (popup_act_grp, X_("cut"), _("Cut"), sigc::ptr_fun (RedirectBox::rb_cut)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + act = ActionManager::register_action (popup_act_grp, X_("copy"), _("Copy"), sigc::ptr_fun (RedirectBox::rb_copy)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + ActionManager::ActionManager::register_action (popup_act_grp, X_("paste"), _("Paste"), sigc::ptr_fun (RedirectBox::rb_paste)); + act = ActionManager::register_action (popup_act_grp, X_("rename"), _("Rename"), sigc::ptr_fun (RedirectBox::rb_rename)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + ActionManager::register_action (popup_act_grp, X_("selectall"), _("Select All"), sigc::ptr_fun (RedirectBox::rb_select_all)); + ActionManager::register_action (popup_act_grp, X_("deselectall"), _("Deselect All"), sigc::ptr_fun (RedirectBox::rb_deselect_all)); + + /* activation */ + act = ActionManager::register_action (popup_act_grp, X_("activate"), _("Activate"), sigc::ptr_fun (RedirectBox::rb_activate)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + act = ActionManager::register_action (popup_act_grp, X_("deactivate"), _("Deactivate"), sigc::ptr_fun (RedirectBox::rb_deactivate)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + ActionManager::register_action (popup_act_grp, X_("activate_all"), _("Activate all"), sigc::ptr_fun (RedirectBox::rb_activate_all)); + ActionManager::register_action (popup_act_grp, X_("deactivate_all"), _("Deactivate all"), sigc::ptr_fun (RedirectBox::rb_deactivate_all)); + + /* show editors */ + act = ActionManager::register_action (popup_act_grp, X_("edit"), _("Edit"), sigc::ptr_fun (RedirectBox::rb_edit)); + ActionManager::plugin_selection_sensitive_actions.push_back(act); + + ActionManager::add_action_group (popup_act_grp); +} + +void +RedirectBox::rb_choose_plugin () +{ + if (_current_redirect_box == 0) { + return; + } + _current_redirect_box->choose_plugin (); +} + +void +RedirectBox::rb_choose_insert () +{ + if (_current_redirect_box == 0) { + return; + } + _current_redirect_box->choose_insert (); +} + +void +RedirectBox::rb_choose_send () +{ + if (_current_redirect_box == 0) { + return; + } + _current_redirect_box->choose_send (); +} + +void +RedirectBox::rb_clear () +{ + if (_current_redirect_box == 0) { + return; + } + + _current_redirect_box->clear_redirects (); +} + +void +RedirectBox::rb_cut () +{ + if (_current_redirect_box == 0) { + return; + } + + _current_redirect_box->cut_redirects (); +} + +void +RedirectBox::rb_copy () +{ + if (_current_redirect_box == 0) { + return; + } + _current_redirect_box->copy_redirects (); +} + +void +RedirectBox::rb_paste () +{ + if (_current_redirect_box == 0) { + return; + } +} + +void +RedirectBox::rb_rename () +{ + if (_current_redirect_box == 0) { + return; + } + _current_redirect_box->rename_redirects (); +} + +void +RedirectBox::rb_select_all () +{ + if (_current_redirect_box == 0) { + return; + } + + _current_redirect_box->select_all_redirects (); +} + +void +RedirectBox::rb_deselect_all () +{ + if (_current_redirect_box == 0) { + return; + } + + _current_redirect_box->deselect_all_redirects (); +} + +void +RedirectBox::rb_activate () +{ + if (_current_redirect_box == 0) { + return; + } + + _current_redirect_box->for_selected_redirects (&RedirectBox::activate_redirect); +} + +void +RedirectBox::rb_deactivate () +{ + if (_current_redirect_box == 0) { + return; + } + _current_redirect_box->for_selected_redirects (&RedirectBox::deactivate_redirect); +} + +void +RedirectBox::rb_activate_all () +{ + if (_current_redirect_box == 0) { + return; + } + + _current_redirect_box->all_redirects_active (true); +} + +void +RedirectBox::rb_deactivate_all () +{ + if (_current_redirect_box == 0) { + return; + } + _current_redirect_box->all_redirects_active (false); +} + +void +RedirectBox::rb_edit () +{ + if (_current_redirect_box == 0) { + return; + } + + _current_redirect_box->for_selected_redirects (&RedirectBox::edit_redirect); +} |