
import sys,os,shutil
from PyQt4 import QtCore

#Run with ..
#>CCP4I2_TOP=/Users/lizp/Desktop/dev/ccp4i2-devel /Users/lizp/Desktop/dev/ccp4i2-devel/bin/pyi2 ./demo_plugin.py

def handleFinish():
  print 'handleFinish'
  sys.exit()

# Hardcoded ccp4i2 directory and directory containing data
ccp4i2_top = os.environ['CCP4I2_TOP']
sourceDirectory = '/Users/lizp/Desktop/demo_i2_scripts'

# A work directory that results are written to
workDirectory = '/Users/lizp/Desktop/demo_plugin'

# Bootstrap i2 environment - NO DATABASE
sys.path.append(os.path.join(ccp4i2_top,'utils'))
from startup import setupEnvironment,setupPythonpath,setupGuiPluginsPath,startBrowser
setupEnvironment()
setupPythonpath(top=ccp4i2_top,mode='qtcore')
from CCP4Modules import QTAPPLICATION
app = QTAPPLICATION(graphical=False)

#Need to make the workDirectory
if os.path.exists(workDirectory): shutil.rmtree(workDirectory)
os.mkdir(workDirectory)

# Create a plugin object
import buccaneer_build_refine_mr
wrapper = buccaneer_build_refine_mr.buccaneer_build_refine_mr(parent=QTAPPLICATION(),name='test_test',workDirectory=workDirectory)
app.connect(wrapper,QtCore.SIGNAL('finished'),handleFinish)
# Could load default params from xml file
#wrapper.container.loadDataFromXml(sourceDirectory,'buc_input.xml')

# Set the input data
inp = wrapper.container.inputData
inp.F_SIGF.setFullPath(os.path.join(sourceDirectory,'F_SIGF.mtz'))
inp.FREERFLAG.setFullPath(os.path.join(sourceDirectory,'FREERFLAG.mtz'))
inp.BUCCANEER_MR_MODE_XYZIN.setFullPath(os.path.join(sourceDirectory,'model.pdb'))
inp.SEQIN.addItem()
inp.SEQIN[0].setFullPath(os.path.join(sourceDirectory,'seq.fasta'))
for paramName in ['XYZOUT','FPHIOUT','DIFFPHIOUT','ABCDOUT']:
  wrapper.container.outputData.get(paramName).setOutputPath(relPath=workDirectory)
wrapper.container.controlParameters.ITERATIONS=2

# set the plugin running
pid = wrapper.process()

print 'Finished',wrapper.errorReport.report()

sys.exit(app.exec_())
