#!/usr/bin/env python

from iv import *
from qt import *
import os
import sys


class InventorMainWindow(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(
            self, None, 'SoQt Main Window Example', Qt.WDestructiveClose)

        # Since SoQt widgets are not derived from QWidget,
        # it is sometimes usefull to give them a empty shell QWidget as parent:
        shell = QWidget(self)
        self.viewer = SoQtExaminerViewer(shell)
        # and now
        self.setCentralWidget(shell)
        # instead of self.setCentralWidget(self.viewer) which raises an error.

        fileMenu = QPopupMenu(self)
        self.menuBar().insertItem('&File', fileMenu)
        fileMenu.insertItem(
            '&Open...', self.openFile, Qt.CTRL + Qt.Key_O)
        fileMenu.insertItem(
            '&Quit', qApp, SLOT('closeAllWindows()'), Qt.CTRL + Qt.Key_Q)

        self.statusBar().message('Ready', 5000)
        self.resize(600, 400)

    # __init__()

    def openFile(self):
        name = QFileDialog.getOpenFileName(
            os.path.join(os.pardir, 'data'), 'Inventor files (*.iv)', self)

        if not name:
            self.statusBar().message('Reading aborted', 5000);
            return
        
        input = SoInput()
        # str(name), since name is a QString which is not accepted by
        # SoInput.openFile()
        if not input.openFile(str(name)):
            self.statusBar().message('Failed to open %s' % name, 5000)

        scene = SoDB.readAll(input)
        self.viewer.setSceneGraph(scene)

    # openFile()
    
# class InventorMainWindow


def main():
    app = QApplication(sys.argv)
    SoQt.init(None)
    demo = InventorMainWindow()
    demo.show()

    app.connect(app, SIGNAL('lastWindowClosed()'), app, SLOT('quit()'))
    SoQt.mainLoop()

# main()
    

if __name__ == '__main__':
    main()

# Local Variables: ***
# mode: python ***
# End: ***