diff --git a/boost_test_schedule b/boost_test_schedule
index d5c737eded65..6779a5cf2741 100644
--- a/boost_test_schedule
+++ b/boost_test_schedule
@@ -7,7 +7,6 @@ test_gui2/modal_dialog_test_addon_license_prompt
test_gui2/modal_dialog_test_campaign_difficulty
test_gui2/modal_dialog_test_chat_log
test_gui2/modal_dialog_test_editor_choose_addon
-test_gui2/modal_dialog_test_community_dialog
test_gui2/modal_dialog_test_core_selection
test_gui2/modal_dialog_test_custom_tod
test_gui2/modal_dialog_test_depcheck_confirm_change
diff --git a/copyrights.csv b/copyrights.csv
index 4990c7f54c23..a0e6d3a6d5f9 100644
--- a/copyrights.csv
+++ b/copyrights.csv
@@ -17351,6 +17351,7 @@ Date,File,License,Author - Real Name(other name);Real Name(other name);etc,Notes
2019/01/01,images/icons/action/close_25.png,GNU GPL v2+,Emilien Rotival(LordBob),,,0d1ac037312ab9156350f62e6b5fb64c
2019/01/01,images/icons/action/copy_25-active.png,GNU GPL v2+,Iris Morelle(Iris),,,5bd2ce4c46c9cd0756a452b94a1863e2
2019/01/01,images/icons/action/copy_25-pressed.png,GNU GPL v2+,Iris Morelle(Iris),,,40629fe91598d11e4a23c69e3b6223ab
+2024/05/11,images/icons/action/copy_25-success.png,GNU GPL v2+,Subhraman Sarkar(babaissarkar),,,06361a3891a718ed1ae10ecc2397fc6f
2019/01/01,images/icons/action/copy_25.png,GNU GPL v2+,Iris Morelle(Iris),,,bfe5261f9492119071b9554ec692f019
2013/05/26,images/icons/action/delete_25-active.png,GNU GPL v2+,Emilien Rotival(LordBob),,,fa813b7933e4e1d40eba137d7b7898c3
2013/05/26,images/icons/action/delete_25-pressed.png,GNU GPL v2+,Emilien Rotival(LordBob),,,2baf7e274266d7d1d5e5736e66b04c3e
diff --git a/data/gui/widget/button_25x25.cfg b/data/gui/widget/button_25x25.cfg
index 7296daff254a..dfbc419aacb7 100644
--- a/data/gui/widget/button_25x25.cfg
+++ b/data/gui/widget/button_25x25.cfg
@@ -228,14 +228,6 @@
# Action icon buttons
-{_GUI_DEFINITION
- "action_copy"
- "Right arrow button for copy-to-clipboard."
- "buttons/button_square/button_square_25"
- "icons/action/copy_25"
- ()
-}
-
{_GUI_DEFINITION
"action_go"
"Right arrow button for go/browse actions."
diff --git a/data/gui/widget/button_success.cfg b/data/gui/widget/button_success.cfg
new file mode 100644
index 000000000000..e12714f49fa0
--- /dev/null
+++ b/data/gui/widget/button_success.cfg
@@ -0,0 +1,272 @@
+#textdomain wesnoth-lib
+###
+### buttons with success indication
+###
+
+#define _GUI_STATE BACKGROUND_IMAGE BORDER_COLOR BORDER_COLOR_DARK HIGHLIGHT_LINE_COLOR IPF
+ {GUI__BUTTON_NORMAL_FRAME buttons/button_normal/{BACKGROUND_IMAGE}
+ ({BORDER_COLOR})
+ ({BORDER_COLOR_DARK})
+ ({HIGHLIGHT_LINE_COLOR})
+ ({IPF})
+ }
+#enddef
+
+#define _GUI_RESOLUTION RESOLUTION SIZE IMAGE IMAGE_OVERLAY IPF
+[resolution]
+
+ {RESOLUTION}
+
+ min_width = {SIZE}
+ min_height = {SIZE}
+
+ default_width = {SIZE}
+ default_height = {SIZE}
+
+ max_width = {SIZE}
+ max_height = {SIZE}
+
+ [state_enabled]
+
+ [draw]
+
+ [image]
+ w = "(width)"
+ h = "(height)"
+ name = {IMAGE} + ".png{IPF}"
+ [/image]
+
+ [image]
+ {GUI_CENTERED_IMAGE}
+
+ name = {IMAGE_OVERLAY} + ".png{IPF}"
+ [/image]
+
+ [/draw]
+
+ [/state_enabled]
+
+ [state_disabled]
+
+ [draw]
+
+ [image]
+ w = "(width)"
+ h = "(height)"
+ name = {IMAGE} + ".png~GS(){IPF}"
+ [/image]
+
+ [image]
+ {GUI_CENTERED_IMAGE}
+
+ name = {IMAGE_OVERLAY} + ".png~GS(){IPF}"
+ [/image]
+
+ [/draw]
+
+ [/state_disabled]
+
+ [state_pressed]
+
+ [draw]
+
+ [image]
+ w = {SIZE}
+ h = {SIZE}
+ name = {IMAGE} + "-pressed.png{IPF}"
+ [/image]
+
+ [image]
+ {GUI_CENTERED_IMAGE}
+
+ name = {IMAGE_OVERLAY} + "-pressed.png{IPF}"
+ [/image]
+
+ [/draw]
+
+ [/state_pressed]
+
+ [state_focused]
+
+ [draw]
+
+ [image]
+ w = "(width)"
+ h = "(height)"
+ name = {IMAGE} + "-active.png{IPF}"
+ [/image]
+
+ [image]
+ {GUI_CENTERED_IMAGE}
+
+ name = {IMAGE_OVERLAY} + "-active.png{IPF}"
+ [/image]
+
+ [/draw]
+
+ [/state_focused]
+
+ [state_success]
+
+ [draw]
+
+ [image]
+ w = "(width)"
+ h = "(height)"
+ name = {IMAGE} + ".png{IPF}"
+ [/image]
+
+ [image]
+ {GUI_CENTERED_IMAGE}
+
+ name = {IMAGE_OVERLAY} + "-success.png{IPF}"
+ [/image]
+
+ [/draw]
+
+ [/state_success]
+
+ [/resolution]
+#enddef
+
+#define _GUI_DEFINITION ID DESCRIPTION IMAGE IMAGE_OVERLAY IPF
+[button_definition]
+ id = {ID}
+ description = {DESCRIPTION}
+
+ {_GUI_RESOLUTION () 25 ({IMAGE}) ({IMAGE_OVERLAY}) ({IPF})}
+
+[/button_definition]
+
+#enddef
+
+{_GUI_DEFINITION
+ "action_copy"
+ "Right arrow button for copy-to-clipboard."
+ "buttons/button_square/button_square_25"
+ "icons/action/copy_25"
+ ()
+}
+
+# Text only copy button with success indication
+
+#define _GUI_BUTTON_TEXT TEXT FONT_SIZE FONT_STYLE FONT_COLOR
+ [text]
+ x = {GUI__TEXT_HORIZONTALLY_CENTRED}
+ y = "(max((height - text_height - 2) / 2, 0))"
+ w = "(text_width)"
+ h = "(text_height)"
+ font_size = {FONT_SIZE}
+ font_style = {FONT_STYLE}
+ color = {FONT_COLOR}
+ text = {TEXT}
+ text_markup = "(text_markup)"
+ [/text]
+#enddef
+
+#define _GUI_RESOLUTION_COPY RESOLUTION MIN_WIDTH DEFAULT_WIDTH HEIGHT EXTRA_WIDTH EXTRA_HEIGHT FONT_SIZE IPF ALPHA
+ [resolution]
+
+ {RESOLUTION}
+
+ min_width = {MIN_WIDTH}
+ min_height = {HEIGHT}
+
+ default_width = {DEFAULT_WIDTH}
+ default_height = {HEIGHT}
+
+ max_width = 0
+ max_height = {HEIGHT}
+
+ text_extra_width = {EXTRA_WIDTH}
+ text_extra_height = {EXTRA_HEIGHT}
+ text_font_size = {FONT_SIZE}
+
+ [state_enabled]
+
+ [draw]
+
+ {_GUI_STATE "background"
+ ({GUI__BORDER_COLOR ALPHA={ALPHA}})
+ ({GUI__BORDER_COLOR_DARK ALPHA={ALPHA}}) ("21, 79, 109, 255") {IPF}}
+
+ {_GUI_BUTTON_TEXT (_"page^Copy") ({FONT_SIZE}) () ({GUI__FONT_COLOR_ENABLED__TITLE})}
+
+ [/draw]
+
+ [/state_enabled]
+
+ [state_disabled]
+
+ [draw]
+
+ {_GUI_STATE "background"
+ ({GUI__FONT_COLOR_DISABLED__DEFAULT ALPHA={ALPHA}})
+ ("89, 89, 89, {ALPHA}")
+ ("60, 60, 60, 255") "~GS(){IPF}"}
+
+ {_GUI_BUTTON_TEXT (_"page^Copy") ({FONT_SIZE}) () ({GUI__FONT_COLOR_DISABLED__TITLE})}
+
+ [/draw]
+
+ [/state_disabled]
+
+ [state_pressed]
+
+ [draw]
+
+ {_GUI_STATE "background-pressed"
+ ({GUI__BORDER_COLOR ALPHA={ALPHA}})
+ ({GUI__BORDER_COLOR_DARK ALPHA={ALPHA}}) ("1, 10, 16, 255") {IPF}}
+
+ {_GUI_BUTTON_TEXT (_"page^Copy") ({FONT_SIZE}) () ({GUI__FONT_COLOR_ENABLED__TITLE})}
+
+ [/draw]
+
+ [/state_pressed]
+
+ [state_focused]
+
+ [draw]
+
+ {_GUI_STATE "background-active"
+ ({GUI__BORDER_COLOR ALPHA={ALPHA}})
+ ({GUI__BORDER_COLOR_DARK ALPHA={ALPHA}}) ("12, 108, 157, 255") {IPF}}
+
+ {_GUI_BUTTON_TEXT (_"page^Copy") ({FONT_SIZE}) () ({GUI__FONT_COLOR_ENABLED__TITLE})}
+
+ [/draw]
+
+ [/state_focused]
+
+ [state_success]
+
+ [draw]
+
+ {_GUI_STATE "background"
+ ({GUI__BORDER_COLOR ALPHA={ALPHA}})
+ ({GUI__BORDER_COLOR_DARK ALPHA={ALPHA}}) ("21, 79, 109, 255") {IPF}}
+
+ {_GUI_BUTTON_TEXT (_"page^✔ Copied") ({FONT_SIZE}) () ("0, 255, 0, 255")}
+
+ [/draw]
+
+ [/state_success]
+
+ [/resolution]
+#enddef
+
+[button_definition]
+
+ id = "copy"
+ description = "Text only copy button with success indication"
+
+ {_GUI_RESOLUTION_COPY () 40 112 26 13 4 16 () 255}
+
+[/button_definition]
+
+#undef _GUI_STATE
+#undef _GUI_BUTTON_TEXT
+#undef _GUI_RESOLUTION
+#undef _GUI_RESOLUTION_COPY
+#undef _GUI_DEFINITION
diff --git a/data/gui/widget/button_title_screen_small.cfg b/data/gui/widget/button_title_screen_small.cfg
index 80d4041b37b1..c2c4e57806d5 100644
--- a/data/gui/widget/button_title_screen_small.cfg
+++ b/data/gui/widget/button_title_screen_small.cfg
@@ -130,6 +130,19 @@
[/button_definition]
+[button_definition]
+
+ id = "titlescreen_about"
+ description = "General information about Battle for Wesnoth."
+
+ {_GUI_RESOLUTION () 40 80 16 43 14 ({_GUI_BUTTON_FONT_SIZE}) icons/action/about_25 () 255}
+ {_GUI_RESOLUTION ({GUI_BIG_RESOLUTION})
+ 50 80 20 46 16
+ ({GUI_SCALE_RESOLUTION {_GUI_BUTTON_FONT_SIZE}})
+ icons/action/about_25 () 255}
+
+[/button_definition]
+
#undef _GUI_RESOLUTION
#undef _GUI_BUTTON_ICON
#undef _GUI_BUTTON_TEXT
diff --git a/data/gui/widget/label_default.cfg b/data/gui/widget/label_default.cfg
index e165a756bcb8..9f418733f2a4 100644
--- a/data/gui/widget/label_default.cfg
+++ b/data/gui/widget/label_default.cfg
@@ -119,6 +119,8 @@
{_GUI_DEFINITION "bad" "regular red label" () DEFAULT () BAD }
{_GUI_DEFINITION "bad_small" "small red label" () SMALL () BAD }
+{_GUI_DEFINITION "title_script" "label used for titles, script font" "script" HUGE () TITLE }
+
{_GUI_DEFINITION "monospace" "fixed width scroll label" monospace DEFAULT () DEFAULT }
#undef _GUI_SCALE_RES SIZE
diff --git a/data/gui/widget/listbox_default.cfg b/data/gui/widget/listbox_default.cfg
index 649f83b90ae9..ed4a85400423 100644
--- a/data/gui/widget/listbox_default.cfg
+++ b/data/gui/widget/listbox_default.cfg
@@ -148,6 +148,185 @@
[/resolution]
#enddef
+#define _GUI_RESOLUTION_NO_RIGHT_BORDER RESOLUTION FONT_SIZE FONT_STYLE FONT_COLOR_ENABLED FONT_COLOR_DISABLED
+ [resolution]
+
+ {RESOLUTION}
+
+ min_width = 0
+ min_height = 0
+
+ default_width = 0
+ default_height = 0
+
+ max_width = 0
+ max_height = 0
+
+ text_font_size = {FONT_SIZE}
+ text_font_style = {FONT_STYLE}
+
+ [state_enabled]
+
+ [draw]
+ [rectangle]
+ x = 0
+ y = 0
+ w = "(width)"
+ h = "(height)"
+
+ border_thickness = 0
+ border_color = "16, 22, 35, 255"
+
+ fill_color = "0, 0, 0, 137"
+ [/rectangle]
+ [line]
+ x1 = 1
+ y1 = 1
+ x2 = "(width)"
+ y2 = 1
+
+ color = {GUI__BORDER_COLOR_DARK}
+ thickness = 4
+ [/line]
+ [line]
+ x1 = "(width)"
+ y1 = "(height-2)"
+ x2 = 1
+ y2 = "(height-2)"
+
+ color = {GUI__BORDER_COLOR_DARK}
+ thickness = 4
+ [/line]
+ [line]
+ x1 = 1
+ y1 = 1
+ x2 = 1
+ y2 = "(height-2)"
+
+ color = {GUI__BORDER_COLOR_DARK}
+ thickness = 4
+ [/line]
+ [/draw]
+
+ [/state_enabled]
+
+ [state_disabled]
+
+ [draw]
+ [/draw]
+
+ [/state_disabled]
+
+ [grid]
+
+ [row]
+ grow_factor = 0
+
+ [column]
+ grow_factor = 1
+ horizontal_grow = true
+ vertical_alignment = "top"
+
+ [grid]
+ id = "_header_grid"
+ [/grid]
+
+ [/column]
+
+ [column]
+
+ [spacer]
+ [/spacer]
+
+ [/column]
+
+ [/row]
+
+ [row]
+ grow_factor = 1
+
+ [column]
+ grow_factor = 1
+ horizontal_grow = true # needed ?
+ vertical_grow = true # needed ?
+
+ [grid]
+ id = "_content_grid"
+
+ [row]
+
+ [column]
+ horizontal_grow = true
+ vertical_grow = true
+
+ [grid]
+ id = "_list_grid"
+ [/grid]
+
+ [/column]
+
+ [/row]
+
+ [/grid]
+
+ [/column]
+
+ [column]
+ grow_factor = 0
+
+ {GUI__VERTICAL_SCROLLBAR_GRID}
+
+ [/column]
+
+ [/row]
+
+ [row]
+ grow_factor = 0
+
+ [column]
+ grow_factor = 1
+ horizontal_grow = true
+ vertical_alignment = "bottom"
+
+ [grid]
+ id = "_footer_grid"
+ [/grid]
+
+ [/column]
+
+ [column]
+
+ [spacer]
+ [/spacer]
+
+ [/column]
+
+ [/row]
+
+ [row]
+ grow_factor = 0
+
+ [column]
+
+
+ {GUI__HORIZONTAL_SCROLLBAR_GRID}
+
+ [/column]
+
+ [column]
+
+ [spacer]
+ [/spacer]
+
+ [/column]
+
+ [/row]
+
+ [/grid]
+
+ [/resolution]
+#enddef
+
[listbox_definition]
id = "default"
description = "Default listbox."
@@ -162,6 +341,20 @@
[/listbox_definition]
+[listbox_definition]
+ id = "box_display_no_right"
+ description = "Default listbox, border on all sides except right. To be used as left side tab."
+
+ {_GUI_RESOLUTION_NO_RIGHT_BORDER
+ ()
+ ({GUI_FONT_SIZE_DEFAULT})
+ ()
+ ({GUI__FONT_COLOR_ENABLED__DEFAULT})
+ ({GUI__FONT_COLOR_DISABLED__DEFAULT})
+ }
+
+[/listbox_definition]
+
[horizontal_listbox_definition]
id = "default"
description = "Default horizontal listbox."
diff --git a/data/gui/widget/tab_container_bordered.cfg b/data/gui/widget/tab_container_bordered.cfg
new file mode 100644
index 000000000000..38fe14fb8238
--- /dev/null
+++ b/data/gui/widget/tab_container_bordered.cfg
@@ -0,0 +1,130 @@
+#textdomain wesnoth-lib
+###
+### Definition of a tabbed container
+### A widget that has multiple pages and a list of available pages (tabs)
+### When an item is selected from the list, the corresponding page is shown
+###
+
+[tab_container_definition]
+ id = "left_tabs"
+ description = "tab container with tabs on left, bordered contents."
+
+ [resolution]
+
+ min_width = 0
+ min_height = 0
+
+ default_width = 0
+ default_height = 0
+
+ max_width = 0
+ max_height = 0
+
+ [linked_group]
+ id = "page_icon"
+ fixed_width = true
+ fixed_height = true
+ [/linked_group]
+
+ [linked_group]
+ id = "page_label"
+ fixed_width = true
+ [/linked_group]
+
+ [state_enabled]
+
+ [draw]
+ [/draw]
+
+ [/state_enabled]
+
+ [state_disabled]
+
+ [draw]
+ [/draw]
+
+ [/state_disabled]
+
+ [grid]
+
+ [row]
+
+ [column]
+ horizontal_grow = true
+ vertical_grow = true
+
+ [grid]
+ id = "_content_grid"
+
+ [row]
+ [column]
+ vertical_alignment = "top"
+
+ [listbox]
+ id = "_tab_list"
+ definition = "box_display_no_right"
+ horizontal_scrollbar_mode = "never"
+ [list_definition]
+ [row]
+ [column]
+ vertical_grow = true
+ horizontal_grow = true
+ [toggle_panel]
+ definition = "fancy"
+ [grid]
+ [row]
+ [column]
+ grow_factor = 0
+ horizontal_alignment = "left"
+ border = "all"
+ border_size = 5
+ [image]
+ id = "image"
+ definition = "default"
+ linked_group = "page_icon"
+ [/image]
+ [/column]
+
+ [column]
+ grow_factor = 1
+ horizontal_grow = true
+ border = "all"
+ border_size = 5
+ [label]
+ id = "name"
+ definition = "default"
+ linked_group = "page_label"
+ [/label]
+ [/column]
+
+ [column]
+ [spacer]
+ width = 15
+ [/spacer]
+ [/column]
+ [/row]
+ [/grid]
+ [/toggle_panel]
+ [/column]
+ [/row]
+ [/list_definition]
+ [/listbox]
+ [/column]
+
+ [column]
+ [grid]
+ id = "_page"
+ [/grid]
+ [/column]
+ [/row]
+ [/grid]
+
+ [/column]
+
+ [/row]
+
+ [/grid]
+
+ [/resolution]
+
+[/tab_container_definition]
diff --git a/data/gui/window/community_dialog.cfg b/data/gui/window/community_dialog.cfg
deleted file mode 100644
index 2265d5a8e1da..000000000000
--- a/data/gui/window/community_dialog.cfg
+++ /dev/null
@@ -1,184 +0,0 @@
-[window]
- id = "community_dialog"
- description = "Dialog for links to different places related to Wesnoth's community"
-
- [resolution]
- definition = "default"
-
- automatic_placement = true
- vertical_placement = "center"
- horizontal_placement = "center"
-
- maximum_width = 800
-
- [tooltip]
- id = "tooltip"
- [/tooltip]
-
- [helptip]
- id = "tooltip"
- [/helptip]
-
- [grid]
-
- [row]
- [column]
- horizontal_grow = true
- [grid]
- [row]
- [column]
- grow_factor = 1
-
- border = "all"
- border_size = 5
- horizontal_alignment = "left"
- [label]
- definition = "title"
-
- #po: this is on a button that opens a dialog with links to various Wesnoth community websites
- label = _ "Community"
- [/label]
-
- [/column]
- [/row]
- [/grid]
- [/column]
- [/row]
-
- [row]
- grow_factor = 1
-
- [column]
- border = "all"
- border_size = 10
-
- [button]
- id = "forums"
- definition = "default"
-
- #po: this is on a button that opens the Wesnoth forums webpage
- label = _ "Forums"
- [/button]
-
- [/column]
-
- [/row]
-
- [row]
- grow_factor = 1
-
- [column]
- border = "all"
- border_size = 10
-
- [button]
- id = "discord"
- definition = "default"
-
- #po: this is on a button that opens the Wesnoth Discord server webpage
- label = _ "Discord"
- [/button]
-
- [/column]
-
- [/row]
-
- [row]
- grow_factor = 1
-
- [column]
- border = "all"
- border_size = 10
-
- [button]
- id = "irc"
- definition = "default"
-
- #po: this is on a button that opens the Wesnoth IRC webpage. IRC is an acronym for Internet Relay Chat
- label = _ "IRC"
- [/button]
-
- [/column]
-
- [/row]
-
- [row]
- grow_factor = 1
-
- [column]
- border = "all"
- border_size = 10
-
- [button]
- id = "steam"
- definition = "default"
-
- #po: this is on a button that opens the Wesnoth Steam forums webpage
- label = _ "Steam"
- [/button]
-
- [/column]
-
- [/row]
-
- [row]
- grow_factor = 1
-
- [column]
- border = "all"
- border_size = 10
-
- [button]
- id = "reddit"
- definition = "default"
-
- #po: this is on a button that opens the Wesnoth Reddit webpage
- label = _ "Reddit"
- [/button]
-
- [/column]
-
- [/row]
-
- [row]
- grow_factor = 1
-
- [column]
- border = "all"
- border_size = 10
-
- [button]
- id = "donate"
- definition = "default"
-
- #po: this is on a button that opens the Wesnoth SPI webpage for sending donations
- label = _ "Donate"
- [/button]
-
- [/column]
-
- [/row]
-
- [row]
- grow_factor = 1
-
- [column]
- border = "all"
- border_size = 10
-
- [button]
- id = "ok"
- definition = "default"
-
- label = _ "Close"
- [/button]
-
- [/column]
-
- [/row]
-
- [/grid]
-
- [/resolution]
-
-[/window]
diff --git a/data/gui/window/game_version.cfg b/data/gui/window/game_version.cfg
index 1781df74b36b..f4d9ca3ebc7e 100644
--- a/data/gui/window/game_version.cfg
+++ b/data/gui/window/game_version.cfg
@@ -1,165 +1,441 @@
#textdomain wesnoth-lib
#define _GUI_GAME_PATHS_ENTRY ID_STEM LABEL
- [row]
+[row]
+ grow_factor = 0
+
+ [column]
grow_factor = 0
+
+ border = "all"
+ border_size = 5
+ horizontal_alignment = "left"
+
+ [label]
+ id = "label_"+{ID_STEM}
+ definition = "default"
+
+ label = {LABEL}
+ [/label]
+
+ [/column]
+
+ [column]
+ grow_factor = 1
+
+ border = "all"
+ border_size = 5
+ horizontal_grow = true
+
+ [text_box]
+ id = "path_"+{ID_STEM}
+ definition = "default"
+ editable = false
+ [/text_box]
+
+ [/column]
+
+ [column]
+ grow_factor = 0
+
+ border = "all"
+ border_size = 5
+ horizontal_grow = true
+
+ [button]
+ id = "copy_"+{ID_STEM}
+ definition = "action_copy"
+ label = _ "filesystem^Copy"
+ tooltip = _ "Copy this path to clipboard"
+ [/button]
+
+ [/column]
+
+ [column]
+ grow_factor = 0
+
+ border = "all"
+ border_size = 5
+ horizontal_grow = true
+
+ [button]
+ id = "browse_"+{ID_STEM}
+ definition = "action_browse"
+ label = _ "filesystem^Browse"
+ tooltip = _ "Browse this location using a file manager"
+ [/button]
+
+ [/column]
+
+[/row]
+#enddef
- [column]
- grow_factor = 0
-
- border = "all"
- border_size = 5
- horizontal_alignment = "left"
-
- [label]
- id = "label_"+{ID_STEM}
- definition = "default"
-
- label = {LABEL}
- [/label]
-
- [/column]
-
- [column]
- grow_factor = 1
-
- border = "all"
- border_size = 5
- horizontal_grow = true
-
- [text_box]
- id = "path_"+{ID_STEM}
- definition = "default"
- [/text_box]
-
- [/column]
-
- [column]
- grow_factor = 0
-
- border = "all"
- border_size = 5
- horizontal_grow = true
-
- [button]
- id = "copy_"+{ID_STEM}
- definition = "action_copy"
- label = _ "filesystem^Copy"
- tooltip = _ "Copy this path to clipboard"
- [/button]
-
- [/column]
+#define _GUI_VERINFO_TAB
+[toggle_panel]
+ linked_group = "tabs"
+
+ [grid]
+
+ [row]
+
+ {_GUI_VERINFO_TAB_PADDING}
+
+ [column]
+ grow_factor = 1
+ border = all
+ border_size = 8
+ horizontal_alignment = "left"
+
+ [label]
+ definition = "default_italic"
+ id = "tab_label"
+ wrap = true
+ [/label]
+
+ [/column]
+
+ {_GUI_VERINFO_TAB_PADDING}
+
+ [/row]
+
+ [/grid]
+
+[/toggle_panel]
+#enddef
+#define _GUI_VERINFO_TAB_PAGE_GENERAL
+ [row]
[column]
- grow_factor = 0
-
- border = "all"
- border_size = 5
- horizontal_grow = true
-
- [button]
- id = "browse_"+{ID_STEM}
- definition = "action_browse"
- label = _ "filesystem^Browse"
- tooltip = _ "Browse this location using a file manager"
- [/button]
-
+ vertical_alignment = top
+ horizontal_alignment = left
+ [grid]
+ [row]
+ [column]
+ border = "left,bottom"
+ border_size = 5
+ horizontal_alignment = left
+ [grid]
+ [row]
+ [column]
+ horizontal_alignment = left
+ [label]
+ label = _ "✦ Version:"
+ use_markup = yes
+ [/label]
+ [/column]
+ [column]
+ grow_factor = 0
+ horizontal_alignment = left
+ border = "left"
+ border_size = 5
+
+ [label]
+ id = version
+ [/label]
+ [/column]
+ [/row]
+ [/grid]
+ [/column]
+ [/row]
+ [row]
+ [column]
+ border = "left,bottom"
+ border_size = 5
+ horizontal_alignment = left
+ [grid]
+ [row]
+ [column]
+ horizontal_alignment = left
+ [label]
+ label = _ "✦ Running on:"
+ use_markup = yes
+ [/label]
+ [/column]
+ [column]
+ grow_factor = 0
+ horizontal_alignment = left
+ border = "left"
+ border_size = 5
+
+ [label]
+ id = os
+ use_markup = yes
+ [/label]
+ [/column]
+ [/row]
+ [/grid]
+ [/column]
+ [/row]
+ [row]
+ [column]
+ border = "left,bottom"
+ border_size = 5
+ horizontal_alignment = left
+ [grid]
+ [row]
+ [column]
+ horizontal_alignment = left
+ [label]
+ label = _ "✦ Architecture:"
+ use_markup = yes
+ [/label]
+ [/column]
+ [column]
+ grow_factor = 0
+ horizontal_alignment = left
+ border = "left"
+ border_size = 5
+
+ [label]
+ id = arch
+ [/label]
+ [/column]
+ [/row]
+ [/grid]
+ [/column]
+ [/row]
+ [row]
+ [column]
+ border = "left,bottom"
+ border_size = 5
+ horizontal_alignment = left
+ [grid]
+ [row]
+ [column]
+ horizontal_alignment = left
+ [label]
+ label = _ "✦ Homepage:"
+ use_markup = yes
+ [/label]
+ [/column]
+ [column]
+ grow_factor = 0
+ horizontal_alignment = left
+ border = "left"
+ border_size = 5
+
+ [label]
+ label = _ "https://www.wesnoth.org"
+ use_markup = yes
+ link_aware = yes
+ [/label]
+ [/column]
+ [/row]
+ [/grid]
+ [/column]
+ [/row]
+ [row]
+ [column]
+ border = "left,bottom"
+ border_size = 5
+ horizontal_alignment = left
+ [grid]
+ [row]
+ [column]
+ horizontal_alignment = left
+ [label]
+ label = _ "✦ Wiki:"
+ use_markup = yes
+ [/label]
+ [/column]
+ [column]
+ grow_factor = 0
+ horizontal_alignment = left
+ border = "left"
+ border_size = 5
+
+ [label]
+ label = _ "https://wiki.wesnoth.org"
+ use_markup = yes
+ link_aware = yes
+ [/label]
+ [/column]
+ [/row]
+ [/grid]
+ [/column]
+ [/row]
+ [row]
+ [column]
+ [spacer]
+ height = 20
+ [/spacer]
+ [/column]
+ [/row]
+ [row]
+ [column]
+ vertical_alignment = bottom
+ horizontal_alignment = left
+ border = left
+ border_size = 5
+ [grid]
+ [row]
+ [column]
+ horizontal_alignment = left
+ [label]
+ label = _ "➤ Copy a full report here:"
+ use_markup = yes
+ [/label]
+ [/column]
+ [column]
+ grow_factor = 0
+ horizontal_alignment = left
+ border = "all"
+ border_size = 10
+
+ [button]
+ id = "copy_all"
+ definition = copy
+ [/button]
+ [/column]
+ [/row]
+ [row]
+ [column]
+ horizontal_alignment = left
+ [label]
+ label = _ "➤ Report an issue or request a feature:"
+ use_markup = yes
+ [/label]
+ [/column]
+ [column]
+ grow_factor = 1
+ horizontal_alignment = left
+ border = "all"
+ border_size = 10
+
+ [button]
+ id = "issue"
+ definition = "default"
+
+ label = _ "Report Issue"
+ [/button]
+
+ [/column]
+ [/row]
+ [row]
+ [column]
+ horizontal_alignment = left
+ [label]
+ label = _ "➤ Re-open the version migrator dialog:"
+ use_markup = yes
+ [/label]
+ [/column]
+ [column]
+ grow_factor = 1
+ horizontal_alignment = left
+ border = all
+ border_size = 10
+
+ [button]
+ id = "run_migrator"
+ #po: button to open the version migration dialog manually to re-migrate add-ons and the preferences file
+ label = _ "Migrate"
+ [/button]
+ [/column]
+ [/row]
+ [/grid]
+ [/column]
+ [/row]
+ [/grid]
[/column]
-
[/row]
#enddef
-#define _GUI_VERINFO_TAB
- [toggle_panel]
- linked_group = "tabs"
-
- [grid]
-
- [row]
-
- {_GUI_VERINFO_TAB_PADDING}
-
- [column]
- grow_factor = 1
- border = all
- border_size = 5
-
- [label]
- id = "tab_label"
- wrap = true
- [/label]
-
- [/column]
-
- {_GUI_VERINFO_TAB_PADDING}
-
- [/row]
-
- [/grid]
-
- [/toggle_panel]
-#enddef
#define _GUI_VERINFO_TAB_PADDING
- [column]
- border = all
- border_size = 5
-
- [spacer][/spacer]
-
+[column]
+ border = all
+ border_size = 7
+
+ [spacer][/spacer]
+
[/column]
#enddef
#define _GUI_VERINFO_TAB_PAGE_GAME_PATHS
[row]
-
+
[column]
horizontal_grow = true
vertical_alignment = top
-
+
[grid]
-
+
#
# NOTE: the following ids must follow the C++ code's expectations
# (see gui2::tgame_version::path_map_).
#
-
+
{_GUI_GAME_PATHS_ENTRY datadir ( _ "Game data:")}
-
+
{_GUI_GAME_PATHS_ENTRY config ( _ "Configuration:")}
-
+
{_GUI_GAME_PATHS_ENTRY userdata ( _ "User data:")}
-
+
{_GUI_GAME_PATHS_ENTRY saves ( _ "Saved games:")}
-
+
{_GUI_GAME_PATHS_ENTRY addons ( _ "Add-ons:")}
-
+
{_GUI_GAME_PATHS_ENTRY cache ( _ "Cache:")}
-
+
{_GUI_GAME_PATHS_ENTRY logs ( _ "Logs:")}
-
+
{_GUI_GAME_PATHS_ENTRY screenshots ( _ "Screenshots:")}
-
+
[/grid]
+
+ [/column]
+
+ [/row]
+ [row]
+ [column]
+ [grid]
+ [row]
+ [column]
+ [spacer]
+ height = 20
+ [/spacer]
+ [/column]
+ [/row]
+ [/grid]
[/column]
+ [/row]
+ [row]
+ [column]
+ [grid]
+ [row]
+
+ [column]
+ horizontal_alignment = left
+ border = all
+ border_size = 5
+
+ [button]
+ id = "open_stderr"
+ label = _ "Log File"
+ tooltip = _ "Opens the log file pertaining to the current session, which may contain useful debug information"
+ [/button]
+ [/column]
+ [/row]
+ [/grid]
+ [/column]
[/row]
#enddef
-
+
#define _GUI_VERINFO_TAB_PAGE_BUILD_INFO
[row]
-
+
[column]
horizontal_grow = true
vertical_alignment = top
border = "left,right,bottom"
border_size = 5
-
+
[listbox]
id = "deps_listbox"
definition = "default"
-
+
[header]
[row]
[column]
@@ -172,7 +448,7 @@
linked_group = "dep_name"
[/label]
[/column]
-
+
[column]
horizontal_grow = true
border = "all"
@@ -184,7 +460,7 @@
linked_group = "dep_build_version"
[/label]
[/column]
-
+
[column]
horizontal_grow = true
border = "all"
@@ -198,7 +474,7 @@
[/column]
[/row]
[/header]
-
+
[list_definition]
[row]
[column]
@@ -219,13 +495,13 @@
wrap = true
[/label]
[/column]
-
+
[column]
grow_factor = 1
horizontal_grow = true
border = "all"
border_size = 5
-
+
[label]
id = "dep_build_version"
linked_group = "dep_build_version"
@@ -233,13 +509,13 @@
wrap = true
[/label]
[/column]
-
+
[column]
grow_factor = 1
horizontal_grow = true
border = "all"
border_size = 5
-
+
[label]
id = "dep_rt_version"
linked_group = "dep_rt_version"
@@ -253,53 +529,53 @@
[/column]
[/row]
[/list_definition]
-
+
[/listbox]
-
+
[/column]
-
+
[/row]
#enddef
-
+
#define _GUI_VERINFO_TAB_PAGE_GAME_FEATURES
[row]
grow_factor = 0
-
+
[column]
horizontal_alignment = left
vertical_alignment = top
border = "all"
border_size = 5
-
+
[label]
label = _ "The following features were selected when building this version of Wesnoth:"
wrap = true
[/label]
-
+
[/column]
-
+
[/row]
-
+
[row]
grow_factor = 1
-
+
[column]
horizontal_grow = true
vertical_alignment = top
border = "all"
border_size = 5
-
+
[listbox]
id = "opts_listbox"
definition = "default"
-
+
[list_definition]
[row]
[column]
horizontal_grow = true
vertical_grow = true
[toggle_panel]
-
+
[grid]
[row]
[column]
@@ -313,7 +589,7 @@
wrap = true
[/label]
[/column]
-
+
[column]
grow_factor = 1
horizontal_grow = true
@@ -331,341 +607,384 @@
[/column]
[/row]
[/list_definition]
-
+
[/listbox]
-
+
[/column]
-
+
[/row]
#enddef
-[window]
- id = "game_version"
- description = "List of paths used by the game to locate resource and configuration files."
-
- [resolution]
- definition = "default"
-
- click_dismiss = true
- maximum_width = 650
- maximum_height = 600
-
- [tooltip]
- id = "tooltip"
- [/tooltip]
-
- [helptip]
- id = "tooltip"
- [/helptip]
-
- [linked_group]
- id = "tabs"
- fixed_width = true
- fixed_height = true
- [/linked_group]
-
- [linked_group]
- id = "dep_name"
- fixed_width = true
- [/linked_group]
-
- [linked_group]
- id = "dep_build_version"
- fixed_width = true
- [/linked_group]
-
- [linked_group]
- id = "dep_rt_version"
- fixed_width = true
- [/linked_group]
-
- [linked_group]
- id = "opt_name"
- fixed_width = true
- [/linked_group]
-
- [linked_group]
- id = "opt_status"
- fixed_width = true
- [/linked_group]
-
- [grid]
-
- [row]
-
- [column]
- horizontal_alignment = left
- vertical_alignment = top
-
- [grid]
-
- [row]
-
- [column]
- horizontal_alignment = left
- vertical_alignment = top
- border = all
- border_size = 5
-
- [image]
- label = "wesnoth-icon.png"
- [/image]
-
- [/column]
-
- [column]
- horizontal_grow = true
- vertical_alignment = top
-
- [grid]
- [row]
- [column]
- horizontal_alignment = left
- vertical_alignment = top
- border = all
- border_size = 5
-
- [label]
- label = _ "The Battle for Wesnoth"
- definition = "title"
- wrap = true
- [/label]
-
- [/column]
-
- [/row]
-
- [row]
- [column]
- horizontal_alignment = left
- vertical_alignment = top
- border = all
- border_size = 5
-
- [label]
- id = version
- definition = default_bold
- wrap = true
- [/label]
-
- [/column]
-
- [/row]
-
- [row]
-
- [column]
- horizontal_alignment = left
- vertical_alignment = top
- border = all
- border_size = 5
-
- [label]
- id = os
- wrap = true
- [/label]
-
- [/column]
-
- [/row]
-
- [row]
- [column]
- border = all
- border_size = 5
-
- [spacer][/spacer]
- [/column]
- [/row]
-
- [row]
-
- [column]
- border = all
- border_size = 5
-
- [horizontal_listbox]
- id = "tab_bar"
- horizontal_scrollbar_mode = "never"
- vertical_scrollbar_mode = "never"
-
- [list_definition]
- [row]
- [column]
- {_GUI_VERINFO_TAB}
- [/column]
- [/row]
- [/list_definition]
-
- [list_data]
-
- [row]
-
- [column]
-
- [widget]
- id = "tab_label"
- label = _ "Paths"
- [/widget]
-
- [/column]
-
- [/row]
-
- [row]
-
- [column]
-
- [widget]
- id = "tab_label"
- label = _ "Libraries"
- [/widget]
-
- [/column]
-
- [/row]
-
- [row]
-
- [column]
-
- [widget]
- id = "tab_label"
- label = _ "Features"
- [/widget]
-
- [/column]
-
- [/row]
-
- [/list_data]
- [/horizontal_listbox]
-
- [/column]
-
- [/row]
-
- [row]
- grow_factor = 1
-
- [column]
- grow_factor = 1
-
- horizontal_grow = true
-
- [stacked_widget]
- id = tabs_container
-
- [layer]
- {_GUI_VERINFO_TAB_PAGE_GAME_PATHS}
- [/layer]
-
- [layer]
- {_GUI_VERINFO_TAB_PAGE_BUILD_INFO}
- [/layer]
-
- [layer]
- {_GUI_VERINFO_TAB_PAGE_GAME_FEATURES}
- [/layer]
-
- [/stacked_widget]
-
- [/column]
-
- [/row]
-
- [/grid]
-
- [/column]
-
- [/row]
-
- [/grid]
+#define _GUI_VERINFO_TAB_PAGE_COMMUNITY
+ [row]
+ grow_factor = 1
- [/column]
+ [column]
+ border = "all"
+ border_size = 10
- [/row]
+ [button]
+ id = "forums"
+ definition = "default"
- [row]
- grow_factor = 0
+ #po: this is on a button that opens the Wesnoth forums webpage
+ label = _ "Forums"
+ [/button]
+
+ [/column]
+
+ [/row]
- [column]
- horizontal_grow = true
+ [row]
+ grow_factor = 1
- [grid]
+ [column]
+ border = "all"
+ border_size = 10
- [row]
- grow_factor = 0
+ [button]
+ id = "discord"
+ definition = "default"
- [column]
- grow_factor = 0
- horizontal_alignment = left
- border = "all"
- border_size = 5
+ #po: this is on a button that opens the Wesnoth Discord server webpage
+ label = _ "Discord"
+ [/button]
+
+ [/column]
+
+ [/row]
- [button]
- id = "copy_all"
- definition = "action_copy"
- label = _ "page^Copy"
- tooltip = _ "Copy the full report to clipboard"
- [/button]
+ [row]
+ grow_factor = 1
- [/column]
+ [column]
+ border = "all"
+ border_size = 10
- [column]
- horizontal_alignment = left
- border = all
- border_size = 5
+ [button]
+ id = "irc"
+ definition = "default"
- [button]
- id = "open_stderr"
- label = _ "Log File"
- tooltip = _ "Opens the log file pertaining to the current session, which may contain useful debug information"
- [/button]
- [/column]
+ #po: this is on a button that opens the Wesnoth IRC webpage. IRC is an acronym for Internet Relay Chat
+ label = _ "IRC"
+ [/button]
+
+ [/column]
+
+ [/row]
- [column]
- horizontal_alignment = left
- border = all
- border_size = 5
+ [row]
+ grow_factor = 1
- [button]
- id = "run_migrator"
- #po: button to open the version migration dialog manually to re-migrate add-ons and the preferences file
- label = _ "Migrate"
- tooltip = _"Re-open the version migrator dialog"
- [/button]
- [/column]
+ [column]
+ border = "all"
+ border_size = 10
- [column]
- grow_factor = 1
- horizontal_alignment = right
- border = "all"
- border_size = 5
+ [button]
+ id = "steam"
+ definition = "default"
- [button]
- id = "ok"
- definition = "default"
+ #po: this is on a button that opens the Wesnoth Steam forums webpage
+ label = _ "Steam"
+ [/button]
+
+ [/column]
+
+ [/row]
- label = _ "Close"
- [/button]
+ [row]
+ grow_factor = 1
- [/column]
+ [column]
+ border = "all"
+ border_size = 10
- [/row]
+ [button]
+ id = "reddit"
+ definition = "default"
- [/grid]
+ #po: this is on a button that opens the Wesnoth Reddit webpage
+ label = _ "Reddit"
+ [/button]
+
+ [/column]
+
+ [/row]
- [/column]
+ [row]
+ grow_factor = 1
- [/row]
+ [column]
+ border = "all"
+ border_size = 10
- [/grid]
+ [button]
+ id = "donate"
+ definition = "default"
- [/resolution]
+ #po: this is on a button that opens the Wesnoth SPI webpage for sending donations
+ label = _ "Donate"
+ [/button]
+
+ [/column]
+
+ [/row]
+#enddef
-[/window]
+#define _GUI_WRAP_IN_PANEL GRID_CONTENTS
+ [row]
+ [column]
+ horizontal_grow = true
+ vertical_grow = true
+ [panel]
+ definition = "box_display"
+ [grid]
+ {GRID_CONTENTS}
+ [/grid]
+ [/panel]
+ [/column]
+ [/row]
+#enddef
+ [window]
+ id = "game_version"
+ description = "List of paths used by the game to locate resource and configuration files."
+
+ [resolution]
+ definition = "default"
+
+ maximum_width = 1200
+ maximum_height = 700
+
+ [tooltip]
+ id = "tooltip"
+ [/tooltip]
+
+ [helptip]
+ id = "tooltip"
+ [/helptip]
+
+ [linked_group]
+ id = "tabs"
+ fixed_width = true
+ fixed_height = true
+ [/linked_group]
+
+ [linked_group]
+ id = "dep_name"
+ fixed_width = true
+ [/linked_group]
+
+ [linked_group]
+ id = "dep_build_version"
+ fixed_width = true
+ [/linked_group]
+
+ [linked_group]
+ id = "dep_rt_version"
+ fixed_width = true
+ [/linked_group]
+
+ [linked_group]
+ id = "opt_name"
+ fixed_width = true
+ [/linked_group]
+
+ [linked_group]
+ id = "opt_status"
+ fixed_width = true
+ [/linked_group]
+
+ [grid]
+ [row]
+ [column]
+ horizontal_alignment = center
+ vertical_alignment = top
+ border = all
+ border_size = 5
+
+ [image]
+ label = "misc/logo-bg.png~BLIT(misc/logo.png)~SCALE_INTO(400,300)"
+ [/image]
+
+ [/column]
+ [/row]
+ [row]
+ [column]
+ horizontal_alignment = center
+ vertical_alignment = top
+ border = all
+ border_size = 5
+
+ [label]
+ id = description
+ definition = default_italic
+ label = _ "An open source, turn-based strategy game with a high fantasy theme."
+ wrap = true
+ [/label]
+
+ [/column]
+ [/row]
+ [row]
+ [column]
+ [spacer]
+ height = 15
+ [/spacer]
+ [/column]
+ [/row]
+
+ [row]
+ [column]
+ horizontal_alignment = center
+ [grid]
+
+ [row]
+ [column]
+ horizontal_alignment = center
+ [grid]
+
+ [row]
+ [column]
+ border = "left"
+ border_size = 5
+ vertical_alignment = "top"
+ horizontal_alignment = "center"
+
+ [tab_container]
+ id = tabs
+ definition = "left_tabs"
+ [tab]
+ name = _ "General"
+ [data]
+ {_GUI_WRAP_IN_PANEL {_GUI_VERINFO_TAB_PAGE_GENERAL}}
+ [/data]
+ [/tab]
+ [tab]
+ name = _ "Paths"
+ [data]
+ {_GUI_WRAP_IN_PANEL {_GUI_VERINFO_TAB_PAGE_GAME_PATHS}}
+ [/data]
+ [/tab]
+ [tab]
+ name = _ "Libraries"
+ [data]
+ {_GUI_WRAP_IN_PANEL {_GUI_VERINFO_TAB_PAGE_BUILD_INFO}}
+ [/data]
+ [/tab]
+ [tab]
+ name = _ "Features"
+ [data]
+ {_GUI_WRAP_IN_PANEL {_GUI_VERINFO_TAB_PAGE_GAME_FEATURES}}
+ [/data]
+ [/tab]
+ [tab]
+ name = _ "Community"
+ [data]
+ {_GUI_WRAP_IN_PANEL {_GUI_VERINFO_TAB_PAGE_COMMUNITY}}
+ [/data]
+ [/tab]
+ [/tab_container]
+
+ [/column]
+
+ [/row]
+
+ [/grid]
+
+ [/column]
+
+ [/row]
+
+ [/grid]
+
+ [/column]
+
+ [/row]
+
+ [row]
+ [column]
+ [spacer]
+ height = 15
+ [/spacer]
+ [/column]
+ [/row]
+
+ [row]
+ grow_factor = 0
+
+ [column]
+ horizontal_grow = true
+
+ [grid]
+
+ [row]
+ [column]
+ horizontal_alignment = left
+ [grid]
+ [row]
+ [column]
+ grow_factor = 1
+ horizontal_alignment = left
+ border = "all"
+ border_size = 5
+
+ [button]
+ id = "credits"
+ definition = "default"
+
+ label = _ "Credits"
+ [/button]
+
+ [/column]
+
+ [column]
+ grow_factor = 1
+ horizontal_alignment = left
+ border = "all"
+ border_size = 5
+
+ [button]
+ id = "license"
+ definition = "default"
+
+ label = _ "License"
+ [/button]
+
+ [/column]
+
+ [/row]
+ [/grid]
+ [/column]
+
+ [column]
+ grow_factor = 1
+ horizontal_alignment = right
+ border = "all"
+ border_size = 5
+
+ [button]
+ id = "ok"
+ definition = "default"
+
+ label = _ "Close"
+ [/button]
+
+ [/column]
+
+ [/row]
+
+ [/grid]
+
+ [/column]
+
+ [/row]
+
+ [/grid]
+
+ [/resolution]
+
+ [/window]
+
#undef _GUI_GAME_PATHS_ENTRY
#undef _GUI_VERINFO_TAB
#undef _GUI_VERINFO_TAB_PADDING
diff --git a/data/gui/window/title_screen.cfg b/data/gui/window/title_screen.cfg
index 66d372614ea3..38c07169ca30 100644
--- a/data/gui/window/title_screen.cfg
+++ b/data/gui/window/title_screen.cfg
@@ -256,11 +256,10 @@ where
{_GUI_BUTTON "multiplayer" _"Multiplayer" _"Play multiplayer (hotseat, LAN, or Internet), or a single scenario against the AI"}
{_GUI_BUTTON "load" _"Load" _"Load a saved game"}
{_GUI_BUTTON "addons" _"Add-ons" _"Download usermade campaigns, eras, or map packs"}
- {_GUI_BUTTON "editor" _"Map Editor" _"Start the map editor"}
- {_GUI_BUTTON "preferences" _"Preferences" _"Configure the game’s settings"}
{_GUI_BUTTON "achievements" _"Achievements" _"View achievements"}
+ {_GUI_BUTTON "editor" _"Map Editor" _"Start the map editor"}
{_GUI_BUTTON "community" _"Community" _"Places to talk about Wesnoth"}
- {_GUI_BUTTON "credits" _"Credits" _"View the credits"}
+ {_GUI_BUTTON "preferences" _"Preferences" _"Configure the game’s settings"}
{_GUI_BUTTON "quit" _"Quit" _"Quit the game"}
# This debug feature doesn't need to be translated, so put it in the test textdomain.
#textdomain wesnoth-test
@@ -467,8 +466,9 @@ where
horizontal_alignment = "left"
[button]
id = "about"
- definition = "action_about"
- tooltip = _ "Display the game version and build information"
+ definition = "titlescreen_about"
+ label = _ "About"
+ tooltip = _ "General information about Battle for Wesnoth"
[/button]
[/column]
diff --git a/data/schema/gui/widget_definitions.cfg b/data/schema/gui/widget_definitions.cfg
index d7ad7d9af52d..5bb28ee90144 100644
--- a/data/schema/gui/widget_definitions.cfg
+++ b/data/schema/gui/widget_definitions.cfg
@@ -46,6 +46,12 @@
max="1"
super="$generic/state"
[/tag]
+ [tag]
+ name="state_success"
+ min="0"
+ max="1"
+ super="$generic/state"
+ [/tag]
[/tag]
[/tag]
[tag]
diff --git a/images/icons/action/copy_25-success.png b/images/icons/action/copy_25-success.png
new file mode 100644
index 000000000000..16b94376f3f0
Binary files /dev/null and b/images/icons/action/copy_25-success.png differ
diff --git a/projectfiles/CodeBlocks/wesnoth.cbp b/projectfiles/CodeBlocks/wesnoth.cbp
index 479c9a57ef33..ac57d5da6552 100644
--- a/projectfiles/CodeBlocks/wesnoth.cbp
+++ b/projectfiles/CodeBlocks/wesnoth.cbp
@@ -587,8 +587,6 @@
-
-
diff --git a/projectfiles/Xcode/The Battle for Wesnoth.xcodeproj/project.pbxproj b/projectfiles/Xcode/The Battle for Wesnoth.xcodeproj/project.pbxproj
index 826bf701dd33..4c1fc5ac6dbd 100644
--- a/projectfiles/Xcode/The Battle for Wesnoth.xcodeproj/project.pbxproj
+++ b/projectfiles/Xcode/The Battle for Wesnoth.xcodeproj/project.pbxproj
@@ -13,7 +13,6 @@
000000000000000000000008 /* achievements_dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000000000000000000000003 /* achievements_dialog.cpp */; };
000000000000000000000011 /* network_download_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000000000000000000000009 /* network_download_file.cpp */; };
000000000000000000000012 /* network_download_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 000000000000000000000009 /* network_download_file.cpp */; };
- 00324A11ACB0DB64FBD97896 /* community_dialog.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CD5045B9A988F034F8D17C85 /* community_dialog.hpp */; };
02A44BEAA567595C902031CF /* edit_pbl_translation.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C679447D91FD3623CC852FF8 /* edit_pbl_translation.hpp */; };
04C748F7835C62498D27442D /* edit_pbl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6FA542D78393E8FF067775DA /* edit_pbl.cpp */; };
0554467DB5FE99D85ABCDCA0 /* edit_pbl_translation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00574699A982AA23F12B39E0 /* edit_pbl_translation.cpp */; };
@@ -624,7 +623,6 @@
46F92F272175036700602C1C /* constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46F92F0E2174FEC000602C1C /* constants.cpp */; };
4944F41B1354FBFF0027E614 /* teleport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4944F41A1354FBFF0027E614 /* teleport.cpp */; };
49478714172FF6F8002B7ABA /* tristate_button.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49478712172FF6F8002B7ABA /* tristate_button.cpp */; };
- 4B5D4FBB98B2ADF26EC50D9D /* community_dialog.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CD5045B9A988F034F8D17C85 /* community_dialog.hpp */; };
4E19429E82899A42A73BBE91 /* choose_addon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20E644DC98F26C756364EC2C /* choose_addon.cpp */; };
4E4A4DBC9F44444A5867EC2B /* migrate_version_selection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F7B1444E9B79504502208B82 /* migrate_version_selection.cpp */; };
508C40A885166B2E3F4245F4 /* general.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84234C54BB84519421FD4136 /* general.cpp */; };
@@ -1441,9 +1439,7 @@
ECFB9FA8193BFAD900146ED0 /* carryover.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ECFB9FA7193BFAD900146ED0 /* carryover.cpp */; };
ECFB9FAA193BFB4B00146ED0 /* game_board.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ECFB9FA9193BFB4B00146ED0 /* game_board.cpp */; };
ECFB9FAC193BFB6E00146ED0 /* rect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ECFB9FAB193BFB6E00146ED0 /* rect.cpp */; };
- F0A74F75B197FC7C57528FF8 /* community_dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 63B64397BB28593D879A67BE /* community_dialog.cpp */; };
F13D4C33BAA4CB9E9AACFCC2 /* spinner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4214F3DA80B54080C4B548F /* spinner.cpp */; };
- F213406695CCC6ECE7254B38 /* community_dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 63B64397BB28593D879A67BE /* community_dialog.cpp */; };
F40A13BC1A3A88BA00C4D071 /* apple_notification.mm in Sources */ = {isa = PBXBuildFile; fileRef = F40A13BB1A3A88BA00C4D071 /* apple_notification.mm */; };
F419A1F414E21246002F9ADC /* game_end_exceptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F419A1F314E21246002F9ADC /* game_end_exceptions.cpp */; };
F419A2C314F5BCFE002F9ADC /* info.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F419A2C114F5BCFE002F9ADC /* info.cpp */; };
@@ -2209,7 +2205,6 @@
62D24F311519987400350848 /* context_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = context_manager.cpp; sourceTree = ""; };
62D24F331519994300350848 /* palette_manager.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = palette_manager.hpp; sourceTree = ""; };
62D24F341519995200350848 /* palette_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = palette_manager.cpp; sourceTree = ""; };
- 63B64397BB28593D879A67BE /* community_dialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = community_dialog.cpp; path = community_dialog.cpp; sourceTree = ""; };
67044415B63F5888193BD7A6 /* prompt.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = prompt.cpp; sourceTree = ""; };
6FA542D78393E8FF067775DA /* edit_pbl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = edit_pbl.cpp; sourceTree = ""; };
755D4555A1DEA29125E7F338 /* scroll_text.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = scroll_text.cpp; path = scroll_text.cpp; sourceTree = ""; };
@@ -2740,7 +2735,6 @@
BF3B41AF9FEBC9C3A11736A2 /* tab_container.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = tab_container.hpp; path = tab_container.hpp; sourceTree = ""; };
C61F473D9AC43768A445E218 /* tod_new_schedule.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tod_new_schedule.cpp; sourceTree = ""; };
C679447D91FD3623CC852FF8 /* edit_pbl_translation.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = edit_pbl_translation.hpp; sourceTree = ""; };
- CD5045B9A988F034F8D17C85 /* community_dialog.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = community_dialog.hpp; path = community_dialog.hpp; sourceTree = ""; };
D4594633BF3F8A06D6AE752F /* prompt.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = prompt.hpp; sourceTree = ""; };
D911474D925FA88D5B856A0E /* test_sdl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = test_sdl.cpp; path = test_sdl.cpp; sourceTree = ""; };
D9A141EAAE90E98B6F6171D6 /* choose_addon.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = choose_addon.hpp; sourceTree = ""; };
@@ -3864,8 +3858,6 @@
46F92CF62174F6A300602C1C /* wml_message.hpp */,
67044415B63F5888193BD7A6 /* prompt.cpp */,
D4594633BF3F8A06D6AE752F /* prompt.hpp */,
- 63B64397BB28593D879A67BE /* community_dialog.cpp */,
- CD5045B9A988F034F8D17C85 /* community_dialog.hpp */,
F7B1444E9B79504502208B82 /* migrate_version_selection.cpp */,
B3DE4F95AF72C6F6BC37E695 /* migrate_version_selection.hpp */,
);
@@ -5162,7 +5154,6 @@
285C4E7A9E891E1DCB215683 /* back_edge_detector.hpp in Headers */,
8E1D442FB4DA43385F58F77F /* combobox.hpp in Headers */,
B7B34687A61290490C1616D3 /* tab_container.hpp in Headers */,
- 4B5D4FBB98B2ADF26EC50D9D /* community_dialog.hpp in Headers */,
365D4F89BD511BC074E639D7 /* migrate_version_selection.hpp in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -5179,7 +5170,6 @@
F96A40219A964A8022910D73 /* back_edge_detector.hpp in Headers */,
D09A4D40A36568E32D8723F7 /* combobox.hpp in Headers */,
3CC6488695A7293C9CFC2CB6 /* tab_container.hpp in Headers */,
- 00324A11ACB0DB64FBD97896 /* community_dialog.hpp in Headers */,
7A0347D48BDB52B1430D9E79 /* migrate_version_selection.hpp in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -5937,7 +5927,6 @@
AC4242F78B39C571E34AF48F /* edit_unit.cpp in Sources */,
1C3D48879EAC414AE3DB122E /* combobox.cpp in Sources */,
1BC74FED857215A162E9E0F2 /* tab_container.cpp in Sources */,
- F213406695CCC6ECE7254B38 /* community_dialog.cpp in Sources */,
D2E9440BBCDCE2A75C93F85D /* migrate_version_selection.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -6624,7 +6613,6 @@
7A7146D7893AA09891352019 /* test_schema_validator.cpp in Sources */,
9C2743DE8100448B66F7E0AF /* combobox.cpp in Sources */,
19B14238AD52EC06ED2094F1 /* tab_container.cpp in Sources */,
- F0A74F75B197FC7C57528FF8 /* community_dialog.cpp in Sources */,
4E4A4DBC9F44444A5867EC2B /* migrate_version_selection.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
diff --git a/source_lists/wesnoth b/source_lists/wesnoth
index d49d3284bcca..dac895191230 100644
--- a/source_lists/wesnoth
+++ b/source_lists/wesnoth
@@ -179,7 +179,6 @@ gui/dialogs/attack_predictions.cpp
gui/dialogs/campaign_difficulty.cpp
gui/dialogs/campaign_selection.cpp
gui/dialogs/chat_log.cpp
-gui/dialogs/community_dialog.cpp
gui/dialogs/core_selection.cpp
gui/dialogs/debug_clock.cpp
gui/dialogs/depcheck_confirm_change.cpp
diff --git a/src/gui/dialogs/community_dialog.cpp b/src/gui/dialogs/community_dialog.cpp
deleted file mode 100644
index a0d71851ed21..000000000000
--- a/src/gui/dialogs/community_dialog.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright (C) 2003 - 2024
- Part of the Battle for Wesnoth Project https://www.wesnoth.org/
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY.
-
- See the COPYING file for more details.
-*/
-
-#define GETTEXT_DOMAIN "wesnoth-lib"
-
-#include "gui/dialogs/community_dialog.hpp"
-
-#include "desktop/open.hpp"
-#include "gui/auxiliary/find_widget.hpp"
-#include "gui/widgets/button.hpp"
-#include "gui/widgets/window.hpp"
-
-namespace gui2::dialogs
-{
-
-REGISTER_DIALOG(community_dialog)
-
-community_dialog::community_dialog()
- : modal_dialog(window_id())
-{
-}
-
-void community_dialog::pre_show(window& window)
-{
- connect_signal_mouse_left_click(find_widget