capcat.core.source_system.bundle_ui
File: Application/capcat/core/source_system/bundle_ui.py
Description
User interface components for bundle management. Uses questionary for consistent menu design.
Classes
BundleUI
Interactive UI for bundle management.
Methods
init
def __init__(self)
Parameters:
self
show_bundle_menu
def show_bundle_menu(self) -> Optional[str]
Show main bundle management menu.
Returns: Selected action or None if cancelled
Parameters:
self
Returns: Optional[str]
prompt_create_bundle
def prompt_create_bundle(self) -> Optional[BundleData]
Prompt user for new bundle information.
Returns: BundleData or None if cancelled
Parameters:
self
Returns: Optional[BundleData]
prompt_edit_bundle_metadata
def prompt_edit_bundle_metadata(self, current_description: str) -> Optional[Dict[str, any]]
Prompt user to edit bundle metadata.
Args: current_description: Current description
Returns: Dictionary with updated values or None if cancelled
Parameters:
selfcurrent_description(str)
Returns: Optional[Dict[str, any]]
prompt_select_bundle
def prompt_select_bundle(self, bundles: List[Dict[str, any]], message: str = ' Select a bundle:', show_cancel: bool = True) -> Optional[str]
Prompt user to select a bundle from list.
Args: bundles: List of bundle dictionaries message: Prompt message show_cancel: Whether to show cancel option
Returns: Selected bundle_id or None if cancelled
Parameters:
selfbundles(List[Dict[str, any]])message(str) optionalshow_cancel(bool) optional
Returns: Optional[str]
prompt_select_sources
def prompt_select_sources(self, sources: Dict[str, str], current_selections: List[str] = None, message: str = ' Select sources:', group_by_category: bool = True) -> Optional[List[str]]
Prompt user to multi-select sources.
Args: sources: Dict of source_id -> display_name current_selections: Pre-selected source IDs message: Prompt message group_by_category: Whether to group sources by category
Returns: List of selected source IDs or None if cancelled
Parameters:
selfsources(Dict[str, str])current_selections(List[str]) optionalmessage(str) optionalgroup_by_category(bool) optional
Returns: Optional[List[str]]
prompt_copy_or_move
def prompt_copy_or_move(self) -> Optional[str]
Prompt user to choose between copy and move mode.
Returns: ‘copy’ or ‘move’ or None if cancelled
Parameters:
self
Returns: Optional[str]
show_bundle_details
def show_bundle_details(self, bundle_info: Dict[str, any]) -> None
Display detailed bundle information.
Args: bundle_info: Bundle information dictionary
Parameters:
selfbundle_info(Dict[str, any])
Returns: None
show_all_bundles
def show_all_bundles(self, bundles: List[Dict[str, any]]) -> None
Display all bundles in a formatted list.
Args: bundles: List of bundle dictionaries
Parameters:
selfbundles(List[Dict[str, any]])
Returns: None
prompt_confirm
def prompt_confirm(self, message: str, details: List[str] = None, default: bool = False) -> bool
Prompt user for confirmation.
Args: message: Confirmation question details: Optional list of detail lines to show default: Default response
Returns: True if confirmed, False otherwise
Parameters:
selfmessage(str)details(List[str]) optionaldefault(bool) optional
Returns: bool
show_success
def show_success(self, message: str) -> None
Display success message.
Parameters:
selfmessage(str)
Returns: None
show_error
def show_error(self, message: str) -> None
Display error message.
Parameters:
selfmessage(str)
Returns: None
show_info
def show_info(self, message: str) -> None
Display informational message.
Parameters:
selfmessage(str)
Returns: None
show_warning
def show_warning(self, message: str) -> None
Display warning message.
Parameters:
selfmessage(str)
Returns: None