Revert "tcampain_selection: removed unused tree view"

This reverts commit 9f6c07815e.

Conflicts:
	src/gui/dialogs/campaign_selection.cpp
This commit is contained in:
gfgtdf 2015-06-21 19:49:45 +02:00
parent ce2359c118
commit 548e44f5ca
2 changed files with 338 additions and 54 deletions

View file

@ -25,6 +25,12 @@
fixed_width = "true"
[/linked_group]
[linked_group]
id = "tree_name"
fixed_width = "true"
fixed_height = "true"
[/linked_group]
[tooltip]
id = "tooltip_large"
[/tooltip]
@ -195,6 +201,174 @@
[/column]
[column]
grow_factor = 0
border = "all"
border_size = 5
horizontal_alignment = "left"
[tree_view]
id = "campaign_tree"
definition = "default"
horizontal_scrollbar_mode = "never"
vertical_scrollbar_mode = "always"
indention_step_size = "0"
[node]
id = "campaign_group"
[node_definition]
[row]
[column]
[toggle_button]
id = "tree_view_node_icon"
definition = "tree_view_node"
[/toggle_button]
[/column]
[column]
grow_factor = 1
horizontal_grow = "true"
[label]
id = "tree_view_node_label"
label = "group"
[/label]
[/column]
[/row]
[/node_definition]
[/node]
[node]
id = "campaign"
[node_definition]
[row]
[column]
horizontal_grow = "true"
[toggle_panel]
id = "tree_view_node_label"
definition = "default"
# horizontal_grow = "true"
return_value_id = "ok"
[grid]
[row]
[column]
border = "all"
border_size = 5
vertical_alignment = "top"
[stacked_widget]
id = ""
definition = "default"
linked_group = "icon_area"
[stack]
[layer]
[row]
[column]
grow_factor = 1
horizontal_grow = "true"
border = "left"
border_size = 3
[image]
id = "victory"
definition = "default"
label = "misc/blank-hex.png"
[/image]
[/column]
[/row]
[/layer]
[layer]
[row]
[column]
grow_factor = 1
horizontal_grow = "true"
border = "left"
border_size = 3
[image]
id = "icon"
definition = "default"
label = "misc/laurel.png"
[/image]
[/column]
[/row]
[/layer]
[/stack]
[/stacked_widget]
[/column]
[column]
grow_factor = 1
horizontal_grow = "true"
border = "right"
border_size = 8
[label]
id = "name"
definition = "default"
linked_group = "tree_name"
[/label]
[/column]
[/row]
[/grid]
[/toggle_panel]
[/column]
[/row]
[/node_definition]
[/node]
[/tree_view]
[/column]
[column]
grow_factor = 1
horizontal_grow = "true"

View file

@ -83,15 +83,32 @@ REGISTER_DIALOG(campaign_selection)
void tcampaign_selection::campaign_selected(twindow& window)
{
const int selected_row
= find_widget<tlistbox>(&window, "campaign_list", false)
.get_selected_row();
if(new_widgets && false) {
ttree_view& tree
= find_widget<ttree_view>(&window, "campaign_tree", false);
tmulti_page& multi_page
= find_widget<tmulti_page>(&window, "campaign_details", false);
if(tree.empty()) {
return;
}
multi_page.select_page(selected_row);
engine_.set_current_level(selected_row);
assert(tree.selected_item());
const unsigned choice
= lexical_cast<unsigned>(tree.selected_item()->id());
tmulti_page& multi_page
= find_widget<tmulti_page>(&window, "campaign_details", false);
multi_page.select_page(choice);
} else {
const int selected_row
= find_widget<tlistbox>(&window, "campaign_list", false)
.get_selected_row();
tmulti_page& multi_page
= find_widget<tmulti_page>(&window, "campaign_details", false);
multi_page.select_page(selected_row);
engine_.set_current_level(selected_row);
}
}
void tcampaign_selection::show_settings(CVideo& video) {
@ -101,61 +118,141 @@ void tcampaign_selection::show_settings(CVideo& video) {
void tcampaign_selection::pre_show(CVideo& video, twindow& window)
{
/***** Setup campaign list. *****/
tlistbox& list = find_widget<tlistbox>(&window, "campaign_list", false);
#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(
list,
boost::bind(&tcampaign_selection::campaign_selected,
this,
boost::ref(window)));
#else
list.set_callback_value_change(
dialog_callback<tcampaign_selection,
&tcampaign_selection::campaign_selected>);
#endif
window.keyboard_capture(&list);
if(new_widgets && false) {
/***** Setup campaign tree. *****/
ttree_view& tree
= find_widget<ttree_view>(&window, "campaign_tree", false);
/***** Setup campaign details. *****/
tmulti_page& multi_page
= find_widget<tmulti_page>(&window, "campaign_details", false);
tree.set_selection_change_callback(
boost::bind(&tcampaign_selection::campaign_selected,
this,
boost::ref(window)));
FOREACH(const AUTO & level, engine_.get_levels_by_type_unfiltered(ng::level::TYPE::SP_CAMPAIGN))
{
const config& campaign = level->data();
window.keyboard_capture(&tree);
/*** Add list item ***/
string_map list_item;
std::map<std::string, string_map> list_item_item;
string_map tree_group_field;
std::map<std::string, string_map> tree_group_item;
list_item["label"] = campaign["icon"];
list_item_item.insert(std::make_pair("icon", list_item));
tree_group_field["label"] = "Campaigns won";
tree_group_item["tree_view_node_label"] = tree_group_field;
ttree_view_node& completed
= tree.add_node("campaign_group", tree_group_item);
list_item["label"] = campaign["name"];
list_item_item.insert(std::make_pair("name", list_item));
tree_group_field["label"] = "Campaigns to conquer";
tree_group_item["tree_view_node_label"] = tree_group_field;
ttree_view_node& not_completed
= tree.add_node("campaign_group", tree_group_item);
list.add_row(list_item_item);
/***** Setup campaign details. *****/
tmulti_page& multi_page
= find_widget<tmulti_page>(&window, "campaign_details", false);
tgrid* grid = list.get_row_grid(list.get_item_count() - 1);
assert(grid);
unsigned id = 0;
FOREACH(const AUTO & level, engine_.get_levels_by_type_unfiltered(ng::level::TYPE::SP_CAMPAIGN))
{
const config& campaign = level->data();
twidget* widget = grid->find("victory", false);
if(widget && !campaign["completed"].to_bool()) {
widget->set_visible(twidget::tvisible::hidden);
/*** Add tree item ***/
tree_group_field["label"] = campaign["icon"];
tree_group_item["icon"] = tree_group_field;
tree_group_field["label"] = campaign["name"];
tree_group_item["name"] = tree_group_field;
if(campaign["completed"].to_bool()) {
completed.add_child("campaign", tree_group_item)
.set_id(lexical_cast<std::string>(id++));
} else {
not_completed.add_child("campaign", tree_group_item)
.set_id(lexical_cast<std::string>(id++));
}
/*** Add detail item ***/
string_map detail_item;
std::map<std::string, string_map> detail_page;
detail_item["label"] = campaign["description"];
detail_item["use_markup"] = "true";
detail_page.insert(std::make_pair("description", detail_item));
detail_item["label"] = campaign["image"];
detail_page.insert(std::make_pair("image", detail_item));
multi_page.add_page(detail_page);
}
/*** Add detail item ***/
string_map detail_item;
std::map<std::string, string_map> detail_page;
if(completed.empty()) {
tree.remove_node(&completed);
}
detail_item["label"] = campaign["description"];
detail_item["use_markup"] = "true";
detail_page.insert(std::make_pair("description", detail_item));
if(not_completed.empty()) {
tree.remove_node(&not_completed);
}
detail_item["label"] = campaign["image"];
detail_page.insert(std::make_pair("image", detail_item));
} else {
/***** Hide the tree view. *****/
if(ttree_view* tree
= find_widget<ttree_view>(&window, "campaign_tree", false, false)) {
multi_page.add_page(detail_page);
tree->set_visible(twidget::tvisible::invisible);
}
/***** Setup campaign list. *****/
tlistbox& list = find_widget<tlistbox>(&window, "campaign_list", false);
#ifdef GUI2_EXPERIMENTAL_LISTBOX
connect_signal_notify_modified(
list,
boost::bind(&tcampaign_selection::campaign_selected,
this,
boost::ref(window)));
#else
list.set_callback_value_change(
dialog_callback<tcampaign_selection,
&tcampaign_selection::campaign_selected>);
#endif
window.keyboard_capture(&list);
/***** Setup campaign details. *****/
tmulti_page& multi_page
= find_widget<tmulti_page>(&window, "campaign_details", false);
FOREACH(const AUTO & level, engine_.get_levels_by_type_unfiltered(ng::level::TYPE::SP_CAMPAIGN))
{
const config& campaign = level->data();
/*** Add list item ***/
string_map list_item;
std::map<std::string, string_map> list_item_item;
list_item["label"] = campaign["icon"];
list_item_item.insert(std::make_pair("icon", list_item));
list_item["label"] = campaign["name"];
list_item_item.insert(std::make_pair("name", list_item));
list.add_row(list_item_item);
tgrid* grid = list.get_row_grid(list.get_item_count() - 1);
assert(grid);
twidget* widget = grid->find("victory", false);
if(widget && !campaign["completed"].to_bool()) {
widget->set_visible(twidget::tvisible::hidden);
}
/*** Add detail item ***/
string_map detail_item;
std::map<std::string, string_map> detail_page;
detail_item["label"] = campaign["description"];
detail_item["use_markup"] = "true";
detail_page.insert(std::make_pair("description", detail_item));
detail_item["label"] = campaign["image"];
detail_page.insert(std::make_pair("image", detail_item));
multi_page.add_page(detail_page);
}
}
campaign_selected(window);
@ -168,11 +265,24 @@ void tcampaign_selection::pre_show(CVideo& video, twindow& window)
void tcampaign_selection::post_show(twindow& window)
{
choice_ = find_widget<tlistbox>(&window, "campaign_list", false)
.get_selected_row();
deterministic_ = find_widget<ttoggle_button>(&window,
"checkbox_deterministic",
false).get_value();
if(new_widgets && false) {
ttree_view& tree
= find_widget<ttree_view>(&window, "campaign_tree", false);
if(tree.empty()) {
return;
}
assert(tree.selected_item());
choice_ = lexical_cast<unsigned>(tree.selected_item()->id());
} else {
choice_ = find_widget<tlistbox>(&window, "campaign_list", false)
.get_selected_row();
deterministic_ = find_widget<ttoggle_button>(&window,
"checkbox_deterministic",
false).get_value();
}
}
} // namespace gui2