#!/usr/bin/python2.4

from getopt import getopt
import sys
from fluents import fluents, project, workflow
import workflows

PROGRAM_NAME = 'fluents'
VERSION = '0.1.0'

parameters = {'workflow': workflow.EmptyWorkflow}

def show_help():
    print 'fluent %s' % VERSION
    print 'This software is released under the GNU General Public Licence'
    print
    print 'Usage: fluent [options]'
    print 
    print 'Description:'
    print '    Fluent is a lightweight data analysis application for bilinear models.'
    print
    print 'Options:'
    print '    -h --help              Show this help text'
    print '    -l --list-workflows    Lists available workflows'
    print '    -w --workflow=<wf>     Generates a new project based on workflow wf.'
    print

def list_workflows():
    print 'fluent %s' % VERSION
    print
    print 'Workflows:'

    wfs = workflow.workflow_list()
    for wf in wfs:
        print '    %s (%s)' % (wf.ident, wf.name)
    print

def parse_options():
    short_opts = 'hlw:'
    long_opts = ['help', 'list-workflows', 'workflow=']

    options, params = getopt(sys.argv[1:], short_opts, long_opts)

    for opt, val in options:
        if opt in ['-h', '--help']:
            show_help()
            sys.exit(0)
        elif opt in ['-l', '--list-workflows']:
            list_workflows()
            sys.exit(0)
        elif opt in ['-w', '--workflow']:
            wfs = workflow.workflow_list()
            for wf in wfs:
                if wf.ident == val:
                    parameters['workflow'] = wf
            parameters['workflow']

if __name__ == '__main__':
    parse_options()
    
    import gtk
    import gnome
    
    gnome.program_init(PROGRAM_NAME, VERSION)
    app = fluents.FluentApp(parameters['workflow'])
    fluents.app = app
    app.set_project(project.Project())
    app.show()
    gtk.main()