1
0
Fork 0

Simple canvas based "Aircraft Center".

- Needs FlightGear compiled with -DENABLE_PACKAGE_SYSTEM.
 - Shows only first 100 available aircrafts.
 - Now progress indication on install/remove (need to reopen
   dialog afterwards)
This commit is contained in:
Thomas Geymayer 2014-06-10 18:47:13 +02:00
parent 48f33fe78f
commit e4d60f2153
4 changed files with 113 additions and 3 deletions

View file

@ -7,6 +7,7 @@ var gui = {
var gui_dir = getprop("/sim/fg-root") ~ "/Nasal/canvas/gui/";
var loadGUIFile = func(file) io.load_nasal(gui_dir ~ file, "canvas");
var loadWidget = func(name) loadGUIFile("widgets/" ~ name ~ ".nas");
var loadDialog = func(name) loadGUIFile("dialogs/" ~ name ~ ".nas");
loadGUIFile("Config.nas");
loadGUIFile("Style.nas");

View file

@ -0,0 +1,98 @@
var AircraftCenter = {
show: func
{
var dlg = canvas.Window.new([550,500], "dialog")
.set("title", "Aircraft Center")
.set("resize", 1);
dlg.getCanvas(1)
.set("background", canvas.style.getColor("bg_color"));
var root = dlg.getCanvas().createGroup();
var vbox = VBoxLayout.new();
dlg.setLayout(vbox);
vbox.addItem(
gui.widgets.Label.new(root, style, {})
.setText("Install/remove aircrafts (Showing first 100)")
);
var scroll = gui.widgets.ScrollArea.new(root, style, {size: [96, 128]})
.move(20, 100);
vbox.addItem(scroll, 1);
var content = scroll.getContent()
.set("font", "LiberationFonts/LiberationSans-Bold.ttf")
.set("character-size", 16)
.set("alignment", "left-center");
var list = VBoxLayout.new();
scroll.setLayout(list);
var num = 0;
foreach(var catalog; pkg.root.catalogs())
{
foreach(var package; catalog.packages())
{
var row = HBoxLayout.new();
list.addItem(row);
var img = "path-for-missing-thumb...";
var thumbs = package.thumbnails;
if( size(thumbs) > 0 )
img = thumbs[0];
var image_label = gui.widgets.Label.new(content, style, {})
.setImage(img);
image_label.setFixedSize(171, 128);
row.addItem(image_label);
var detail_box = VBoxLayout.new();
detail_box.setSpacing(0);
row.addItem(detail_box);
var title_box = HBoxLayout.new();
detail_box.addItem(title_box);
title_box.addItem(
gui.widgets.Label.new(content, style, {})
.setText(package.name)
);
title_box.addStretch(1);
(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...");
});
title_box.addItem(b);
})();
foreach(var cat; ["FDM", "systems", "cockpit", "model"])
{
detail_box.addItem(
gui.widgets.Label.new(content, style, {})
.setText(cat ~ ": " ~ package.lprop("rating/" ~ cat))
);
}
row.addSpacing(5);
num += 1;
if( num >= 100 )
break;
}
}
}
};
AircraftCenter.show();

View file

@ -12,8 +12,10 @@
<snap-shot>Screenshot </snap-shot>
<snap-shot-dir>Screenshot Directory</snap-shot-dir>
<sound-config>Sound Configuration</sound-config>
<input-config>Input Configuration</input-config>
<exit>Quit </exit>
<input-config>Input Configuration</input-config>
<terrasync>Scenery Download</terrasync>
<aircraft-center>Aircraft Center (Experimental)</aircraft-center>
<exit>Quit</exit>
<!-- View menu -->
<view>View</view>
@ -48,7 +50,6 @@
<environment-settings>Environment Settings</environment-settings>
<time-settings>Time Settings</time-settings>
<wildfire-settings>Wildfire Settings</wildfire-settings>
<terrasync>Scenery Download</terrasync>
<!-- Equipment menu -->
<equipment>Equipment</equipment>

View file

@ -75,6 +75,16 @@
</binding>
</item>
<item>
<name>aircraft-center</name>
<binding>
<command>nasal</command>
<script>
canvas.loadDialog("AircraftCenter");
</script>
</binding>
</item>
<item>
<name>exit</name>
<key>Esc</key>