Ardour  8.12
luawindow.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2017 Robin Gareus <robin@gareus.org>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License along
15  * with this program; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18 #ifndef __ardour_luawindow_h__
19 #define __ardour_luawindow_h__
20 
21 #include <glibmm/thread.h>
22 
23 #include <gtkmm/box.h>
24 #include <gtkmm/scrolledwindow.h>
25 #include <gtkmm/label.h>
26 #include <gtkmm/textview.h>
27 #include <gtkmm/window.h>
28 
29 #include "pbd/signals.h"
30 #include "pbd/stateful.h"
31 
32 #include "ardour/ardour.h"
33 #include "ardour/luascripting.h"
34 #include "ardour/session_handle.h"
35 #include "ardour/types.h"
36 
38 
39 #include "lua/luastate.h"
40 
41 #include "widgets/ardour_button.h"
43 
44 class LuaWindow :
45  public ArdourWindow,
47 {
48 public:
49  static LuaWindow* instance();
51 
52  void show_window ();
54  void edit_script (const std::string&, const std::string&);
55 
57 
58  typedef enum {
59  Buffer_NOFLAG = 0x00,
60  Buffer_Valid = 0x01,
63  Buffer_Dirty = 0x08,
65  } BufferFlags;
66 
68  {
69  public:
70  ScriptBuffer (const std::string&);
72  //ScriptBuffer (const ScriptBuffer& other);
74 
75  bool load ();
76 
77  std::string script;
78  std::string name;
79  std::string path;
82  };
83 
84 private:
87 
89  bool _visible;
90 
94 
95  sigc::connection _script_changed_connection;
96 
100 
107 
109 
110  typedef std::shared_ptr<ScriptBuffer> ScriptBufferPtr;
111  typedef std::vector<ScriptBufferPtr> ScriptBufferList;
112 
115 
117  void update_title ();
118  void reinit_lua ();
119 
120  void setup_buffers ();
122  void rebuild_menu ();
123  uint32_t count_scratch_buffers () const;
124 
125  void script_changed ();
126  void script_selection_changed (ScriptBufferPtr n, bool force = false);
128 
129  void append_text (std::string s);
131  void clear_output ();
132 
133  void run_script ();
134 
135  void new_script ();
136  void delete_script ();
137  void revert_script ();
138  void import_script ();
139  void save_script ();
140 };
141 
142 
143 #endif
ARDOUR::LuaScriptInfo::ScriptType type
Definition: luawindow.h:81
ScriptBuffer(const std::string &)
std::string script
Definition: luawindow.h:77
ScriptBuffer(ARDOUR::LuaScriptInfoPtr)
void clear_output()
void import_script()
LuaState * lua
Definition: luawindow.h:88
void setup_buffers()
ArdourWidgets::ArdourButton _btn_delete
Definition: luawindow.h:105
ArdourWidgets::ArdourButton _btn_revert
Definition: luawindow.h:106
sigc::connection _script_changed_connection
Definition: luawindow.h:95
void scroll_to_bottom()
bool _visible
Definition: luawindow.h:89
void run_script()
void refresh_scriptlist()
Gtk::Menu * _menu_snippet
Definition: luawindow.h:92
Gtk::Menu * _menu_scratch
Definition: luawindow.h:91
void update_gui_state()
void edit_script(const std::string &, const std::string &)
ArdourWidgets::ArdourButton _btn_save
Definition: luawindow.h:104
void reinit_lua()
bool hide_window(GdkEventAny *ev)
static LuaWindow * instance()
std::shared_ptr< ScriptBuffer > ScriptBufferPtr
Definition: luawindow.h:110
void delete_script()
void new_script()
static LuaWindow * _instance
Definition: luawindow.h:86
ArdourWidgets::ArdourButton _btn_open
Definition: luawindow.h:103
void revert_script()
ScriptBufferList script_buffers
Definition: luawindow.h:113
ArdourWidgets::ArdourButton _btn_clear
Definition: luawindow.h:102
Gtk::ScrolledWindow scrollout
Definition: luawindow.h:99
ArdourWidgets::ArdourButton _btn_run
Definition: luawindow.h:101
ScriptBufferPtr _current_buffer
Definition: luawindow.h:114
void script_changed()
Gtk::Menu * _menu_actions
Definition: luawindow.h:93
ArdourWidgets::ArdourDropdown script_select
Definition: luawindow.h:108
void show_window()
Gtk::TextView entry
Definition: luawindow.h:97
void save_script()
void set_session(ARDOUR::Session *s)
void rebuild_menu()
Gtk::TextView outtext
Definition: luawindow.h:98
void script_selection_changed(ScriptBufferPtr n, bool force=false)
void append_text(std::string s)
@ Buffer_Valid
script is loaded
Definition: luawindow.h:60
@ Buffer_HasFile
Definition: luawindow.h:61
@ Buffer_Dirty
Definition: luawindow.h:63
@ Buffer_Scratch
Definition: luawindow.h:64
@ Buffer_NOFLAG
Definition: luawindow.h:59
@ Buffer_ReadOnly
Definition: luawindow.h:62
void update_title()
void session_going_away()
std::vector< ScriptBufferPtr > ScriptBufferList
Definition: luawindow.h:111
uint32_t count_scratch_buffers() const
std::shared_ptr< LuaScriptInfo > LuaScriptInfoPtr
Definition: luascripting.h:103