Skip to content

Commit fd1918f

Browse files
committed
Added selectedText() and setItems()
1 parent da1c360 commit fd1918f

2 files changed

Lines changed: 26 additions & 6 deletions

File tree

include/tuikit/widgets/TUIListView.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ class TUIListView : public TUIWidget {
1919

2020
int selectedIndex() const;
2121
void setSelectedIndex(int index);
22+
std::string selectedText() const;
23+
24+
void setItems(const std::vector<std::string>& items);
25+
26+
private:
27+
void update_ftxui_menu_component();
2228

2329
private:
2430
std::vector<std::string> items_;

src/widgets/TUIListView.cpp

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,7 @@ namespace TUIKIT {
66
TUIListView::TUIListView(const std::vector<std::string>& items, TUIWidget* /*parent*/)
77
: TUIWidget(nullptr), // Temporary initialization, will be replaced below
88
items_(items) {
9-
auto menu_option = ftxui::MenuOption();
10-
menu_option.on_change = [this] { if (on_select_) { on_select_(selected_index_); } };
11-
menu_option.on_enter = [this] { if (on_enter_) { on_enter_(selected_index_); } };
12-
component_ = ftxui::Menu(&items_, &selected_index_, menu_option);
13-
// Set the base class component_ member
14-
this->component_ = component_;
9+
update_ftxui_menu_component();
1510
}
1611

1712
void TUIListView::onSelect(OnSelectCallback cb) {
@@ -32,4 +27,23 @@ void TUIListView::setSelectedIndex(int index) {
3227
}
3328
}
3429

30+
std::string TUIListView::selectedText() const {
31+
if (const auto i = static_cast<size_t>(selected_index_); i >= 0 && i < items_.size()) {
32+
return items_[selected_index_];
33+
}
34+
return "";
35+
}
36+
37+
void TUIListView::setItems(const std::vector<std::string>& items) {
38+
items_ = items;
39+
update_ftxui_menu_component();
40+
}
41+
42+
void TUIListView::update_ftxui_menu_component() {
43+
auto menu_option = ftxui::MenuOption();
44+
menu_option.on_change = [this] { if (on_select_) { on_select_(selected_index_); } };
45+
menu_option.on_enter = [this] { if (on_enter_) { on_enter_(selected_index_); } };
46+
component_ = ftxui::Menu(&items_, &selected_index_, menu_option);
47+
}
48+
3549
}

0 commit comments

Comments
 (0)