add Gtk::ColorButton widget to LuaDialog and add ability to change multiple route colors at a time
This commit is contained in:
parent
37fe6b8ba1
commit
112a1ab1c4
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "ardour/dB.h"
|
#include "ardour/dB.h"
|
||||||
#include "ardour/rc_configuration.h"
|
#include "ardour/rc_configuration.h"
|
||||||
|
#include "gtk2_ardour/stripable_colorpicker.h"
|
||||||
|
|
||||||
#include "gtkmm2ext/utils.h"
|
#include "gtkmm2ext/utils.h"
|
||||||
|
|
||||||
@ -169,6 +170,34 @@ protected:
|
|||||||
Gtk::HSeparator _sep;
|
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
|
class LuaDialogCheckbox : public LuaDialogWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -675,6 +704,8 @@ Dialog::Dialog (std::string const& title, luabridge::LuaRef lr)
|
|||||||
path = i.value ()["path"].cast<std::string> ();
|
path = i.value ()["path"].cast<std::string> ();
|
||||||
}
|
}
|
||||||
w = new LuaFileChooser (key, title, Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER, path);
|
w = new LuaFileChooser (key, title, Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER, path);
|
||||||
|
} else if (type == "color") {
|
||||||
|
w = new LuaColorPicker (key);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (w) {
|
if (w) {
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include "pbd/compose.h"
|
#include "pbd/compose.h"
|
||||||
#include "pbd/i18n.h"
|
#include "pbd/i18n.h"
|
||||||
|
|
||||||
|
#include "public_editor.h"
|
||||||
#include "stripable_colorpicker.h"
|
#include "stripable_colorpicker.h"
|
||||||
#include "ui_config.h"
|
#include "ui_config.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
@ -142,10 +143,15 @@ StripableColorDialog::popup (boost::shared_ptr<ARDOUR::Stripable> s)
|
|||||||
void
|
void
|
||||||
StripableColorDialog::finish_color_edit (int response)
|
StripableColorDialog::finish_color_edit (int response)
|
||||||
{
|
{
|
||||||
|
ARDOUR::RouteList rl = PublicEditor::instance().get_selection().tracks.routelist();
|
||||||
|
|
||||||
if (response == RESPONSE_OK) {
|
if (response == RESPONSE_OK) {
|
||||||
ColorChanged (gdk_color_to_rgba (get_colorsel()->get_current_color())); /* EMIT SIGNAL */
|
ColorChanged (gdk_color_to_rgba (get_colorsel()->get_current_color())); /* EMIT SIGNAL */
|
||||||
}
|
}
|
||||||
if (_stripable && response == RESPONSE_OK) {
|
if (_stripable && response == RESPONSE_OK) {
|
||||||
|
for (ARDOUR::RouteList::iterator i = rl.begin(); i != rl.end(); ++i) {
|
||||||
|
(*i)->presentation_info().set_color (gdk_color_to_rgba (get_colorsel()->get_current_color()));
|
||||||
|
}
|
||||||
_stripable->presentation_info().set_color (gdk_color_to_rgba (get_colorsel()->get_current_color()));
|
_stripable->presentation_info().set_color (gdk_color_to_rgba (get_colorsel()->get_current_color()));
|
||||||
} else if (_stripable) {
|
} else if (_stripable) {
|
||||||
_stripable->presentation_info().set_color (_initial_color);
|
_stripable->presentation_info().set_color (_initial_color);
|
||||||
|
Loading…
Reference in New Issue
Block a user