/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2014 Robert Osfield * * This library is open source and may be redistributed and/or modified under * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or * (at your option) any later version. The full license is in LICENSE file * included with this distribution, and on the openscenegraph.org website. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * OpenSceneGraph Public License for more details. */ #include #include #include #include #include #include #include #include using namespace osgUI; Dialog::Dialog() { } Dialog::Dialog(const osgUI::Dialog& dialog, const osg::CopyOp& copyop): Widget(dialog, copyop), _title(dialog._title) { } bool Dialog::handleImplementation(osgGA::EventVisitor* /*ev*/, osgGA::Event* event) { osgGA::GUIEventAdapter* ea = event->asGUIEventAdapter(); if (!ea) return false; switch(ea->getEventType()) { //case(osgGA::GUIEventAdapter::KEYDOWN): case(osgGA::GUIEventAdapter::KEYUP): OSG_NOTICE<<"Key pressed : "<getKey()<addChild( style->createPanel(_extents, dialogBackgroundColor) ); _group->addChild( style->createPanel(titleBarExtents, dialogTitleBackgroundColor) ); osg::BoundingBox dialogWithTitleExtents(_extents); dialogWithTitleExtents.expandBy(titleBarExtents); dialogWithTitleExtents.expandBy(closeButtonExtents); bool requiresFrame = (getFrameSettings() && getFrameSettings()->getShape()!=osgUI::FrameSettings::NO_FRAME); if (requiresFrame) { _group->addChild(style->createFrame(dialogWithTitleExtents, getFrameSettings(), dialogBackgroundColor)); titleBarExtents.xMin() += getFrameSettings()->getLineWidth(); titleBarExtents.yMax() -= getFrameSettings()->getLineWidth(); closeButtonExtents.xMax() -= getFrameSettings()->getLineWidth(); closeButtonExtents.yMax() -= getFrameSettings()->getLineWidth(); } OSG_NOTICE<<"Dialog::_extents ("<<_extents.xMin()<<", "<<_extents.yMin()<<", "<<_extents.zMin()<<"), ("<<_extents.xMax()<<", "<<_extents.yMax()<<", "<<_extents.zMax()<<")"< node = style->createText(titleBarExtents, getAlignmentSettings(), getTextSettings(), _title); _titleDrawable = dynamic_cast(node.get()); _titleDrawable->setDataVariance(osg::Object::DYNAMIC); _group->addChild(_titleDrawable.get()); #endif osg::ref_ptr closeButton = new osgUI::PushButton; closeButton->setExtents(closeButtonExtents); closeButton->setText("x"); closeButton->setAlignmentSettings(getAlignmentSettings()); closeButton->setTextSettings(getTextSettings()); //closeButton->setFrameSettings(getFrameSettings()); closeButton->getOrCreateUserDataContainer()->addUserObject(new osgUI::CloseCallback("released", this)); osg::ref_ptr