tgroup: added a function to set the callback for all members
This commit is contained in:
parent
d2191297c5
commit
185724fc94
3 changed files with 20 additions and 12 deletions
|
@ -67,14 +67,7 @@ void tfaction_select::pre_show(twindow& window)
|
|||
|
||||
gender_toggle_.set_member_states("random");
|
||||
|
||||
// TODO: consolidate when adding a all-member callback setter to tgroup
|
||||
gender_rand.set_callback_state_change(
|
||||
dialog_callback<tfaction_select, &tfaction_select::on_gender_select>);
|
||||
|
||||
gender_male.set_callback_state_change(
|
||||
dialog_callback<tfaction_select, &tfaction_select::on_gender_select>);
|
||||
|
||||
gender_female.set_callback_state_change(
|
||||
gender_toggle_.set_callback_on_value_change(
|
||||
dialog_callback<tfaction_select, &tfaction_select::on_gender_select>);
|
||||
|
||||
//
|
||||
|
|
|
@ -99,10 +99,7 @@ void tunit_create::pre_show(twindow& window)
|
|||
|
||||
gender_toggle.set_member_states(last_gender);
|
||||
|
||||
male_toggle.set_callback_state_change(
|
||||
dialog_callback<tunit_create, &tunit_create::gender_toggle_callback>);
|
||||
|
||||
female_toggle.set_callback_state_change(
|
||||
gender_toggle.set_callback_on_value_change(
|
||||
dialog_callback<tunit_create, &tunit_create::gender_toggle_callback>);
|
||||
|
||||
tlistbox& list = find_widget<tlistbox>(&window, "unit_type_list", false);
|
||||
|
|
|
@ -118,6 +118,24 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a common callback function for all members.
|
||||
*/
|
||||
void set_callback_on_value_change(const std::function<void(twidget&)>& func)
|
||||
{
|
||||
// Ensure this callback is only called on the member being activated
|
||||
const auto callback = [func](twidget& widget)->void {
|
||||
if(dynamic_cast<tselectable_*>(&widget)->get_value_bool()) {
|
||||
func(widget);
|
||||
}
|
||||
};
|
||||
|
||||
for(auto& member : members())
|
||||
{
|
||||
member.first->set_callback_state_change(callback);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
group_list members_;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue