diff options
author | Robin Gareus <robin@gareus.org> | 2017-04-24 22:12:09 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-04-25 14:01:22 +0200 |
commit | f5995661d0b652a1907ca440dce6e1fcc2bf3855 (patch) | |
tree | f9f77298ce4dffbb3f4856c6ef49a9524ac15dfc /gtk2_ardour/luadialog.h | |
parent | 7652f4edf204ae87c9d4475a603695d96c9bb1d5 (diff) |
Lua: Action Script Dialog & MessageBox
Diffstat (limited to 'gtk2_ardour/luadialog.h')
-rw-r--r-- | gtk2_ardour/luadialog.h | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/gtk2_ardour/luadialog.h b/gtk2_ardour/luadialog.h new file mode 100644 index 0000000000..96d79846fb --- /dev/null +++ b/gtk2_ardour/luadialog.h @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2017 Robin Gareus <robin@gareus.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef _gtk2ardour_luadialog_h_ +#define _gtk2ardour_luadialog_h_ + +#include <cassert> +#include <gtkmm/table.h> +#include <gtkmm/messagedialog.h> + +#include "LuaBridge/LuaBridge.h" + +namespace LuaDialog { + +class Message { +public: + + enum MessageType { + Info, Warning, Question, Error + }; + + enum ButtonType { + OK, Close, Cancel, Yes_No, OK_Cancel + }; + + Message (std::string const&, std::string const&, Message::MessageType, Message::ButtonType); + + int run (); + +private: + Message (Message const&); // prevent copy construction + + static Gtk::ButtonsType to_gtk_bt (ButtonType bt); + static Gtk::MessageType to_gtk_mt (MessageType mt); + + Gtk::MessageDialog _message_dialog; +}; + +class LuaDialogWidget { +public: + LuaDialogWidget (std::string const& key, std::string const& label) + : _key (key), _label (label) + {} + + virtual ~LuaDialogWidget () {} + + virtual Gtk::Widget* widget () = 0; + virtual void assign (luabridge::LuaRef* rv) const = 0; + std::string const& label () const { return _label; } + +protected: + std::string _key; + std::string _label; +}; + + +class Dialog { +public: + Dialog (std::string const&, luabridge::LuaRef); + ~Dialog (); + int run (lua_State *L); + +private: + Dialog (Dialog const&); // prevent copy construction + ArdourDialog _ad; + typedef std::vector<LuaDialogWidget*> DialogWidgets; + DialogWidgets _widgets; + std::string _title; +}; + +}; // namespace + +#endif |