Lua Script Console Window
This commit is contained in:
parent
28017b4751
commit
6b940afa36
|
@ -528,6 +528,7 @@
|
||||||
<menuitem action='detach-preferences'/>
|
<menuitem action='detach-preferences'/>
|
||||||
</menu>
|
</menu>
|
||||||
<menuitem action='toggle-meterbridge'/>
|
<menuitem action='toggle-meterbridge'/>
|
||||||
|
<menuitem action='toggle-luawindow'/>
|
||||||
<separator/>
|
<separator/>
|
||||||
<menuitem action='toggle-inspector'/>
|
<menuitem action='toggle-inspector'/>
|
||||||
<menuitem action='toggle-locations'/>
|
<menuitem action='toggle-locations'/>
|
||||||
|
|
|
@ -124,6 +124,7 @@ typedef uint64_t microseconds_t;
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
#include "keyeditor.h"
|
#include "keyeditor.h"
|
||||||
#include "location_ui.h"
|
#include "location_ui.h"
|
||||||
|
#include "luawindow.h"
|
||||||
#include "main_clock.h"
|
#include "main_clock.h"
|
||||||
#include "missing_file_dialog.h"
|
#include "missing_file_dialog.h"
|
||||||
#include "missing_plugin_dialog.h"
|
#include "missing_plugin_dialog.h"
|
||||||
|
@ -263,6 +264,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
|
||||||
, last_key_press_time (0)
|
, last_key_press_time (0)
|
||||||
, save_as_dialog (0)
|
, save_as_dialog (0)
|
||||||
, meterbridge (0)
|
, meterbridge (0)
|
||||||
|
, luawindow (0)
|
||||||
, rc_option_editor (0)
|
, rc_option_editor (0)
|
||||||
, speaker_config_window (X_("speaker-config"), _("Speaker Configuration"))
|
, speaker_config_window (X_("speaker-config"), _("Speaker Configuration"))
|
||||||
, add_route_dialog (X_("add-routes"), _("Add Tracks/Busses"))
|
, add_route_dialog (X_("add-routes"), _("Add Tracks/Busses"))
|
||||||
|
@ -654,6 +656,7 @@ ARDOUR_UI::~ARDOUR_UI ()
|
||||||
delete secondary_clock;
|
delete secondary_clock;
|
||||||
delete _process_thread;
|
delete _process_thread;
|
||||||
delete meterbridge;
|
delete meterbridge;
|
||||||
|
delete luawindow;
|
||||||
delete editor;
|
delete editor;
|
||||||
delete mixer;
|
delete mixer;
|
||||||
delete nsm;
|
delete nsm;
|
||||||
|
|
|
@ -126,6 +126,8 @@ class ShuttleControl;
|
||||||
class Splash;
|
class Splash;
|
||||||
class TimeInfoBox;
|
class TimeInfoBox;
|
||||||
class Meterbridge;
|
class Meterbridge;
|
||||||
|
class LuaWindow;
|
||||||
|
class LuaScriptManager;
|
||||||
class MidiTracer;
|
class MidiTracer;
|
||||||
class NSM_Client;
|
class NSM_Client;
|
||||||
class LevelMeterHBox;
|
class LevelMeterHBox;
|
||||||
|
@ -208,6 +210,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
||||||
void toggle_monitor_section_visibility ();
|
void toggle_monitor_section_visibility ();
|
||||||
void toggle_keep_tearoffs();
|
void toggle_keep_tearoffs();
|
||||||
|
|
||||||
|
void lua_script_manager();
|
||||||
|
|
||||||
static PublicEditor* _instance;
|
static PublicEditor* _instance;
|
||||||
|
|
||||||
/** Emitted frequently with the audible frame, false, and the edit point as
|
/** Emitted frequently with the audible frame, false, and the edit point as
|
||||||
|
@ -256,6 +260,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
||||||
|
|
||||||
void start_duplicate_routes ();
|
void start_duplicate_routes ();
|
||||||
|
|
||||||
|
void add_lua_script ();
|
||||||
|
void remove_lua_script ();
|
||||||
|
|
||||||
void add_video (Gtk::Window* float_window);
|
void add_video (Gtk::Window* float_window);
|
||||||
void remove_video ();
|
void remove_video ();
|
||||||
void start_video_server_menu (Gtk::Window* float_window);
|
void start_video_server_menu (Gtk::Window* float_window);
|
||||||
|
@ -383,6 +390,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
||||||
void tabbable_state_change (Gtkmm2ext::Tabbable&);
|
void tabbable_state_change (Gtkmm2ext::Tabbable&);
|
||||||
|
|
||||||
void toggle_meterbridge ();
|
void toggle_meterbridge ();
|
||||||
|
void toggle_luawindow ();
|
||||||
|
|
||||||
int setup_windows ();
|
int setup_windows ();
|
||||||
void setup_transport ();
|
void setup_transport ();
|
||||||
|
@ -645,9 +653,11 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
||||||
|
|
||||||
int create_mixer ();
|
int create_mixer ();
|
||||||
int create_editor ();
|
int create_editor ();
|
||||||
|
int create_meterbridge ();
|
||||||
|
int create_luawindow ();
|
||||||
|
|
||||||
Meterbridge *meterbridge;
|
Meterbridge *meterbridge;
|
||||||
int create_meterbridge ();
|
LuaWindow *luawindow;
|
||||||
|
|
||||||
/* Dialogs that can be created via new<T> */
|
/* Dialogs that can be created via new<T> */
|
||||||
|
|
||||||
|
@ -661,6 +671,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
||||||
WM::Proxy<RouteParams_UI> route_params;
|
WM::Proxy<RouteParams_UI> route_params;
|
||||||
WM::Proxy<EngineControl> audio_midi_setup;
|
WM::Proxy<EngineControl> audio_midi_setup;
|
||||||
WM::Proxy<ExportVideoDialog> export_video_dialog;
|
WM::Proxy<ExportVideoDialog> export_video_dialog;
|
||||||
|
WM::Proxy<LuaScriptManager> lua_script_window;
|
||||||
|
|
||||||
/* Windows/Dialogs that require a creator method */
|
/* Windows/Dialogs that require a creator method */
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#include "ardour_ui.h"
|
#include "ardour_ui.h"
|
||||||
#include "public_editor.h"
|
#include "public_editor.h"
|
||||||
#include "meterbridge.h"
|
#include "meterbridge.h"
|
||||||
|
#include "luawindow.h"
|
||||||
#include "mixer_ui.h"
|
#include "mixer_ui.h"
|
||||||
#include "keyboard.h"
|
#include "keyboard.h"
|
||||||
#include "splash.h"
|
#include "splash.h"
|
||||||
|
@ -119,6 +120,7 @@ ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s)
|
||||||
BootMessage (_("Setup Mixer"));
|
BootMessage (_("Setup Mixer"));
|
||||||
mixer->set_session (s);
|
mixer->set_session (s);
|
||||||
meterbridge->set_session (s);
|
meterbridge->set_session (s);
|
||||||
|
luawindow->set_session (s);
|
||||||
|
|
||||||
/* its safe to do this now */
|
/* its safe to do this now */
|
||||||
|
|
||||||
|
@ -257,6 +259,11 @@ ARDOUR_UI::setup_windows ()
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (create_luawindow ()) {
|
||||||
|
error << _("UI: cannot setup luawindow") << endmsg;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/* order of addition affects order seen in initial window display */
|
/* order of addition affects order seen in initial window display */
|
||||||
|
|
||||||
rc_option_editor->add_to_notebook (_tabs, _("Preferences"));
|
rc_option_editor->add_to_notebook (_tabs, _("Preferences"));
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
#include "gui_thread.h"
|
#include "gui_thread.h"
|
||||||
#include "keyeditor.h"
|
#include "keyeditor.h"
|
||||||
#include "location_ui.h"
|
#include "location_ui.h"
|
||||||
|
#include "luawindow.h"
|
||||||
#include "main_clock.h"
|
#include "main_clock.h"
|
||||||
#include "meterbridge.h"
|
#include "meterbridge.h"
|
||||||
#include "meter_patterns.h"
|
#include "meter_patterns.h"
|
||||||
|
@ -666,6 +667,29 @@ ARDOUR_UI::toggle_meterbridge ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ARDOUR_UI::toggle_luawindow ()
|
||||||
|
{
|
||||||
|
assert (editor && luawindow);
|
||||||
|
|
||||||
|
bool show = false;
|
||||||
|
bool obscuring = false;
|
||||||
|
|
||||||
|
if (luawindow->not_visible ()) {
|
||||||
|
show = true;
|
||||||
|
}
|
||||||
|
// TODO check overlap
|
||||||
|
|
||||||
|
if (show) {
|
||||||
|
luawindow->show_window ();
|
||||||
|
luawindow->present ();
|
||||||
|
luawindow->raise ();
|
||||||
|
} else {
|
||||||
|
luawindow->hide_window (NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ARDOUR_UI::new_midi_tracer_window ()
|
ARDOUR_UI::new_midi_tracer_window ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
#include "editor.h"
|
#include "editor.h"
|
||||||
#include "actions.h"
|
#include "actions.h"
|
||||||
#include "meterbridge.h"
|
#include "meterbridge.h"
|
||||||
|
#include "luawindow.h"
|
||||||
#include "mixer_ui.h"
|
#include "mixer_ui.h"
|
||||||
#include "startup.h"
|
#include "startup.h"
|
||||||
#include "window_manager.h"
|
#include "window_manager.h"
|
||||||
|
@ -93,6 +94,20 @@ ARDOUR_UI::create_editor ()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ARDOUR_UI::create_luawindow ()
|
||||||
|
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
luawindow = LuaWindow::instance ();
|
||||||
|
}
|
||||||
|
catch (failed_constructor& err) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ARDOUR_UI::install_actions ()
|
ARDOUR_UI::install_actions ()
|
||||||
{
|
{
|
||||||
|
@ -273,6 +288,7 @@ ARDOUR_UI::install_actions ()
|
||||||
global_actions.register_action (common_actions, X_("show-ui-prefs"), _("Show more UI preferences"), sigc::mem_fun (*this, &ARDOUR_UI::show_ui_prefs));
|
global_actions.register_action (common_actions, X_("show-ui-prefs"), _("Show more UI preferences"), sigc::mem_fun (*this, &ARDOUR_UI::show_ui_prefs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
global_actions.register_action (common_actions, X_("toggle-luawindow"), S_("Window|Scripting"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_luawindow));
|
||||||
global_actions.register_action (common_actions, X_("toggle-meterbridge"), S_("Window|Meterbridge"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_meterbridge));
|
global_actions.register_action (common_actions, X_("toggle-meterbridge"), S_("Window|Meterbridge"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_meterbridge));
|
||||||
|
|
||||||
act = global_actions.register_action (common_actions, X_("NewMIDITracer"), _("MIDI Tracer"), sigc::mem_fun(*this, &ARDOUR_UI::new_midi_tracer_window));
|
act = global_actions.register_action (common_actions, X_("NewMIDITracer"), _("MIDI Tracer"), sigc::mem_fun(*this, &ARDOUR_UI::new_midi_tracer_window));
|
||||||
|
|
224
gtk2_ardour/luawindow.cc
Normal file
224
gtk2_ardour/luawindow.cc
Normal file
|
@ -0,0 +1,224 @@
|
||||||
|
/*
|
||||||
|
Copyright (C) 2016 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef WAF_BUILD
|
||||||
|
#include "gtk2ardour-config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <gtkmm2ext/gtk_ui.h>
|
||||||
|
#include <gtkmm2ext/utils.h>
|
||||||
|
#include <gtkmm2ext/window_title.h>
|
||||||
|
|
||||||
|
#include "ardour_ui.h"
|
||||||
|
#include "gui_thread.h"
|
||||||
|
#include "luainstance.h"
|
||||||
|
#include "luawindow.h"
|
||||||
|
#include "public_editor.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
|
#include "ardour/luabindings.h"
|
||||||
|
#include "LuaBridge/LuaBridge.h"
|
||||||
|
|
||||||
|
#include "i18n.h"
|
||||||
|
|
||||||
|
using namespace ARDOUR;
|
||||||
|
using namespace ARDOUR_UI_UTILS;
|
||||||
|
using namespace PBD;
|
||||||
|
using namespace Gtk;
|
||||||
|
using namespace Glib;
|
||||||
|
using namespace Gtkmm2ext;
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
LuaWindow* LuaWindow::_instance = 0;
|
||||||
|
|
||||||
|
LuaWindow*
|
||||||
|
LuaWindow::instance ()
|
||||||
|
{
|
||||||
|
if (!_instance) {
|
||||||
|
_instance = new LuaWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
return _instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
LuaWindow::LuaWindow ()
|
||||||
|
: Window (Gtk::WINDOW_TOPLEVEL)
|
||||||
|
, VisibilityTracker (*((Gtk::Window*) this))
|
||||||
|
, _visible (false)
|
||||||
|
{
|
||||||
|
set_name ("Lua");
|
||||||
|
|
||||||
|
update_title ();
|
||||||
|
set_wmclass (X_("ardour_mixer"), PROGRAM_NAME);
|
||||||
|
|
||||||
|
set_border_width (0);
|
||||||
|
|
||||||
|
outtext.set_editable (false);
|
||||||
|
outtext.set_wrap_mode (Gtk::WRAP_WORD);
|
||||||
|
|
||||||
|
signal_delete_event().connect (sigc::mem_fun (*this, &LuaWindow::hide_window));
|
||||||
|
signal_configure_event().connect (sigc::mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::configure_handler));
|
||||||
|
|
||||||
|
scrollwin.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_ALWAYS);
|
||||||
|
scrollwin.add (outtext);
|
||||||
|
|
||||||
|
Gtk::Button *btn_clr = manage (new Button ("Clear"));
|
||||||
|
btn_clr->signal_clicked().connect (sigc::mem_fun(*this, &LuaWindow::clear_output));
|
||||||
|
|
||||||
|
Gtk::HBox *hbox = manage (new HBox());
|
||||||
|
|
||||||
|
hbox->pack_start (entry, true, true, 2);
|
||||||
|
hbox->pack_start (*btn_clr, false, false, 0);
|
||||||
|
|
||||||
|
Gtk::VBox *vbox = manage (new VBox());
|
||||||
|
vbox->pack_start (scrollwin, true, true, 0);
|
||||||
|
vbox->pack_start (*hbox, false, false, 2);
|
||||||
|
|
||||||
|
entry.signal_activate().connect (sigc::mem_fun (*this, &LuaWindow::entry_activated));
|
||||||
|
|
||||||
|
lua.Print.connect (sigc::mem_fun (*this, &LuaWindow::append_text));
|
||||||
|
|
||||||
|
vbox->show_all ();
|
||||||
|
add (*vbox);
|
||||||
|
set_size_request (640, 480); // XXX
|
||||||
|
|
||||||
|
LuaInstance::register_classes (lua.getState());
|
||||||
|
// TODO register some callback functions.
|
||||||
|
|
||||||
|
lua_State* L = lua.getState();
|
||||||
|
luabridge::push <PublicEditor *> (L, &PublicEditor::instance());
|
||||||
|
lua_setglobal (L, "Editor");
|
||||||
|
// TODO
|
||||||
|
// - allow to load files
|
||||||
|
// - allow to run files directly
|
||||||
|
// - history buffer
|
||||||
|
// - multi-line input ??
|
||||||
|
}
|
||||||
|
|
||||||
|
LuaWindow::~LuaWindow ()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LuaWindow::show_window ()
|
||||||
|
{
|
||||||
|
present();
|
||||||
|
_visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
LuaWindow::hide_window (GdkEventAny *ev)
|
||||||
|
{
|
||||||
|
if (!_visible) return 0;
|
||||||
|
_visible = false;
|
||||||
|
return just_hide_it (ev, static_cast<Gtk::Window *>(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
void LuaWindow::set_session (Session* s)
|
||||||
|
{
|
||||||
|
SessionHandlePtr::set_session (s);
|
||||||
|
if (!_session) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
update_title ();
|
||||||
|
_session->DirtyChanged.connect (_session_connections, invalidator (*this), boost::bind (&LuaWindow::update_title, this), gui_context());
|
||||||
|
|
||||||
|
// expose "Session" point directly
|
||||||
|
lua_State* L = lua.getState();
|
||||||
|
LuaBindings::set_session (L, _session);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LuaWindow::session_going_away ()
|
||||||
|
{
|
||||||
|
ENSURE_GUI_THREAD (*this, &LuaWindow::session_going_away);
|
||||||
|
lua.do_command ("collectgarbage();");
|
||||||
|
//TODO: re-init lua-engine (drop all references) ??
|
||||||
|
|
||||||
|
SessionHandlePtr::session_going_away ();
|
||||||
|
_session = 0;
|
||||||
|
update_title ();
|
||||||
|
|
||||||
|
lua_State* L = lua.getState();
|
||||||
|
LuaBindings::set_session (L, _session);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LuaWindow::update_title ()
|
||||||
|
{
|
||||||
|
if (_session) {
|
||||||
|
string n;
|
||||||
|
|
||||||
|
if (_session->snap_name() != _session->name()) {
|
||||||
|
n = _session->snap_name ();
|
||||||
|
} else {
|
||||||
|
n = _session->name ();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_session->dirty ()) {
|
||||||
|
n = "*" + n;
|
||||||
|
}
|
||||||
|
|
||||||
|
WindowTitle title (n);
|
||||||
|
title += S_("Window|Lua");
|
||||||
|
title += Glib::get_application_name ();
|
||||||
|
set_title (title.get_string());
|
||||||
|
|
||||||
|
} else {
|
||||||
|
WindowTitle title (S_("Window|Lua"));
|
||||||
|
title += Glib::get_application_name ();
|
||||||
|
set_title (title.get_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LuaWindow::scroll_to_bottom ()
|
||||||
|
{
|
||||||
|
Gtk::Adjustment *adj;
|
||||||
|
adj = scrollwin.get_vadjustment();
|
||||||
|
adj->set_value (MAX(0,(adj->get_upper() - adj->get_page_size())));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LuaWindow::entry_activated ()
|
||||||
|
{
|
||||||
|
std::string cmd = entry.get_text();
|
||||||
|
append_text ("> " + cmd);
|
||||||
|
|
||||||
|
if (0 == lua.do_command (cmd)) {
|
||||||
|
entry.set_text("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LuaWindow::append_text (std::string s)
|
||||||
|
{
|
||||||
|
Glib::RefPtr<Gtk::TextBuffer> tb (outtext.get_buffer());
|
||||||
|
tb->insert (tb->end(), s + "\n");
|
||||||
|
scroll_to_bottom ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LuaWindow::clear_output ()
|
||||||
|
{
|
||||||
|
Glib::RefPtr<Gtk::TextBuffer> tb (outtext.get_buffer());
|
||||||
|
tb->set_text ("");
|
||||||
|
}
|
78
gtk2_ardour/luawindow.h
Normal file
78
gtk2_ardour/luawindow.h
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
/*
|
||||||
|
Copyright (C) 2016 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
|
*/
|
||||||
|
#ifndef __ardour_luawindow_h__
|
||||||
|
#define __ardour_luawindow_h__
|
||||||
|
|
||||||
|
#include <glibmm/thread.h>
|
||||||
|
|
||||||
|
#include <gtkmm/box.h>
|
||||||
|
#include <gtkmm/scrolledwindow.h>
|
||||||
|
#include <gtkmm/label.h>
|
||||||
|
#include <gtkmm/window.h>
|
||||||
|
|
||||||
|
#include "ardour/ardour.h"
|
||||||
|
#include "ardour/types.h"
|
||||||
|
#include "ardour/session_handle.h"
|
||||||
|
|
||||||
|
#include "pbd/stateful.h"
|
||||||
|
#include "pbd/signals.h"
|
||||||
|
|
||||||
|
#include "gtkmm2ext/visibility_tracker.h"
|
||||||
|
|
||||||
|
#include "lua/luastate.h"
|
||||||
|
|
||||||
|
class LuaWindow :
|
||||||
|
public Gtk::Window,
|
||||||
|
public PBD::ScopedConnectionList,
|
||||||
|
public ARDOUR::SessionHandlePtr,
|
||||||
|
public Gtkmm2ext::VisibilityTracker
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static LuaWindow* instance();
|
||||||
|
~LuaWindow();
|
||||||
|
|
||||||
|
void show_window ();
|
||||||
|
bool hide_window (GdkEventAny *ev);
|
||||||
|
|
||||||
|
void set_session (ARDOUR::Session* s);
|
||||||
|
|
||||||
|
private:
|
||||||
|
LuaWindow ();
|
||||||
|
static LuaWindow* _instance;
|
||||||
|
|
||||||
|
bool _visible;
|
||||||
|
Gtk::VBox global_vpacker;
|
||||||
|
|
||||||
|
void session_going_away ();
|
||||||
|
void update_title ();
|
||||||
|
|
||||||
|
Gtk::Entry entry;
|
||||||
|
Gtk::TextView outtext;
|
||||||
|
Gtk::ScrolledWindow scrollwin;
|
||||||
|
|
||||||
|
void append_text (std::string s);
|
||||||
|
void scroll_to_bottom ();
|
||||||
|
void clear_output ();
|
||||||
|
|
||||||
|
void entry_activated ();
|
||||||
|
|
||||||
|
LuaState lua;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -123,6 +123,7 @@ gtk2_ardour_sources = [
|
||||||
'level_meter.cc',
|
'level_meter.cc',
|
||||||
'location_ui.cc',
|
'location_ui.cc',
|
||||||
'luainstance.cc',
|
'luainstance.cc',
|
||||||
|
'luawindow.cc',
|
||||||
'main.cc',
|
'main.cc',
|
||||||
'main_clock.cc',
|
'main_clock.cc',
|
||||||
'marker.cc',
|
'marker.cc',
|
||||||
|
|
Loading…
Reference in New Issue
Block a user