GenericUI: Show automation UI for dropdowns
[ardour.git] / gtk2_ardour / ardour_ui_dependents.cc
index 5f75144c15f3e95fd402e6f956409ed27eb57f39..8490643487ccf6753c35b6909b7baf8f6c26a895 100644 (file)
@@ -37,6 +37,7 @@
 #include "ardour_ui.h"
 #include "public_editor.h"
 #include "meterbridge.h"
+#include "luawindow.h"
 #include "mixer_ui.h"
 #include "keyboard.h"
 #include "splash.h"
@@ -45,7 +46,7 @@
 #include "opts.h"
 #include "utils.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace Gtk;
 using namespace PBD;
@@ -87,11 +88,13 @@ ARDOUR_UI::we_have_dependents ()
        editor->setup_tooltips ();
        editor->UpdateAllTransportClocks.connect (sigc::mem_fun (*this, &ARDOUR_UI::update_transport_clocks));
 
-       /* catch up on tabbable state */
+       /* catch up on tabbable state, in the right order to leave the editor
+        * selected by default
+        */
 
-       tabbable_state_change (*editor);
-       tabbable_state_change (*mixer);
        tabbable_state_change (*rc_option_editor);
+       tabbable_state_change (*mixer);
+       tabbable_state_change (*editor);
 
        /* all actions are defined */
 
@@ -117,6 +120,7 @@ ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s)
        BootMessage (_("Setup Mixer"));
        mixer->set_session (s);
        meterbridge->set_session (s);
+       luawindow->set_session (s);
 
        /* its safe to do this now */
 
@@ -255,6 +259,11 @@ ARDOUR_UI::setup_windows ()
                return -1;
        }
 
+       if (create_luawindow ()) {
+               error << _("UI: cannot setup luawindow") << endmsg;
+               return -1;
+       }
+
        /* order of addition affects order seen in initial window display */
 
        rc_option_editor->add_to_notebook (_tabs, _("Preferences"));
@@ -294,6 +303,24 @@ ARDOUR_UI::setup_windows ()
        main_vpacker.pack_start (status_bar_hpacker, false, false);
 #endif
 
+       for (int i = 0; i < 9; ++i) {
+               std::string const a = string_compose (X_("script-action-%1"), i + 1);
+               Glib::RefPtr<Action> act = ActionManager::get_action(X_("Editor"), a.c_str());
+               assert (act);
+               action_script_call_btn[i].set_text (string_compose ("%1", i+1));
+               action_script_call_btn[i].set_related_action (act);
+               if (act->get_sensitive ()) {
+                       action_script_call_btn[i].set_visual_state (Gtkmm2ext::VisualState (action_script_call_btn[i].visual_state() & ~Gtkmm2ext::Insensitive));
+               } else {
+                       action_script_call_btn[i].set_visual_state (Gtkmm2ext::VisualState (action_script_call_btn[i].visual_state() | Gtkmm2ext::Insensitive));
+               }
+               const int row = i % 3;
+               const int col = i / 3;
+               action_script_table.attach (action_script_call_btn[i], col, col + 1, row, row + 1, EXPAND, EXPAND, 1, 1);
+               action_script_call_btn[i].set_no_show_all ();
+       }
+       action_script_table.show ();
+
        setup_transport();
        build_menu_bar ();
        setup_tooltips ();
@@ -309,7 +336,7 @@ ARDOUR_UI::setup_windows ()
        const XMLNode* mnode = main_window_settings ();
 
        if (mnode) {
-               const XMLProperty* prop;
+               XMLProperty const * prop;
                gint x = -1;
                gint y = -1;
                gint w = -1;
@@ -359,8 +386,8 @@ ARDOUR_UI::setup_windows ()
                }
        }
 
-       _main_window.show_all ();
        setup_toplevel_window (_main_window, "", this);
+       _main_window.show_all ();
 
        _tabs.set_show_tabs (false);