mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 00:57:12 -05:00
169 lines
3.9 KiB
Python
169 lines
3.9 KiB
Python
"""Core OS state management"""
|
|
from typing import Optional
|
|
from core_os.models import OSState, Window, UserSession, WindowState
|
|
|
|
|
|
# Global in-memory state (in production, this would be in Redis/DB)
|
|
_current_state: Optional[OSState] = None
|
|
|
|
|
|
def get_initial_state() -> OSState:
|
|
"""
|
|
Get initial OS state
|
|
|
|
Returns:
|
|
Fresh OSState with default configuration
|
|
"""
|
|
global _current_state
|
|
|
|
if _current_state is None:
|
|
_current_state = OSState(
|
|
session=UserSession(display_name="BlackRoad User"),
|
|
desktop_items=[
|
|
{
|
|
"id": "my-computer",
|
|
"label": "My Computer",
|
|
"icon": "🖥️",
|
|
"app_id": "computer",
|
|
},
|
|
{
|
|
"id": "prism-console",
|
|
"label": "Prism Console",
|
|
"icon": "⚡",
|
|
"app_id": "prism",
|
|
},
|
|
{
|
|
"id": "lucidia",
|
|
"label": "Lucidia",
|
|
"icon": "🧠",
|
|
"app_id": "lucidia",
|
|
},
|
|
],
|
|
taskbar_items=[
|
|
{"id": "start-menu", "label": "Start", "icon": "🪟"},
|
|
],
|
|
system_tray_items=[
|
|
{"id": "network", "icon": "🌐", "status": "connected"},
|
|
{"id": "volume", "icon": "🔊", "status": "on"},
|
|
{"id": "clock", "icon": "🕐", "status": "active"},
|
|
],
|
|
)
|
|
|
|
return _current_state
|
|
|
|
|
|
def get_current_state() -> OSState:
|
|
"""Get current OS state (or initialize if not exists)"""
|
|
return get_initial_state()
|
|
|
|
|
|
def open_window(app_id: str, title: Optional[str] = None) -> OSState:
|
|
"""
|
|
Open a new window for the specified app
|
|
|
|
Args:
|
|
app_id: Application identifier
|
|
title: Window title (optional, defaults to app_id)
|
|
|
|
Returns:
|
|
Updated OS state
|
|
"""
|
|
state = get_current_state()
|
|
|
|
# Create new window
|
|
window = Window(
|
|
app_id=app_id,
|
|
title=title or app_id.replace("-", " ").title(),
|
|
z_index=len(state.windows),
|
|
)
|
|
|
|
# Add to windows list
|
|
state.windows.append(window)
|
|
state.active_window_id = window.id
|
|
|
|
return state
|
|
|
|
|
|
def close_window(window_id: str) -> OSState:
|
|
"""
|
|
Close a window
|
|
|
|
Args:
|
|
window_id: Window identifier
|
|
|
|
Returns:
|
|
Updated OS state
|
|
"""
|
|
state = get_current_state()
|
|
|
|
# Find and remove window
|
|
state.windows = [w for w in state.windows if w.id != window_id]
|
|
|
|
# Update active window if needed
|
|
if state.active_window_id == window_id:
|
|
state.active_window_id = state.windows[0].id if state.windows else None
|
|
|
|
return state
|
|
|
|
|
|
def minimize_window(window_id: str) -> OSState:
|
|
"""
|
|
Minimize a window
|
|
|
|
Args:
|
|
window_id: Window identifier
|
|
|
|
Returns:
|
|
Updated OS state
|
|
"""
|
|
state = get_current_state()
|
|
|
|
for window in state.windows:
|
|
if window.id == window_id:
|
|
window.state = WindowState.MINIMIZED
|
|
break
|
|
|
|
return state
|
|
|
|
|
|
def maximize_window(window_id: str) -> OSState:
|
|
"""
|
|
Maximize a window
|
|
|
|
Args:
|
|
window_id: Window identifier
|
|
|
|
Returns:
|
|
Updated OS state
|
|
"""
|
|
state = get_current_state()
|
|
|
|
for window in state.windows:
|
|
if window.id == window_id:
|
|
window.state = WindowState.MAXIMIZED
|
|
break
|
|
|
|
return state
|
|
|
|
|
|
def set_active_window(window_id: str) -> OSState:
|
|
"""
|
|
Set the active (focused) window
|
|
|
|
Args:
|
|
window_id: Window identifier
|
|
|
|
Returns:
|
|
Updated OS state
|
|
"""
|
|
state = get_current_state()
|
|
state.active_window_id = window_id
|
|
return state
|
|
|
|
|
|
def reset_state() -> OSState:
|
|
"""Reset OS state to initial state"""
|
|
global _current_state
|
|
_current_state = None
|
|
return get_initial_state()
|