From 35bf001fa69c2deacab4aeaaab4d55e8e30ccc29 Mon Sep 17 00:00:00 2001 From: Thomas Geymayer <tomgey@gmail.com> Date: Wed, 11 Jun 2014 00:38:56 +0200 Subject: [PATCH] Aircraft Center: show progress and update button on install/remove. --- Nasal/canvas/gui/dialogs/AircraftCenter.nas | 46 ++++++++++++++------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/Nasal/canvas/gui/dialogs/AircraftCenter.nas b/Nasal/canvas/gui/dialogs/AircraftCenter.nas index 40db8e867..6add16689 100644 --- a/Nasal/canvas/gui/dialogs/AircraftCenter.nas +++ b/Nasal/canvas/gui/dialogs/AircraftCenter.nas @@ -60,20 +60,38 @@ var AircraftCenter = { (func { var p = package; var b = gui.widgets.Button.new(content, style, {}); - if( p.installed ) - b.setText("Remove") - .listen("clicked", func - { - p.install().uninstall(); - b.setText("Removing..."); - }); - else - b.setText("Install") - .listen("clicked", func - { - p.install(); - b.setText("Installing..."); - }); + var installed = p.installed; + + if( installed ) + b.setText("Remove"); + else + b.setText("Install"); + + b.listen("clicked", func + { + if( installed ) + { + p.uninstall(); + installed = 0; + b.setText("Install"); + } + else + { + b.setEnabled(0) + .setText("Wait..."); + p.install() + .progress(func(i, cur, total) + b.setText(sprintf("%.1f%%", (cur / total) * 100)) + ) + .fail(func b.setText('Failed')) + .done(func { + installed = 1; + b.setText("Remove") + .setEnabled(1); + }); + } + }); + title_box.addItem(b); })();