@@ -6,12 +6,7 @@ namespace TUIKIT {
66TUIListView::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
1712void 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