Skip to content

Commit

Permalink
Add Qthread to multiple windows
Browse files Browse the repository at this point in the history
  • Loading branch information
shrivaths16 committed Nov 14, 2023
1 parent 2c68518 commit ca25347
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 39 deletions.
23 changes: 6 additions & 17 deletions sleap/gui/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
from sleap.gui.dialogs.formbuilder import FormBuilderModalDialog
from sleap.gui.dialogs.metrics import MetricsTableDialog
from sleap.gui.dialogs.shortcuts import ShortcutDialog
from sleap.gui.dialogs.bulletin import BulletinDialog
from sleap.gui.dialogs.bulletin import BulletinDialog, BulletinWorker
from sleap.gui.overlays.instance import InstanceOverlay
from sleap.gui.overlays.tracks import TrackListOverlay, TrackTrailOverlay
from sleap.gui.shortcuts import Shortcuts
Expand Down Expand Up @@ -213,7 +213,6 @@ def __init__(

# Display announcement bulletin popup
if self.new_announcement_available:
self.display_bulletin = BulletinDialog()
self.bulletin_dialog()

def bulletin_dialog(self):
Expand All @@ -224,22 +223,12 @@ def bulletin_dialog(self):
title, date, content = announcement
bulletin_markdown = "\n".join(content.split("\n"))

channel = QWebChannel()
channel.registerObject("content", self.display_bulletin)
popup_dialog = BulletinDialog(self)
popup_dialog.show()

self.display_bulletin.set_text(bulletin_markdown)

view = QWebEngineView()
view.page().setWebChannel(channel)
base_path = os.path.dirname(os.path.abspath(os.path.join(__file__)))
filepath = os.path.join(
base_path, "..", "gui", "dialogs", "bulletin", "markdown.html"
)
url = QUrl.fromLocalFile(filepath)
view.load(url)
view.resize(720, 540)
view.show()
QApplication.exec_()
popup_worker = BulletinWorker(bulletin_markdown)
popup_worker.text_updated.connect(popup_dialog.updateText)
popup_worker.start()

def setWindowTitle(self, value):
"""Sets window title (if value is not None)."""
Expand Down
51 changes: 29 additions & 22 deletions sleap/gui/dialogs/bulletin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,38 @@
GUI for displaying the new announcement.
"""

import os
import sleap
import sleap.gui.web
from qtpy.QtWidgets import QApplication
from qtpy.QtCore import Property, Signal, QObject, QUrl
from qtpy.QtWebChannel import QWebChannel
from qtpy.QtWebEngineWidgets import QWebEngineView
from sleap.gui.commands import CommandContext
from sleap.io.dataset import Labels
from qtpy.QtWidgets import (
QApplication,
QDialog,
QVBoxLayout,
QMainWindow,
QHBoxLayout,
QWidget,
QLabel,
)
from qtpy.QtCore import QObject, Signal, Slot, QThread, Property


class BulletinDialog(QObject):
textChanged = Signal(str)
class BulletinWorker(QThread):
text_updated = Signal(str)

def __init__(self, parent=None):
super().__init__(parent)
self.m_text = ""
def __init__(self, content, parent=None):
super(BulletinWorker, self).__init__(parent)
self.content = content

def run(self):
self.text_updated.emit(self.content)

def get_text(self):
return self.m_text

def set_text(self, text):
if self.m_text == text:
return
self.m_text = text
self.textChanged.emit(self.m_text)
class BulletinDialog(QDialog):
def __init__(self, parent=None):
super(BulletinDialog, self).__init__(parent)

self.label = QLabel()
layout = QVBoxLayout()
layout.addWidget(self.label)
self.setLayout(layout)

text = Property(str, fget=get_text, fset=set_text, notify=textChanged)
@Slot(str)
def updateText(self, text):
self.label.setText(text)

0 comments on commit ca25347

Please sign in to comment.