1
0
Fork 0
fgdata/Nasal/canvas/api.nas
James Turner b93ecb962b Canvas: add unload logic
Clean up various global things, especially commands, when
unloading the Canvas. This means reloads of Canvas are
clean.
2023-01-06 10:57:00 +00:00

95 lines
No EOL
1.9 KiB
Text

#
# FlightGear canvas API
# Namespace: canvas
#
# Classes included:
# Transform
# Element
# Group
# Map
# Text
# Path
# Image
# Canvas
#
# see also gui.nas
var include_path = "Nasal/canvas/api/";
# log level for debug output
var _API_dbg_level = DEV_WARN;
io.include(include_path~"colors.nas");
io.include(include_path~"helpers.nas");
io.include(include_path~"transform.nas");
io.include(include_path~"element.nas");
io.include(include_path~"group.nas");
io.include(include_path~"map.nas");
io.include(include_path~"text.nas");
io.include(include_path~"path.nas");
io.include(include_path~"image.nas");
io.include(include_path~"svgcanvas.nas");
# Element factories used by #Group elements to create children
Group._element_factories = {
"group": Group.new,
"map": Map.new,
"text": Text.new,
"path": Path.new,
"image": Image.new
};
io.include(include_path~"canvas.nas");
# @param g Canvas ghost
var wrapCanvas = func(g) {
if (g != nil and g._impl == nil) {
g._impl = Canvas._new(g);
}
return g;
}
# Create a new canvas. Pass parameters as hash, eg:
#
# var my_canvas = canvas.new({
# "name": "PFD-Test",
# "size": [512, 512],
# "view": [768, 1024],
# "mipmapping": 1
# });
var new = func(vals)
{
var m = wrapCanvas(_newCanvasGhost());
m._node.setValues(vals);
return m;
};
# Get the first existing canvas with the given name
#
# @param name Name of the canvas
# @return #Canvas, if canvas with #name exists
# nil, otherwise
var get = func(arg)
{
if( isa(arg, props.Node) )
var node = arg;
else if (ishash(arg))
var node = props.Node.new(arg);
else {
die("canvas.get: Invalid argument.");
}
return wrapCanvas(_getCanvasGhost(node._g));
};
var getDesktop = func()
{
return Group.new(_getDesktopGhost());
};
var unload = func
{
unloadTooltips();
unloadErrorNotification();
logprint(LOG_INFO, "Unloaded canvas Nasal module");
};