38 std::vector<std::string> entries{
39 "Monkey",
"Dog",
"Cat",
"Bird",
"Elephant",
"Cat",
41 std::array<int, 12> selected = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
43 auto vmenu_1_ =
VMenu1(&entries, &selected[0]);
44 auto vmenu_2_ =
VMenu2(&entries, &selected[1]);
45 auto vmenu_3_ =
VMenu3(&entries, &selected[2]);
46 auto vmenu_4_ =
VMenu4(&entries, &selected[3]);
47 auto vmenu_5_ =
VMenu5(&entries, &selected[4]);
48 auto vmenu_6_ =
VMenu6(&entries, &selected[5]);
49 auto vmenu_7_ =
VMenu7(&entries, &selected[6]);
50 auto vmenu_8_ =
VMenu8(&entries, &selected[7]);
52 auto hmenu_1_ =
HMenu1(&entries, &selected[8]);
53 auto hmenu_2_ =
HMenu2(&entries, &selected[9]);
54 auto hmenu_3_ =
HMenu3(&entries, &selected[10]);
55 auto hmenu_4_ =
HMenu4(&entries, &selected[11]);
56 auto hmenu_5_ =
HMenu5(&entries, &selected[12]);
58 auto container = Container::Vertical({
59 Container::Horizontal({
76 auto renderer =
Renderer(container, [&] {
110 screen.Loop(renderer);
115 option.entries_option.transform = [](
EntryState state) {
116 state.label = (state.active ?
"> " :
" ") + state.label;
126 return Menu(entries, selected, option);
131 option.entries_option.transform = [](
EntryState state) {
132 state.label += (state.active ?
" <" :
" ");
142 return Menu(entries, selected, option);
147 option.entries_option.transform = [](
EntryState state) {
148 Element e = state.active ?
text(
"[" + state.label +
"]")
149 :
text(
" " + state.label +
" ");
162 return Menu(entries, selected, option);
167 option.entries_option.transform = [](
EntryState state) {
168 if (state.active && state.focused) {
182 return Menu(entries, selected, option);
187 option.entries_option.transform = [](
EntryState state) {
188 auto element =
text(state.label);
189 if (state.active && state.focused) {
196 return element |
bold;
200 return Menu(entries, selected, option);
207 option.underline.SetAnimationFunction(animation::easing::Linear);
208 return Menu(entries, selected, option);
213 option.entries_option.animated_colors.foreground.enabled =
true;
214 option.entries_option.animated_colors.background.enabled =
true;
215 option.entries_option.animated_colors.background.active =
Color::Red;
216 option.entries_option.animated_colors.background.inactive =
Color::Black;
217 option.entries_option.animated_colors.foreground.active =
Color::White;
218 option.entries_option.animated_colors.foreground.inactive =
Color::Red;
219 return Menu(entries, selected, option);
224 option.entries_option.animated_colors.foreground.Set(
226 return Menu(entries, selected, option);
239 option.elements_infix = [] {
return text(
" 🮣🮠 "); };
241 return Menu(entries, selected, option);
250 option.underline.SetAnimation(std::chrono::milliseconds(1500),
251 animation::easing::ElasticOut);
252 option.entries_option.transform = [](
EntryState state) {
254 if (state.active && state.focused) {
257 if (!state.focused && !state.active) {
264 return Menu(entries, selected, option);
static ScreenInteractive TerminalOutput()
static MenuOption Toggle()
帶有分隔線的水平選單標準選項。 這對於實現一個標籤頁列很有用。
static MenuOption Horizontal()
水平選單的標準選項。 這對於實現一個標籤頁列很有用。
static MenuOption VerticalAnimated()
動畫垂直選單的標準選項。 這對於實現一個可選項目列表很有用。
static MenuOption Vertical()
垂直選單的標準選項。 這對於實現一個可選項目列表很有用。
static MenuOption HorizontalAnimated()
動畫水平選單的標準選項。 這對於實現一個標籤頁列很有用。
Component Menu(MenuOption options)
文字列表。選定的元素會被聚焦。
Component Renderer(Component child, std::function< Element()>)
回傳一個新的元件,類似於 |child|,但使用 |render| 作為 Component::Render() 事件。
virtual void Render(Screen &screen)
Decorator bgcolor(Color)
使用背景顏色進行裝飾。
Element borderDouble(Element)
在元素周圍繪製雙線邊框。
Element flex(Element)
使子元素按比例擴展以佔據容器中剩餘的空間。
Element bold(Element)
使用粗體字型,用於需要更多強調的元素。
Element text(std::wstring text)
顯示一段 Unicode 文字。
Element separator()
在兩個元素之間繪製垂直或水平分隔線。
Element filler()
一個元素,它會按比例擴展以佔據容器中剩餘的空間。
Element dim(Element)
使用淺色字體,適用於不那麼強調的元素。
Element border(Element)
在元素周圍繪製邊框。
Decorator color(Color)
使用前景顏色進行裝飾。
Element vbox(Elements)
一個垂直一個接一個顯示元素的容器。
std::shared_ptr< Node > Element
Element hbox(Elements)
一個逐一水平顯示元素的容器。
std::shared_ptr< ComponentBase > Component
來自 |ButtonOption|、|CheckboxOption|、 |RadioboxOption|、|MenuEntryOption|、|MenuOption| 的轉換參數。