GUI options to select FLAC as media format
[ardour.git] / gtk2_ardour / luadialog.cc
index 943b077b7721bdafc0a4566a8b14c1de7450954f..5932b234df99e0ce46ff4abe5de5f98b099fd95a 100644 (file)
 
 #include "ardour/dB.h"
 #include "ardour/rc_configuration.h"
-#include "gtk2_ardour/stripable_colorpicker.h"
 
 #include "gtkmm2ext/utils.h"
 
 #include "widgets/ardour_dropdown.h"
 #include "widgets/slider_controller.h"
 
+#include "stripable_colorpicker.h"
 #include "ardour_dialog.h"
 #include "luadialog.h"
 #include "splash.h"
@@ -188,15 +188,6 @@ public:
 protected:
        Gtk::ColorButton _cs;
 };
-/*
-local a = {
-       {type = "color", key = "col", title = ""}
-}
-
-local rv = LuaDialog.Dialog("", a):run()
-
-print(rv['col'])
-*/
 
 class LuaDialogCheckbox : public LuaDialogWidget
 {
@@ -533,14 +524,8 @@ public:
                        switch (a) {
                                case Gtk::FILE_CHOOSER_ACTION_OPEN:
                                case Gtk::FILE_CHOOSER_ACTION_SAVE:
-                                       if (Glib::file_test (path, Glib::FILE_TEST_IS_REGULAR|Glib::FILE_TEST_EXISTS)) {
-                                               _fc.set_filename (path);
-                                       }
-                                       break;
                                case Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER:
-                                       if (Glib::file_test (path, Glib::FILE_TEST_IS_DIR|Glib::FILE_TEST_EXISTS)) {
-                                               _fc.set_filename (path);
-                                       }
+                                       _fc.set_filename (path);
                                        break;
                                case Gtk::FILE_CHOOSER_ACTION_CREATE_FOLDER:
                                        break;
@@ -725,7 +710,14 @@ Dialog::Dialog (std::string const& title, luabridge::LuaRef lr)
        Gtk::Table* table = Gtk::manage (new Gtk::Table ());
        table->set_col_spacings (20);
        table->set_row_spacings (8);
-       _ad.get_vbox ()->pack_start (*table);
+       table->signal_size_allocate ().connect (sigc::mem_fun (this, &Dialog::table_size_alloc));
+
+       _scroller.set_shadow_type(Gtk::SHADOW_NONE);
+       _scroller.set_border_width(0);
+       _scroller.add (*table);
+       _scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_NEVER);
+
+       _ad.get_vbox ()->pack_start (_scroller);
 
        int row = 0;
        int last_end = -1;
@@ -786,3 +778,13 @@ Dialog::run (lua_State *L)
        luabridge::push (L, rv);
        return 1;
 }
+
+void
+Dialog::table_size_alloc (Gtk::Allocation& allocation)
+{
+       /* XXX: consider using 0.75 * screen-height instead of 512 */
+       if (allocation.get_height () > 512) {
+               _scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
+               _ad.set_size_request (-1, 512);
+       }
+}