def getScreen9(self,event):
     if self.click_Screen == False:
         return
     self.getFullScreen(self)
     self.Full_Screen = Full_Screen(self.width, self.height, self, self.folder_path, "Nine", "Camera 9", self.cam9_url)
     self.Full_Screen.show()   
     self.close()
class MainWindow(QMainWindow):
    def __init__(self, width, height,parent, folder_path):
        super().__init__()
        self.setMouseTracking(True)

        self.parent=parent
        self.folder_path = folder_path
        self.b = None
        self.width = width
        self.height = height
        self.screen_size = (self.width, self.height)
        self.setWindowTitle("IESS")
        self.setGeometry(0, 0, self.width, self.height)
        monitor = QDesktopWidget().screenGeometry(1)
        self.move(monitor.left(), monitor.top())
        self.showFullScreen()
        backImage = QImage(self.folder_path + "/imgs/back35.jpg")
        sImage = backImage.scaled(QSize(self.width, self.height))
        self.palette = QPalette()
        self.palette.setBrush(10, QBrush(sImage))
        self.setPalette(self.palette)
        
        ############################################################################## QLABELS ###########################################################################
        self.title = QLabel('Digital Streaming')
        self.title.setStyleSheet('font-size:{0}px; font-weight:bold; text-align: center; color:black; border-style:none;'.format(int(height / 23)))
        self.title.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        self.title.setFont(QFont("Times"))

        self.empty_logo = QLabel()
        self.empty_logo.setFixedSize(int(width / 32), int(height / 16.5))

        self.company_logo = QLabel()
        self.company_logo.setFixedSize(int(width / 22.5), int(height / 15.5))
        self.company_logo_img = QPixmap(self.folder_path + '/imgs/company-logo.png')
        self.company_logo.setPixmap(self.company_logo_img)
        self.company_logo.setScaledContents(1)


        ############################################################################## TABS ###########################################################################

        #self.main_layout = QTabWidget()
        #self.main_layout.setFixedSize(int(self.width/1.01), int(self.height/1.2))

        Camera_File = open(str(self.folder_path) + "./Files/Camera_IPs.txt", "r+")

        Camera_File.seek(0)

        lines = Camera_File.readlines()

        self.cam1_url = lines[0].strip()
        self.cam1_url = self.cam1_url.split(" ")
        self.cam1_url = self.cam1_url[1]

        self.cam2_url = lines[1].strip()
        self.cam2_url = self.cam2_url.split(" ")
        self.cam2_url = self.cam2_url[1]

        self.cam3_url = lines[2].strip()
        self.cam3_url = self.cam3_url.split(" ")
        self.cam3_url = self.cam3_url[1]

        self.cam4_url = lines[3].strip()
        self.cam4_url = self.cam4_url.split(" ")
        self.cam4_url = self.cam4_url[1]

        self.cam5_url = lines[4].strip()
        self.cam5_url = self.cam5_url.split(" ")
        self.cam5_url = self.cam5_url[1]

        self.cam6_url = lines[5].strip()
        self.cam6_url = self.cam6_url.split(" ")
        self.cam6_url = self.cam6_url[1]

        self.cam7_url = lines[6].strip()
        self.cam7_url = self.cam7_url.split(" ")
        self.cam7_url = self.cam7_url[1]

        self.cam8_url = lines[7].strip()
        self.cam8_url = self.cam8_url.split(" ")
        self.cam8_url = self.cam8_url[1]

        self.cam9_url = lines[8].strip()
        self.cam9_url = self.cam9_url.split(" ")
        self.cam9_url = self.cam9_url[1]

        self.click_Screen = False

        self.camOne = QLabel()
        self.camOne.setMouseTracking(True)
        self.camOne.mousePressEvent = self.getScreen1
        self.camOne.setStyleSheet("background-color:black; border-width:3px; border-style:solid; border-color:#0c7b93;")
        self.camOne.setFixedSize((int(self.width/3.1)), int(self.height/3.9))
        self.camOneTitle = QLabel(" Camera 1")
        self.camOneTitle.setStyleSheet("font-size:{0}px; font-weight:bold; color:black;".format(int(height / 56)))
        self.camOneThread = CamThread(width=int(self.width /3.1), height=int(self.height /3.9), cam_name='CamOne', url = self.cam1_url)

        self.camTwo = QLabel()
        self.camTwo.setMouseTracking(True)
        self.camTwo.mousePressEvent = self.getScreen2
        self.camTwo.setStyleSheet("background-color:black; border-width:3px; border-style:solid; border-color:#0c7b93;")
        self.camTwo.setFixedSize((int(self.width/3.1)), int(self.height/3.9))
        self.camTwoTitle = QLabel(" Camera 2")
        self.camTwoTitle.setStyleSheet("font-size:{0}px; font-weight:bold; color:black;".format(int(height / 56)))
        self.camTwoThread = CamThread(width=int(self.width /3.1), height=int(self.height /3.9), cam_name='CamTwo', url = self.cam2_url)

        self.camThree = QLabel()
        self.camThree.setMouseTracking(True)
        self.camThree.mousePressEvent = self.getScreen3
        self.camThree.setStyleSheet("background-color:black; border-width:3px; border-style:solid; border-color:#0c7b93;")
        self.camThree.setFixedSize((int(self.width/3.1)), int(self.height/3.9))
        self.camThreeTitle = QLabel(" Camera 3")
        self.camThreeTitle.setStyleSheet("font-size:{0}px; font-weight:bold; color:black;".format(int(height / 56)))
        self.camThreeThread = CamThread(width=int(self.width /3.1), height=int(self.height /3.9), cam_name='CamThree', url = self.cam3_url)

        self.camFour = QLabel()
        self.camFour.setMouseTracking(True)
        self.camFour.mousePressEvent = self.getScreen4
        self.camFour.setStyleSheet("background-color:black; border-width:3px; border-style:solid; border-color:#0c7b93;")
        self.camFour.setFixedSize((int(self.width/3.1)), int(self.height/3.9))
        self.camFourTitle = QLabel(" Camera 4")
        self.camFourTitle.setStyleSheet("font-size:{0}px; font-weight:bold; color:black;".format(int(height / 56)))
        self.camFourThread = CamThread(width=int(self.width /3.1), height=int(self.height /3.9), cam_name='CamFour', url = self.cam4_url)

        self.camFive = QLabel()
        self.camFive.setMouseTracking(True)
        self.camFive.mousePressEvent = self.getScreen5
        self.camFive.setStyleSheet("background-color:black; border-width:3px; border-style:solid; border-color:#0c7b93;")
        self.camFive.setFixedSize((int(self.width/3.1)), int(self.height/3.9))
        self.camFiveTitle = QLabel(" Camera 5")
        self.camFiveTitle.setStyleSheet("font-size:{0}px; font-weight:bold; color:black;".format(int(height / 56)))
        self.camFiveThread = CamThread(width=int(self.width /3.1), height=int(self.height /3.9), cam_name='CamFive', url = self.cam5_url)

        self.camSix = QLabel()
        self.camSix.setMouseTracking(True)
        self.camSix.mousePressEvent = self.getScreen6
        self.camSix.setStyleSheet("background-color:black; border-width:3px; border-style:solid; border-color:#0c7b93;")
        self.camSix.setFixedSize((int(self.width/3.1)), int(self.height/3.9))
        self.camSixTitle = QLabel(" Camera 6")
        self.camSixTitle.setStyleSheet("font-size:{0}px; font-weight:bold; color:black;".format(int(height / 56)))
        self.camSixThread = CamThread(width=int(self.width /3.1), height=int(self.height /3.9), cam_name='CamSix', url = self.cam6_url)

        self.camSeven = QLabel()
        self.camSeven.setMouseTracking(True)
        self.camSeven.mousePressEvent = self.getScreen7
        self.camSeven.setStyleSheet("background-color:black; border-width:3px; border-style:solid; border-color:#0c7b93;")
        self.camSeven.setFixedSize((int(self.width/3.1)), int(self.height/3.9))
        self.camSevenTitle = QLabel(" Camera 7")
        self.camSevenTitle.setStyleSheet("font-size:{0}px; font-weight:bold; color:black;".format(int(height / 56)))
        self.camSevenThread = CamThread(width=int(self.width /3.1), height=int(self.height /3.9), cam_name='CamSeven', url = self.cam7_url)

        self.camEight = QLabel()
        self.camEight.setMouseTracking(True)
        self.camEight.mousePressEvent = self.getScreen8
        self.camEight.setStyleSheet("background-color:black; border-width:3px; border-style:solid; border-color:#0c7b93;")
        self.camEight.setFixedSize((int(self.width/3.1)), int(self.height/3.9))
        self.camEightTitle = QLabel(" Camera 8")
        self.camEightTitle.setStyleSheet("font-size:{0}px; font-weight:bold; color:black;".format(int(height / 56)))
        self.camEightThread = CamThread(width=int(self.width /3.1), height=int(self.height /3.9), cam_name='CamEight', url = self.cam8_url)

        self.camNine = QLabel()
        self.camNine.setMouseTracking(True)
        self.camNine.mousePressEvent = self.getScreen9
        self.camNine.setStyleSheet("background-color:black; border-width:3px; border-style:solid; border-color:#0c7b93;")
        self.camNine.setFixedSize((int(self.width/3.1)), int(self.height/3.9))
        self.camNineTitle = QLabel(" Camera 9")
        self.camNineTitle.setStyleSheet("font-size:{0}px; font-weight:bold; color:black;".format(int(height / 56)))
        self.camNineThread = CamThread(width=int(self.width /3.1), height=int(self.height /3.9), cam_name='CamNine', url = self.cam9_url)

        #self.camWidget = QWidget()
        #self.camWidget.setLayout(self.camOne)

        
        self.pathimage = str(self.folder_path + "/imgs/back3.jpg")
        print(self.pathimage)

        self.Status_Bar = QStatusBar()
        self.setStatusBar(self.Status_Bar)

        self.Four = QPushButton("Four Windows")
        self.Four.setFixedSize(int(width / 9.5), int(height / 36.0))
        self.Four.setStyleSheet("QPushButton{color:white; background-color:#0f4c75; font-size:17px; font-weight:bold; border-radius:5px; border:2px solid black;}\
                                                     QPushButton:hover{background-color:#3282b8;}\
                                                         QPushButton:pressed{font-size:18px;}")

        self.Nine = QPushButton("Nine Windows")
        self.Nine.setFixedSize(int(width / 9.5), int(height / 36.0))
        self.Nine.setStyleSheet("QPushButton{color:white; background-color:#0f4c75; font-size:17px; font-weight:bold; border-radius:5px; border:2px solid black;}\
                                                     QPushButton:hover{background-color:#3282b8;}\
                                                         QPushButton:pressed{font-size:18px;}")

        self.empty = QLabel()
        self.empty.setFixedSize(int(width / 2.5), int(height / 36.0))

        

        self.close_Btn = QPushButton("Logout")
        self.close_Btn.setFixedSize(int(width / 9.5), int(height / 36.0))
        self.close_Btn.setStyleSheet("QPushButton{color:white; background-color:#0f4c75; font-size:17px; font-weight:bold; border-radius:5px; border:2px solid black;}\
                                                     QPushButton:hover{background-color:#3282b8;}\
                                                         QPushButton:pressed{font-size:18px;}")


        self.close_Btn.clicked.connect(self.exit_trap)
        self.Four.clicked.connect(self.goToFour)

        self.Four.setDisabled(True)
        self.Nine.setDisabled(True)
        self.close_Btn.setDisabled(True)
        QTimer.singleShot(15000, self.EnableButton)

        ############################################################################## LAYOUTS ###########################################################################

##        self.Camera12Layout = QHBoxLayout()
##        self.Camera12Layout.addStretch(0)
##        self.Camera12Layout.addWidget(self.camOneTitle)
##        self.Camera12Layout.addSpacing(700)
##        self.Camera12Layout.addWidget(self.camTwoTitle)
##        self.Camera12Layout.addSpacing(500)
##        self.Camera12Widget = QWidget()
##        self.Camera12Widget.setLayout(self.Camera12Layout)
##
##        self.Camera34Layout = QHBoxLayout()
##        self.Camera34Layout.addStretch(0)
##        self.Camera34Layout.addWidget(self.camThreeTitle)
##        self.Camera34Layout.addSpacing(700)
##        self.Camera34Layout.addWidget(self.camFourTitle)
##        self.Camera34Layout.addSpacing(500)
##        self.Camera34Widget = QWidget()
##        self.Camera34Widget.setLayout(self.Camera34Layout)

        self.Cam123Layout = QHBoxLayout()
        self.Cam123Layout.addStretch(0)
        self.Cam123Layout.addWidget(self.camOne)
        self.Cam123Layout.addWidget(self.camTwo)
        self.Cam123Layout.addWidget(self.camThree)
        #self.Cam123Layout.addSpacing(200)
        self.Cam123Widget = QWidget()
        self.Cam123Widget.setLayout(self.Cam123Layout)

        self.Cam456Layout = QHBoxLayout()
        self.Cam456Layout.addStretch(0)
        self.Cam456Layout.addWidget(self.camFour)
        self.Cam456Layout.addWidget(self.camFive)
        self.Cam456Layout.addWidget(self.camSix)
        #self.Cam456Layout.addSpacing(200)
        self.Cam456Widget = QWidget()
        self.Cam456Widget.setLayout(self.Cam456Layout)

        self.Cam789Layout = QHBoxLayout()
        self.Cam789Layout.addStretch(0)
        self.Cam789Layout.addWidget(self.camSeven)
        self.Cam789Layout.addWidget(self.camEight)
        self.Cam789Layout.addWidget(self.camNine)
        #self.Cam789Layout.addSpacing(200)
        self.Cam789Widget = QWidget()
        self.Cam789Widget.setLayout(self.Cam789Layout)



        self.LoginBtnLayout = QHBoxLayout()
        self.LoginBtnLayout.addStretch(0)
        self.LoginBtnLayout.addWidget(self.Four)
        self.LoginBtnLayout.addWidget(self.Nine)
        self.LoginBtnLayout.addWidget(self.empty)
        self.LoginBtnLayout.addWidget(self.close_Btn)
        self.LoginBtnLayout.addSpacing(200)
        self.LoginBtnWidget = QWidget()
        self.LoginBtnWidget.setLayout(self.LoginBtnLayout)

        
        self.titleLayout = QHBoxLayout()
        self.titleLayout.addWidget(self.empty_logo)
        self.titleLayout.addWidget(self.title)
        self.titleLayout.addWidget(self.company_logo)
        self.titleLayout.setAlignment(self.company_logo, Qt.AlignVCenter)
        self.titleWidget = QWidget()
        self.titleWidget.setLayout(self.titleLayout)
        self.titleWidget.setPalette(self.palette)
        self.titleWidget.setStyleSheet('border-style:None; border-radius:12px;')
        self.titleWidget.setFixedSize(width - int(width / 95), int(height / 13.5))

        self.mainlayout = QVBoxLayout()
        self.mainlayout.addWidget(self.titleWidget)
        self.mainlayout.addWidget(self.Cam123Widget)
        self.mainlayout.addWidget(self.Cam456Widget)
        self.mainlayout.addWidget(self.Cam789Widget)
        self.mainlayout.addWidget(self.LoginBtnWidget)

        
        self.mainWidget = QWidget()
        self.mainWidget.setLayout(self.mainlayout)

        self.setCentralWidget(self.mainWidget)
        
        self.camOneThread.start()
        self.camOneThread.changePixmap.connect(self.setCamOneImage)

        self.camTwoThread.start()
        self.camTwoThread.changePixmap.connect(self.setCamTwoImage)

        self.camThreeThread.start()
        self.camThreeThread.changePixmap.connect(self.setCamThreeImage)

        self.camFourThread.start()
        self.camFourThread.changePixmap.connect(self.setCamFourImage)

        self.camFiveThread.start()
        self.camFiveThread.changePixmap.connect(self.setCamFiveImage)

        self.camSixThread.start()
        self.camSixThread.changePixmap.connect(self.setCamSixImage)

        self.camSevenThread.start()
        self.camSevenThread.changePixmap.connect(self.setCamSevenImage)

        self.camEightThread.start()
        self.camEightThread.changePixmap.connect(self.setCamEightImage)

        self.camNineThread.start()
        self.camNineThread.changePixmap.connect(self.setCamNineImage)

    @pyqtSlot(QImage)
    def setCamOneImage(self, image):
        self.camOne.setPixmap(QPixmap.fromImage(image))

    @pyqtSlot(QImage)
    def setCamTwoImage(self, image):
        self.camTwo.setPixmap(QPixmap.fromImage(image))

    @pyqtSlot(QImage)
    def setCamThreeImage(self, image):
        self.camThree.setPixmap(QPixmap.fromImage(image))

    @pyqtSlot(QImage)
    def setCamFourImage(self, image):
        self.camFour.setPixmap(QPixmap.fromImage(image))

    @pyqtSlot(QImage)
    def setCamFiveImage(self, image):
        self.camFive.setPixmap(QPixmap.fromImage(image))

    @pyqtSlot(QImage)
    def setCamSixImage(self, image):
        self.camSix.setPixmap(QPixmap.fromImage(image))

    @pyqtSlot(QImage)
    def setCamSevenImage(self, image):
        self.camSeven.setPixmap(QPixmap.fromImage(image))

    @pyqtSlot(QImage)
    def setCamEightImage(self, image):
        self.camEight.setPixmap(QPixmap.fromImage(image))

    @pyqtSlot(QImage)
    def setCamNineImage(self, image):
        self.camNine.setPixmap(QPixmap.fromImage(image))

    def EnableButton(self):
        self.Four.setDisabled(False)
        self.close_Btn.setDisabled(False)
        self.click_Screen = True

    def getScreen1(self,event):
        if self.click_Screen == False:
            return
        self.getFullScreen(self)
        self.Full_Screen = Full_Screen(self.width, self.height, self, self.folder_path, "Nine", "Camera 1", self.cam1_url)
        self.Full_Screen.show()   
        self.close()

    def getScreen2(self,event):
        if self.click_Screen == False:
            return
        self.getFullScreen(self)
        self.Full_Screen = Full_Screen(self.width, self.height, self, self.folder_path, "Nine", "Camera 2", self.cam2_url)
        self.Full_Screen.show()   
        self.close()

    def getScreen3(self,event):
        if self.click_Screen == False:
            return
        self.getFullScreen(self)
        self.Full_Screen = Full_Screen(self.width, self.height, self, self.folder_path, "Nine", "Camera 3", self.cam3_url)
        self.Full_Screen.show()   
        self.close()

    def getScreen4(self,event):
        if self.click_Screen == False:
            return
        self.getFullScreen(self)
        self.Full_Screen = Full_Screen(self.width, self.height, self, self.folder_path, "Nine", "Camera 4", self.cam4_url)
        self.Full_Screen.show()   
        self.close()

    def getScreen5(self,event):
        if self.click_Screen == False:
            return
        self.getFullScreen(self)
        self.Full_Screen = Full_Screen(self.width, self.height, self, self.folder_path, "Nine", "Camera 5", self.cam5_url)
        self.Full_Screen.show()   
        self.close()

    def getScreen6(self,event):
        if self.click_Screen == False:
            return
        self.getFullScreen(self)
        self.Full_Screen = Full_Screen(self.width, self.height, self, self.folder_path, "Nine", "Camera 6", self.cam6_url)
        self.Full_Screen.show()   
        self.close()

    def getScreen7(self,event):
        if self.click_Screen == False:
            return
        self.getFullScreen(self)
        self.Full_Screen = Full_Screen(self.width, self.height, self, self.folder_path, "Nine", "Camera 7", self.cam7_url)
        self.Full_Screen.show()   
        self.close()

    def getScreen8(self,event):
        if self.click_Screen == False:
            return
        self.getFullScreen(self)
        self.Full_Screen = Full_Screen(self.width, self.height, self, self.folder_path, "Nine", "Camera 8", self.cam8_url)
        self.Full_Screen.show()   
        self.close()

    def getScreen9(self,event):
        if self.click_Screen == False:
            return
        self.getFullScreen(self)
        self.Full_Screen = Full_Screen(self.width, self.height, self, self.folder_path, "Nine", "Camera 9", self.cam9_url)
        self.Full_Screen.show()   
        self.close()

    def getFullScreen(self,event):
        self.camOneThread.Flag_Cam = True
        self.camTwoThread.Flag_Cam = True
        self.camThreeThread.Flag_Cam = True
        self.camFourThread.Flag_Cam = True
        self.camFiveThread.Flag_Cam = True
        self.camSixThread.Flag_Cam = True
        self.camSevenThread.Flag_Cam = True
        self.camEightThread.Flag_Cam = True
        self.camNineThread.Flag_Cam = True
    

    def goToFour(self):
        #self.Screen_9 = Screen_9(self.width, self.height, self, self.folder_path)

        self.camOneThread.Flag_Cam = True
        self.camTwoThread.Flag_Cam = True
        self.camThreeThread.Flag_Cam = True
        self.camFourThread.Flag_Cam = True
        self.camFiveThread.Flag_Cam = True
        self.camSixThread.Flag_Cam = True
        self.camSevenThread.Flag_Cam = True
        self.camEightThread.Flag_Cam = True
        self.camNineThread.Flag_Cam = True

        self.parent.Four.setDisabled(True)
        self.parent.Nine.setDisabled(True)
        self.parent.close_Btn.setDisabled(True)
        self.parent.click_Screen = False
        QTimer.singleShot(8000, self.parent.EnableButton)

        self.parent.camOneThread.start()
        self.parent.camTwoThread.start()
        self.parent.camThreeThread.start()
        self.parent.camFourThread.start()

        #print(self.parent.camOneThread.Flag_cap)

        
        self.parent.show()   
        self.close()


    def exit_trap(self):
        self.camOneThread.Flag_Cam = True
        self.camTwoThread.Flag_Cam = True
        self.camThreeThread.Flag_Cam = True
        self.camFourThread.Flag_Cam = True
        self.camFiveThread.Flag_Cam = True
        self.camSixThread.Flag_Cam = True
        self.camSevenThread.Flag_Cam = True
        self.camEightThread.Flag_Cam = True
        self.camNineThread.Flag_Cam = True
        
        self.parent.parent.show()
        self.close()