mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-30 00:43:18 +01:00
Improve Library manager UI
* Only show progress bar when downloading/installing * Don't allow re-install * Scale progress bar width with UI * make sure target clip library folder exists
This commit is contained in:
parent
3cd7bd661c
commit
95f63a9a4e
2 changed files with 15 additions and 4 deletions
|
|
@ -27,6 +27,7 @@
|
|||
|
||||
#include <glibmm/markup.h>
|
||||
|
||||
#include "ardour/clip_library.h"
|
||||
#include "ardour/rc_configuration.h"
|
||||
#include "ardour/library.h"
|
||||
|
||||
|
|
@ -126,9 +127,10 @@ void
|
|||
LibraryDownloadDialog::append_progress_column ()
|
||||
{
|
||||
progress_renderer = new Gtk::CellRendererProgress();
|
||||
progress_renderer->property_width() = 100;
|
||||
progress_renderer->property_width() = std::max<int>(100, rintf(100. * UIConfiguration::instance().get_ui_scale()));
|
||||
Gtk::TreeViewColumn* tvc = manage (new Gtk::TreeViewColumn ("", *progress_renderer));
|
||||
tvc->add_attribute (*progress_renderer, "value", _columns.progress);
|
||||
tvc->add_attribute (*progress_renderer, "visible", _columns.installing);
|
||||
_display.append_column (*tvc);
|
||||
}
|
||||
|
||||
|
|
@ -155,6 +157,7 @@ LibraryDownloadDialog::add_library (ARDOUR::LibraryDescription const & ld)
|
|||
(*i)[_columns.installed] = ld.installed();
|
||||
(*i)[_columns.url] = ld.url();
|
||||
(*i)[_columns.toplevel] = ld.toplevel_dir();
|
||||
(*i)[_columns.installing] = false;
|
||||
|
||||
if (ld.installed()) {
|
||||
(*i)[_columns.install] = string (_("Installed"));
|
||||
|
|
@ -215,6 +218,7 @@ LibraryDownloadDialog::install_finished (Gtk::TreeModel::iterator row, std::stri
|
|||
(*row)[_columns.install] = _("Install");
|
||||
(*row)[_columns.progress] = 0;
|
||||
}
|
||||
(*row)[_columns.installing] = false;
|
||||
|
||||
/* Always unlink (remove) the downloaded archive */
|
||||
|
||||
|
|
@ -236,7 +240,7 @@ LibraryDownloadDialog::download (Gtk::TreePath const & path)
|
|||
PBD::Downloader* downloader;
|
||||
|
||||
try {
|
||||
downloader = new PBD::Downloader (url, ARDOUR::Config->get_clip_library_dir());
|
||||
downloader = new PBD::Downloader (url, ARDOUR::clip_library_dir (true));
|
||||
} catch (...) {
|
||||
(*row)[_columns.install] = _("Error");
|
||||
return;
|
||||
|
|
@ -244,9 +248,11 @@ LibraryDownloadDialog::download (Gtk::TreePath const & path)
|
|||
|
||||
/* setup timer callback to update progressbar */
|
||||
|
||||
|
||||
Glib::signal_timeout().connect (sigc::bind (sigc::mem_fun (*this, &LibraryDownloadDialog::dl_timer_callback), downloader, path), 40);
|
||||
|
||||
(*row)[_columns.downloader] = downloader;
|
||||
(*row)[_columns.installing] = true;
|
||||
|
||||
/* and go ... */
|
||||
|
||||
|
|
@ -274,6 +280,7 @@ LibraryDownloadDialog::dl_timer_callback (Downloader* dl, Gtk::TreePath treepath
|
|||
|
||||
if (dl->status() < 0) {
|
||||
(*row)[_columns.install] = _("Install");;
|
||||
(*row)[_columns.installing] = false;
|
||||
} else {
|
||||
(*row)[_columns.install] = _("Installing");
|
||||
install (dl->download_path(), treepath);
|
||||
|
|
@ -305,6 +312,10 @@ LibraryDownloadDialog::display_button_press (GdkEventButton* ev)
|
|||
|
||||
Gtk::TreeIter iter = _model->get_iter (path);
|
||||
|
||||
if ((*iter)[_columns.installed]) {
|
||||
return true;
|
||||
}
|
||||
|
||||
string cur = (*iter)[_columns.install];
|
||||
if (cur == _("Install")) {
|
||||
if (!(*iter)[_columns.installed]) {
|
||||
|
|
@ -317,8 +328,6 @@ LibraryDownloadDialog::display_button_press (GdkEventButton* ev)
|
|||
if (dl) {
|
||||
dl->cancel ();
|
||||
}
|
||||
|
||||
(*iter)[_columns.install] = _("Install");
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ class LibraryDownloadDialog : public ArdourDialog
|
|||
add (toplevel);
|
||||
add (install);
|
||||
add (progress);
|
||||
add (installing);
|
||||
add (downloader);
|
||||
}
|
||||
|
||||
|
|
@ -77,6 +78,7 @@ class LibraryDownloadDialog : public ArdourDialog
|
|||
Gtk::TreeModelColumn<std::string> url;
|
||||
Gtk::TreeModelColumn<std::string> toplevel;
|
||||
Gtk::TreeModelColumn<PBD::Downloader*> downloader;
|
||||
Gtk::TreeModelColumn<bool> installing;
|
||||
Gtk::TreeModelColumn<int> progress;
|
||||
/* used as tooltip */
|
||||
Gtk::TreeModelColumn<std::string> description;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue