Show events in develop widget

This commit is contained in:
Kovid Goyal 2020-11-22 16:16:09 +05:30
parent 7038c187d0
commit f1f29761c9
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -45,6 +45,8 @@ class TTSWidget(QWidget):
dispatch_on_main_thread_signal = pyqtSignal(object) dispatch_on_main_thread_signal = pyqtSignal(object)
mark_changed = pyqtSignal(object) mark_changed = pyqtSignal(object)
show_message = pyqtSignal(object)
show_status = pyqtSignal(object)
def __init__(self, parent=None): def __init__(self, parent=None):
QWidget.__init__(self, parent) QWidget.__init__(self, parent)
@ -83,9 +85,15 @@ example, which of.
self.current_mark = None self.current_mark = None
l.addWidget(la) l.addWidget(la)
self.bb = bb = QDialogButtonBox(self) self.bb = bb = QDialogButtonBox(self)
self.play_button = b = bb.addButton('Play', bb.ActionRole)
l.addWidget(bb) l.addWidget(bb)
self.play_button = b = bb.addButton('Play', bb.ActionRole)
b.clicked.connect(self.play_clicked) b.clicked.connect(self.play_clicked)
self.pause_button = b = bb.addButton('Pause', bb.ActionRole)
b.clicked.connect(self.pause_clicked)
self.resume_button = b = bb.addButton('Resume', bb.ActionRole)
b.clicked.connect(self.resume_clicked)
self.stop_button = b = bb.addButton('Stop', bb.ActionRole)
b.clicked.connect(self.stop_clicked)
self.render_text() self.render_text()
def render_text(self): def render_text(self):
@ -105,6 +113,15 @@ example, which of.
def play_clicked(self): def play_clicked(self):
self.tts.speak_marked_text(self.ssml, self.handle_event) self.tts.speak_marked_text(self.ssml, self.handle_event)
def pause_clicked(self):
self.tts.pause()
def resume_clicked(self):
self.tts.resume()
def stop_clicked(self):
self.tts.stop()
def dispatch_on_main_thread(self, func): def dispatch_on_main_thread(self, func):
try: try:
func() func()
@ -113,12 +130,16 @@ example, which of.
traceback.print_exc() traceback.print_exc()
def handle_event(self, event): def handle_event(self, event):
status = str(self.tts.status)
self.show_status.emit(str(status))
if event.type is EventType.mark: if event.type is EventType.mark:
try: try:
mark = int(event.data) mark = int(event.data)
except Exception: except Exception:
return return
self.mark_changed.emit(mark) self.mark_changed.emit(mark)
else:
self.show_message.emit(f'Got event: {event.type.name}')
def on_mark_change(self, mark): def on_mark_change(self, mark):
self.current_mark = mark self.current_mark = mark
@ -128,7 +149,12 @@ example, which of.
def main(): def main():
app = Application([]) app = Application([])
w = QMainWindow() w = QMainWindow()
sb = w.statusBar()
la = QLabel(sb)
sb.addPermanentWidget(la)
tts = TTSWidget(w) tts = TTSWidget(w)
tts.show_message.connect(sb.showMessage)
tts.show_status.connect(la.setText)
w.setCentralWidget(tts) w.setCentralWidget(tts)
w.show() w.show()
app.exec_() app.exec_()