#!python

'''
@author: Soizic Laguitton

@organization: I2BM, Neurospin, Gif-sur-Yvette, France
@organization: CATI, France
@organization: U{IFR 49<http://www.ifr49.org>}

@license: U{CeCILL version 2<http://www.cecill.info/licences/Licence_CeCILL_V2-en.html>}
'''


import sys
import optparse

#try:
#  import sip
#except ImportError, e:
#  pass
#else:
#  sip.setapi('QVariant', 2)
#  sip.setapi('QString', 2)

parser = optparse.OptionParser()

parser.add_option('-u', '--user', help="User for logging in to server")
parser.add_option('-a', '--auto-connect', dest='auto_connect', default=False,
                  action='store_true', help="Try to connect directly, " \
                    "without displaying connection dialog.")
parser.add_option('-r', '--computing-resource', dest='computing_resource', 
                  help='computing resource identifier')
parser.add_option('--database', dest='database',
                  help='connect localhost with the specified database file')
parser.add_option('--config', dest='config',
                  help='use the specified config file')
parser.add_option('--gui', dest='gui',
                  help='use the specified Qt GUI type: PyQt4, PyQt5, PySide.'
                  'Default: guess in the above order.')

options, args = parser.parse_args(sys.argv)

gui = options.gui
if gui == 'PyQt4':
    import PyQt4
elif gui == 'PyQt5':
    import PyQt5
elif gui == 'PySide':
    import PySide
elif gui is not None:
    raise ValueError('unrecognized GUI type: %s' % gui)

from soma_workflow.gui.workflowGui import ApplicationModel, MainWindow, SomaWorkflowWidget, QtCore, QtGui


if __name__=="__main__":
  
    app = QtGui.QApplication(sys.argv)

    #QtCore.pyqtRemoveInputHook()

    model = ApplicationModel()

    i = 1

    if i == 1:

        if options.computing_resource is None and options.database is not None:
            options.computing_resource = None
        sw_main_window = MainWindow(model,
                                    options.user,
                                    options.auto_connect,
                                    options.computing_resource,
                                    config_file=options.config,
                                    db_file=options.database)

        sw_main_window.show()

    elif i == 2:
        sw_widget = SomaWorkflowWidget(model,
                                      options.user,
                                      options.auto_connect,
                                      options.computing_resource,
                                      config_file=options.config,
                                      db_file=options.database)
        sw_widget.show()


    app.exec_()

    if i == 1:
        del sw_main_window
    else:
        del sw_widget

    del model
