# -*- mode:Python -*-
#
# This file is part of the Coriolis Software.
# Copyright (c) UPMC/LIP6 2012-2016, All Rights Reserved
#
# +-----------------------------------------------------------------+ 
# |                   C O R I O L I S                               |
# |    C o r i o l i s  /  C h a m s   B u i l d e r                |
# |                                                                 |
# |  Author      :                       Damien Dupuis              |
# |  E-mail      :       Jean-Paul.Chaput@asim.lip6.fr              |
# | =============================================================== |
# |  Python      :   "./builder/BuilderGui.py"                      |
# +-----------------------------------------------------------------+


from PyQt4.QtGui     import QTabWidget
from PyQt4.QtGui     import QApplication
from PyQt4.QtGui     import QMainWindow
from PyQt4.QtGui     import QAction
from PyQt4.QtGui     import QKeySequence
from OptionsWidget   import OptionsWidget
from CompileWidget   import CompileWidget
from ConfigureWidget import ConfigureWidget
from AboutWidget     import AboutWidget


class BuilderGui ( QMainWindow ):

  def __init__ ( self, confFile, parent=None ):
    QMainWindow.__init__( self, parent )
    self.setWindowTitle( 'Coriolis/Chams Builder' )
    self._tabWidget       = QTabWidget()
    self._configureWidget = ConfigureWidget(confFile)
    self._optionsWidget   = OptionsWidget(self._configureWidget.conf)
    self._compileWidget   = CompileWidget()
    self._aboutWidget     = AboutWidget()

    self._tabWidget.addTab( self._optionsWidget  , 'Options' )
    self._tabWidget.addTab( self._compileWidget  , 'Compile' )
    self._tabWidget.addTab( self._configureWidget, 'Configure' )
    self.setCentralWidget( self._tabWidget )

    self._compileWidget.conf    = self._configureWidget
    self._compileWidget.options = self._optionsWidget

    self._exitAction = QAction( '&Exit', self )
    self._exitAction.setStatusTip( 'Exit CCB (settings are saved)' )
    self._exitAction.setShortcut ( QKeySequence('CTRL+Q') )
    self._exitAction.triggered.connect( QApplication.closeAllWindows )

    self._saveAction = QAction( '&Save Settings', self )
    self._saveAction.setStatusTip( 'Save Settings' )
    self._saveAction.setShortcut ( QKeySequence('CTRL+S') )
    self._saveAction.triggered.connect( self._configureWidget.saveSettings )
    self._saveAction.triggered.connect( self._optionsWidget.saveSettings )
    self._saveAction.triggered.connect( self._compileWidget.saveSettings )

    self._aboutAction = QAction( '&About', self )
    self._aboutAction.setStatusTip( 'A Word About Who\'s Responsible for This Thing' )
    self._aboutAction.setShortcut ( QKeySequence('CTRL+A') )
    self._aboutAction.triggered.connect( self._aboutWidget.show )

    fileMenu = self.menuBar().addMenu( 'File' )
    fileMenu.addAction( self._exitAction )
    fileMenu.addAction( self._saveAction )
    fileMenu.addAction( self._aboutAction )
    return

  def closeEvent ( self, event ):
     self._configureWidget.saveSettings()
     self._optionsWidget  .saveSettings()
     self._compileWidget  .saveSettings()
     event.accept()
     return