Aircraft Center: tabs for installed aircrafts. Buttons to switch aircraft.
This commit is contained in:
parent
55980af126
commit
8760036aa2
1 changed files with 106 additions and 34 deletions
|
@ -1,49 +1,77 @@
|
|||
var AircraftCenter = {
|
||||
show: func
|
||||
new: func
|
||||
{
|
||||
var dlg = canvas.Window.new([600,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 m = {
|
||||
parents: [AircraftCenter],
|
||||
_dlg: canvas.Window.new([600,500], "dialog")
|
||||
.set("title", "Aircraft Center")
|
||||
.set("resize", 1),
|
||||
_active_button: nil
|
||||
};
|
||||
|
||||
m._dlg.getCanvas(1)
|
||||
.set("background", canvas.style.getColor("bg_color"));
|
||||
m._root = m._dlg.getCanvas().createGroup();
|
||||
|
||||
var vbox = VBoxLayout.new();
|
||||
dlg.setLayout(vbox);
|
||||
m._dlg.setLayout(vbox);
|
||||
|
||||
var packages = pkg.root.search({
|
||||
'rating-FDM': 2,
|
||||
'rating-cockpit': 2,
|
||||
'rating-model': 2,
|
||||
'rating-systems': 1
|
||||
});
|
||||
m._tab_bar = HBoxLayout.new();
|
||||
vbox.addItem(m._tab_bar);
|
||||
|
||||
var info_text =
|
||||
"Install/remove aircraft (Showing " ~ size(packages) ~ " aircraft)";
|
||||
m._tab_bar.addStretch(1);
|
||||
m._tab_bar.addStretch(1);
|
||||
|
||||
vbox.addItem(
|
||||
gui.widgets.Label.new(root, style, {wordWrap: 1})
|
||||
.setText(info_text)
|
||||
);
|
||||
|
||||
var scroll = gui.widgets.ScrollArea.new(root, style, {size: [96, 128]})
|
||||
var scroll = gui.widgets.ScrollArea.new(m._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");
|
||||
m._scroll_content =
|
||||
scroll.getContent()
|
||||
.set("font", "LiberationFonts/LiberationSans-Bold.ttf")
|
||||
.set("character-size", 16)
|
||||
.set("alignment", "left-center");
|
||||
|
||||
var list = VBoxLayout.new();
|
||||
scroll.setLayout(list);
|
||||
m._list = VBoxLayout.new();
|
||||
scroll.setLayout(m._list);
|
||||
|
||||
m._info_label = gui.widgets.Label.new(m._root, style, {wordWrap: 1});
|
||||
vbox.addItem(m._info_label);
|
||||
return m;
|
||||
},
|
||||
addPage: func(name, filter)
|
||||
{
|
||||
var b = gui.widgets.Button.new(me._root, style, {})
|
||||
.setText(name)
|
||||
.setCheckable(1);
|
||||
me._tab_bar.insertItem(me._tab_bar.count() - 1, b);
|
||||
|
||||
b.listen("toggled", func(e)
|
||||
{
|
||||
if( !e.detail.checked )
|
||||
return;
|
||||
|
||||
if( me._active_button != nil )
|
||||
me._active_button.setChecked(0);
|
||||
me._active_button = b;
|
||||
|
||||
me._list.clear();
|
||||
settimer(func me.fillList(pkg.root.search(filter)), 0);
|
||||
});
|
||||
|
||||
if( me._active_button == nil )
|
||||
b.setChecked(1);
|
||||
|
||||
return me;
|
||||
},
|
||||
fillList: func(packages)
|
||||
{
|
||||
foreach(var package; packages)
|
||||
{
|
||||
var row = HBoxLayout.new();
|
||||
list.addItem(row);
|
||||
me._list.addItem(row);
|
||||
|
||||
var image_label = gui.widgets.Label.new(content, style, {});
|
||||
var image_label = gui.widgets.Label.new(me._scroll_content, style, {});
|
||||
image_label.setFixedSize(171, 128);
|
||||
row.addItem(image_label);
|
||||
|
||||
|
@ -61,13 +89,13 @@ var AircraftCenter = {
|
|||
detail_box.addItem(title_box);
|
||||
|
||||
title_box.addItem(
|
||||
gui.widgets.Label.new(content, style, {})
|
||||
gui.widgets.Label.new(me._scroll_content, style, {})
|
||||
.setText(package.name)
|
||||
);
|
||||
title_box.addStretch(1);
|
||||
(func {
|
||||
var p = package;
|
||||
var b = gui.widgets.Button.new(content, style, {});
|
||||
var b = gui.widgets.Button.new(me._scroll_content, style, {});
|
||||
var installed = p.installed;
|
||||
var install_text = sprintf("Install (%.1fMB)", p.fileSize/1024/1024);
|
||||
|
||||
|
@ -112,13 +140,57 @@ var AircraftCenter = {
|
|||
}
|
||||
|
||||
detail_box.addItem(
|
||||
gui.widgets.Label.new(content, style, {wordWrap: 1})
|
||||
gui.widgets.Label.new(me._scroll_content, style, {wordWrap: 1})
|
||||
.setText(description)
|
||||
);
|
||||
|
||||
if( package.installed )
|
||||
{
|
||||
var launch_bar = HBoxLayout.new();
|
||||
detail_box.addItem(launch_bar);
|
||||
|
||||
var variants = keys(package.variants);
|
||||
foreach(var variant; variants)
|
||||
{(func{
|
||||
var b = gui.widgets.Button.new(me._scroll_content, style, {})
|
||||
.setText(package.variants[variant]);
|
||||
var acft_id = variant;
|
||||
b.listen("clicked", func
|
||||
{
|
||||
print("launch " ~ acft_id ~ '(' ~ package.variants[variant] ~ ')');
|
||||
fgcommand("switch-aircraft", props.Node.new({"aircraft": acft_id}));
|
||||
});
|
||||
launch_bar.addItem(b);
|
||||
})();}
|
||||
launch_bar.addStretch(1);
|
||||
}
|
||||
|
||||
detail_box.addStretch(1);
|
||||
}
|
||||
|
||||
# get rid of references to widgets of last package
|
||||
row = nil;
|
||||
image_label = nil;
|
||||
detail_box = nil;
|
||||
title_box = nil;
|
||||
launch_bar = nil;
|
||||
|
||||
me._info_label.setText(
|
||||
"Install/remove aircraft (Showing " ~ size(packages) ~ " aircraft)"
|
||||
);
|
||||
|
||||
me._dlg.getCanvas().update();
|
||||
}
|
||||
};
|
||||
|
||||
AircraftCenter.show();
|
||||
var ac = AircraftCenter.new();
|
||||
ac.addPage("Rated", {
|
||||
'rating-FDM': 2,
|
||||
'rating-cockpit': 2,
|
||||
'rating-model': 2,
|
||||
'rating-systems': 1
|
||||
});
|
||||
ac.addPage("Installed", {
|
||||
'installed': 1
|
||||
});
|
||||
ac.addPage("All", {});
|
||||
|
|
Loading…
Add table
Reference in a new issue