diff options
author | Robin Gareus <robin@gareus.org> | 2016-03-23 23:44:35 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-03-23 23:44:35 +0100 |
commit | dafdf87b79293c212f4f52ae5faa44d11cb09e5e (patch) | |
tree | aaf4e03b8671c3def40521aa42ee089dcaf7824d /gtk2_ardour/luawindow.h | |
parent | b7754af246dd5446828217a636d8a24e751e41d1 (diff) |
towards a proper lua script console UI
Diffstat (limited to 'gtk2_ardour/luawindow.h')
-rw-r--r-- | gtk2_ardour/luawindow.h | 82 |
1 files changed, 72 insertions, 10 deletions
diff --git a/gtk2_ardour/luawindow.h b/gtk2_ardour/luawindow.h index 9a7f281f3e..8faec694a5 100644 --- a/gtk2_ardour/luawindow.h +++ b/gtk2_ardour/luawindow.h @@ -26,17 +26,21 @@ #include <gtkmm/label.h> #include <gtkmm/window.h> +#include "pbd/signals.h" +#include "pbd/stateful.h" + #include "ardour/ardour.h" -#include "ardour/types.h" +#include "ardour/luascripting.h" #include "ardour/session_handle.h" - -#include "pbd/stateful.h" -#include "pbd/signals.h" +#include "ardour/types.h" #include "gtkmm2ext/visibility_tracker.h" #include "lua/luastate.h" +#include "ardour_button.h" +#include "ardour_dropdown.h" + class LuaWindow : public Gtk::Window, public PBD::ScopedConnectionList, @@ -52,27 +56,85 @@ class LuaWindow : void set_session (ARDOUR::Session* s); + typedef enum { + Buffer_NOFLAG = 0x00, + Buffer_Valid = 0x01, ///< script is loaded + Buffer_HasFile = 0x02, + Buffer_ReadOnly = 0x04, + Buffer_Dirty = 0x08, + Buffer_Scratch = 0x10, + } BufferFlags; + + class ScriptBuffer { + public: + ScriptBuffer (const std::string&); + ScriptBuffer (ARDOUR::LuaScriptInfoPtr); + //ScriptBuffer (const ScriptBuffer& other); + ~ScriptBuffer (); + + bool load (); + + std::string script; + std::string name; + std::string path; + BufferFlags flags; + ARDOUR::LuaScriptInfo::ScriptType type; + }; + private: LuaWindow (); static LuaWindow* _instance; + LuaState lua; bool _visible; - Gtk::VBox global_vpacker; + + Gtk::Menu* _menu_scratch; + Gtk::Menu* _menu_snippet; + Gtk::Menu* _menu_actions; + + sigc::connection _script_changed_connection; + + Gtk::TextView entry; + Gtk::TextView outtext; + Gtk::ScrolledWindow scrollout; + + ArdourButton _btn_run; + ArdourButton _btn_clear; + ArdourButton _btn_open; + ArdourButton _btn_save; + ArdourButton _btn_delete; + + ArdourDropdown script_select; + + typedef boost::shared_ptr<ScriptBuffer> ScriptBufferPtr; + typedef std::vector<ScriptBufferPtr> ScriptBufferList; + + ScriptBufferList script_buffers; + ScriptBufferPtr _current_buffer; void session_going_away (); void update_title (); - Gtk::Entry entry; - Gtk::TextView outtext; - Gtk::ScrolledWindow scrollwin; + void setup_buffers (); + void refresh_scriptlist (); + void rebuild_menu (); + uint32_t count_scratch_buffers () const; + + void script_changed (); + void script_selection_changed (ScriptBufferPtr n); + void update_gui_state (); void append_text (std::string s); void scroll_to_bottom (); void clear_output (); - void entry_activated (); + void run_script (); - LuaState lua; + void new_script (); + void delete_script (); + void import_script (); + void save_script (); }; + #endif |