typedef nasal::Ghost<sc::LayoutItemRef> NasalLayoutItem;
typedef nasal::Ghost<sc::LayoutRef> NasalLayout;
-typedef nasal::Ghost<sc::WindowWeakPtr> NasalWindow;
+typedef nasal::Ghost<sc::WindowPtr> NasalWindow;
naRef to_nasal_helper(naContext c, const osg::BoundingBox& bb)
{
return props;
}
-sc::CanvasWeakPtr from_nasal_helper(naContext c, naRef ref, sc::CanvasWeakPtr const*)
-{
- return nasal::from_nasal<sc::CanvasPtr>(c, ref);
-}
-
CanvasMgr& requireCanvasMgr(naContext c)
{
CanvasMgr* canvas_mgr =
*/
static naRef f_createCanvas(const nasal::CallContext& ctx)
{
- return NasalCanvas::create(ctx.c, requireCanvasMgr(ctx.c).createCanvas());
+ return ctx.to_nasal(requireCanvasMgr(ctx.c).createCanvas());
}
/**
*/
static naRef f_createWindow(const nasal::CallContext& ctx)
{
- return NasalWindow::create
+ return nasal::to_nasal<sc::WindowWeakPtr>
(
ctx.c,
requireGUIMgr(ctx.c).createWindow( ctx.getArg<std::string>(0) )
canvas = canvas_mgr.getCanvas( props.getIntValue("index") );
}
- return NasalCanvas::create(c, canvas);
+ return nasal::to_nasal(c, canvas);
}
naRef f_canvasCreateGroup(sc::Canvas& canvas, const nasal::CallContext& ctx)
{
- return NasalGroup::create
- (
- ctx.c,
- canvas.createGroup( ctx.getArg<std::string>(0) )
- );
+ return ctx.to_nasal( canvas.createGroup(ctx.getArg<std::string>(0)) );
}
/**
*/
naRef f_getDesktop(naContext c, naRef me, int argc, naRef* args)
{
- return NasalGroup::create(c, requireGUIMgr(c).getDesktop());
+ return nasal::to_nasal(c, requireGUIMgr(c).getDesktop());
}
-naRef f_groupCreateChild(sc::Group& group, const nasal::CallContext& ctx)
+static naRef f_groupCreateChild(sc::Group& group, const nasal::CallContext& ctx)
{
- return NasalElement::create
- (
- ctx.c,
- group.createChild( ctx.requireArg<std::string>(0),
- ctx.getArg<std::string>(1) )
- );
+ return ctx.to_nasal( group.createChild( ctx.requireArg<std::string>(0),
+ ctx.getArg<std::string>(1) ) );
}
-naRef f_groupGetChild(sc::Group& group, const nasal::CallContext& ctx)
+static sc::ElementPtr f_groupGetChild(sc::Group& group, SGPropertyNode* node)
{
- return NasalElement::create
- (
- ctx.c,
- group.getChild( ctx.requireArg<SGPropertyNode*>(0) )
- );
-}
-
-naRef f_groupGetElementById(sc::Group& group, const nasal::CallContext& ctx)
-{
- return NasalElement::create
- (
- ctx.c,
- group.getElementById( ctx.requireArg<std::string>(0) )
- );
+ return group.getChild(node);
}
static void propElementSetData( simgear::PropertyBasedElement& el,
detail = ctx.from_nasal<simgear::StringMap>(na_detail);
}
- return NasalCustomEvent::create(
- ctx.c,
- sc::CustomEventPtr(new sc::CustomEvent(type, detail))
- );
+ return ctx.to_nasal( sc::CustomEventPtr(new sc::CustomEvent(type, detail)) );
}
struct CustomEventDetailWrapper:
);
}
-naRef to_nasal_helper(naContext c, const sc::ElementWeakPtr& el)
-{
- return NasalElement::create(c, el.lock());
-}
-
-naRef to_nasal_helper(naContext c, const sc::CanvasWeakPtr& canvas)
-{
- return NasalCanvas::create(c, canvas.lock());
-}
-
template<class Type, class Base>
static naRef f_newAsBase(const nasal::CallContext& ctx)
{
.member("size_y", &sc::Canvas::getSizeY)
.method("_createGroup", &f_canvasCreateGroup)
.method("_getGroup", &sc::Canvas::getGroup)
- .method("addEventListener", &sc::Canvas::addEventListener)
+ .method( "addEventListener",
+ static_cast<bool (sc::Canvas::*)( const std::string&,
+ const sc::EventListener& )>
+ (&sc::Canvas::addEventListener) )
.method("dispatchEvent", &sc::Canvas::dispatchEvent);
canvas_module.set("_newCanvasGhost", f_createCanvas);
.method("dispatchEvent", &sc::Element::dispatchEvent)
.method("getBoundingBox", &sc::Element::getBoundingBox)
.method("getTightBoundingBox", &sc::Element::getTightBoundingBox);
+
NasalGroup::init("canvas.Group")
.bases<NasalElement>()
.method("_createChild", &f_groupCreateChild)
- .method("_getChild", &f_groupGetChild)
- .method("_getElementById", &f_groupGetElementById);
+ .method( "_getChild", &f_groupGetChild)
+ .method("_getElementById", &sc::Group::getElementById);
NasalText::init("canvas.Text")
.bases<NasalElement>()
.method("getNearestCursor", &sc::Text::getNearestCursor);