Ardour  9.2-79-gba93f2fe52
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 #pragma once
19 
20 #include <ytkmm/box.h>
21 #include <ytkmm/scrolledwindow.h>
22 #include <ytkmm/label.h>
23 #include <ytkmm/textview.h>
24 #include <ytkmm/window.h>
25 
26 #include "pbd/signals.h"
27 #include "pbd/stateful.h"
28 
29 #include "ardour/ardour.h"
30 #include "ardour/luascripting.h"
31 #include "ardour/session_handle.h"
32 #include "ardour/types.h"
33 
35 
36 #include "lua/luastate.h"
37 
38 #include "widgets/ardour_button.h"
40 
41 #include "ardour_window.h"
42 
43 class LuaWindow :
44  public ArdourWindow,
46 {
47 public:
48  static LuaWindow* instance();
50 
51  void edit_script (const std::string&, const std::string&);
52 
54 
55  typedef enum {
56  Buffer_NOFLAG = 0x00,
57  Buffer_Valid = 0x01,
60  Buffer_Dirty = 0x08,
62  } BufferFlags;
63 
65  {
66  public:
67  ScriptBuffer (const std::string&);
69  //ScriptBuffer (const ScriptBuffer& other);
71 
72  bool load ();
73 
74  std::string script;
75  std::string name;
76  std::string path;
79  };
80 
81 private:
84 
86 
90 
91  sigc::connection _script_changed_connection;
92 
96 
103 
105 
106  typedef std::shared_ptr<ScriptBuffer> ScriptBufferPtr;
107  typedef std::vector<ScriptBufferPtr> ScriptBufferList;
108 
111 
113  void update_title ();
114  void reinit_lua ();
115 
116  void setup_buffers ();
118  void rebuild_menu ();
119  uint32_t count_scratch_buffers () const;
120 
121  void script_changed ();
122  void script_selection_changed (ScriptBufferPtr n, bool force = false);
124 
125  void append_text (std::string s);
127  void clear_output ();
128 
129  void run_script ();
130 
131  void new_script ();
132  void delete_script ();
133  void revert_script ();
134  void import_script ();
135  void save_script ();
136 };
137 
138 
ARDOUR::LuaScriptInfo::ScriptType type
Definition: luawindow.h:78
ScriptBuffer(const std::string &)
std::string script
Definition: luawindow.h:74
ScriptBuffer(ARDOUR::LuaScriptInfoPtr)
void clear_output()
void import_script()
LuaState * lua
Definition: luawindow.h:85
void setup_buffers()
ArdourWidgets::ArdourButton _btn_delete
Definition: luawindow.h:101
ArdourWidgets::ArdourButton _btn_revert
Definition: luawindow.h:102
sigc::connection _script_changed_connection
Definition: luawindow.h:91
void scroll_to_bottom()
void run_script()
void refresh_scriptlist()
Gtk::Menu * _menu_snippet
Definition: luawindow.h:88
Gtk::Menu * _menu_scratch
Definition: luawindow.h:87
void update_gui_state()
void edit_script(const std::string &, const std::string &)
ArdourWidgets::ArdourButton _btn_save
Definition: luawindow.h:100
void reinit_lua()
static LuaWindow * instance()
std::shared_ptr< ScriptBuffer > ScriptBufferPtr
Definition: luawindow.h:106
void delete_script()
void new_script()
static LuaWindow * _instance
Definition: luawindow.h:83
ArdourWidgets::ArdourButton _btn_open
Definition: luawindow.h:99
void revert_script()
ScriptBufferList script_buffers
Definition: luawindow.h:109
ArdourWidgets::ArdourButton _btn_clear
Definition: luawindow.h:98
Gtk::ScrolledWindow scrollout
Definition: luawindow.h:95
ArdourWidgets::ArdourButton _btn_run
Definition: luawindow.h:97
ScriptBufferPtr _current_buffer
Definition: luawindow.h:110
void script_changed()
Gtk::Menu * _menu_actions
Definition: luawindow.h:89
ArdourWidgets::ArdourDropdown script_select
Definition: luawindow.h:104
Gtk::TextView entry
Definition: luawindow.h:93
void save_script()
void set_session(ARDOUR::Session *s)
void rebuild_menu()
Gtk::TextView outtext
Definition: luawindow.h:94
void script_selection_changed(ScriptBufferPtr n, bool force=false)
void append_text(std::string s)
@ Buffer_Valid
script is loaded
Definition: luawindow.h:57
@ Buffer_HasFile
Definition: luawindow.h:58
@ Buffer_Dirty
Definition: luawindow.h:60
@ Buffer_Scratch
Definition: luawindow.h:61
@ Buffer_NOFLAG
Definition: luawindow.h:56
@ Buffer_ReadOnly
Definition: luawindow.h:59
void update_title()
void session_going_away()
std::vector< ScriptBufferPtr > ScriptBufferList
Definition: luawindow.h:107
uint32_t count_scratch_buffers() const
std::shared_ptr< LuaScriptInfo > LuaScriptInfoPtr
Definition: luascripting.h:102