Skip to content

Commit 95ba458

Browse files
committed
Updating Recording View
1 parent a55dd8b commit 95ba458

File tree

6 files changed

+62
-4
lines changed

6 files changed

+62
-4
lines changed

app.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def __init__(self, theme, mode, usecommandlineargs=True, usethemeconfigfile=True
3838
self.eventManager.subscribe(AppEventType.newProject, self.handleNewProject)
3939
self.eventManager.subscribe(AppEventType.requestAnnotation, self.handleNewAnnotation)
4040
self.eventManager.subscribe(AppEventType.saveProject, self.handleSaveProject)
41+
self.eventManager.subscribe(AppEventType.updateRecordingView, self.handleUpdateRecordingView)
4142
self.run()
4243

4344
def makeNav(self):
@@ -77,9 +78,10 @@ def makeEditor(self):
7778
#self.context["controllers"]["recording"])
7879
self.annotationEditView.render(self.annotationFrame)
7980

80-
8181
self.recordingFrame = self.rightFrame.addFrame("Recording", padx=(0,0), pady=(10,0))
82-
text = self.recordingFrame.Text("Recording")
82+
self.recordingView = self.viewManager.getRecordingView(self.recordingController, self.eventManager)
83+
self.recordingView.render(self.recordingFrame)
84+
# text = self.recordingFrame.Text("Recording")
8385
# text.pack(side=tk.TOP)
8486

8587
def handleNewAnnotation(self, event: AppEvent):
@@ -95,6 +97,10 @@ def handleNewProject(self, event: AppEvent):
9597
def handleSaveProject(self, event: AppEvent):
9698
print("Save project event handled")
9799
self.recordingController.saveProject()
100+
101+
def handleUpdateRecordingView(self, event: AppEvent):
102+
print("Update recording view event handled")
103+
self.recordingView.updateAnnotations()
98104

99105
# def createVideoView(self, videoURL="https://www.youtube.com/watch?v=eu4QqwsfXFE"):
100106
def createVideoView(self, videoURL:str, videoTitle:str, annotationPath: str):

library/AppEvent.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ class AppEventType(IntEnum):
55
requestAnnotation = auto()
66
newProject = auto()
77
saveProject = auto()
8+
updateRecordingView = auto()
89

910
@dataclass
1011
class AppEvent():

managers/EventManager.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def initEventStreams(self):
1414
self.annotateFrameHandlers = [] # kust if functions to be called when a annotation is requested
1515
self.newProjectHandlers = []
1616
self.saveProjectHandlers = []
17-
17+
self.updateRecordingViewHandlers = []
1818

1919
def unsubscribe(self, appEvent: AppEventType, handler: Callable):
2020
if appEvent == AppEventType.requestAnnotation:
@@ -23,6 +23,8 @@ def unsubscribe(self, appEvent: AppEventType, handler: Callable):
2323
self.newProjectHandlers.remove(handler)
2424
if appEvent == AppEventType.saveProject:
2525
self.saveProjectHandlers.remove(handler)
26+
if appEvent == AppEventType.updateRecordingView:
27+
self.updateRecordingViewHandlers.remove(handler)
2628

2729

2830
def subscribe(self, appEvent: AppEventType, handler: Callable):
@@ -32,6 +34,8 @@ def subscribe(self, appEvent: AppEventType, handler: Callable):
3234
self.newProjectHandlers.append(handler)
3335
if appEvent == AppEventType.saveProject:
3436
self.saveProjectHandlers.append(handler)
37+
if appEvent == AppEventType.updateRecordingView:
38+
self.updateRecordingViewHandlers.append(handler)
3539

3640
def onEvent(self, appEvent: AppEvent):
3741
# if appEvent.type == AppEventType.requestAnnotation:
@@ -53,5 +57,9 @@ def onEvent(self, appEvent: AppEvent):
5357
handler(appEvent)
5458

5559
if appEvent.type == AppEventType.saveProject:
60+
for handler in self.saveProjectHandlers:
61+
handler(appEvent)
62+
63+
if appEvent.type == AppEventType.updateRecordingView:
5664
for handler in self.saveProjectHandlers:
5765
handler(appEvent)

managers/ViewManager.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from controller.RecordingController import RecordingController
44
from controller.VideoController import VideoController
55
from managers.EventManager import EventManager
6-
from view import RecordingView
6+
from view.RecordingView import RecordingView
77
from view.AnnotationEditView import AnnotationEditView
88
from view.VideoView import VideoView
99
#from view import *
@@ -14,6 +14,9 @@ def __init__(self, eventManager: EventManager) -> None:
1414

1515
def getAnnotationEditView(self, recordingController: RecordingController, eventManager: EventManager):
1616
return AnnotationEditView(recordingController, eventManager)
17+
18+
def getRecordingView(self, recordingController: RecordingController, eventManager: EventManager):
19+
return RecordingView(recordingController, eventManager)
1720

1821
def getVideoView(self):
1922
return VideoView(self.eventManager)

temp_video.mp4

-35.8 MB
Binary file not shown.

view/RecordingView.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import tkinter as tk
2+
from tkinter import ttk
3+
from typing import Callable
4+
import TKinterModernThemes as TKMT
5+
import cv2
6+
from PIL import Image, ImageTk
7+
from pytube import YouTube
8+
import threading
9+
import queue
10+
from controller.VideoController import VideoController
11+
from controller.YoutubeController import YoutubeController
12+
from library.AppEvent import AppEvent, AppEventType
13+
from managers.EventManager import EventManager
14+
from controller.RecordingController import RecordingController
15+
import json
16+
from dataclasses import dataclass, field, asdict
17+
18+
from view.View import View
19+
import time
20+
21+
class RecordingView(View):
22+
23+
def __init__(self, recordingController: RecordingController, eventManager: EventManager) -> None:
24+
super().__init__()
25+
self.eventManager = eventManager
26+
self.recordingController = recordingController
27+
28+
def render(self, parent: TKMT.WidgetFrame):
29+
self.parent = parent
30+
self.parent.Text("Recording View")
31+
32+
def updateAnnotations(self):
33+
34+
self.singleFrameAnnotations = self.recordingController._recording.singleFrameAnnotation
35+
self.multiFrameAnnotations = self.recordingController._recording.multiFrameAnnotations
36+
37+
self.singleFrameJSON = [asdict(annotation) for annotation in self.singleFrameAnnotations]
38+
print(self.singleFrameJSON)
39+
40+
self.parent.Treeview(['Annotations'], [120], 10, self.singleFrameJSON, 'subfiles', ['name', 'purpose'], openkey='open')

0 commit comments

Comments
 (0)