#-----> Created by Author: Miguel Reyes
#-----> Target of this Code: Create a Control Panel to Manage an APT Cell.
#-----> Import Libraries used and User defined Source Codes <-----#
import os
import subprocess
import sys
import win32api

from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget, QAbstractSpinBox, QTextEdit, QLabel,  QStackedWidget
from PyQt5 import uic, QtCore, QtGui
#from window2

from APT_ControlPanel.SC.SC001_GetReport import GetReport
from APT_ControlPanel.SC.SC002_GetChart_plotter import GetChart_plotter


class Main_001 (QMainWindow):
    
        def __init__(self):
                super().__init__()
                uic.loadUi("C:\\Python3_11\\Lib\APT_ControlPanel\\Screens\\001_Main.ui",self)
                frame_geometry = self.frameGeometry()
                #--->Screan Position at center= sp<---#
                sp = QDesktopWidget().availableGeometry().center()
                frame_geometry.moveCenter(sp)
                self.move(frame_geometry.topLeft())
                #self.setWindowState(QtCore.Qt.WindowMaximized)
                self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowCloseButtonHint)
                self.Load_LogoApp()
                self.Key_Exit.setCheckable(True)
                self.mainContainer.setCurrentIndex(0)
                #All Keys to Clicked Connect    
                self.Key_Exit.clicked.connect(self.Exit)
                
                self.key_opMode.clicked.connect(self.SC_OperationMode)
                self.key_opM_nextPage.clicked.connect(self.SC_OperationMode)
                self.key_opM_goBack.clicked.connect(self.SC_OperationMode)
                
                self.key_recipe.clicked.connect(self.SC_OperationMode)
                self.key_rpe_nextPage.clicked.connect(self.SC_OperationMode)
                self.key_rpe_goBack.clicked.connect(self.SC_OperationMode)

                self.key_home.clicked.connect(self.SC_OperationMode)
                self.key_report.clicked.connect(self.UI_GetReport)
                self.key_IOstatus.clicked.connect(self.SC_OperationMode)
                self.key_getChart.clicked.connect(self.UI_GetChart)
                #Set Checkable all keys
                self.key_opMode.setCheckable(True)
                self.key_opM_nextPage.setCheckable(True)
                self.key_opM_goBack.setCheckable(True)
                
                self.key_recipe.setCheckable(True)
                self.key_rpe_nextPage.setCheckable(True)
                self.key_rpe_goBack.setCheckable(True)
                
                #--->Button Bar<---
                self.key_home.setCheckable(True)
                self.key_report.setCheckable(True)
                self.key_IOstatus.setCheckable(True)
                self.key_getChart.setCheckable(True)
                self.key_switchUser.setCheckable(True)
                self.key_refresh.setCheckable(True)
                self.key_pause.setCheckable(True)
                self.key_stop.setCheckable(True)
                self.key_run.setCheckable(True)

            

        def Exit(self):
                self.close()
                os._exit(0)

        
        def Load_LogoApp(self):
                self.logo_Name.setPixmap(QtGui.QPixmap(r"c:\Python3_11\Lib\APT_ControlPanel\Images\Titles\001_Title.png"))
                self.show()
                pass
        
        def SC_OperationMode(self):
               if self.key_opMode.isChecked() == True:
                       self.mainContainer.setCurrentIndex(2)
               
               if self.key_opMode.isChecked() == False:
                       self.mainContainer.setCurrentIndex(0)

               if self.key_opM_nextPage.isChecked() == True:
                       self.mainContainer.setCurrentIndex(1)
                       self.key_opM_nextPage.setCheckable(False)
                       self.key_opM_nextPage.setCheckable(True)
               
               if self.key_opM_goBack.isChecked() == True:
                        self.mainContainer.setCurrentIndex(0)
                        self.key_opM_goBack.setCheckable(False)
                        self.key_opM_goBack.setCheckable(True)
                
               if self.key_recipe.isChecked() == True or self.key_rpe_goBack.isChecked() == True:
                        self.mainContainer.setCurrentIndex(3)
                        self.key_recipe.setCheckable(False)
                        self.key_recipe.setCheckable(True)
                       
                        self.key_rpe_goBack.setCheckable(False)
                        self.key_rpe_goBack.setCheckable(True)
               
               if self.key_rpe_nextPage.isChecked() == True:
                        self.mainContainer.setCurrentIndex(4)
                        self.key_rpe_nextPage.setCheckable(False)
                        self.key_rpe_nextPage.setCheckable(True)
        
               if self.key_home.isChecked() == True:
                        self.mainContainer.setCurrentIndex(5)
                        self.key_home.setCheckable(False)
                        self.key_home.setCheckable(True)

               if self.key_IOstatus.isChecked() == True:
                       self.mainContainer.setCurrentIndex(6)
                       self.key_IOstatus.setCheckable(False)
                       self.key_IOstatus.setCheckable(True)
                               
                
               pass

        def UI_GetReport(self):
                self.screen_getReport = GetReport()
                self.screen_getReport.setModal(True)
                self.screen_getReport.exec_()
                self.key_report.setCheckable(False)
                self.key_report.setCheckable(True)
                pass

        def UI_GetChart(self): 
                #win32api.ShellExecute(0, "open", "C:\Python3_11\Lib\APT_ControlPanel\SC\SC002_GetChart_plotter.exe", None, ".", 0)
                #subprocess.run(["C:\Python3_11\Lib\APT_ControlPanel\SC\dist\SC002_GetChart_plotter.exe"])          
                os.system("C:\Python3_11\Lib\APT_ControlPanel\SC\SC002_GetChart_plotter.exe")
                self.key_getChart.setCheckable(False)
                self.key_getChart.setCheckable(True)
                pass       
    


#---> This If case just runs one scan<---#
#---> mw = Main Window <---#
if __name__ == '__main__':
        #---> Create pyQt5 app <---#
        app =QApplication(sys.argv)
        #---> Create the instance of Main screen <---#
        mw = Main_001()
        mw.show()
        #Start the App
        sys.exit(app.exec_())        

     
