Documentation
¶
Index ¶
- Constants
- func CreateAboutDialog(versionInfo *version.BuildInfo, onClose func()) *tview.Modal
- func CreateConfirmDialog(title, message string, onConfirm, onCancel func()) *tview.Modal
- func CreateErrorDialog(title, message string, onClose func()) *tview.Modal
- func CreateErrorDialogWithScrollableText(title, message string, onClose func()) *tview.Modal
- func CreateFormDialog(title string, fields []FormField, onSubmit, onCancel func(map[string]string)) *tview.Form
- func CreateInfoDialog(title, message string, onClose func()) *tview.Modal
- func CreateLoginForm() *tview.Form
- func CreateSuccessDialogWithURL(title, message string, onClose func()) *tview.Modal
- func FormatFooterText(keys config.KeyBindings) string
- func NewConfigWizardPage(app *tview.Application, cfg *config.Config, configPath string, ...) tview.Primitive
- func SaveConfigToFile(cfg *config.Config, path string) error
- type App
- type ButtonAlignment
- type CleanConfig
- type ClusterStatus
- type ClusterStatusComponent
- type ContextMenu
- type EnhancedNetworkInterface
- type Footer
- func (f *Footer) IsLoading() bool
- func (f *Footer) SetLoading(loading bool)
- func (f *Footer) TickSpinner()
- func (f *Footer) UpdateAutoRefreshCountdown(seconds int)
- func (f *Footer) UpdateAutoRefreshStatus(active bool)
- func (f *Footer) UpdateKeybindings(text string)
- func (f *Footer) UpdateVNCSessionCount(count int)
- type FooterComponent
- type FormButton
- func (b *FormButton) Blur()
- func (b *FormButton) Draw(screen tcell.Screen)
- func (b *FormButton) Focus(delegate func(p tview.Primitive))
- func (b *FormButton) GetFieldHeight() int
- func (b *FormButton) GetFieldWidth() int
- func (b *FormButton) GetLabel() string
- func (b *FormButton) HasFocus() bool
- func (b *FormButton) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive))
- func (b *FormButton) IsDisabled() bool
- func (b *FormButton) SetAlignment(alignment ButtonAlignment) *FormButton
- func (b *FormButton) SetCustomPosition(x, y int) *FormButton
- func (b *FormButton) SetDisabled(disabled bool) tview.FormItem
- func (b *FormButton) SetFieldWidth(width int) tview.FormItem
- func (b *FormButton) SetFinishedFunc(handler func(key tcell.Key)) tview.FormItem
- func (b *FormButton) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) tview.FormItem
- func (b *FormButton) SetLabel(label string) tview.FormItem
- func (b *FormButton) SetSelectedFunc(handler func()) *FormButton
- type FormField
- type Header
- func (h *Header) GetCurrentProfile() string
- func (h *Header) IsLoading() bool
- func (h *Header) SetApp(app *tview.Application)
- func (h *Header) SetText(text string)
- func (h *Header) SetTitle(title string)
- func (h *Header) ShowActiveProfile(profileName string)
- func (h *Header) ShowError(message string)
- func (h *Header) ShowLoading(message string)
- func (h *Header) ShowSuccess(message string)
- func (h *Header) ShowWarning(message string)
- func (h *Header) StopLoading()
- type HeaderComponent
- type HelpModal
- type NodeDetails
- type NodeDetailsComponent
- type NodeList
- func (nl *NodeList) GetNodes() []*api.Node
- func (nl *NodeList) GetSelectedNode() *api.Node
- func (nl *NodeList) SetApp(app *App)
- func (nl *NodeList) SetCurrentItem(index int) *tview.List
- func (nl *NodeList) SetNodeChangedFunc(handler func(*api.Node))
- func (nl *NodeList) SetNodeSelectedFunc(handler func(*api.Node))
- func (nl *NodeList) SetNodes(nodes []*api.Node)
- type NodeListComponent
- type ScriptSelector
- type SnapshotForm
- type SnapshotManager
- type SnapshotOperations
- func (so *SnapshotOperations) CreateSnapshot(name string, description string, vmState bool) error
- func (so *SnapshotOperations) DeleteSnapshot(snapshotName string) error
- func (so *SnapshotOperations) GetSnapshots() ([]api.Snapshot, error)
- func (so *SnapshotOperations) RollbackToSnapshot(snapshotName string) error
- type SnapshotTable
- type TasksList
- func (tl *TasksList) Clear() *tview.Table
- func (tl *TasksList) GetSelectedTask() *api.ClusterTask
- func (tl *TasksList) Select(row, column int) *tview.Table
- func (tl *TasksList) SetApp(app *App)
- func (tl *TasksList) SetFilteredTasks(tasks []*api.ClusterTask)
- func (tl *TasksList) SetTasks(tasks []*api.ClusterTask)
- type TasksListComponent
- type VMConfigPage
- type VMDetails
- type VMDetailsComponent
- type VMList
- func (vl *VMList) GetSelectedVM() *api.VM
- func (vl *VMList) GetVMs() []*api.VM
- func (vl *VMList) SetApp(app *App)
- func (vl *VMList) SetCurrentItem(index int) *tview.List
- func (vl *VMList) SetVMChangedFunc(handler func(*api.VM))
- func (vl *VMList) SetVMSelectedFunc(handler func(*api.VM))
- func (vl *VMList) SetVMs(vms []*api.VM)
- type VMListComponent
- type WizardResult
Constants ¶
const (
CurrentSnapshotName = "current"
)
Variables ¶
This section is empty.
Functions ¶
func CreateAboutDialog ¶
CreateAboutDialog creates an about dialog with version information and links.
func CreateConfirmDialog ¶
CreateConfirmDialog creates a confirmation dialog.
func CreateErrorDialog ¶
CreateErrorDialog creates an error dialog.
func CreateErrorDialogWithScrollableText ¶
CreateErrorDialogWithScrollableText creates an error dialog with scrollable text for long URLs.
func CreateFormDialog ¶
func CreateFormDialog(title string, fields []FormField, onSubmit, onCancel func(map[string]string)) *tview.Form
CreateFormDialog creates a form dialog with custom fields.
func CreateInfoDialog ¶
CreateInfoDialog creates an information dialog.
func CreateLoginForm ¶
CreateLoginForm creates a login form dialog.
func CreateSuccessDialogWithURL ¶
CreateSuccessDialogWithURL creates a success dialog with URL information for VNC connections.
func FormatFooterText ¶
func FormatFooterText(keys config.KeyBindings) string
FormatFooterText builds the footer key binding text from config.
func NewConfigWizardPage ¶
func NewConfigWizardPage(app *tview.Application, cfg *config.Config, configPath string, saveFn func(*config.Config) error, cancelFn func(), resultChan chan<- WizardResult) tview.Primitive
NewConfigWizardPage creates a new configuration wizard page.
Types ¶
type App ¶
type App struct {
*tview.Application
// contains filtered or unexported fields
}
App is the main application component.
func (*App) CloseConnectionProfilesMenu ¶
func (a *App) CloseConnectionProfilesMenu()
CloseConnectionProfilesMenu closes the connection profiles menu and restores the previous focus.
func (*App) CloseContextMenu ¶
func (a *App) CloseContextMenu()
CloseContextMenu closes the context menu and restores the previous focus.
func (*App) GetVNCService ¶
GetVNCService returns the VNC service instance.
func (*App) ShowGlobalContextMenu ¶
func (a *App) ShowGlobalContextMenu()
ShowGlobalContextMenu displays the global context menu for app-wide actions.
func (*App) ShowNodeContextMenu ¶
func (a *App) ShowNodeContextMenu()
ShowNodeContextMenu displays the context menu for node actions.
func (*App) ShowVMContextMenu ¶
func (a *App) ShowVMContextMenu()
ShowVMContextMenu displays the context menu for VM actions.
type ButtonAlignment ¶
type ButtonAlignment int
ButtonAlignment defines how the button should be positioned within its container.
const ( // AlignCenter centers the button horizontally (default) AlignCenter ButtonAlignment = iota // AlignLeft aligns the button to the left AlignLeft // AlignRight aligns the button to the right AlignRight // AlignCustom uses custom positioning (x, y coordinates) AlignCustom )
type CleanConfig ¶
type CleanConfig struct {
Profiles map[string]config.ProfileConfig `yaml:"profiles,omitempty"`
DefaultProfile string `yaml:"default_profile,omitempty"`
Debug bool `yaml:"debug,omitempty"`
CacheDir string `yaml:"cache_dir,omitempty"`
KeyBindings config.KeyBindings `yaml:"key_bindings,omitempty"`
Theme config.ThemeConfig `yaml:"theme,omitempty"`
// Legacy fields only included when no profiles are defined
Addr string `yaml:"addr,omitempty"`
User string `yaml:"user,omitempty"`
Password string `yaml:"password,omitempty"`
TokenID string `yaml:"token_id,omitempty"`
TokenSecret string `yaml:"token_secret,omitempty"`
Realm string `yaml:"realm,omitempty"`
ApiPath string `yaml:"api_path,omitempty"`
Insecure bool `yaml:"insecure,omitempty"`
SSHUser string `yaml:"ssh_user,omitempty"`
}
CleanConfig represents a clean config structure without legacy fields when profiles are used
type ClusterStatus ¶
type ClusterStatus struct {
*tview.Flex
SummaryTable *tview.Table
ResourceTable *tview.Table
// contains filtered or unexported fields
}
ClusterStatus encapsulates the cluster status panel.
func NewClusterStatus ¶
func NewClusterStatus() *ClusterStatus
NewClusterStatus creates a new cluster status panel.
func (*ClusterStatus) SetApp ¶
func (cs *ClusterStatus) SetApp(app *App)
SetApp sets the application reference.
func (*ClusterStatus) Update ¶
func (cs *ClusterStatus) Update(cluster *api.Cluster)
Update populates both tables with current cluster data.
type ClusterStatusComponent ¶
type ContextMenu ¶
type ContextMenu struct {
// contains filtered or unexported fields
}
ContextMenu represents a popup menu with actions for a selected item.
func NewContextMenu ¶
func NewContextMenu(title string, actions []string, onAction func(index int, action string)) *ContextMenu
NewContextMenu creates a new context menu component.
func NewContextMenuWithShortcuts ¶
func NewContextMenuWithShortcuts(title string, actions []string, shortcuts []rune, onAction func(index int, action string)) *ContextMenu
NewContextMenuWithShortcuts creates a new context menu component with custom shortcuts.
func (*ContextMenu) SetApp ¶
func (cm *ContextMenu) SetApp(app *App)
SetApp sets the parent app reference.
func (*ContextMenu) Show ¶
func (cm *ContextMenu) Show() *tview.List
Show displays the context menu as a modal.
type EnhancedNetworkInterface ¶
type EnhancedNetworkInterface struct {
// From configuration
Interface string
Model string
MACAddr string
Bridge string
VLAN string
Rate string
ConfiguredIP string
Gateway string
Firewall bool
// From guest agent
RuntimeName string
RuntimeIPs []string
IsUp bool
HasGuestAgent bool
IsGuestOnly bool // True if this interface is only visible via guest agent
}
EnhancedNetworkInterface represents enhanced network information with both config and runtime data.
type Footer ¶
type Footer struct {
// contains filtered or unexported fields
}
Footer encapsulates the application footer.
func NewFooter ¶
func NewFooter() *Footer
NewFooter creates a new application footer with key bindings.
func (*Footer) IsLoading ¶
IsLoading returns true if the footer is currently showing a loading spinner.
func (*Footer) SetLoading ¶
SetLoading sets the loading state and resets the spinner.
func (*Footer) TickSpinner ¶
func (f *Footer) TickSpinner()
TickSpinner advances the loading spinner animation once.
func (*Footer) UpdateAutoRefreshCountdown ¶
UpdateAutoRefreshCountdown updates the countdown for the next auto-refresh.
func (*Footer) UpdateAutoRefreshStatus ¶
UpdateAutoRefreshStatus updates the auto-refresh status display.
func (*Footer) UpdateKeybindings ¶
UpdateKeybindings updates the footer text with custom key bindings.
func (*Footer) UpdateVNCSessionCount ¶
UpdateVNCSessionCount updates the VNC session count display.
type FooterComponent ¶
type FormButton ¶
FormButton is a reusable FormItem that acts like a button and can be placed anywhere in a tview.Form.
func NewFormButton ¶
func NewFormButton(label string, selected func()) *FormButton
NewFormButton creates a new FormButton with the given label and callback.
func (*FormButton) Draw ¶
func (b *FormButton) Draw(screen tcell.Screen)
Draw renders the button by delegating to the embedded tview.Button.
func (*FormButton) Focus ¶
func (b *FormButton) Focus(delegate func(p tview.Primitive))
Focus sets the button as focused.
func (*FormButton) GetFieldHeight ¶
func (b *FormButton) GetFieldHeight() int
GetFieldHeight returns the height of the button (always 1).
func (*FormButton) GetFieldWidth ¶
func (b *FormButton) GetFieldWidth() int
GetFieldWidth returns the width of the button (label length).
func (*FormButton) GetLabel ¶
func (b *FormButton) GetLabel() string
GetLabel returns the button label.
func (*FormButton) HasFocus ¶
func (b *FormButton) HasFocus() bool
HasFocus returns true if the button is focused.
func (*FormButton) InputHandler ¶
func (b *FormButton) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive))
InputHandler handles key events for the button by delegating to the embedded button.
func (*FormButton) IsDisabled ¶
func (b *FormButton) IsDisabled() bool
IsDisabled returns true if the button is disabled.
func (*FormButton) SetAlignment ¶
func (b *FormButton) SetAlignment(alignment ButtonAlignment) *FormButton
SetAlignment sets the button's alignment within its container.
func (*FormButton) SetCustomPosition ¶
func (b *FormButton) SetCustomPosition(x, y int) *FormButton
SetCustomPosition sets custom positioning for the button (only used when alignment is AlignCustom).
func (*FormButton) SetDisabled ¶
func (b *FormButton) SetDisabled(disabled bool) tview.FormItem
SetDisabled sets whether the button is disabled.
func (*FormButton) SetFieldWidth ¶
func (b *FormButton) SetFieldWidth(width int) tview.FormItem
SetFieldWidth is a no-op for FormButton.
func (*FormButton) SetFinishedFunc ¶
func (b *FormButton) SetFinishedFunc(handler func(key tcell.Key)) tview.FormItem
SetFinishedFunc sets the doneFunc for Tab/Backtab navigation.
func (*FormButton) SetFormAttributes ¶
func (b *FormButton) SetFormAttributes(labelWidth int, labelColor, bgColor, fieldTextColor, fieldBgColor tcell.Color) tview.FormItem
SetFormAttributes is a no-op for FormButton (to satisfy tview.FormItem interface).
func (*FormButton) SetLabel ¶
func (b *FormButton) SetLabel(label string) tview.FormItem
SetLabel sets the button label.
func (*FormButton) SetSelectedFunc ¶
func (b *FormButton) SetSelectedFunc(handler func()) *FormButton
SetSelectedFunc sets the callback for when the button is pressed.
type Header ¶
Header encapsulates the application header.
func (*Header) GetCurrentProfile ¶
GetCurrentProfile returns the currently connected profile name.
func (*Header) IsLoading ¶
IsLoading reports whether the header is currently showing a loading state.
func (*Header) SetApp ¶
func (h *Header) SetApp(app *tview.Application)
SetApp sets the application reference for UI updates.
func (*Header) ShowActiveProfile ¶
ShowActiveProfile displays the active profile in the header.
func (*Header) ShowLoading ¶
ShowLoading displays an animated loading indicator.
func (*Header) ShowSuccess ¶
ShowSuccess displays a success message temporarily.
func (*Header) ShowWarning ¶
ShowWarning displays a warning message temporarily.
func (*Header) StopLoading ¶
func (h *Header) StopLoading()
StopLoading stops the loading animation.
type HeaderComponent ¶
type HelpModal ¶
HelpModal represents a modal dialog showing keybindings and usage information.
func NewHelpModal ¶
func NewHelpModal(keys config.KeyBindings) *HelpModal
NewHelpModal creates a new help modal.
type NodeDetails ¶
NodeDetails encapsulates the node details panel.
func NewNodeDetails ¶
func NewNodeDetails() *NodeDetails
NewNodeDetails creates a new node details panel.
func (*NodeDetails) Clear ¶
func (nd *NodeDetails) Clear() *tview.Table
Clear wraps the table Clear method to satisfy the interface.
func (*NodeDetails) SetApp ¶
func (nd *NodeDetails) SetApp(app *App)
SetApp sets the parent app reference for focus management.
type NodeDetailsComponent ¶
type NodeList ¶
NodeList encapsulates the node list panel.
func (*NodeList) GetSelectedNode ¶
GetSelectedNode returns the currently selected node.
func (*NodeList) SetCurrentItem ¶
SetCurrentItem wraps the list method to match the interface.
func (*NodeList) SetNodeChangedFunc ¶
SetNodeChangedFunc sets the function to be called when selection changes.
func (*NodeList) SetNodeSelectedFunc ¶
SetNodeSelectedFunc sets the function to be called when a node is selected.
type NodeListComponent ¶
type ScriptSelector ¶
ScriptSelector represents a page-based script selector for installing community scripts.
func NewScriptSelector ¶
NewScriptSelector creates a new script selector.
type SnapshotForm ¶
type SnapshotForm struct {
// contains filtered or unexported fields
}
SnapshotForm manages the create snapshot form.
func NewSnapshotForm ¶
func NewSnapshotForm(app *App, vm *api.VM) *SnapshotForm
NewSnapshotForm creates a new snapshot form handler.
func (*SnapshotForm) ShowCreateForm ¶
func (sf *SnapshotForm) ShowCreateForm(onSuccess func())
ShowCreateForm displays the create snapshot form.
type SnapshotManager ¶
SnapshotManager manages the snapshot interface for VMs and containers.
func NewSnapshotManager ¶
func NewSnapshotManager(app *App, vm *api.VM) *SnapshotManager
NewSnapshotManager creates a new snapshot manager for the given VM.
type SnapshotOperations ¶
type SnapshotOperations struct {
// contains filtered or unexported fields
}
SnapshotOperations handles snapshot CRUD operations.
func NewSnapshotOperations ¶
func NewSnapshotOperations(app *App, vm *api.VM) *SnapshotOperations
NewSnapshotOperations creates a new snapshot operations handler.
func (*SnapshotOperations) CreateSnapshot ¶
func (so *SnapshotOperations) CreateSnapshot(name string, description string, vmState bool) error
CreateSnapshot creates a new snapshot with the given options.
func (*SnapshotOperations) DeleteSnapshot ¶
func (so *SnapshotOperations) DeleteSnapshot(snapshotName string) error
DeleteSnapshot deletes the specified snapshot.
func (*SnapshotOperations) GetSnapshots ¶
func (so *SnapshotOperations) GetSnapshots() ([]api.Snapshot, error)
GetSnapshots retrieves all snapshots for the VM.
func (*SnapshotOperations) RollbackToSnapshot ¶
func (so *SnapshotOperations) RollbackToSnapshot(snapshotName string) error
RollbackToSnapshot rolls back to the specified snapshot.
type SnapshotTable ¶
SnapshotTable manages the snapshot list display and selection.
func NewSnapshotTable ¶
func NewSnapshotTable(app *App, vm *api.VM) *SnapshotTable
NewSnapshotTable creates a new snapshot table.
func (*SnapshotTable) DisplaySnapshots ¶
func (st *SnapshotTable) DisplaySnapshots(snapshots []api.Snapshot)
DisplaySnapshots displays the snapshots in the table.
func (*SnapshotTable) GetSelectedSnapshot ¶
func (st *SnapshotTable) GetSelectedSnapshot() *api.Snapshot
GetSelectedSnapshot gets the currently selected snapshot.
func (*SnapshotTable) GetSnapshotCount ¶
func (st *SnapshotTable) GetSnapshotCount() int
GetSnapshotCount returns the count of real snapshots (excluding "current").
type TasksList ¶
TasksList encapsulates the tasks list panel.
func (*TasksList) GetSelectedTask ¶
func (tl *TasksList) GetSelectedTask() *api.ClusterTask
GetSelectedTask returns the currently selected task.
func (*TasksList) SetFilteredTasks ¶
func (tl *TasksList) SetFilteredTasks(tasks []*api.ClusterTask)
SetFilteredTasks updates the tasks list with filtered data.
func (*TasksList) SetTasks ¶
func (tl *TasksList) SetTasks(tasks []*api.ClusterTask)
SetTasks updates the tasks list with new data.
type TasksListComponent ¶
type TasksListComponent interface {
tview.Primitive
SetApp(*App)
SetTasks([]*api.ClusterTask)
SetFilteredTasks([]*api.ClusterTask)
GetSelectedTask() *api.ClusterTask
Select(row, column int) *tview.Table
}
type VMConfigPage ¶
VMConfigPage is a modal/page for editing VM or LXC configuration.
type VMDetails ¶
VMDetails encapsulates the VM details panel.
type VMDetailsComponent ¶
type VMList ¶
VMList encapsulates the VM list panel.
func (*VMList) GetSelectedVM ¶
GetSelectedVM returns the currently selected VM.
func (*VMList) SetCurrentItem ¶
SetCurrentItem wraps the list method to match the interface.
func (*VMList) SetVMChangedFunc ¶
SetVMChangedFunc sets the function to be called when selection changes.
func (*VMList) SetVMSelectedFunc ¶
SetVMSelectedFunc sets the function to be called when a VM is selected.
type VMListComponent ¶
type WizardResult ¶
WizardResult represents the result of a configuration wizard operation.
func LaunchConfigWizard ¶
func LaunchConfigWizard(cfg *config.Config, configPath string, activeProfile string) WizardResult
LaunchConfigWizard launches the configuration wizard and returns the result.
Source Files
¶
- app.go
- app_lifecycle.go
- auto_refresh.go
- auto_refresh_execution.go
- cluster_status.go
- config_wizard.go
- connection_profiles.go
- connection_profiles_operations.go
- context_menu.go
- dialogs.go
- dialogs_creators.go
- footer.go
- form_button.go
- global_menu.go
- header.go
- help_modal.go
- interfaces.go
- keyboard.go
- layout.go
- node_details.go
- node_list.go
- node_menu.go
- profile_wizard.go
- refresh.go
- refresh_vm.go
- script_selector.go
- script_selector_animation.go
- script_selector_display.go
- script_selector_layout.go
- script_selector_management.go
- search.go
- selection.go
- shell.go
- snapshot_form.go
- snapshot_operations.go
- snapshot_table.go
- tasks_list.go
- tasks_list_formatting.go
- vm_config.go
- vm_details.go
- vm_details_network.go
- vm_details_utils.go
- vm_list.go
- vm_menu.go
- vm_operations.go
- vm_snapshots.go
- vnc.go