VEFViewer.py
author Dmitriy Morozov <dmitriy@mrzv.org>
Thu, 17 Mar 2011 22:18:46 -0700
changeset 8 2eaa2bffa6f4
parent 2 56a5778c903c
child 10 bc10701b4081
permissions -rwxr-xr-x
Read filenames as plain arguments

#!/usr/bin/env python2

import  ui_PyVEFViewer  as ui
from    opster          import command, dispatch
from    sys             import exit
from    os.path         import splitext; ext = lambda fn: splitext(fn)[1]

class VEFViewerWindow(ui.QtGui.QWidget):
    def __init__(self, parent = None):
        super(VEFViewerWindow, self).__init__(parent)

        self.ui = ui.Ui_MainWindow()
        self.ui.setupUi(self)

@command(usage = '%name [options]',
         options = [('p', 'points',    [], 'files with points'),       # TODO: add completer for filenames
                    ('e', 'edges',     [], 'files with edges'),
                    ('t', 'triangles', [], 'files with triangles')])
def main(*args, **opts):
    
    points    = opts['points']
    edges     = opts['edges']
    triangles = opts['triangles']

    # Guess types from extensions
    for fn in args:
        if   ext(fn) == '.vrt' or ext(fn) == '.pts':
            points.append(fn)
        elif ext(fn) == '.edg':
            edges.append(fn)
        elif ext(fn) == '.stl':
            triangles.append(fn)
        else:
            print "Cannot guess type from extension:", fn
            exit(1)

    qapp = ui.QtGui.QApplication([])
    win  = VEFViewerWindow()
    win.show()

    win.ui.viewer.set_list(win.ui.modelList)
    win.ui.viewer.read_points(points)
    win.ui.viewer.read_edges(edges)
    win.ui.viewer.read_triangles(triangles)
    win.ui.viewer.normalize_view()

    qapp.exec_()

if __name__ == '__main__':
    main()