#/*##########################################################################
# Copyright (C) 2016-2017 European Synchrotron Radiation Facility
#
# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
# the ESRF by the Software group.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
#############################################################################*/

__author__ = ["H. Payno"]
__license__ = "MIT"
__date__ = "22/01/2018"


from tomwer.gui.FtseriesMixIn import _FtseriesMixIn
from silx.gui import qt
from tomwer.core.utils import ftseriesutils
from tomwer.core.ReconsParams import ReconsParam
from tomwer.core.ftseries.FastSetupDefineGlobals import FastSetupAll
import os


class _FtserieWidget(_FtseriesMixIn, qt.QWidget):
    sigScanReady = qt.Signal(str)

    def __init__(self, dir, parent=None):
        """Widget which read the .hdf5 generated by octave and modify it.
        Then run a subprocess to call octave and run ftseries"""
        qt.QWidget.__init__(self, parent)
        self.setLayout(qt.QVBoxLayout())
        _FtseriesMixIn.__init__(self)
        self._validateButton.hide()
        self._buttonRun = qt.QPushButton('execute', parent=self)
        self._buttonRun.pressed.connect(self._callbackRun)
        self.layout().addWidget(self._buttonRun)
        self.dir = dir
        # for the application we run for the reconstruction to be finished
        # to restitute the hand to the user
        self.reconsStack._forceSync = True

        if dir and os.path.isdir(dir):
            fsa = FastSetupAll()
            h5file = ftseriesutils.tryToFindH5File(self.dir, 'newest')
            "h5 file is the file to load to update the reconstruction parameters"
            if h5file is not None:
                fsa.readAll(h5file, 3.8)
            ReconsParam().setStructs(fsa.structures)

    def _callbackRun(self):
        self.pathReceived(self.dir)
