Skip to content

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