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); })();