add a new global window for reviewing and (soon) downloading loop libraries

This commit is contained in:
Paul Davis 2022-09-07 17:02:50 -06:00
parent 10ac1901dd
commit 5461bfb218
7 changed files with 162 additions and 0 deletions

View File

@ -656,6 +656,7 @@
<menuitem action='toggle-big-clock'/>
<menuitem action='toggle-big-transport'/>
<menuitem action='toggle-virtual-keyboard'/>
<menuitem action='toggle-library-manager'/>
<separator/><!-- Video Monitor !-->
<menuitem action='ToggleJadeo'/>

View File

@ -148,6 +148,7 @@
#include "io_plugin_window.h"
#include "keyboard.h"
#include "keyeditor.h"
#include "library_download_dialog.h"
#include "location_ui.h"
#include "lua_script_manager.h"
#include "luawindow.h"
@ -324,6 +325,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
, big_clock_window (X_("big-clock"), _("Big Clock"), boost::bind (&ARDOUR_UI::create_big_clock_window, this))
, big_transport_window (X_("big-transport"), _("Transport Controls"), boost::bind (&ARDOUR_UI::create_big_transport_window, this))
, virtual_keyboard_window (X_("virtual-keyboard"), _("Virtual Keyboard"), boost::bind (&ARDOUR_UI::create_virtual_keyboard_window, this))
, library_manager_window (X_("library-manager"), _("Library Manager"), boost::bind (&ARDOUR_UI::create_library_manager_window, this))
, audio_port_matrix (X_("audio-connection-manager"), _("Audio Connections"), boost::bind (&ARDOUR_UI::create_global_port_matrix, this, ARDOUR::DataType::AUDIO))
, midi_port_matrix (X_("midi-connection-manager"), _("MIDI Connections"), boost::bind (&ARDOUR_UI::create_global_port_matrix, this, ARDOUR::DataType::MIDI))
, key_editor (X_("key-editor"), _("Keyboard Shortcuts"), boost::bind (&ARDOUR_UI::create_key_editor, this))
@ -525,6 +527,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
WM::Manager::instance().register_window (&big_clock_window);
WM::Manager::instance().register_window (&big_transport_window);
WM::Manager::instance().register_window (&virtual_keyboard_window);
WM::Manager::instance().register_window (&library_manager_window);
WM::Manager::instance().register_window (&audio_port_matrix);
WM::Manager::instance().register_window (&midi_port_matrix);
WM::Manager::instance().register_window (&luawindow);
@ -551,6 +554,12 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
ARDOUR::Port::set_connecting_blocked (ARDOUR_COMMAND_LINE::no_connect_ports);
}
void
ARDOUR_UI::library_show_status (LibraryDescription ld)
{
std::cerr << "Library " << ld.name() << " installed ? " << ld.installed() << std::endl;
}
GlobalPortMatrixWindow*
ARDOUR_UI::create_global_port_matrix (ARDOUR::DataType type)
{

View File

@ -48,6 +48,7 @@
#include <list>
#include <cmath>
#include <boost/utility.hpp>
#include "pbd/xml++.h"
#include <gtkmm/box.h>
@ -73,6 +74,7 @@
#include "gtkmm2ext/visibility_tracker.h"
#include "ardour/ardour.h"
#include "ardour/library.h"
#include "ardour/types.h"
#include "ardour/utils.h"
#include "ardour/plugin.h"
@ -123,6 +125,7 @@
#include "speaker_dialog.h"
#include "transport_masters_dialog.h"
#include "virtual_keyboard_window.h"
#include "library_download_dialog.h"
#else
class About;
class AddRouteDialog;
@ -148,6 +151,7 @@ class PluginManagerUI;
class DspStatisticsWindow;
class TransportMastersWindow;
class VirtualKeyboardWindow;
class LibraryDownloadDialog;
#endif
class VideoTimeLine;
@ -415,6 +419,8 @@ protected:
void toggle_rc_options_window ();
void toggle_session_options_window ();
void library_show_status (ARDOUR::LibraryDescription ld);
private:
Gtk::Window _main_window;
@ -758,6 +764,7 @@ private:
WM::ProxyWithConstructor<BigClockWindow> big_clock_window;
WM::ProxyWithConstructor<BigTransportWindow> big_transport_window;
WM::ProxyWithConstructor<VirtualKeyboardWindow> virtual_keyboard_window;
WM::ProxyWithConstructor<LibraryDownloadDialog> library_manager_window;
WM::ProxyWithConstructor<GlobalPortMatrixWindow> audio_port_matrix;
WM::ProxyWithConstructor<GlobalPortMatrixWindow> midi_port_matrix;
WM::ProxyWithConstructor<KeyEditor> key_editor;
@ -771,6 +778,7 @@ private:
BigClockWindow* create_big_clock_window();
BigTransportWindow* create_big_transport_window();
VirtualKeyboardWindow* create_virtual_keyboard_window();
LibraryDownloadDialog* create_library_manager_window();
GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType);
KeyEditor* create_key_editor ();
LuaWindow* create_luawindow ();

View File

@ -60,6 +60,7 @@
#include "gui_object.h"
#include "gui_thread.h"
#include "keyeditor.h"
#include "library_download_dialog.h"
#include "location_ui.h"
#include "lua_script_manager.h"
#include "luawindow.h"
@ -1005,6 +1006,13 @@ ARDOUR_UI::create_virtual_keyboard_window ()
return vkbd;
}
LibraryDownloadDialog*
ARDOUR_UI::create_library_manager_window ()
{
LibraryDownloadDialog* ldd = new LibraryDownloadDialog ();
return ldd;
}
LuaWindow*
ARDOUR_UI::create_luawindow ()
{

View File

@ -0,0 +1,65 @@
#include "pbd/i18n.h"
#include <glibmm/markup.h>
#include "ardour/library.h"
#include "library_download_dialog.h"
LibraryDownloadDialog::LibraryDownloadDialog ()
: ArdourDialog (_("Loop Library Manager"), true) /* modal */
{
_model = Gtk::ListStore::create (_columns);
_display.set_model (_model);
_display.append_column (_("Name"), _columns.name);
_display.append_column (_("Author"), _columns.author);
_display.append_column (_("License"), _columns.license);
_display.append_column (_("Size"), _columns.size);
_display.append_column_editable (_("Installed"), _columns.installed);
Gtk::CellRendererToggle *toggle = dynamic_cast<Gtk::CellRendererToggle *> (_display.get_column_cell_renderer (4));
toggle->set_alignment (0.0, 0.5);
toggle->signal_toggled().connect (sigc::mem_fun (*this, &LibraryDownloadDialog::install_activated));
_display.set_headers_visible (true);
_display.set_tooltip_column (5); /* path */
Gtk::HBox* h = new Gtk::HBox;
h->set_spacing (8);
h->set_border_width (8);
h->pack_start (_display);
get_vbox()->set_spacing (8);
get_vbox()->pack_start (*Gtk::manage (h));
ARDOUR::LibraryFetcher lf;
lf.get_descriptions ();
lf.foreach_description (boost::bind (&LibraryDownloadDialog::add_library, this, _1));
}
void
LibraryDownloadDialog::add_library (ARDOUR::LibraryDescription const & ld)
{
Gtk::TreeModel::iterator i = _model->append();
(*i)[_columns.name] = ld.name();
(*i)[_columns.author] = ld.author();
(*i)[_columns.license] = ld.license();
(*i)[_columns.size] = ld.size();
(*i)[_columns.installed] = ld.installed();
/* tooltip must be escape for pango markup, and we should strip all
* duplicate spaces
*/
(*i)[_columns.description] = Glib::Markup::escape_text (ld.description());
std::cerr << "set descr to " << ld.description() << std::endl;
}
void
LibraryDownloadDialog::install_activated (std::string str)
{
}

View File

@ -0,0 +1,70 @@
#ifndef __gtk2_ardour_library_download_dialog_h__
#define __gtk2_ardour_library_download_dialog_h__
#include <string>
#include <gtkmm/entry.h>
#include <gtkmm/liststore.h>
#include <gtkmm/treeview.h>
#include "ardour_dialog.h"
namespace ARDOUR {
class LibraryDescription;
}
class LibraryDownloadDialog : public ArdourDialog
{
public:
LibraryDownloadDialog ();
void add_library (ARDOUR::LibraryDescription const &);
private:
class LibraryColumns : public Gtk::TreeModelColumnRecord {
public:
LibraryColumns() {
add (name);
add (author);
add (license);
add (size);
add (installed);
add (description);
}
Gtk::TreeModelColumn<std::string> name;
Gtk::TreeModelColumn<std::string> author;
Gtk::TreeModelColumn<std::string> license;
Gtk::TreeModelColumn<std::string> size;
Gtk::TreeModelColumn<std::string> description;
Gtk::TreeModelColumn<bool> installed;
};
Gtk::TreeView _display;
Glib::RefPtr<Gtk::ListStore> _model;
LibraryColumns _columns;
template <class T>
Gtk::TreeViewColumn* append_col (Gtk::TreeModelColumn<T> const& col, int width = 0)
{
Gtk::TreeViewColumn* c = manage (new Gtk::TreeViewColumn ("", col));
if (width) {
c->set_fixed_width (width);
c->set_sizing (Gtk::TREE_VIEW_COLUMN_FIXED);
}
_display.append_column (*c);
return c;
}
bool tv_query_tooltip (int x, int y, bool kbd, const Glib::RefPtr<Gtk::Tooltip>& tooltip);
void setup_col (Gtk::TreeViewColumn*, int, Gtk::AlignmentEnum, const char*, const char*);
void setup_toggle (Gtk::TreeViewColumn*, sigc::slot<void, std::string>);
void install_activated (std::string str);
};
#endif /* __gtk2_ardour_library_download_dialog_h__ */

View File

@ -150,6 +150,7 @@ gtk2_ardour_sources = [
'latency_gui.cc',
'led.cc',
'level_meter.cc',
'library_download_dialog.cc',
'location_ui.cc',
'loudness_dialog.cc',
'loudness_settings.cc',