Are you an LLM? You can read better optimized documentation at /api/scripts/extension-modules/core/ui/statusbar.md for this page in Markdown format
core.ui.statusbar
This module provides a status bar component for the terminal UI system.
TIP
To use this module, you need to import it first: import("core.ui.statusbar")
NOTE
The UI module is primarily used for xmake's internal xmake f --menu menu-based visual configuration. It provides basic UI components that can also be used by users to implement their own terminal UIs.
The statusbar module extends panel and provides status bar display functionality.
statusbar:new
- Create a new status bar instance
Function Prototype
API
lua
statusbar:new(name: <string>, bounds: <rect>)Parameter Description
| Parameter | Description |
|---|---|
| name | Required. Status bar name string |
| bounds | Required. Status bar bounds rectangle |
Return Value
| Type | Description |
|---|---|
| statusbar | Returns a status bar instance |
Usage
Create a status bar:
lua
import("core.ui.statusbar")
import("core.ui.rect")
local statusbar = statusbar:new("status", rect{1, 25, 80, 1})statusbar:info
- Get the info label
Function Prototype
API
lua
statusbar:info()Parameter Description
No parameters
Return Value
| Type | Description |
|---|---|
| label | Returns the info label instance |
Usage
Access and customize the info label:
lua
local info = statusbar:info()
info:text_set("Ready")
info:textattr_set("blue bold")Here is a complete status bar usage example:
lua
import("core.ui.statusbar")
import("core.ui.window")
import("core.ui.rect")
import("core.ui.application")
local demo = application()
function demo:init()
application.init(self, "demo")
self:background_set("blue")
-- Create status bar
local statusbar = statusbar:new("status", rect{1, self:height() - 1, self:width() - 1, 1})
statusbar:info():text_set("Ready")
statusbar:info():textattr_set("blue bold")
-- Create main window
local win = window:new("main", rect{1, 2, self:width() - 1, self:height() - 3}, "Main Window")
-- Add to application
self:insert(win)
self:insert(statusbar)
self._statusbar = statusbar
self._win = win
end
function demo:on_resize()
self._win:bounds_set(rect{1, 2, self:width() - 1, self:height() - 3})
self._statusbar:bounds_set(rect{1, self:height() - 1, self:width() - 1, 1})
application.on_resize(self)
end
function main(...)
demo:run(...)
end