add tempo curve colors to unastudia theme.
[ardour.git] / gtk2_ardour / window_manager.cc
index eda294364867eae3600ee72f8365fb4b52207e40..24ed57da6d4f3fc330332cfc2922daf0a90cd2b7 100644 (file)
@@ -66,13 +66,47 @@ Manager::register_window (ProxyBase* info)
        if (!info->menu_name().empty()) {
 
                if (!window_actions) {
-                       window_actions = Gtkmm2ext::Actions.create_action_group (X_("Window"));
+                       window_actions = ARDOUR_UI::instance()->global_actions.create_action_group (X_("Window"));
                }
+               
+               info->set_action (ARDOUR_UI::instance()->global_actions.register_toggle_action (window_actions,
+                        info->action_name().c_str(), info->menu_name().c_str(),
+                        sigc::bind (sigc::mem_fun (*this, &Manager::toggle_window), info)));
 
-               info->set_action (Gtkmm2ext::Actions.register_toggle_action (window_actions,
-                                                                            info->action_name().c_str(), info->menu_name().c_str(),
-                                                                            sigc::bind (sigc::mem_fun (*this, &Manager::toggle_window), info)));
+               info->signal_map.connect (sigc::bind (sigc::mem_fun (*this, &Manager::window_proxy_was_mapped), info));
+               info->signal_unmap.connect (sigc::bind (sigc::mem_fun (*this, &Manager::window_proxy_was_unmapped), info));
+
+       }
+}
+
+void
+Manager::window_proxy_was_mapped (ProxyBase* proxy)
+{
+       Glib::RefPtr<Gtk::Action> act = ARDOUR_UI::instance()->global_actions.find_action (string_compose ("%1/%2", window_actions->get_name(), proxy->action_name()));
+       if (!act) {
+               return;
+       }
+       Glib::RefPtr<Gtk::ToggleAction> tact = Glib::RefPtr<Gtk::ToggleAction>::cast_dynamic (act);
+       if (!tact) {
+               return;
+       }
+
+       tact->set_active (true);
+}
+
+void
+Manager::window_proxy_was_unmapped (ProxyBase* proxy)
+{
+       Glib::RefPtr<Gtk::Action> act = ARDOUR_UI::instance()->global_actions.find_action (string_compose ("%1/%2", window_actions->get_name(), proxy->action_name()));
+       if (!act) {
+               return;
+       }
+       Glib::RefPtr<Gtk::ToggleAction> tact = Glib::RefPtr<Gtk::ToggleAction>::cast_dynamic (act);
+       if (!tact) {
+               return;
        }
+
+       tact->set_active (false);
 }
 
 void
@@ -89,8 +123,7 @@ Manager::remove (const ProxyBase* info)
 void
 Manager::toggle_window (ProxyBase* proxy)
 {
-
-       Glib::RefPtr<Gtk::Action> act = Gtkmm2ext::Actions.find_action (string_compose ("%1/%2", window_actions->get_name(), proxy->action_name()));
+       Glib::RefPtr<Gtk::Action> act = ARDOUR_UI::instance()->global_actions.find_action (string_compose ("%1/%2", window_actions->get_name(), proxy->action_name()));
        if (!act) {
                return;
        }
@@ -196,7 +229,8 @@ ProxyBase::setup ()
 {
        WindowProxy::setup ();
        set_session(_session);
-}      
+
+}
 
 /*-----------------------*/