@startuml class MainWindow { +menu_bar: QMenuBar +project_list: ProjectListWidget +workspace: WorkspaceManager +status_bar: QStatusBar } class ProjectListWidget { +project_tree: QTreeWidget +context_menu: QMenu +discover_projects() +handle_context_menu() } class WorkspaceManager { +panes: List[PaneWidget] +splitter: QSplitter +split_horizontal() +split_vertical() +close_pane() } class PaneWidget { +tab_bar: QTabBar +tabs: List[QTabWidget] +add_tab() +close_tab() } class TerminalWidget { +pty: pty.process +screen: pyte.Screen +terminal: QPlainTextEdit +start_shell() +handle_input() } MainWindow --> ProjectListWidget MainWindow --> WorkspaceManager WorkspaceManager --> PaneWidget PaneWidget --> TerminalWidget ProjectListWidget --> dialogs @enduml