"""
Layout management and view coordination for TUI interface.
DEPRECATED: This is now a fallback component. The primary interface uses Textual.
"""
import warnings
try:
from rich.layout import Layout
RICH_AVAILABLE = True
except ImportError:
RICH_AVAILABLE = False
[docs]
class LayoutManager:
"""Manages layout composition and view switching for the TUI interface.
DEPRECATED: This is now a fallback component. The primary interface uses Textual.
"""
def __init__(self, component_builder):
warnings.warn(
"LayoutManager is deprecated. Use the Textual interface for modern TUI experience.",
DeprecationWarning,
stacklevel=2,
)
self.components = component_builder
[docs]
def create_dashboard(self):
"""Create a compact dashboard that fits in standard terminal windows."""
layout = Layout()
# Split into header, main content, and footer (more compact)
layout.split_column(
Layout(name="header", size=2),
Layout(name="main"),
Layout(name="footer", size=2),
)
# Split main content into two columns only for better fit
layout["main"].split_row(
Layout(name="left", ratio=3),
Layout(name="right", ratio=2),
)
# Split left column: stats and memories only
layout["left"].split_column(
Layout(name="stats", size=10),
Layout(name="memories"),
)
# Right column: performance only (compact)
layout["right"].update(self.components.create_compact_performance_panel())
# Create compact panels
layout["header"].update(self.components.create_compact_header())
layout["stats"].update(self.components.create_compact_stats_panel())
layout["memories"].update(self.components.create_compact_memories_panel())
layout["footer"].update(self.components.create_compact_footer())
return layout
[docs]
def create_memory_browser(self):
"""Create memory browser view with full table display."""
layout = Layout()
layout.split_column(
Layout(name="header", size=3),
Layout(name="main"),
Layout(name="footer", size=3),
)
# Main content for memory browser
layout["main"].split_column(
Layout(name="stats", size=8),
Layout(name="memories"),
)
# Use full components for browser view
layout["header"].update(self.components.create_header())
layout["stats"].update(self.components.create_stats_panel())
layout["memories"].update(self.components.create_recent_memories_panel())
layout["footer"].update(self.components.create_footer())
return layout
[docs]
def create_config_view(self):
"""Create configuration and system diagnostics view."""
return self.components.create_config_view()
[docs]
def get_view(self, view_name):
"""Get the appropriate view based on the view name."""
if view_name == "dashboard":
return self.create_dashboard()
elif view_name == "memories":
return self.create_memory_browser()
elif view_name == "performance":
return self.create_performance_view()
elif view_name == "config":
return self.create_config_view()
else:
# Default to dashboard
return self.create_dashboard()