Skip to content

Commit b8bd43b

Browse files
Update README.md
Model View separation for the shared video list area on the left
1 parent bf0ecbf commit b8bd43b

1 file changed

Lines changed: 10 additions & 9 deletions

File tree

annotation_tool/README.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,44 @@
22

33
This project is a professional video annotation desktop application built with **PyQt6**. It features a dual-mode architecture supporting both **Whole-Video Classification** and **Action Spotting (Localization)** tasks.
44

5-
The project follows a modular **MVC (Model-View-Controller)** design pattern to ensure separation of concerns between data handling, business logic, and user interface. Recent updates have unified the UI architecture using a composite design pattern.
5+
The project follows a modular **MVC (Model-View-Controller)** design pattern to ensure separation of concerns between data handling, business logic, and user interface. Recent updates have unified the UI architecture using a composite design pattern and migrated the resource management to a robust **Qt Model/View** architecture.
66

77
## 📂 Project Structure Overview
88

99
```text
1010
annotation_tool/
1111
├── main.py # Application entry point
1212
├── viewer.py # Main Window controller (orchestrates UI & Logic)
13-
├── models.py # Data models, application state, and JSON validation
1413
├── utils.py # Helper functions and constants
1514
├── __init__.py # Package initialization
1615
16+
├── models/ # [Model Layer] Data Structures & State
17+
│ ├── __init__.py
18+
│ ├── app_state.py # Global Application State & Undo/Redo Stack
19+
│ └── project_tree.py # Shared QStandardItemModel for File Tree (MV Pattern)
20+
1721
├── style/ # Visual theme assets
1822
│ └── style.qss # Dark mode stylesheet (default)
1923
20-
├── controllers/ # [Logic Layer] Business logic
24+
├── controllers/ # [Controller Layer] Business logic
2125
│ ├── __init__.py
2226
│ ├── router.py # Routing logic (Project loading & mode switching)
2327
│ ├── history_manager.py # Universal Undo/Redo system
2428
│ │
2529
│ ├── classification/ # Logic for Classification mode
2630
│ │ ├── annotation_manager.py
2731
│ │ ├── class_file_manager.py
28-
│ │ └── navigation_manager.py
32+
│ │ └── navigation_manager.py # Handles interaction with the shared Tree Model
2933
│ │
3034
│ └── localization/ # Logic for Localization mode
3135
│ ├── loc_file_manager.py
32-
│ └── localization_manager.py
36+
│ └── localization_manager.py # Handles interaction with the shared Tree Model
3337
3438
└── ui/ # [View Layer] Interface definitions
3539
├── common/ # Shared widgets & layouts
3640
│ ├── main_window.py # Main UI Assembler (Stacks Views)
3741
│ ├── workspace.py # Generic 3-Column Layout (UnifiedTaskPanel)
38-
│ ├── clip_explorer.py # Universal Left Sidebar (Tree & Filters)
42+
│ ├── clip_explorer.py # Universal Left Sidebar (QTreeView implementation)
3943
│ ├── project_controls.py # Unified control buttons (Save, Export, etc.)
4044
│ ├── dialogs.py # Pop-up dialogs (Wizard, File Picker)
4145
│ └── welcome_widget.py # Welcome screen
@@ -62,9 +66,6 @@ annotation_tool/
6266
├── annotation_table.py # Event list table
6367
├── spotting_controls.py # Tabbed spotting interface
6468
└── __init__.py # Exposes LocRightPanel
65-
66-
```
67-
6869
---
6970
7071
## 📝 File & Module Descriptions

0 commit comments

Comments
 (0)