#
#  Copyright (C) 2016 STFC Rutherford Appleton Laboratory, UK.
#
#  Author: David Waterman
#  Acknowledgements: based on code by Graeme Winter and Martin Noble.
#

from CCP4PluginScript import CPluginScript
from CCP4ErrorHandling import *
import os, glob, shutil
import CCP4Utils
from lxml import etree
import CCP4Container
import platform

import xia2_dials
class Cxia2_xds(xia2_dials.Cxia2_dials):

    TASKTITLE='Data processing with xia2/xds'
    TASKNAME = 'xia2_xds'

    def makeCommandAndScript(self):
        par = self.container.controlParameters
        inp = self.container.inputData

        # PHIL parameters set by the gui
        phil_file = os.path.normpath(os.path.join(
                    self.getWorkDirectory(), 'xia2_xds.phil'))
        with open(phil_file, 'w') as f:
            for (name, val) in self.extract_parameters(par):
                f.write(name + '={0}\n'.format(val))
        self.appendCommandLine([phil_file])

        # Finally the data location
        self.appendCommandLine(['%s' % str(inp.IMAGE_DIRECTORY)])

        self.xmlroot = etree.Element('Xia2Xds')

        self.watchFile(os.path.normpath(os.path.join(
            self.getWorkDirectory(),'xia2.txt')), self.handleXia2DotTxtChanged)

        return CPluginScript.SUCCEEDED

    @staticmethod
    def _get_annotation(prefix, suffix):
        '''Form suitable annotation strings'''
        return  prefix + " from XDS integration of " + suffix
