import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import *

import time

from record import Record


class RecordWorker(QThread):
    textB = pyqtSignal(str)

    def __init__(self):
        super().__init__()
        self.power = False
        self.text = ''
        self.record = Record()
    
    def run(self):
        self.power = True

        # self.textB.emit("start !!\n")
        while self.power == True:
            self.record.record_unit(self.textB.emit)

        self.record.record_unit(self.textB.emit)
        self.textB.emit("\nend !!\n")

    def stop(self):
        self.power = False


# class MyApp(QMainWindow):
class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.text = ''
        self.blank_cnt = 0
        self.blank_max = 2

        self.initUI()

        self.t1 = RecordWorker()
        self.t1.textB.connect(self.set_tb) ## 시그널 슬롯 등록

        self.btn1.clicked.connect(self.thread_start)
        self.btn2.clicked.connect(self.thread_stop)

    def initUI(self):
        self.setWindowTitle('BTS')
        self.setWindowIcon(QIcon('labs_icon.jpg'))

        self.btn1 = QPushButton('Run', self)

        self.btn2 = QPushButton('Stop', self)

        self.tb = QTextEdit()
        self.tb.setReadOnly(True)
        self.tb.setAcceptRichText(True)


        self.vbox = QVBoxLayout()
        self.vbox.addWidget(self.btn1, 0)
        self.vbox.addWidget(self.btn2, 1)
        self.vbox.addWidget(self.tb, 2)

        self.setLayout(self.vbox)

        self.setGeometry(300, 300, 800, 500)
        self.show()

    def thread_start(self):
        self.t1.start()

    def thread_stop(self):
        self.t1.stop()

    @pyqtSlot(str)
    def set_tb(self, content):
        if len(content) == 0 and self.text[-1] != "\n":
            self.blank_cnt += 1
            if self.blank_cnt >= self.blank_max:
                self.blank_cnt = 0
                self.text += '\n'
                self.tb.setText(self.text)
        else:
            self.text += content
            self.tb.setText(self.text)
    

if __name__ == '__main__':
   app = QApplication(sys.argv) 
   ex = MyApp()
   sys.exit(app.exec_())