#! /usr/bin/env python2

'''
@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 = 'localhost'
    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_()
    
