512 nasal::Hash globals_module(
globals, c),
513 canvas_module = globals_module.createHash(
"canvas");
515 nasal::Object::setupGhost();
520 using osgGA::GUIEventAdapter;
521 NasalEvent::init(
"canvas.Event")
522 .member(
"type", &sc::Event::getTypeString)
523 .member(
"target", &sc::Event::getTarget)
524 .member(
"currentTarget", &sc::Event::getCurrentTarget)
525 .member(
"defaultPrevented", &sc::Event::defaultPrevented)
526 .method(
"stopPropagation", &sc::Event::stopPropagation)
527 .method(
"preventDefault", &sc::Event::preventDefault);
529 NasalCustomEvent::init(
"canvas.CustomEvent")
532 NasalCustomEventDetail::init(
"canvas.CustomEventDetail")
536 canvas_module.createHash(
"CustomEvent")
539 NasalDeviceEvent::init(
"canvas.DeviceEvent")
541 .member(
"modifiers", &sc::DeviceEvent::getModifiers)
542 .member(
"ctrlKey", &sc::DeviceEvent::ctrlKey)
543 .member(
"shiftKey", &sc::DeviceEvent::shiftKey)
544 .member(
"altKey", &sc::DeviceEvent::altKey)
545 .member(
"metaKey", &sc::DeviceEvent::metaKey);
547 NasalKeyboardEvent::init(
"canvas.KeyboardEvent")
549 .member(
"key", &sc::KeyboardEvent::key)
550 .member(
"location", &sc::KeyboardEvent::location)
551 .member(
"repeat", &sc::KeyboardEvent::repeat)
552 .member(
"charCode", &sc::KeyboardEvent::charCode)
553 .member(
"keyCode", &sc::KeyboardEvent::keyCode);
555 NasalMouseEvent::init(
"canvas.MouseEvent")
557 .member(
"screenX", &sc::MouseEvent::getScreenX)
558 .member(
"screenY", &sc::MouseEvent::getScreenY)
559 .member(
"clientX", &sc::MouseEvent::getClientX)
560 .member(
"clientY", &sc::MouseEvent::getClientY)
561 .member(
"localX", &sc::MouseEvent::getLocalX)
562 .member(
"localY", &sc::MouseEvent::getLocalY)
563 .member(
"deltaX", &sc::MouseEvent::getDeltaX)
564 .member(
"deltaY", &sc::MouseEvent::getDeltaY)
565 .member(
"button", &sc::MouseEvent::getButton)
566 .member(
"buttons", &sc::MouseEvent::getButtonMask)
567 .member(
"click_count", &sc::MouseEvent::getCurrentClickCount);
570 NasalKeyBinding::init(
"canvas.KeyBinding")
571 .member(
"key", &sc::KeyBinding::key, &sc::KeyBinding::setKey)
572 .member(
"keyCode", &sc::KeyBinding::keyCode, &sc::KeyBinding::setKeyCode)
573 .member(
"modifiers", &sc::KeyBinding::modifiers, &sc::KeyBinding::setModifiers)
575 canvas_module.createHash(
"KeyBinding")
581 NasalPropertyBasedElement::init(
"PropertyBasedElement")
583 NasalCanvas::init(
"Canvas")
585 .bases<nasal::ObjectRef>()
587 .member(
"size_x", &sc::Canvas::getSizeX)
588 .member(
"size_y", &sc::Canvas::getSizeY)
590 .method(
"_getGroup", &sc::Canvas::getGroup)
591 .method(
"addEventListener",
592 static_cast<bool (sc::Canvas::*)(
const std::string&,
593 const sc::EventListener& )
>
594 (&sc::Canvas::addEventListener) )
595 .method(
"dispatchEvent", &sc::Canvas::dispatchEvent)
596 .method(
"setLayout", &sc::Canvas::setLayout)
597 .method(
"setFocusElement", &sc::Canvas::setFocusElement)
598 .method(
"clearFocusElement", &sc::Canvas::clearFocusElement);
603 NasalElement::init(
"canvas.Element")
606 .method(
"_getParent", &sc::Element::getParent)
607 .method(
"_getCanvas", &sc::Element::getCanvas)
608 .method(
"addEventListener", &sc::Element::addEventListener)
609 .method(
"setFocus", &sc::Element::setFocus)
610 .method(
"dispatchEvent", &sc::Element::dispatchEvent)
611 .method(
"getBoundingBox", &sc::Element::getBoundingBox)
612 .method(
"getTightBoundingBox", &sc::Element::getTightBoundingBox)
613 .method(
"_posToLocal", &sc::Element::posToLocal)
614 .method(
"_posFromLocal", &sc::Element::posFromLocal)
615 .method(
"canvasToLocal", &sc::Element::canvasToLocal)
616 .method(
"localToCanvas", &sc::Element::localToCanvas);
618 NasalGroup::init(
"canvas.Group")
622 .method(
"_getElementById", &sc::Group::getElementById)
624 NasalText::init(
"canvas.Text")
626 .method(
"heightForWidth", &sc::Text::heightForWidth)
627 .method(
"maxWidth", &sc::Text::maxWidth)
628 .method(
"lineCount", &sc::Text::lineCount)
629 .method(
"lineLength", &sc::Text::lineLength)
630 .method(
"getNearestCursor", &sc::Text::getNearestCursor)
631 .method(
"getCursorPos", &sc::Text::getCursorPos);
633 NasalImage::init(
"canvas.Image")
637 .method(
"dirtyPixels", &sc::Image::dirtyPixels)
643#define ALIGN_ENUM_MAPPING(key, val, comment) canvas_module.set(#key, sc::key);
644# include <simgear/canvas/layout/AlignFlag_values.hxx>
645#undef ALIGN_ENUM_MAPPING
647 void (sc::LayoutItem::*f_layoutItemSetContentsMargins)(int, int, int, int)
648 = &sc::LayoutItem::setContentsMargins;
650 NasalLayoutItem::init(
"canvas.LayoutItem")
651 .method(
"getCanvas", &sc::LayoutItem::getCanvas)
652 .method(
"setCanvas", &sc::LayoutItem::setCanvas)
653 .method(
"getParent", &sc::LayoutItem::getParent)
654 .method(
"setParent", &sc::LayoutItem::setParent)
655 .method(
"setContentsMargins", f_layoutItemSetContentsMargins)
656 .method(
"setContentsMargin", &sc::LayoutItem::setContentsMargin)
657 .method(
"sizeHint", &sc::LayoutItem::sizeHint)
658 .method(
"minimumSize", &sc::LayoutItem::minimumSize)
659 .method(
"maximumSize", &sc::LayoutItem::maximumSize)
660 .method(
"hasHeightForWidth", &sc::LayoutItem::hasHeightForWidth)
661 .method(
"heightForWidth", &sc::LayoutItem::heightForWidth)
662 .method(
"minimumHeightForWidth", &sc::LayoutItem::minimumHeightForWidth)
663 .method(
"setAlignment", &sc::LayoutItem::setAlignment)
664 .method(
"alignment", &sc::LayoutItem::alignment)
666 .method(
"isVisible", &sc::LayoutItem::isVisible)
667 .method(
"isExplicitlyHidden", &sc::LayoutItem::isExplicitlyHidden)
668 .method(
"show", &sc::LayoutItem::show)
669 .method(
"hide", &sc::LayoutItem::hide)
670 .method(
"setGeometry", &sc::LayoutItem::setGeometry)
671 .method(
"geometry", &sc::LayoutItem::geometry)
672 .method(
"setGridLocation", &sc::LayoutItem::setGridLocation)
673 .method(
"setGridSpan", &sc::LayoutItem::setGridSpan);
675 sc::NasalWidget::setupGhost(canvas_module);
677 NasalLayout::init(
"canvas.Layout")
679 .method(
"addItem", &sc::Layout::addItem)
680 .method(
"setSpacing", &sc::Layout::setSpacing)
681 .method(
"spacing", &sc::Layout::spacing)
682 .method(
"count", &sc::Layout::count)
683 .method(
"itemAt", &sc::Layout::itemAt)
684 .method(
"takeAt", &sc::Layout::takeAt)
685 .method(
"removeItem", &sc::Layout::removeItem)
686 .method(
"clear", &sc::Layout::clear);
688 NasalBoxLayout::init(
"canvas.BoxLayout")
691 .method(
"addSpacing", &sc::BoxLayout::addSpacing)
694 .method(
"insertSpacing", &sc::BoxLayout::insertSpacing)
696 .method(
"setStretch", &sc::BoxLayout::setStretch)
697 .method(
"setStretchFactor", &sc::BoxLayout::setStretchFactor)
698 .method(
"stretch", &sc::BoxLayout::stretch)
699 .method(
"setEquals", &sc::BoxLayout::setEqualsItem);
701 NasalGridLayout::init(
"canvas.GridLayout")
704 .method(
"setRowStretch", &sc::GridLayout::setRowStretch)
705 .method(
"setColumnStretch", &sc::GridLayout::setColumnStretch);
707 NasalSpacerItem::init(
"canvas.SpacerItem")
710 canvas_module.createHash(
"HBoxLayout")
712 canvas_module.createHash(
"VBoxLayout")
714 canvas_module.createHash(
"GridLayout")
716 canvas_module.createHash(
"Spacer")
719 canvas_module.set(
"MAX_SIZE", sc::LayoutItem::MAX_SIZE.x());
724 NasalWindow::init(
"canvas.Window")
726 .bases<NasalLayoutItem>()
728 .method(
"_getCanvasDecoration", &sc::Window::getCanvasDecoration)
729 .method(
"setLayout", &sc::Window::setLayout)
730 .method(
"toScreenPosition", &sc::Window::toScreenPosition)