From 56a41b934710a23935cf1b2b5f3e0dfad9720b51 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 26 Mar 2016 14:54:10 +0100 Subject: add "revert" button to lua script window --- gtk2_ardour/luawindow.cc | 23 +++++++++++++++++++---- gtk2_ardour/luawindow.h | 4 +++- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/gtk2_ardour/luawindow.cc b/gtk2_ardour/luawindow.cc index 15c7fb69a6..3bc3a4741e 100644 --- a/gtk2_ardour/luawindow.cc +++ b/gtk2_ardour/luawindow.cc @@ -96,6 +96,7 @@ LuaWindow::LuaWindow () , _btn_open (_("Import")) , _btn_save (_("Save")) , _btn_delete (_("Delete")) + , _btn_revert (_("Revert")) , _current_buffer () { set_name ("Lua"); @@ -120,10 +121,12 @@ LuaWindow::LuaWindow () _btn_open.signal_clicked.connect (sigc::mem_fun(*this, &LuaWindow::import_script)); _btn_save.signal_clicked.connect (sigc::mem_fun(*this, &LuaWindow::save_script)); _btn_delete.signal_clicked.connect (sigc::mem_fun(*this, &LuaWindow::delete_script)); + _btn_revert.signal_clicked.connect (sigc::mem_fun(*this, &LuaWindow::revert_script)); _btn_open.set_sensitive (false); // TODO _btn_save.set_sensitive (false); _btn_delete.set_sensitive (false); + _btn_revert.set_sensitive (false); // layout @@ -143,6 +146,7 @@ LuaWindow::LuaWindow () hbox->pack_start (_btn_open, false, false, 2); hbox->pack_start (_btn_save, false, false, 2); hbox->pack_start (_btn_delete, false, false, 2); + hbox->pack_start (_btn_revert, false, false, 2); hbox->pack_start (script_select, false, false, 2); Gtk::VBox *vbox = manage (new VBox()); @@ -343,6 +347,13 @@ LuaWindow::delete_script () new_script (); } +void +LuaWindow::revert_script () +{ + _current_buffer->flags &= BufferFlags(~Buffer_Valid); + script_selection_changed (_current_buffer, true); +} + void LuaWindow::import_script () { @@ -537,7 +548,7 @@ LuaWindow::rebuild_menu () for (ScriptBufferList::const_iterator i = script_buffers.begin (); i != script_buffers.end (); ++i) { Menu_Helpers::MenuElem elem = Gtk::Menu_Helpers::MenuElem((*i)->name, - sigc::bind(sigc::mem_fun(*this, &LuaWindow::script_selection_changed), (*i))); + sigc::bind(sigc::mem_fun(*this, &LuaWindow::script_selection_changed), (*i), false)); if ((*i)->flags & Buffer_Scratch) { items_scratch.push_back(elem); @@ -557,14 +568,17 @@ LuaWindow::rebuild_menu () } void -LuaWindow::script_selection_changed (ScriptBufferPtr n) +LuaWindow::script_selection_changed (ScriptBufferPtr n, bool force) { - if (n == _current_buffer) { + if (n == _current_buffer && !force) { return; } Glib::RefPtr tb (entry.get_buffer()); - _current_buffer->script = tb->get_text(); + + if ((n->flags & Buffer_Valid)) { + _current_buffer->script = tb->get_text(); + } if (!(n->flags & Buffer_Valid)) { if (!n->load()) { @@ -606,6 +620,7 @@ LuaWindow::update_gui_state () _btn_save.set_sensitive (sb.flags & Buffer_Dirty); _btn_delete.set_sensitive (sb.flags & Buffer_Scratch); // TODO allow to remove user-scripts + _btn_revert.set_sensitive ((sb.flags & Buffer_Dirty) && (sb.flags & Buffer_HasFile)); } void diff --git a/gtk2_ardour/luawindow.h b/gtk2_ardour/luawindow.h index 40fa269cef..38f688d4ad 100644 --- a/gtk2_ardour/luawindow.h +++ b/gtk2_ardour/luawindow.h @@ -103,6 +103,7 @@ class LuaWindow : ArdourButton _btn_open; ArdourButton _btn_save; ArdourButton _btn_delete; + ArdourButton _btn_revert; ArdourDropdown script_select; @@ -122,7 +123,7 @@ class LuaWindow : uint32_t count_scratch_buffers () const; void script_changed (); - void script_selection_changed (ScriptBufferPtr n); + void script_selection_changed (ScriptBufferPtr n, bool force = false); void update_gui_state (); void append_text (std::string s); @@ -133,6 +134,7 @@ class LuaWindow : void new_script (); void delete_script (); + void revert_script (); void import_script (); void save_script (); }; -- cgit v1.2.3