Planning Browser Controller¶
Orchestration controller with four mixins and one sub-controller for specialized operations.
Files¶
planning_browser_controller.py (Orchestration)¶
PlanningBrowserController -- the main coordinator. Handles:
- Loading projects and wiring controller signals
- Item selection and detail panel population
- Detail panel change commitment (delta -> session commands)
- Status changes from detail panel and context menu
- Footer state updates
- Panel arrangement management
Inherits from all mixin classes + QObject. Creates sub-controllers.
commands.py¶
Session command classes for undo/redo support:
RenameItemCommand, ChangeStatusCommand, UpdateItemFieldCommand,
UpdateItemPropertiesCommand, AddItemCommand, DeleteItemCommand,
MoveItemCommand, ReorderChildrenCommand.
sub_controllers/¶
Mixins (shared state, no own lifecycle)¶
| File | Class | Purpose |
|---|---|---|
crud_handler.py |
CrudHandler |
Rename, delete, copy, paste, clone subtree |
drag_drop_handler.py |
DragDropHandler |
Internal moves, sibling reorder, library item drops |
context_menu_handler.py |
ContextMenuHandler |
FluentContextMenu building with status submenu |
session_handler.py |
SessionHandler |
Undo/redo, save, auto-persist, heavy batch wrapper |
Sub-controllers (QObject, own lifecycle)¶
| File | Class | Purpose |
|---|---|---|
library_export_controller.py |
LibraryExportController |
Export project subtree to user library |