## Enumerations present in the code base ```java Enum VivyDocument_Capability { AssAble VideoAble AudioAble } Enum VivyDocument_Option { NoOption UntouchedByDefault MemoryDocumentCreation } ``` ## Global UML Class Diagram ```mermaid classDiagram direction TB %% The TopLevel Application class VivyApplication { +Font getApplicationFont(VivyApplication_FontId) +Ptr~MainWindow~ getMainWindow() +Ptr~AbstractDocument~ getCurrentDocument() } %% LIB classes class ScriptDocument { -Ptr~QTextDocument~ textDocument +attachTextDocument(Ptr~QTextDocument~) } class VivyDocument { +bool loadSubDocument(String) +bool loadSubDocument(String, VivyDocument_Capability) +bool checkDocumentCapabilities(VivyDocument_Capability) +bool checkDocumentOptions(VivyDocument_Option) +SharedPtr~AudioSubDocument~ getAudioSubDocument() +SharedPtr~VideoSubDocument~ getVideoSubDocument() +SharedPtr~AssSubDocument~ getAssSubDocument() } class AbstractDocument { <<Abstract>> +copy(String)* +rename(String)* +save()* +String getName() +Type getType() +Uuid getUuid() } class ScriptStore { <<Store>> +loadScriptFolder(String) +executeScript(Uuid) +executeScript(Uuid, SharedPtr~VivyDocument~) +String getLastLuaError() -UniquePtr~LuaContext~ luaContext } class VivyDocumentStore { <<Store>> +newDocument(VivyDocument_Option) } class CRTPStore~Document~ { <<Interface>> +SharedPtr~Document~ loadDocument() +SharedPtr~Document~ getDocument() +closeDocument(Uuid) +bool isDocumentPresent(Uuid) } %% Here comes the different relations VivyDocumentStore ..|> CRTPStore ScriptStore ..|> CRTPStore VivyDocument --|> AbstractDocument ScriptDocument --|> AbstractDocument VivyDocumentStore --> "*" VivyDocument ScriptStore --> "*" ScriptDocument VivyDocumentStore --* VivyApplication ScriptStore --* VivyApplication ``` ## UI UML Class Diagram ```mermaid classDiagram direction TB class AbstractDocumentView { +closeDocument()* +openProperties()* +String getDocumentTabName()* +String getDocumentTabToolTip()* +Icon getDocumentTabIcon()* +Ptr~AbstractDocument~ getDocument()* +List~QActionPtr~ getViewsActions() +bool isType(Utils_DocumentType) +Type getType() #delDockWidget(PPtr~Dock~) #addDockWidget(Qt_DockWidgetArea, Ptr~Dock~, Qt_Orientation) #List~QActionPtr~ viewsActions } class VivyDocumentView { -Ptr~AudioVisualizer~ visualizer -Ptr~VideoView~ videoWidget -Ptr~AssView~ assView } class ScriptDocumentView { -Ptr~QTextEdit~ scriptEditor } class MainWindow { -QTabWidget~AbstractDocumentView~ documents } VivyDocumentView --|> AbstractDocumentView ScriptDocumentView --|> AbstractDocumentView MainWindow --> AbstractDocumentView : documents ``` --- *[Home](../home)*