1
0
Fork 0

Merge branch 'master' of gitorious.org:fg/fgdata

This commit is contained in:
Hal V. Engel 2014-06-16 21:12:01 -07:00
commit 963c70b450
8 changed files with 115 additions and 35 deletions

View file

@ -114,6 +114,11 @@ gui.Widget = {
me._view._root.addEventListener("cb." ~ type, cb);
return me;
},
onRemove: func
{
if( me._view != nil )
me._view._root.del();
},
# protected:
_MAX_SIZE: 32768, # size for "no size-limit"
_onStateChange: func {},

View file

@ -1,49 +1,77 @@
var AircraftCenter = {
show: func
new: 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 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 aircrafts (Showing " ~ size(packages) ~ " aircrafts)";
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);
@ -104,7 +132,7 @@ var AircraftCenter = {
title_box.addItem(b);
})();
var description = package.description;
var description = parse_markdown(package.description);
if( size(description) <= 0 )
{
foreach(var cat; ["FDM", "systems", "cockpit", "model"])
@ -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", {});

View file

@ -45,6 +45,9 @@ gui.widgets.ScrollArea = {
var (x,y) = arg;
me._size = [x,y];
me.update();
if( me._layout != nil )
me._layout.setGeometry(me._layout.geometry());
},
# Move the scrollbars to the coordinates x,y (or as far as possible) and
# update.

View file

Before

Width:  |  Height:  |  Size: 209 KiB

After

Width:  |  Height:  |  Size: 209 KiB

View file

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 162 KiB

View file

Before

Width:  |  Height:  |  Size: 328 KiB

After

Width:  |  Height:  |  Size: 328 KiB

View file

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 128 KiB

View file

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB