#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# #! is a sha-bang. It tells that the Python interpreter should run this code

import sys                                       # Nodig vanwege de command line opstartinstructies: print (sys.argv[0])
from PyQt5 import QtGui
from PyQt5.QtWidgets import QApplication         # Nodig als object om een applicatie in te beschrijven, kortom altijd nodig
from PyQt5.QtWidgets import QMainWindow          # Nodig als je een full blown scherm wilt voor je applikatie
from PyQt5.QtWidgets import QDesktopWidget       # Nodig om het scherm te kunnen centreren van een window
from PyQt5.QtGui import QPainter, QBrush, QPen   # Nodig om graphics te kunnen maken https://likegeeks.com/pyqt5-drawing-tutorial/
from PyQt5.QtCore import Qt                      # Nodig om graphics te kunnen maken
from PyQt5.QtWidgets import QLCDNumber, QSlider, QVBoxLayout # Nodig voor event handling ++??
from PyQt5.QtWidgets import QGridLayout, QLabel  # Nodig om de muispositie weer te geven als event
from PyQt5.QtWidgets import QPushButton          # Nodig om knoppen te maken
from PyQt5.QtCore import pyqtSignal, QObject     # Nodig om een muiseklik af te vangen met een signal naar eigen applikatie


class Communicate(QObject):
    
    closeApp = pyqtSignal() 



class Window(QMainWindow):                       # Dit is de basis van alle user interactie en creeert een window
 
    def __init__(self):                          # Verplicht gedeelte van ieder applikatie object
        super().__init__()                       # Waarvoor zou ik dit dan nodig hebben? Hier niet nodig denk ik
        self.title = 'Couveuse2'                 # Naam in titelbalk van het scherm
        self.left = 10
        self.top = 10
        self.width = 850
        self.height = 600
        self.InitWindow()
 
    def InitWindow(self):                        # Verplicht gedeelte van het applikatie object
        #self.set_icon_from_file("")
        self.setWindowIcon(QtGui.QIcon('py/robot-icon.png'))

        self.c = Communicate()
        self.c.closeApp.connect(self.close) 

        btn1 = QPushButton("2 KLOKKEN", self)
        btn1.move(30, 50)

        btn2 = QPushButton("Datatransport", self)
        btn2.move(150, 50)
      
        btn1.clicked.connect(self.buttonClicked)            
        btn2.clicked.connect(self.buttonClicked)
        
        self.statusBar()
        
        grid = QGridLayout()
        x = 0
        y = 0
        self.text = "x: {0},  y: {1}".format(x, y)
        self.label = QLabel(self.text, self)
        grid.addWidget(self.label, 0, 0, Qt.AlignCenter)
        self.setMouseTracking(True)
        #self.setLayout(grid)

        lcd = QLCDNumber(self)
        lcd.move(150, 150)
        sld = QSlider(Qt.Vertical, self)
        sld.move(220, 150)

        vbox = QVBoxLayout()
        vbox.addWidget(lcd)
        vbox.addWidget(sld)
        #self.setLayout(vbox)

        sld.valueChanged.connect(lcd.display)

        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.center()
        self.show()


    def center(self):                            # functie om het scherm te centreren in Qt
        qr = self.frameGeometry()                # geometry of the main window
        cp = QDesktopWidget().availableGeometry().center()  # center point of screen
        qr.moveCenter(cp)                        # move rectangle's center point to screen's center point
        self.move(qr.topLeft())                  # top left of rectangle becomes top left of window centering it


    def paintEvent(self, event):                 # Nodig om graphics te kunnen maken https://likegeeks.com/pyqt5-drawing-tutorial/
        painter = QPainter(self)
        painter.setPen(QPen(Qt.red,  8, Qt.SolidLine))
        painter.drawEllipse(40, 40, 300, 300)    # int x, int y, int width, int height

        painter2 = QPainter(self)
        painter2.setPen(QPen(Qt.blue,  8, Qt.SolidLine))
        painter2.drawEllipse(500, 40, 300, 300)


    def keyPressEvent(self, e):
        if e.key() == Qt.Key_Escape:
            self.close()


    def mouseMoveEvent(self, e):
        x = e.x()
        y = e.y()
        text = "x: {0},  y: {1}".format(x, y)
        self.label.setText(text)

    def buttonClicked(self):
        sender = self.sender()
        self.statusBar().showMessage(sender.text() + ' was pressed')


    def mousePressEvent(self, event):
        self.c.closeApp.emit()
        



if __name__ == '__main__':
    app = QApplication(sys.argv)                 # Constructs an application object, command line opstartinstructies: print (sys.argv[0])
    window = Window()                            # window is de class (het object) die moet worden uitgevoerd
    sys.exit(app.exec_())                        # De sys.exit geeft de mogelijkheid om een foutcode te geven bij beeindiging. 0=Geen fout







#from pprint import pprint                       # Nodig om alle onderstaande variabelen netjes te kunnen uitprinten
#pprint(globals())                               # Print alle variabelen inclusief systeem variabelen.
#from PyQt5.QtWidgets import QWidget             # Dit creeert een window, is een beperkte versie van QmainWindow
#from PyQt5.QtGui import QFont  
#from PyQt5.QtGui import QIcon
#from PyQt5.QtCore import *
#from PyQt5.QtGui import *
#from inputs import * #devices
