add Gtk::ColorButton widget to LuaDialog and add ability to change multiple route...
[ardour.git] / gtk2_ardour / luadialog.cc
index 90464d26afae4374b9b4f225f16bc18f9dc73604..943b077b7721bdafc0a4566a8b14c1de7450954f 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "ardour/dB.h"
 #include "ardour/rc_configuration.h"
+#include "gtk2_ardour/stripable_colorpicker.h"
 
 #include "gtkmm2ext/utils.h"
 
@@ -169,6 +170,34 @@ protected:
        Gtk::HSeparator _sep;
 };
 
+class LuaColorPicker : public LuaDialogWidget
+{
+public:
+       LuaColorPicker (std::string const& key)
+               : LuaDialogWidget (key, "", 0, 1)
+       {}
+
+       Gtk::Widget* widget ()
+       {
+               return &_cs;
+       }
+       void assign (luabridge::LuaRef* rv) const {
+               uint32_t rgba = ARDOUR_UI_UTILS::gdk_color_to_rgba(_cs.get_color());
+               (*rv)[_key] = rgba;
+       }
+protected:
+       Gtk::ColorButton _cs;
+};
+/*
+local a = {
+       {type = "color", key = "col", title = ""}
+}
+
+local rv = LuaDialog.Dialog("", a):run()
+
+print(rv['col'])
+*/
+
 class LuaDialogCheckbox : public LuaDialogWidget
 {
 public:
@@ -675,6 +704,8 @@ Dialog::Dialog (std::string const& title, luabridge::LuaRef lr)
                                path = i.value ()["path"].cast<std::string> ();
                        }
                        w = new LuaFileChooser (key, title, Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER, path);
+               } else if (type == "color") {
+                       w = new LuaColorPicker (key);
                }
 
                if (w) {