#include "qPIWidget.h"
#include "piInstance.h"
#include "qSystempi.h"

#include <mainwgt.h>
#include <qapplication.h>
#ifdef Qt2x
#include <qnamespace.h>
#else
#include <qkeycode.h>
#endif
#include <OpenVrml/VrmlScene.h>
#include <ViewerQt.h>

qPIWidget::qPIWidget()
{
    child = new mainWgt(this);
    // Fill the plugin widget
    child->setGeometry( 0, 0, width(), height() );
}

qPIWidget::~qPIWidget()
{
    delete child; 
}

void qPIWidget::resizeEvent(QResizeEvent*)
{
    // Fill the plugin widget
    child->resize(size());
}

void qPIWidget::enterInstance()
{
    /* only one theSystem to go around--thus instance must have
       focus to recieve status messages. Any ideas ?
     */
    piInstance * vins = (piInstance *)instance();
    theSystem = vins->qtSystem;
    child->SetStop(false);
}
void qPIWidget::load( const char *filename )
{
    child->load( filename );
}

void qPIWidget::leaveInstance()
{
    child->SetStop(true);
}

void qPIWidget::keyPressEvent(QKeyEvent *e)
{
    switch ( e->key() ) {
            case Key_Home:      
            case Key_Left:      
            case Key_Up:        
            case Key_Right:     
            case Key_Down:      
            case Key_PageUp:    
            case Key_PageDown:  
            case Key_Comma:     
            case Key_A:         
            case Key_Z:         
            case Key_Period:    
            case Key_B:         
            case Key_L:         
            case Key_T:         
            case Key_W:         
            case Key_R:         
            case Key_Slash:     
                    qApp->sendEvent(child, e);
                    break;
            default:
                    e->ignore();
    }
}
mainWgt * qPIWidget::receiver()
{ return child; }

VrmlScene* qPIWidget::scene(){ return child->scene(); }
ViewerQt* qPIWidget::viewer(){ return child->Viewer(); }



