Skip to content

Commit

Permalink
GUI2: use signal handlers for listbox event handling
Browse files Browse the repository at this point in the history
This affects uses of both set_callback_item_change and set_callback_value_change.
Finally we get rid of most of the conditional GUI2_EXPERIMENTAL_LISTBOX handler setups. \o/
  • Loading branch information
Vultraz committed Aug 22, 2017
1 parent aaa5e0b commit 6aea586
Show file tree
Hide file tree
Showing 22 changed files with 46 additions and 193 deletions.
8 changes: 1 addition & 7 deletions src/gui/dialogs/addon/manager.cpp
Expand Up @@ -312,10 +312,6 @@ void addon_manager::pre_show(window& window)
text_box& filter = find_widget<text_box>(&window, "filter", false);
filter.set_text_changed_callback(std::bind(&addon_manager::on_filtertext_changed, this, _1));

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(list,
std::bind(&addon_manager::on_addon_select, *this, std::ref(window)));
#else
list.set_install_function(std::bind(&addon_manager::install_addon,
this, std::placeholders::_1, std::ref(window)));
list.set_uninstall_function(std::bind(&addon_manager::uninstall_addon,
Expand All @@ -328,9 +324,7 @@ void addon_manager::pre_show(window& window)
list.set_delete_function(std::bind(&addon_manager::delete_addon,
this, std::placeholders::_1, std::ref(window)));

list.set_callback_value_change(
dialog_callback<addon_manager, &addon_manager::on_addon_select>);
#endif
list.set_modified_signal_handler([this, &window]() { on_addon_select(window); });

fetch_addons_list(window);
load_addon_list(window);
Expand Down
14 changes: 3 additions & 11 deletions src/gui/dialogs/core_selection.cpp
Expand Up @@ -88,17 +88,9 @@ void core_selection::pre_show(window& window)
{
/***** Setup core list. *****/
listbox& list = find_widget<listbox>(&window, "core_list", false);
#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(
list,
std::bind(&core_selection::core_selected,
this,
std::ref(window)));
#else
list.set_callback_value_change(
dialog_callback<core_selection,
&core_selection::core_selected>);
#endif

connect_signal_notify_modified(list, std::bind(&core_selection::core_selected, this, std::ref(window)));

window.keyboard_capture(&list);

/***** Setup core details. *****/
Expand Down
2 changes: 1 addition & 1 deletion src/gui/dialogs/drop_down_menu.cpp
Expand Up @@ -177,7 +177,7 @@ void drop_down_menu::pre_show(window& window)
// Handle embedded button toggling.
// For some reason this works as a listbox value callback but don't ask me why.
// -vultraz 2/17/17
list.set_callback_value_change(std::bind(&callback_flip_embedded_toggle, std::ref(window)));
connect_signal_notify_modified(list, std::bind(&callback_flip_embedded_toggle, std::ref(window)));

// Dismiss on resize
window.connect_signal<event::SDL_VIDEO_RESIZE>(std::bind(&resize_callback, std::ref(window)), event::dispatcher::front_child);
Expand Down
4 changes: 2 additions & 2 deletions src/gui/dialogs/editor/generate_map.cpp
Expand Up @@ -134,8 +134,8 @@ void editor_generate_map::pre_show(window& window)
this->do_generator_selected(window);
}

list.set_callback_item_change(
std::bind(&editor_generate_map::do_generator_selected, this, std::ref(window)));
connect_signal_notify_modified(list,
std::bind(&editor_generate_map::do_generator_selected, this, std::ref(window)));

button& settings_button = find_widget<button>(&window, "settings", false);
connect_signal_mouse_left_click(
Expand Down
19 changes: 4 additions & 15 deletions src/gui/dialogs/file_dialog.cpp
Expand Up @@ -231,21 +231,10 @@ void file_dialog::pre_show(window& window)

listbox& filelist = find_widget<listbox>(&window, "filelist", false);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(filelist, std::bind(
&file_dialog::on_row_selected
, *this
, std::ref(window)));
connect_signal_notify_modified(bookmarks_bar, std::begin(
&file_dialog::on_bookmark_selected
, *this
, std::ref(window)));
#else
filelist.set_callback_value_change(
dialog_callback<file_dialog, &file_dialog::on_row_selected>);
bookmarks_bar.set_callback_value_change(
dialog_callback<file_dialog, &file_dialog::on_bookmark_selected>);
#endif
connect_signal_notify_modified(filelist,
std::bind(&file_dialog::on_row_selected, this, std::ref(window)));
connect_signal_notify_modified(bookmarks_bar,
std::bind(&file_dialog::on_bookmark_selected, this, std::ref(window)));

button& mkdir_button = find_widget<button>(&window, "new_dir", false);
button& rm_button = find_widget<button>(&window, "delete_file", false);
Expand Down
7 changes: 1 addition & 6 deletions src/gui/dialogs/game_load.cpp
Expand Up @@ -117,13 +117,8 @@ void game_load::pre_show(window& window)

listbox& list = find_widget<listbox>(&window, "savegame_list", false);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(list,
std::bind(&game_load::display_savegame, *this, std::ref(window)));
#else
list.set_callback_value_change(
dialog_callback<game_load, &game_load::display_savegame>);
#endif
std::bind(&game_load::display_savegame, this, std::ref(window)));

window.keyboard_capture(filter);
window.add_to_keyboard_chain(&list);
Expand Down
9 changes: 1 addition & 8 deletions src/gui/dialogs/game_stats.cpp
Expand Up @@ -238,14 +238,7 @@ void game_stats::pre_show(window& window)

window.keyboard_capture(&tab_bar);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(*tab_bar,
std::bind(&game_stats::on_tab_select,
*this, std::ref(window)));
#else
tab_bar.set_callback_value_change(
dialog_callback<game_stats, &game_stats::on_tab_select>);
#endif
connect_signal_notify_modified(tab_bar, std::bind(&game_stats::on_tab_select, this, std::ref(window)));

on_tab_select(window);
}
Expand Down
7 changes: 1 addition & 6 deletions src/gui/dialogs/game_version.cpp
Expand Up @@ -274,13 +274,8 @@ void game_version::pre_show(window& window)
const unsigned tab_count = tab_bar.get_item_count();
VALIDATE(tab_count == pager.get_layer_count(), "Tab bar and container size mismatch");

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(tab_bar,
std::bind(&game_version::tab_switch_callback, *this, std::ref(window)));
#else
tab_bar.set_callback_value_change(
dialog_callback<game_version, &game_version::tab_switch_callback>);
#endif
std::bind(&game_version::tab_switch_callback, this, std::ref(window)));
}

void game_version::tab_switch_callback(window& window)
Expand Down
11 changes: 3 additions & 8 deletions src/gui/dialogs/lobby/lobby.cpp
Expand Up @@ -672,14 +672,9 @@ void mp_lobby::pre_show(window& window)
SCOPE_LB;

gamelistbox_ = find_widget<listbox>(&window, "game_list", false, true);
#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(
*gamelistbox_,
std::bind(&mp_lobby::gamelist_change_callback, *this, std::ref(window)));
#else
gamelistbox_->set_callback_value_change(
dialog_callback<mp_lobby, &mp_lobby::gamelist_change_callback>);
#endif

connect_signal_notify_modified(*gamelistbox_,
std::bind(&mp_lobby::gamelist_change_callback, this, std::ref(window)));

window.keyboard_capture(gamelistbox_);

Expand Down
10 changes: 2 additions & 8 deletions src/gui/dialogs/multiplayer/faction_select.cpp
Expand Up @@ -84,14 +84,8 @@ void faction_select::pre_show(window& window)

window.keyboard_capture(&list);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(*list,
std::bind(&faction_select::on_faction_select,
*this, std::ref(window)));
#else
list.set_callback_value_change(
dialog_callback<faction_select, &faction_select::on_faction_select>);
#endif
connect_signal_notify_modified(list,
std::bind(&faction_select::on_faction_select, this, std::ref(window)));

for(const config *s : flg_manager_.choosable_factions()) {
const config& side = *s;
Expand Down
8 changes: 0 additions & 8 deletions src/gui/dialogs/multiplayer/mp_change_control.cpp
Expand Up @@ -86,19 +86,11 @@ void mp_change_control::pre_show(window& window)
listbox& sides_list = find_widget<listbox>(&window, "sides_list", false);
listbox& nicks_list = find_widget<listbox>(&window, "nicks_list", false);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(sides_list,
std::bind(&mp_change_control::handle_sides_list_item_clicked, this, std::ref(window)));

connect_signal_notify_modified(nicks_list,
std::bind(&mp_change_control::handle_nicks_list_item_clicked, this, std::ref(window)));
#else
sides_list.set_callback_value_change(
dialog_callback<mp_change_control, &mp_change_control::handle_sides_list_item_clicked>);

nicks_list.set_callback_value_change(
dialog_callback<mp_change_control, &mp_change_control::handle_nicks_list_item_clicked>);
#endif

//
// Initialize sides list
Expand Down
27 changes: 4 additions & 23 deletions src/gui/dialogs/multiplayer/mp_create_game.cpp
Expand Up @@ -250,14 +250,7 @@ void mp_create_game::pre_show(window& win)
mog_toggle.set_callback_state_change(std::bind(&mp_create_game::on_mod_toggle, this, i));
}

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(*mod_list,
std::bind(&mp_create_game::on_mod_select,
*this, std::ref(win)));
#else
mod_list.set_callback_value_change(
dialog_callback<mp_create_game, &mp_create_game::on_mod_select>);
#endif
connect_signal_notify_modified(mod_list, std::bind(&mp_create_game::on_mod_select, this, std::ref(win)));

// No mods, hide the header
if(mod_list.get_item_count() <= 0) {
Expand Down Expand Up @@ -308,14 +301,8 @@ void mp_create_game::pre_show(window& win)
//
listbox& tab_bar = find_widget<listbox>(&win, "tab_bar", false);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(*tab_bar,
std::bind(&mp_create_game::on_tab_select,
*this, std::ref(win)));
#else
tab_bar.set_callback_value_change(
dialog_callback<mp_create_game, &mp_create_game::on_tab_select>);
#endif
connect_signal_notify_modified(tab_bar,
std::bind(&mp_create_game::on_tab_select, this, std::ref(win)));

// We call on_tab_select farther down.

Expand All @@ -324,14 +311,8 @@ void mp_create_game::pre_show(window& win)
//
listbox& list = find_widget<listbox>(&win, "games_list", false);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(list,
std::bind(&mp_create_game::on_game_select,
*this, std::ref(win)));
#else
list.set_callback_value_change(
dialog_callback<mp_create_game, &mp_create_game::on_game_select>);
#endif
std::bind(&mp_create_game::on_game_select, this, std::ref(win)));

win.add_to_keyboard_chain(&list);

Expand Down
34 changes: 7 additions & 27 deletions src/gui/dialogs/preferences_dialog.cpp
Expand Up @@ -527,7 +527,7 @@ void preferences_dialog::post_build(window& window)
std::ref(textbox),
std::ref(window)));

friends_list.set_callback_value_change(std::bind(
connect_signal_notify_modified(friends_list, std::bind(
&preferences_dialog::on_friends_list_select,
this,
std::ref(friends_list),
Expand Down Expand Up @@ -676,17 +676,11 @@ void preferences_dialog::post_build(window& window)
}
}

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(advanced, std::bind(
&preferences_dialog::on_advanced_prefs_list_select,
this,
std::ref(advanced),
std::ref(window)));
#else
advanced.set_callback_value_change([&, this](widget&) {
on_advanced_prefs_list_select(advanced, window);
});
#endif

on_advanced_prefs_list_select(advanced, window);

Expand Down Expand Up @@ -932,21 +926,13 @@ void preferences_dialog::on_advanced_prefs_list_select(listbox& list, window& wi
}
}

void preferences_dialog::initialize_tabs(window& /*window*/, listbox& selector)
void preferences_dialog::initialize_tabs(window& window, listbox& selector)
{
//
// MULTIPLAYER TABS
//

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(selector, std::bind(
&preferences_dialog::on_tab_select,
this,
std::ref(window)));
#else
selector.set_callback_value_change(dialog_callback
<preferences_dialog, &preferences_dialog::on_tab_select>);
#endif
connect_signal_notify_modified(selector,
std::bind(&preferences_dialog::on_tab_select, this, std::ref(window)));
}

static int index_in_pager_range(const int& first, const stacked_widget& pager)
Expand Down Expand Up @@ -979,15 +965,9 @@ void preferences_dialog::pre_show(window& window)
listbox& selector = find_widget<listbox>(&window, "selector", false);
stacked_widget& pager = find_widget<stacked_widget>(&window, "pager", false);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(selector, std::bind(
&preferences_dialog::on_page_select,
this,
std::ref(window)));
#else
selector.set_callback_value_change(dialog_callback
<preferences_dialog, &preferences_dialog::on_page_select>);
#endif
connect_signal_notify_modified(selector,
std::bind(&preferences_dialog::on_page_select, this, std::ref(window)));

window.keyboard_capture(&selector);

VALIDATE(selector.get_item_count() == pager.get_layer_count(),
Expand Down
18 changes: 4 additions & 14 deletions src/gui/dialogs/statistics_dialog.cpp
Expand Up @@ -81,26 +81,16 @@ void statistics_dialog::pre_show(window& window)
listbox& tab_bar = find_widget<listbox>(&window, "tab_bar", false);
tab_bar.select_row(use_campaign);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(*tab_bar,
std::bind(&statistics_dialog::on_tab_select, *this, std::ref(window)));
#else
tab_bar.set_callback_value_change(
dialog_callback<statistics_dialog, &statistics_dialog::on_tab_select>);
#endif
connect_signal_notify_modified(tab_bar,
std::bind(&statistics_dialog::on_tab_select, this, std::ref(window)));

//
// Set up primary stats list
//
listbox& stat_list = find_widget<listbox>(&window, "stats_list_main", false);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(*stat_list,
std::bind(&statistics_dialog::on_primary_list_select, *this, std::ref(window)));
#else
stat_list.set_callback_value_change(
dialog_callback<statistics_dialog, &statistics_dialog::on_primary_list_select>);
#endif
connect_signal_notify_modified(stat_list,
std::bind(&statistics_dialog::on_primary_list_select, this, std::ref(window)));

update_lists(window);
}
Expand Down
10 changes: 1 addition & 9 deletions src/gui/dialogs/unit_advance.cpp
Expand Up @@ -51,15 +51,7 @@ void unit_advance::pre_show(window& window)
{
listbox& list = find_widget<listbox>(&window, "advance_choice", false);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(*list,
std::bind(&unit_advance::list_item_clicked,
*this,
std::ref(window)));
#else
list.set_callback_value_change(
dialog_callback<unit_advance, &unit_advance::list_item_clicked>);
#endif
connect_signal_notify_modified(list, std::bind(&unit_advance::list_item_clicked, this, std::ref(window)));

window.keyboard_capture(&list);

Expand Down
10 changes: 1 addition & 9 deletions src/gui/dialogs/unit_create.cpp
Expand Up @@ -115,15 +115,7 @@ void unit_create::pre_show(window& window)
window.keyboard_capture(filter);
window.add_to_keyboard_chain(&list);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(*list,
std::bind(&unit_create::list_item_clicked,
*this,
std::ref(window)));
#else
list.set_callback_value_change(
dialog_callback<unit_create, &unit_create::list_item_clicked>);
#endif
connect_signal_notify_modified(list, std::bind(&unit_create::list_item_clicked, this, std::ref(window)));

list.clear();

Expand Down
9 changes: 1 addition & 8 deletions src/gui/dialogs/unit_list.cpp
Expand Up @@ -100,14 +100,7 @@ void unit_list::pre_show(window& window)
{
listbox& list = find_widget<listbox>(&window, "units_list", false);

#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(*list,
std::bind(&unit_list::list_item_clicked,
*this, std::ref(window)));
#else
list.set_callback_value_change(
dialog_callback<unit_list, &unit_list::list_item_clicked>);
#endif
connect_signal_notify_modified(list, std::bind(&unit_list::list_item_clicked, this, std::ref(window)));

list.clear();

Expand Down

0 comments on commit 6aea586

Please sign in to comment.