Пример #1
0
bool AnimtkViewerGUI::_buttonPush(osgWidget::Event& ev)
{
    if(!ev.getWidget()) return false;

    osgWidget::Label* l = static_cast<osgWidget::Label*>(_labelBox->getByName("label"));

    if(!l) return false;

    LabelFunctor* lf = dynamic_cast<LabelFunctor*>(l->getUpdateCallback());

    if(!lf) return false;

    // We're safe at this point, so begin processing.
    AnimtkViewerModelController& mc   = AnimtkViewerModelController::instance();
    std::string                  name = ev.getWidget()->getName();

    if(name == "play") mc.play();

    else if(name == "stop") mc.stop();

    else if(name == "next")
{
        mc.next();

        l->setFontColor(osg::Vec4(0.0f, 0.0f, 0.0f, 0.7f));
        l->setLabel(mc.getCurrentAnimationName());
        lf->setActive(true);
    }

    else if(name == "back")
{
        mc.previous();

        l->setFontColor(osg::Vec4(0.0f, 0.0f, 0.0f, 0.7f));
        l->setLabel(mc.getCurrentAnimationName());
        lf->setActive(true);
    }

    else if(name == "pause")
{
    }

    else if(name == "open")
{
        ListFunctor* lsf = dynamic_cast<ListFunctor*>(_listBox->getUpdateCallback());

        if(!lsf) return false;

        lsf->toggleShown();
    }

    else return false;

    return true;
}
Пример #2
0
bool overCallback(osgWidget::Event& ev) {
	if(!ev.getWidget()) return false;

	osgWidget::Widget* w = ev.getWidget();

	if(ev.type == osgWidget::EVENT_MOUSE_ENTER) w->setColor(1.0f, 1.0f, 1.0f, 1.0f);

	else if(ev.type == osgWidget::EVENT_MOUSE_LEAVE) w->setColor(1.0f, 1.0f, 1.0f, 0.0f);

	else return false;

	return true;
}
Пример #3
0
bool colorWidgetEnter(osgWidget::Event& event) {
	event.getWidget()->addColor(0.5f, 0.2f, 0.3f, 0.0f);

	// osgWidget::warn() << "WIDGET mouseEnter " << event.getWidget()->getName() << std::endl;
	
	return true;
}
Пример #4
0
bool widgetMouseOver(osgWidget::Event& event) {
	osgWidget::XYCoord xy = event.getWidget()->localXY(event.x, event.y);

	// osgWidget::warn() << "WIDGET mouseOver " << xy.x() << " - " << xy.y() << std::endl;

	return true;
}
Пример #5
0
bool colorWidgetLeave(osgWidget::Event& event) {
	event.getWidget()->addColor(-0.5f, -0.2f, -0.3f, 0.0f);

	// osgWidget::warn() << "WIDGET mouseLeave" << std::endl;
	
	return true;
}
Пример #6
0
bool AnimtkViewerGUI::_listMouseHover(osgWidget::Event& ev)
{
    osgWidget::Label* l = dynamic_cast<osgWidget::Label*>(ev.getWidget());

    if(!l) return false;

    if(ev.type == osgWidget::EVENT_MOUSE_ENTER) l->setFontColor(1.0f, 1.0f, 1.0f, 1.0f);

    else if(ev.type == osgWidget::EVENT_MOUSE_LEAVE) l->setFontColor(1.0f, 1.0f, 1.0f, 0.3f);

    else if(ev.type == osgWidget::EVENT_MOUSE_PUSH) {
        AnimtkViewerModelController::instance().playByName(ev.getWidget()->getName());
    }

    else return false;

    return true;
}
Пример #7
0
    // NOTE: This whole thing is just a hack to demonstrate a concept. The real
    // implementation would need to be much cleaner.
    bool callbackTabPressed(osgWidget::Event& ev) {
        osgWidget::Canvas::Vector& objs = _windows->getObjects();

        for(unsigned int i = 0; i < objs.size(); i++) objs[i]->setLayer(
            osgWidget::Widget::LAYER_MIDDLE,
            i * 2
        );

        _windows->getByName(ev.getWidget()->getName())->setLayer(
            osgWidget::Widget::LAYER_MIDDLE,
            objs.size() * 2
        );

        _windows->resize();

        return true;
    }