GUI2/Game Load: refined design for the umpteenth time

This commit is contained in:
Charles Dang 2024-05-25 00:57:27 -04:00
parent 7e2a99dc20
commit 5e3a86f7ab
3 changed files with 379 additions and 355 deletions

View file

@ -176,6 +176,14 @@
[/button_definition]
[button_definition]
id = "big_trash"
description = "Big trash button"
{_GUI_RESOLUTION () 60 ("buttons/button_square/button_square_60") ("icons/action/trash_25") ("~SCALE_SHARP(200%,200%)")}
[/button_definition]
# Transparent scrollbar buttons
{_GUI_DEFINITION

View file

@ -33,7 +33,7 @@
[label]
id = {_ID}
definition = "gold_small"
definition = "default_small"
[/label]
[/column]
@ -51,7 +51,14 @@
id = "leader_list"
has_minimum = false
horizontal_scrollbar_mode = "never"
#vertical_scrollbar_mode = "auto"
vertical_scrollbar_mode = "never"
# Very important that has_maximum is set to false, so we can "select" (flag
# as visible) all rows in view-only mode. See game_load.cpp for more info.
has_minimum = true
has_maximum = false
allow_selection = false
[list_definition]
@ -61,68 +68,74 @@
grow_factor = 1
horizontal_grow = true
[toggle_panel]
definition = "fancy"
[grid]
[grid]
[row]
[row]
[column]
horizontal_grow = true
[column]
grow_factor = 0
[grid]
border = "all"
border_size = 5
horizontal_grow = true
vertical_grow = true
[row]
[image]
id = "imgLeader"
definition = "centered"
linked_group = "leader_image"
[/image]
[column]
grow_factor = 1
horizontal_grow = true
[/column]
[grid]
[column]
grow_factor = 1
horizontal_grow = true
[row]
# Deliberate border for extra padding
border = "all"
border_size = 5
[column]
border = "all"
border_size = 5
horizontal_grow = true
[grid]
[label]
id = "leader_name"
definition = "gold"
[/label]
[row]
[/column]
[column]
border = "all"
border_size = 5
horizontal_grow = true
[/row]
[label]
id = "leader_name"
definition = "default"
[/label]
{_GUI_LEADER_STAT_ROW "leader_troops" "themes/units.png" "all"}
[/column]
{_GUI_LEADER_STAT_ROW "leader_gold" "themes/gold.png" "all"}
[/row]
[/grid]
{_GUI_LEADER_STAT_ROW "leader_gold" "themes/gold.png" "all"}
[/column]
{_GUI_LEADER_STAT_ROW "leader_troops" "themes/units.png" "bottom,left,right"}
[column]
grow_factor = 0
[/grid]
border = "all"
border_size = 5
#horizontal_grow = true
#vertical_grow = true
[/column]
[image]
id = "imgLeader"
definition = "centered"
linked_group = "leader_image"
[/image]
[/row]
[/column]
[/grid]
[/row]
[/toggle_panel]
[/grid]
[/column]
[/row]
{GUI_HORIZONTAL_SPACER_LINE}
[/grid]
[/column]
@ -244,7 +257,8 @@
[resolution]
definition = "default"
{GUI_WINDOW_PERC_FIXED_SIZE_CENTERED 80 95 850 800}
#{GUI_WINDOW_PERC_FIXED_SIZE_CENTERED 80 95 850 800}
maximum_height = 850
[linked_group]
id = "filename"
@ -276,209 +290,50 @@
[column]
grow_factor = 1
horizontal_grow = true
vertical_grow = true
[grid]
[row]
[column]
grow_factor = 1
border = "all"
border_size = 5
horizontal_alignment = "left"
[label]
id = "lblTitle"
definition = "title"
label = _ "Load Game"
[/label]
[/column]
[/row]
[row]
grow_factor = 1
[column]
grow_factor = 1
#border = "all"
#border_size = 5
horizontal_grow = true
vertical_grow = true
[grid]
[row]
[column]
horizontal_grow = true
[grid]
[row]
[column]
grow_factor = 1
border = "all"
border_size = 5
horizontal_alignment = "left"
#vertical_alignment = "top"
[label]
id = "lblTitle"
definition = "title"
label = _ "Load Game"
[/label]
[/column]
[column]
#grow_factor = 0
border = "all"
border_size = 5
#horizontal_alignment = "right"
[button]
id = "browse_saves_folder"
definition = "action_browse_experimental"
tooltip = _ "Open saves folder"
[/button]
[/column]
[column]
#grow_factor = 1
border = "all"
border_size = 5
#horizontal_alignment = "right"
[menu_button]
id = "dirList"
definition = "default"
tooltip = _ "Show saves from a different version of Wesnoth"
[/menu_button]
[/column]
[/row]
[/grid]
[/column]
[/row]
[row]
grow_factor = 1
[column]
grow_factor = 1
horizontal_grow = true
vertical_grow = true
#border = "bottom"
#border_size = 10
border = "all"
border_size = 5
{_GUI_GAME_LIST}
[/column]
[/row]
[row]
grow_factor = 0
[column]
horizontal_grow = true
[grid]
[row]
[column]
horizontal_grow = true
[grid]
[row]
[column]
#grow_factor = 1
horizontal_alignment = "left"
#border = "bottom"
#border_size = 10
border = "all"
border_size = 5
[toggle_button]
id = "change_difficulty"
definition = "default"
label = _ "Change difficulty"
tooltip = _ "Change campaign difficulty before loading"
[/toggle_button]
[/column]
#[/row]
#[row]
# grow_factor = 0
[column]
horizontal_alignment = "left"
#border = "bottom"
#border_size = 10
border = "all"
border_size = 5
[toggle_button]
id = "show_replay"
definition = "default"
label = _ "Show replay"
tooltip = _ "Play the embedded replay from the saved game if applicable"
[/toggle_button]
[/column]
#[/row]
#[row]
# grow_factor = 0
[column]
horizontal_alignment = "left"
#border = "bottom"
#border_size = 10
border = "all"
border_size = 5
[toggle_button]
id = "cancel_orders"
definition = "default"
label = _ "Cancel orders"
tooltip = _ "Cancel any pending unit movements in the saved game"
[/toggle_button]
[/column]
[/row]
[/grid]
[/column]
[/row]
[/grid]
[/column]
[/row]
[/grid]
border = "all"
border_size = 5
{_GUI_GAME_LIST}
[/column]
[/row]
[row]
grow_factor = 0
[column]
grow_factor = 0
vertical_grow = true
horizontal_grow = true
horizontal_alignment = "left"
[grid]
@ -487,102 +342,30 @@
[column]
border = "all"
border_size = 5
#horizontal_alignment = "left"
horizontal_grow = true
[text_box]
id = "txtFilter"
[button]
id = "browse_saves_folder"
definition = "action_browse_experimental"
tooltip = _ "Open saves folder"
[/button]
[/column]
[column]
border = "all"
border_size = 5
[menu_button]
id = "dirList"
definition = "default"
{FILTER_TEXT_BOX_HINT}
[/text_box]
tooltip = _ "Show saves from a different version of Wesnoth"
[/menu_button]
[/column]
[/row]
[row]
grow_factor = 0
[column]
grow_factor = 0
border = "all"
border_size = 5
vertical_grow = true
horizontal_grow = true
{GUI_FORCE_WIDGET_MINIMUM_SIZE 260 260 (
[minimap]
id = "minimap"
definition = "no_size"
[/minimap]
)}
[/column]
[/row]
[row]
grow_factor = 0
[column]
grow_factor = 1
border = "all"
border_size = 5
horizontal_grow = true
[label]
id = "lblScenario"
definition = "gold_large"
can_shrink = true
[/label]
[/column]
[/row]
[row]
grow_factor = 0
[column]
grow_factor = 1
border = "all"
border_size = 5
horizontal_grow = true
[scroll_label]
id = "slblSummary"
definition = "default_small"
use_markup = true
vertical_scrollbar_mode = "auto"
wrap = false
[/scroll_label]
[/column]
[/row]
{GUI_HORIZONTAL_SPACER_LINE}
[row]
grow_factor = 1
[column]
horizontal_grow = true
vertical_grow = true
border = "all"
border_size = 5
{_GUI_LEADER_LIST}
[/column]
[/row]
[/grid]
[/column]
@ -593,63 +376,289 @@
[/column]
[/row]
[row]
grow_factor = 0
[column]
grow_factor = 1
grow_factor = 0
vertical_grow = true
horizontal_grow = true
border = "left"
border_size = 10
[grid]
[row]
grow_factor = 0
[column]
grow_factor = 1
horizontal_alignment = "left"
#border = "bottom"
#border_size = 10
border = "all"
border_size = 5
horizontal_grow = true
[button]
id = "delete"
[text_box]
id = "txtFilter"
definition = "default"
label = _ "Delete"
[/button]
{FILTER_TEXT_BOX_HINT}
[/text_box]
[/column]
[/row]
[row]
grow_factor = 1
[column]
grow_factor = 0
border = "all"
border_size = 5
horizontal_alignment = "right"
horizontal_grow = true
vertical_grow = true
[button]
id = "ok"
definition = "really_large"
[scrollbar_panel]
label = _ "Load"
[/button]
[definition]
[row]
grow_factor = 0
[column]
grow_factor = 0
border = "all"
border_size = 5
vertical_grow = true
horizontal_grow = true
{GUI_FORCE_WIDGET_MINIMUM_SIZE 150 200 (
[minimap]
id = "minimap"
definition = "no_size"
[/minimap]
)}
[/column]
[/row]
[row]
grow_factor = 0
[column]
grow_factor = 1
border = "all"
border_size = 5
horizontal_grow = true
[label]
id = "lblScenario"
definition = "gold_large"
can_shrink = true
[/label]
[/column]
[/row]
[row]
grow_factor = 1
[column]
grow_factor = 1
border = "all"
border_size = 5
horizontal_grow = true
vertical_grow = true
[scroll_label]
id = "slblSummary"
definition = "default_small"
use_markup = true
vertical_scrollbar_mode = "initial_auto"
wrap = false
[/scroll_label]
[/column]
[/row]
[row]
grow_factor = 0
[column]
horizontal_grow = true
border = "top"
border_size = 10
{_GUI_LEADER_LIST}
[/column]
[/row]
[/definition]
[/scrollbar_panel]
[/column]
[/row]
[row]
grow_factor = 0
[column]
border = "all"
border_size = 5
horizontal_grow = true
[button]
id = "cancel"
definition = "default"
[grid]
label = _ "Cancel"
[/button]
[row]
grow_factor = 1
[column]
grow_factor = 1
horizontal_grow = true
[grid]
[row]
[column]
horizontal_alignment = "left"
#border = "bottom"
#border_size = 10
border = "all"
border_size = 5
[toggle_button]
id = "change_difficulty"
definition = "default"
label = _ "Change difficulty"
tooltip = _ "Change campaign difficulty before loading"
[/toggle_button]
[/column]
[/row]
[row]
grow_factor = 0
[column]
horizontal_alignment = "left"
#border = "bottom"
#border_size = 10
border = "all"
border_size = 5
[toggle_button]
id = "show_replay"
definition = "default"
label = _ "Show replay"
tooltip = _ "Play the embedded replay from the saved game if applicable"
[/toggle_button]
[/column]
[/row]
[row]
grow_factor = 0
[column]
horizontal_alignment = "left"
#border = "bottom"
#border_size = 10
border = "all"
border_size = 5
[toggle_button]
id = "cancel_orders"
definition = "default"
label = _ "Cancel orders"
tooltip = _ "Cancel any pending unit movements in the saved game"
[/toggle_button]
[/column]
[/row]
[/grid]
[/column]
[column]
grow_factor = 0
border = "all"
border_size = 5
[button]
id = "delete"
definition = "big_trash"
label = _ "Delete"
[/button]
[/column]
[/row]
[/grid]
[/column]
[/row]
[row]
grow_factor = 0
[column]
horizontal_grow = true
[grid]
[row]
[column]
grow_factor = 1
border = "all"
border_size = 5
horizontal_grow = true
[button]
id = "ok"
definition = "really_large"
label = _ "Load"
[/button]
[/column]
[column]
grow_factor = 0
border = "all"
border_size = 5
horizontal_grow = false
[button]
id = "cancel"
definition = "default"
label = _ "Cancel"
[/button]
[/column]
[/row]
[/grid]
[/column]

View file

@ -191,6 +191,7 @@ void game_load::display_savegame_internal(const savegame::save_info& game)
const std::string sprite_scale_mod = (formatter() << "~SCALE_INTO(" << game_config::tile_size << ',' << game_config::tile_size << ')').str();
unsigned li = 0;
for(const auto& leader : summary_.child_range("leader")) {
widget_data data;
widget_item item;
@ -216,7 +217,7 @@ void game_load::display_savegame_internal(const savegame::save_info& game)
leader_image += sprite_scale_mod;
}
item["label"] = leader_image;
item["label"] = leader_image + "~FL(horiz)";
data.emplace("imgLeader", item);
item["label"] = leader["leader_name"];
@ -230,6 +231,12 @@ void game_load::display_savegame_internal(const savegame::save_info& game)
data.emplace("leader_troops", item);
leader_list.add_row(data);
// FIXME: hack. In order to use the listbox in view-only mode, you also need to
// disable the max number of "selected items", since in this mode, "selected" is
// synonymous with "visible". This basically just flags all rows as visible. Need
// a better solution at some point
leader_list.select_row(li++, true);
}
std::stringstream str;
@ -237,8 +244,8 @@ void game_load::display_savegame_internal(const savegame::save_info& game)
evaluate_summary_string(str, summary_);
// The new label value may have more or less lines than the previous value, so invalidate the layout.
find_widget<scroll_label>(get_window(), "slblSummary", false).set_label(str.str());
get_window()->invalidate_layout();
find_widget<styled_widget>(get_window(), "slblSummary", false).set_label(str.str());
//get_window()->invalidate_layout();
toggle_button& replay_toggle = dynamic_cast<toggle_button&>(*show_replay_->get_widget());
toggle_button& cancel_orders_toggle = dynamic_cast<toggle_button&>(*cancel_orders_->get_widget());
@ -284,7 +291,7 @@ void game_load::display_savegame()
find_widget<minimap>(get_window(), "minimap", false).set_map_data("");
find_widget<label>(get_window(), "lblScenario", false)
.set_label("");
find_widget<scroll_label>(get_window(), "slblSummary", false)
find_widget<styled_widget>(get_window(), "slblSummary", false)
.set_label("");
listbox& leader_list = find_widget<listbox>(get_window(), "leader_list", false);