summaryrefslogtreecommitdiff
path: root/gtk2_ardour/luawindow.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-03-23 23:44:35 +0100
committerRobin Gareus <robin@gareus.org>2016-03-23 23:44:35 +0100
commitdafdf87b79293c212f4f52ae5faa44d11cb09e5e (patch)
treeaaf4e03b8671c3def40521aa42ee089dcaf7824d /gtk2_ardour/luawindow.h
parentb7754af246dd5446828217a636d8a24e751e41d1 (diff)
towards a proper lua script console UI
Diffstat (limited to 'gtk2_ardour/luawindow.h')
-rw-r--r--gtk2_ardour/luawindow.h82
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