+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);
+}