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:
parent
48f33fe78f
commit
e4d60f2153
4 changed files with 113 additions and 3 deletions
|
@ -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");
|
||||
|
|
98
Nasal/canvas/gui/dialogs/AircraftCenter.nas
Normal file
98
Nasal/canvas/gui/dialogs/AircraftCenter.nas
Normal 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();
|
|
@ -13,6 +13,8 @@
|
|||
<snap-shot-dir>Screenshot Directory</snap-shot-dir>
|
||||
<sound-config>Sound Configuration</sound-config>
|
||||
<input-config>Input Configuration</input-config>
|
||||
<terrasync>Scenery Download</terrasync>
|
||||
<aircraft-center>Aircraft Center (Experimental)</aircraft-center>
|
||||
<exit>Quit</exit>
|
||||
|
||||
<!-- View menu -->
|
||||
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Reference in a new issue