Removed GUI2 Addon Description and Filter Options dialog
These have been rolled into the new GUI2 addon manager.
This commit is contained in:
parent
2454059f76
commit
18a7e80243
10 changed files with 0 additions and 1914 deletions
|
@ -1,561 +0,0 @@
|
||||||
#textdomain wesnoth-lib
|
|
||||||
|
|
||||||
[window]
|
|
||||||
id = "addon_description"
|
|
||||||
description = "Add-on description and details for the add-ons manager interface."
|
|
||||||
|
|
||||||
[resolution]
|
|
||||||
definition = "default"
|
|
||||||
|
|
||||||
maximum_width = 800
|
|
||||||
|
|
||||||
[tooltip]
|
|
||||||
id = "tooltip"
|
|
||||||
[/tooltip]
|
|
||||||
|
|
||||||
[helptip]
|
|
||||||
id = "tooltip"
|
|
||||||
[/helptip]
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
|
|
||||||
[drawing]
|
|
||||||
id = "image"
|
|
||||||
definition = "default"
|
|
||||||
|
|
||||||
width = 72
|
|
||||||
height = 72
|
|
||||||
|
|
||||||
[draw]
|
|
||||||
[image]
|
|
||||||
name = "(text)"
|
|
||||||
w = "(min(image_original_width, 72))"
|
|
||||||
h = "(min(image_original_height, 72))"
|
|
||||||
[/image]
|
|
||||||
[/draw]
|
|
||||||
|
|
||||||
[/drawing]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
vertical_alignment = "top"
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
vertical_alignment = "top"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
id = "title"
|
|
||||||
definition = "title"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
horizontal_grow = "true"
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Type:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
vertical_alignment = "top"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
id = "type"
|
|
||||||
definition = "default"
|
|
||||||
wrap = "true"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Status:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
id = "status"
|
|
||||||
definition = "default"
|
|
||||||
wrap = "true"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Version:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
id = "version"
|
|
||||||
definition = "default"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Size:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
id = "size"
|
|
||||||
definition = "default"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Author:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
vertical_alignment = "top"
|
|
||||||
|
|
||||||
[scroll_label]
|
|
||||||
id = "author"
|
|
||||||
definition = "default"
|
|
||||||
[/scroll_label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Downloads:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
id = "downloads"
|
|
||||||
definition = "default"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "date^Last updated:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
vertical_alignment = "top"
|
|
||||||
|
|
||||||
[scroll_label]
|
|
||||||
id = "updated"
|
|
||||||
definition = "default"
|
|
||||||
[/scroll_label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "date^First uploaded:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
id = "created"
|
|
||||||
definition = "default"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
|
|
||||||
horizontal_grow = "true"
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 1
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Description:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_grow = "true"
|
|
||||||
|
|
||||||
[scroll_label]
|
|
||||||
id = "description"
|
|
||||||
definition = "description"
|
|
||||||
label = _ "No description available."
|
|
||||||
[/scroll_label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
horizontal_grow = "true"
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 1
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Website:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
grow_factor = 1
|
|
||||||
horizontal_grow = "true"
|
|
||||||
|
|
||||||
[stacked_widget]
|
|
||||||
|
|
||||||
[layer]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
id = "url_none"
|
|
||||||
label = _ "url^None"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/layer]
|
|
||||||
|
|
||||||
[layer]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
grow_factor = 1
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_grow = "true"
|
|
||||||
|
|
||||||
[text_box]
|
|
||||||
id = "url"
|
|
||||||
definition = "default"
|
|
||||||
[/text_box]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "right"
|
|
||||||
|
|
||||||
[button]
|
|
||||||
id = "url_copy"
|
|
||||||
definition = "action_copy"
|
|
||||||
label = _ "url^Copy"
|
|
||||||
tooltip = _ "Copy this URL to clipboard"
|
|
||||||
[/button]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "right"
|
|
||||||
|
|
||||||
[button]
|
|
||||||
id = "url_go"
|
|
||||||
definition = "action_go"
|
|
||||||
label = _ "url^Go"
|
|
||||||
tooltip = _ "Visit this URL with a web browser"
|
|
||||||
[/button]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/layer]
|
|
||||||
|
|
||||||
[/stacked_widget]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 1
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Dependencies:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[scroll_label]
|
|
||||||
id = "dependencies"
|
|
||||||
definition = "default"
|
|
||||||
label = _ "addon_dependencies^None"
|
|
||||||
[/scroll_label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 1
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Translations:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
vertical_alignment = "top"
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[scroll_label]
|
|
||||||
id = "translations"
|
|
||||||
definition = "default"
|
|
||||||
label = _ "translations^None"
|
|
||||||
[/scroll_label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
{GUI_FILLER}
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "right"
|
|
||||||
|
|
||||||
[button]
|
|
||||||
id = "ok"
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Close"
|
|
||||||
[/button]
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/resolution]
|
|
||||||
|
|
||||||
[/window]
|
|
||||||
|
|
|
@ -1,443 +0,0 @@
|
||||||
#textdomain wesnoth-lib
|
|
||||||
|
|
||||||
#define _GUI_ADDON_TYPE_OPTION ID LABEL
|
|
||||||
[column]
|
|
||||||
grow_factor = 1
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[toggle_button]
|
|
||||||
id = "show_"+{ID}
|
|
||||||
definition = "default"
|
|
||||||
label = {LABEL}
|
|
||||||
[/toggle_button]
|
|
||||||
[/column]
|
|
||||||
#enddef
|
|
||||||
|
|
||||||
#define _GUI_ADDON_SORT_OPTION ID LABEL
|
|
||||||
[column]
|
|
||||||
grow_factor = 1
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[toggle_button]
|
|
||||||
id = "sort_"+{ID}
|
|
||||||
definition = "radio"
|
|
||||||
label = {LABEL}
|
|
||||||
[/toggle_button]
|
|
||||||
[/column]
|
|
||||||
#enddef
|
|
||||||
|
|
||||||
#define _GUI_SPACER
|
|
||||||
[column]
|
|
||||||
grow_factor = 1
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[spacer]
|
|
||||||
[/spacer]
|
|
||||||
[/column]
|
|
||||||
#enddef
|
|
||||||
|
|
||||||
#define _GUI_ADDON_TYPE_OPTIONS
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
{_GUI_ADDON_TYPE_OPTION sp_campaigns _"addons_of_type^Campaigns"}
|
|
||||||
{_GUI_ADDON_TYPE_OPTION mp_eras _"addons_of_type^MP eras"}
|
|
||||||
[/row]
|
|
||||||
[row]
|
|
||||||
{_GUI_ADDON_TYPE_OPTION sp_scenarios _"addons_of_type^Scenarios"}
|
|
||||||
{_GUI_ADDON_TYPE_OPTION mp_factions _"addons_of_type^MP factions"}
|
|
||||||
[/row]
|
|
||||||
[row]
|
|
||||||
{_GUI_ADDON_TYPE_OPTION sp_mp_campaigns _"addons_of_type^SP/MP campaigns"}
|
|
||||||
{_GUI_ADDON_TYPE_OPTION mp_campaigns _"addons_of_type^MP campaigns"}
|
|
||||||
[/row]
|
|
||||||
[row]
|
|
||||||
{_GUI_ADDON_TYPE_OPTION media _"addons_of_type^Resources"}
|
|
||||||
{_GUI_ADDON_TYPE_OPTION mp_scenarios _"addons_of_type^MP scenarios"}
|
|
||||||
[/row]
|
|
||||||
[row]
|
|
||||||
{_GUI_ADDON_TYPE_OPTION cores _"addons_of_type^Cores"}
|
|
||||||
{_GUI_ADDON_TYPE_OPTION mp_maps _"addons_of_type^MP map-packs"}
|
|
||||||
[/row]
|
|
||||||
[row]
|
|
||||||
# FIXME: (also in C++) should this and Unknown be a single option in the UI?
|
|
||||||
{_GUI_ADDON_TYPE_OPTION other _"addons_of_type^Other"}
|
|
||||||
{_GUI_ADDON_TYPE_OPTION mp_mods _"addons_of_type^MP modifications"}
|
|
||||||
[/row]
|
|
||||||
[row]
|
|
||||||
{_GUI_ADDON_TYPE_OPTION unknown _"addons_of_type^Unknown"}
|
|
||||||
{_GUI_SPACER}
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
#enddef
|
|
||||||
|
|
||||||
#define _GUI_ADDON_STATUS_OPTIONS
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
|
|
||||||
horizontal_grow = "true"
|
|
||||||
vertical_grow = "true"
|
|
||||||
|
|
||||||
[listbox]
|
|
||||||
id = "statuses_list"
|
|
||||||
definition = "default"
|
|
||||||
|
|
||||||
[list_definition]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
horizontal_grow = "true"
|
|
||||||
vertical_grow = "true"
|
|
||||||
|
|
||||||
[toggle_panel]
|
|
||||||
definition = "default"
|
|
||||||
return_value_id = "ok"
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
horizontal_grow = "true"
|
|
||||||
vertical_grow = "true"
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
|
|
||||||
[label]
|
|
||||||
id = "status"
|
|
||||||
linked_group = "status"
|
|
||||||
definition = "default"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/toggle_panel]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/list_definition]
|
|
||||||
|
|
||||||
[/listbox]
|
|
||||||
#enddef
|
|
||||||
|
|
||||||
[window]
|
|
||||||
id = "addon_filter_options"
|
|
||||||
description = "Advanced filtering options for the legacy (GUI1) Add-ons Manager dialog."
|
|
||||||
|
|
||||||
[resolution]
|
|
||||||
definition = "default"
|
|
||||||
|
|
||||||
#click_dismiss = "true"
|
|
||||||
maximum_width = 800
|
|
||||||
|
|
||||||
automatic_placement = "true"
|
|
||||||
vertical_placement = "center"
|
|
||||||
horizontal_placement = "center"
|
|
||||||
|
|
||||||
[linked_group]
|
|
||||||
id = "status"
|
|
||||||
fixed_width = "true"
|
|
||||||
[/linked_group]
|
|
||||||
|
|
||||||
[tooltip]
|
|
||||||
id = "tooltip"
|
|
||||||
[/tooltip]
|
|
||||||
|
|
||||||
[helptip]
|
|
||||||
id = "tooltip"
|
|
||||||
[/helptip]
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
[label]
|
|
||||||
definition = "title"
|
|
||||||
label = _ "Options"
|
|
||||||
[/label]
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Add-ons matching the following criteria will be displayed."
|
|
||||||
wrap = "true"
|
|
||||||
[/label]
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
|
|
||||||
horizontal_grow = "true"
|
|
||||||
vertical_grow = "true"
|
|
||||||
|
|
||||||
border = "top"
|
|
||||||
border_size = 5
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
|
|
||||||
horizontal_grow = "true"
|
|
||||||
vertical_alignment = "top"
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Installation status:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
{_GUI_ADDON_STATUS_OPTIONS}
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
|
|
||||||
horizontal_grow = "true"
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
|
|
||||||
horizontal_grow = "true"
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
vertical_alignment = "top"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Add-on types:"
|
|
||||||
[/label]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "right"
|
|
||||||
|
|
||||||
[button]
|
|
||||||
id = "toggle_all_displayed_types"
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Toggle All"
|
|
||||||
[/button]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
{_GUI_ADDON_TYPE_OPTIONS}
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 0
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
|
|
||||||
[label]
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Add-ons will be sorted as follows when no column is selected:"
|
|
||||||
wrap = "true"
|
|
||||||
[/label]
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 0
|
|
||||||
|
|
||||||
[column]
|
|
||||||
horizontal_grow = "true"
|
|
||||||
vertical_grow = "true"
|
|
||||||
|
|
||||||
border = "top"
|
|
||||||
border_size = 5
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
vertical_alignment = "top"
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 0
|
|
||||||
{_GUI_ADDON_SORT_OPTION by_name ( _ "sort^By name")}
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 0
|
|
||||||
{_GUI_ADDON_SORT_OPTION by_last_updated ( _ "sort^By last updated")}
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 0
|
|
||||||
{_GUI_ADDON_SORT_OPTION by_first_upload ( _ "sort^By first upload")}
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[column]
|
|
||||||
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
vertical_alignment = "top"
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 0
|
|
||||||
{_GUI_ADDON_SORT_OPTION ascending ( _ "sort^Ascending")}
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 0
|
|
||||||
{_GUI_ADDON_SORT_OPTION descending ( _ "sort^Descending")}
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 0
|
|
||||||
|
|
||||||
[column]
|
|
||||||
horizontal_alignment = "right"
|
|
||||||
|
|
||||||
[grid]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 0
|
|
||||||
|
|
||||||
[column]
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "right"
|
|
||||||
|
|
||||||
[button]
|
|
||||||
id = "ok"
|
|
||||||
definition = "default"
|
|
||||||
label = _ "Close"
|
|
||||||
[/button]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[/grid]
|
|
||||||
|
|
||||||
[/resolution]
|
|
||||||
|
|
||||||
[/window]
|
|
||||||
|
|
||||||
#undef _GUI_ADDON_STATUS_OPTIONS
|
|
||||||
#undef _GUI_ADDON_TYPE_OPTIONS
|
|
||||||
#undef _GUI_ADDON_TYPE_OPTION
|
|
||||||
#undef _GUI_ADDON_SORT_OPTION
|
|
||||||
#undef _GUI_SPACER
|
|
|
@ -517,10 +517,6 @@
|
||||||
<Unit filename="../../src/gui/core/window_builder/instance.hpp" />
|
<Unit filename="../../src/gui/core/window_builder/instance.hpp" />
|
||||||
<Unit filename="../../src/gui/dialogs/addon/connect.cpp" />
|
<Unit filename="../../src/gui/dialogs/addon/connect.cpp" />
|
||||||
<Unit filename="../../src/gui/dialogs/addon/connect.hpp" />
|
<Unit filename="../../src/gui/dialogs/addon/connect.hpp" />
|
||||||
<Unit filename="../../src/gui/dialogs/addon/description.cpp" />
|
|
||||||
<Unit filename="../../src/gui/dialogs/addon/description.hpp" />
|
|
||||||
<Unit filename="../../src/gui/dialogs/addon/filter_options.cpp" />
|
|
||||||
<Unit filename="../../src/gui/dialogs/addon/filter_options.hpp" />
|
|
||||||
<Unit filename="../../src/gui/dialogs/addon/install_dependencies.cpp" />
|
<Unit filename="../../src/gui/dialogs/addon/install_dependencies.cpp" />
|
||||||
<Unit filename="../../src/gui/dialogs/addon/install_dependencies.hpp" />
|
<Unit filename="../../src/gui/dialogs/addon/install_dependencies.hpp" />
|
||||||
<Unit filename="../../src/gui/dialogs/addon/manager.cpp" />
|
<Unit filename="../../src/gui/dialogs/addon/manager.cpp" />
|
||||||
|
|
|
@ -163,8 +163,6 @@ gui/core/window_builder.cpp
|
||||||
gui/core/window_builder/helper.cpp
|
gui/core/window_builder/helper.cpp
|
||||||
gui/core/window_builder/instance.cpp
|
gui/core/window_builder/instance.cpp
|
||||||
gui/dialogs/addon/connect.cpp
|
gui/dialogs/addon/connect.cpp
|
||||||
gui/dialogs/addon/description.cpp
|
|
||||||
gui/dialogs/addon/filter_options.cpp
|
|
||||||
gui/dialogs/addon/install_dependencies.cpp
|
gui/dialogs/addon/install_dependencies.cpp
|
||||||
gui/dialogs/addon/manager.cpp
|
gui/dialogs/addon/manager.cpp
|
||||||
gui/dialogs/addon/uninstall_list.cpp
|
gui/dialogs/addon/uninstall_list.cpp
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#include "gettext.hpp"
|
#include "gettext.hpp"
|
||||||
#include "gui/dialogs/addon/connect.hpp"
|
#include "gui/dialogs/addon/connect.hpp"
|
||||||
#include "gui/dialogs/addon/manager.hpp"
|
#include "gui/dialogs/addon/manager.hpp"
|
||||||
#include "gui/dialogs/addon/description.hpp"
|
|
||||||
#include "gui/dialogs/addon/uninstall_list.hpp"
|
#include "gui/dialogs/addon/uninstall_list.hpp"
|
||||||
#include "gui/dialogs/message.hpp"
|
#include "gui/dialogs/message.hpp"
|
||||||
#include "gui/dialogs/simple_item_selector.hpp"
|
#include "gui/dialogs/simple_item_selector.hpp"
|
||||||
|
|
|
@ -1,414 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2010 - 2016 by Ignacio R. Morelle <shadowm2006@gmail.com>
|
|
||||||
Part of the Battle for Wesnoth Project http://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/addon/description.hpp"
|
|
||||||
|
|
||||||
#include "desktop/clipboard.hpp"
|
|
||||||
#include "desktop/open.hpp"
|
|
||||||
#include "formula/string_utils.hpp"
|
|
||||||
#include "gettext.hpp"
|
|
||||||
#include "gui/auxiliary/find_widget.hpp"
|
|
||||||
#include "gui/widgets/button.hpp"
|
|
||||||
#include "gui/widgets/settings.hpp"
|
|
||||||
#include "gui/widgets/text_box.hpp"
|
|
||||||
#include "gui/widgets/window.hpp"
|
|
||||||
#include "language.hpp"
|
|
||||||
#include "preferences.hpp"
|
|
||||||
|
|
||||||
#include "utils/functional.hpp"
|
|
||||||
|
|
||||||
#include <iomanip>
|
|
||||||
#include <stdexcept>
|
|
||||||
#include "utils/io.hpp"
|
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
static std::string format_addon_time(time_t time)
|
|
||||||
{
|
|
||||||
if(time) {
|
|
||||||
std::ostringstream ss;
|
|
||||||
|
|
||||||
const char* format = preferences::use_twelve_hour_clock_format()
|
|
||||||
? "%Y-%m-%d %I:%M %p"
|
|
||||||
: "%Y-%m-%d %H:%M";
|
|
||||||
|
|
||||||
ss << util::put_time(std::localtime(&time), format);
|
|
||||||
|
|
||||||
return ss.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
return font::unicode_em_dash;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string langcode_to_string(const std::string& lcode)
|
|
||||||
{
|
|
||||||
for(const auto & ld : get_languages())
|
|
||||||
{
|
|
||||||
if(ld.localename == lcode || ld.localename.substr(0, 2) == lcode) {
|
|
||||||
return ld.language;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string colorify_addon_state_string(const std::string& str,
|
|
||||||
const addon_tracking_info& state)
|
|
||||||
{
|
|
||||||
std::string colorname = "";
|
|
||||||
|
|
||||||
// NOTE: these Pango color names must match the colors used
|
|
||||||
// in describe_addon_status() for GUI1.
|
|
||||||
|
|
||||||
switch(state.state) {
|
|
||||||
case ADDON_NONE:
|
|
||||||
return str;
|
|
||||||
case ADDON_INSTALLED:
|
|
||||||
case ADDON_NOT_TRACKED:
|
|
||||||
colorname = "#00ff00"; // GOOD_COLOR
|
|
||||||
break;
|
|
||||||
case ADDON_INSTALLED_UPGRADABLE:
|
|
||||||
colorname = "#ffff00"; // YELLOW_COLOR/color_upgradable
|
|
||||||
break;
|
|
||||||
case ADDON_INSTALLED_OUTDATED:
|
|
||||||
colorname = "#ff7f00"; // <255,127,0>/color_outdated
|
|
||||||
break;
|
|
||||||
case ADDON_INSTALLED_BROKEN:
|
|
||||||
colorname = "#ff0000"; // BAD_COLOR
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
colorname = "#777777"; // GRAY_COLOR
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return "<span color='" + colorname + "'>" + str + "</span>";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string describe_addon_state_info(const addon_tracking_info& state)
|
|
||||||
{
|
|
||||||
std::string s;
|
|
||||||
|
|
||||||
utils::string_map i18n_symbols;
|
|
||||||
i18n_symbols["local_version"] = state.installed_version.str();
|
|
||||||
|
|
||||||
switch(state.state) {
|
|
||||||
case ADDON_NONE:
|
|
||||||
if(!state.can_publish) {
|
|
||||||
s = _("addon_state^Not installed");
|
|
||||||
} else {
|
|
||||||
s = _("addon_state^Published, not installed");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ADDON_INSTALLED:
|
|
||||||
if(!state.can_publish) {
|
|
||||||
s = _("addon_state^Installed");
|
|
||||||
} else {
|
|
||||||
s = _("addon_state^Published");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ADDON_NOT_TRACKED:
|
|
||||||
if(!state.can_publish) {
|
|
||||||
s = _("addon_state^Installed, not tracking local version");
|
|
||||||
} else {
|
|
||||||
// Published add-ons often don't have local status information,
|
|
||||||
// hence untracked. This should be considered normal.
|
|
||||||
s = _("addon_state^Published, not tracking local version");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ADDON_INSTALLED_UPGRADABLE: {
|
|
||||||
const std::string vstr
|
|
||||||
= !state.can_publish
|
|
||||||
? _("addon_state^Installed ($local_version|), "
|
|
||||||
"upgradable")
|
|
||||||
: _("addon_state^Published ($local_version| "
|
|
||||||
"installed), upgradable");
|
|
||||||
s = utils::interpolate_variables_into_string(vstr, &i18n_symbols);
|
|
||||||
} break;
|
|
||||||
case ADDON_INSTALLED_OUTDATED: {
|
|
||||||
const std::string vstr
|
|
||||||
= !state.can_publish
|
|
||||||
? _("addon_state^Installed ($local_version|), "
|
|
||||||
"outdated on server")
|
|
||||||
: _("addon_state^Published ($local_version| "
|
|
||||||
"installed), outdated on server");
|
|
||||||
s = utils::interpolate_variables_into_string(vstr, &i18n_symbols);
|
|
||||||
} break;
|
|
||||||
case ADDON_INSTALLED_BROKEN:
|
|
||||||
if(!state.can_publish) {
|
|
||||||
s = _("addon_state^Installed, broken");
|
|
||||||
} else {
|
|
||||||
s = _("addon_state^Published, broken");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
s = _("addon_state^Unknown");
|
|
||||||
}
|
|
||||||
|
|
||||||
return colorify_addon_state_string(s, state);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves an element from the given associative container or dies in some
|
|
||||||
* way.
|
|
||||||
*
|
|
||||||
* It fails an @a assert() check or throws an exception if the requested element
|
|
||||||
* does not exist.
|
|
||||||
*
|
|
||||||
* @return An element from the container that is guranteed to have existed
|
|
||||||
* before running this function.
|
|
||||||
*/
|
|
||||||
template <typename MapT>
|
|
||||||
typename MapT::mapped_type const& const_at(typename MapT::key_type const& key,
|
|
||||||
MapT const& map)
|
|
||||||
{
|
|
||||||
typename MapT::const_iterator it = map.find(key);
|
|
||||||
if(it == map.end()) {
|
|
||||||
assert(it != map.end());
|
|
||||||
throw std::out_of_range(
|
|
||||||
"const_at()"); // Shouldn't get here without disabling assert()
|
|
||||||
}
|
|
||||||
return it->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string make_display_dependencies(const std::string& addon_id,
|
|
||||||
const addons_list& addons_list,
|
|
||||||
const addons_tracking_list& addon_states)
|
|
||||||
{
|
|
||||||
const addon_info& addon = const_at(addon_id, addons_list);
|
|
||||||
std::string str;
|
|
||||||
|
|
||||||
const std::set<std::string>& deps = addon.resolve_dependencies(addons_list);
|
|
||||||
|
|
||||||
for(const auto & dep_id : deps)
|
|
||||||
{
|
|
||||||
addon_info dep;
|
|
||||||
addon_tracking_info depstate;
|
|
||||||
|
|
||||||
addons_list::const_iterator ali = addons_list.find(dep_id);
|
|
||||||
addons_tracking_list::const_iterator tli = addon_states.find(dep_id);
|
|
||||||
|
|
||||||
if(ali == addons_list.end()) {
|
|
||||||
dep.id = dep_id; // Build dummy addon_info.
|
|
||||||
} else {
|
|
||||||
dep = ali->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(tli == addon_states.end()) {
|
|
||||||
depstate = get_addon_tracking_info(dep);
|
|
||||||
} else {
|
|
||||||
depstate = tli->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!str.empty()) {
|
|
||||||
str += ", ";
|
|
||||||
}
|
|
||||||
|
|
||||||
str += colorify_addon_state_string(dep.display_title(), depstate);
|
|
||||||
}
|
|
||||||
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace gui2
|
|
||||||
{
|
|
||||||
namespace dialogs
|
|
||||||
{
|
|
||||||
|
|
||||||
/*WIKI
|
|
||||||
* @page = GUIWindowDefinitionWML
|
|
||||||
* @order = 2_addon_description
|
|
||||||
*
|
|
||||||
* == Add-on description ==
|
|
||||||
*
|
|
||||||
* Add-on description and details for the add-ons manager interface.
|
|
||||||
*
|
|
||||||
* @begin{table}{dialog_widgets}
|
|
||||||
*
|
|
||||||
* image & & styled_widget & m &
|
|
||||||
* Label for displaying the add-on icon, in a 72x72 area. $
|
|
||||||
*
|
|
||||||
* title & & styled_widget & m &
|
|
||||||
* Dialog title label, corresponding to the add-on name. $
|
|
||||||
*
|
|
||||||
* type & & styled_widget & m &
|
|
||||||
* Label for displaying the add-on's type. $
|
|
||||||
*
|
|
||||||
* version & & styled_widget & m &
|
|
||||||
* Label for displaying the add-on version number. $
|
|
||||||
*
|
|
||||||
* status & & styled_widget & m &
|
|
||||||
* Label for displaying the current installation/upgradability status. $
|
|
||||||
*
|
|
||||||
* author & & styled_widget & m &
|
|
||||||
* Label for displaying the add-on author/maintainer name. $
|
|
||||||
*
|
|
||||||
* size & & styled_widget & m &
|
|
||||||
* Label for displaying the add-on package size. $
|
|
||||||
*
|
|
||||||
* downloads & & styled_widget & m &
|
|
||||||
* Label for displaying the add-on's download count. $
|
|
||||||
*
|
|
||||||
* description & & styled_widget & m &
|
|
||||||
* Text label for displaying the add-on's description. The styled_widget can
|
|
||||||
* be given a text, this text is shown when the addon has no
|
|
||||||
* description. If the addon has a description this field shows the
|
|
||||||
* description of the addon. $
|
|
||||||
*
|
|
||||||
* translations & & styled_widget & m &
|
|
||||||
* Label for displaying a list of translations provided by the add-on.
|
|
||||||
* Like the ''description'' it can also show a default text if no
|
|
||||||
* translations are available. $
|
|
||||||
*
|
|
||||||
* dependencies & & styled_widget & m &
|
|
||||||
* Label for displaying a list of dependencies of the add-on. Like the
|
|
||||||
* ''description'' it can also show a default text if no dependencies
|
|
||||||
* are defined. $
|
|
||||||
*
|
|
||||||
* updated & & styled_widget & m &
|
|
||||||
* Label displaying the add-on's last upload date. $
|
|
||||||
*
|
|
||||||
* created & & styled_widget & m &
|
|
||||||
* Label displaying the add-on's first upload date. $
|
|
||||||
*
|
|
||||||
* url & & text_box & m &
|
|
||||||
* Textbox displaying the add-on's feedback page URL if provided by
|
|
||||||
* the server. $
|
|
||||||
*
|
|
||||||
* url_go & & button & m &
|
|
||||||
* Button for launching a web browser to visit the add-on's feedback
|
|
||||||
* page URL if provided by the server. $
|
|
||||||
*
|
|
||||||
* url_copy & & button & m &
|
|
||||||
* Button for copying the add-on's feedback page URL to clipboard if
|
|
||||||
* provided by the server. $
|
|
||||||
*
|
|
||||||
* url_none & & styled_widget & m &
|
|
||||||
* Label displayed instead of the other url_* widgets when no URL is
|
|
||||||
* provided by the server.
|
|
||||||
*
|
|
||||||
* @end{table}
|
|
||||||
*/
|
|
||||||
|
|
||||||
REGISTER_DIALOG(addon_description)
|
|
||||||
|
|
||||||
addon_description::addon_description(const std::string& addon_id,
|
|
||||||
const addons_list& addons_list,
|
|
||||||
const addons_tracking_list& addon_states)
|
|
||||||
: feedback_url_()
|
|
||||||
{
|
|
||||||
const addon_info& addon = const_at(addon_id, addons_list);
|
|
||||||
const addon_tracking_info& state = const_at(addon_id, addon_states);
|
|
||||||
|
|
||||||
const std::string& created_text = format_addon_time(addon.created);
|
|
||||||
const std::string& updated_text = format_addon_time(addon.updated);
|
|
||||||
|
|
||||||
register_label("image", true, addon.display_icon());
|
|
||||||
register_label("title", true, addon.title);
|
|
||||||
register_label("version", true, addon.version);
|
|
||||||
register_label("status", true, describe_addon_state_info(state), true);
|
|
||||||
register_label("author", true, addon.author);
|
|
||||||
register_label("type", true, addon.display_type());
|
|
||||||
register_label("size", true, size_display_string(addon.size));
|
|
||||||
register_label("downloads", true, std::to_string(addon.downloads));
|
|
||||||
register_label("created", true, created_text);
|
|
||||||
register_label("updated", true, updated_text);
|
|
||||||
if(!addon.description.empty()) {
|
|
||||||
register_label("description", true, addon.description);
|
|
||||||
}
|
|
||||||
if(!addon.depends.empty()) {
|
|
||||||
register_label(
|
|
||||||
"dependencies",
|
|
||||||
true,
|
|
||||||
make_display_dependencies(addon_id, addons_list, addon_states),
|
|
||||||
true);
|
|
||||||
}
|
|
||||||
|
|
||||||
feedback_url_ = addon.feedback_url;
|
|
||||||
|
|
||||||
std::string languages;
|
|
||||||
|
|
||||||
for(const auto & lc : addon.locales)
|
|
||||||
{
|
|
||||||
const std::string& langlabel = langcode_to_string(lc);
|
|
||||||
if(!langlabel.empty()) {
|
|
||||||
if(!languages.empty()) {
|
|
||||||
languages += ", ";
|
|
||||||
}
|
|
||||||
languages += langlabel;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!languages.empty()) {
|
|
||||||
register_label("translations", true, languages);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_description::browse_url_callback()
|
|
||||||
{
|
|
||||||
/* TODO: ask for confirmation */
|
|
||||||
|
|
||||||
desktop::open_object(feedback_url_);
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_description::copy_url_callback()
|
|
||||||
{
|
|
||||||
desktop::clipboard::copy_to_clipboard(feedback_url_, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_description::pre_show(window& window)
|
|
||||||
{
|
|
||||||
styled_widget& url_none = find_widget<styled_widget>(&window, "url_none", false);
|
|
||||||
button& url_go_button = find_widget<button>(&window, "url_go", false);
|
|
||||||
button& url_copy_button = find_widget<button>(&window, "url_copy", false);
|
|
||||||
text_box& url_textbox = find_widget<text_box>(&window, "url", false);
|
|
||||||
|
|
||||||
url_textbox.set_value(feedback_url_);
|
|
||||||
url_textbox.set_active(false);
|
|
||||||
|
|
||||||
if(!feedback_url_.empty()) {
|
|
||||||
url_none.set_visible(styled_widget::visibility::invisible);
|
|
||||||
|
|
||||||
connect_signal_mouse_left_click(
|
|
||||||
url_go_button,
|
|
||||||
std::bind(&addon_description::browse_url_callback, this));
|
|
||||||
|
|
||||||
connect_signal_mouse_left_click(
|
|
||||||
url_copy_button,
|
|
||||||
std::bind(&addon_description::copy_url_callback, this));
|
|
||||||
|
|
||||||
if (!desktop::clipboard::available()) {
|
|
||||||
url_copy_button.set_active(false);
|
|
||||||
url_copy_button.set_tooltip(_("Clipboard support not found, contact your packager"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
url_go_button.set_active(false);
|
|
||||||
url_copy_button.set_active(false);
|
|
||||||
|
|
||||||
url_go_button.set_visible(styled_widget::visibility::invisible);
|
|
||||||
url_copy_button.set_visible(styled_widget::visibility::invisible);
|
|
||||||
url_textbox.set_visible(styled_widget::visibility::invisible);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!desktop::open_object_is_supported()) {
|
|
||||||
// No point in displaying the button on platforms that can't do
|
|
||||||
// open_object().
|
|
||||||
url_go_button.set_visible(styled_widget::visibility::invisible);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace dialogs
|
|
||||||
} // namespace gui2
|
|
|
@ -1,72 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2010 - 2016 by Ignacio R. Morelle <shadowm2006@gmail.com>
|
|
||||||
Part of the Battle for Wesnoth Project http://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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef GUI_DIALOGS_ADDON_DESCRIPTION_HPP_INCLUDED
|
|
||||||
#define GUI_DIALOGS_ADDON_DESCRIPTION_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "gui/dialogs/modal_dialog.hpp"
|
|
||||||
|
|
||||||
#include "addon/info.hpp"
|
|
||||||
#include "addon/state.hpp"
|
|
||||||
|
|
||||||
namespace gui2
|
|
||||||
{
|
|
||||||
namespace dialogs
|
|
||||||
{
|
|
||||||
|
|
||||||
class addon_description : public modal_dialog
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
*
|
|
||||||
* @param addon_id The requested add-on's id.
|
|
||||||
* @param addons_list Complete list of add-ons including the
|
|
||||||
* requested add-on and its dependencies.
|
|
||||||
* @param addon_states Local installation status of the add-ons in
|
|
||||||
* @a addons_list.
|
|
||||||
*/
|
|
||||||
addon_description(const std::string& addon_id,
|
|
||||||
const addons_list& addons_list,
|
|
||||||
const addons_tracking_list& addon_states);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The display function.
|
|
||||||
*
|
|
||||||
* See @ref modal_dialog for more information.
|
|
||||||
*/
|
|
||||||
static void display(const std::string& addon_id,
|
|
||||||
const addons_list& addons_list,
|
|
||||||
const addons_tracking_list& addon_states,
|
|
||||||
CVideo& video)
|
|
||||||
{
|
|
||||||
addon_description(addon_id, addons_list, addon_states).show(video);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::string feedback_url_;
|
|
||||||
|
|
||||||
/** Inherited from modal_dialog, implemented by REGISTER_DIALOG. */
|
|
||||||
virtual const std::string& window_id() const;
|
|
||||||
|
|
||||||
/** Inherited from modal_dialog. */
|
|
||||||
void pre_show(window& window);
|
|
||||||
|
|
||||||
void browse_url_callback();
|
|
||||||
void copy_url_callback();
|
|
||||||
};
|
|
||||||
} // namespace dialogs
|
|
||||||
} // namespace gui2
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,288 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2012 - 2016 by Ignacio Riquelme Morelle <shadowm2006@gmail.com>
|
|
||||||
Part of the Battle for Wesnoth Project http://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/addon/filter_options.hpp"
|
|
||||||
|
|
||||||
#include "gui/auxiliary/field.hpp"
|
|
||||||
#include "gui/widgets/button.hpp"
|
|
||||||
#ifdef GUI2_EXPERIMENTAL_LISTBOX
|
|
||||||
#include "gui/widgets/list.hpp"
|
|
||||||
#else
|
|
||||||
#include "gui/widgets/listbox.hpp"
|
|
||||||
#endif
|
|
||||||
#include "gui/widgets/settings.hpp"
|
|
||||||
#include "gui/widgets/toggle_button.hpp"
|
|
||||||
#include "gui/widgets/window.hpp"
|
|
||||||
#include "gettext.hpp"
|
|
||||||
|
|
||||||
#include "utils/functional.hpp"
|
|
||||||
|
|
||||||
#include <boost/dynamic_bitset.hpp>
|
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
bool unchecked_bool_field_finder(gui2::window& window,
|
|
||||||
gui2::field_bool* bool_field)
|
|
||||||
{
|
|
||||||
return bool_field->get_widget_value(window) == false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace gui2
|
|
||||||
{
|
|
||||||
namespace dialogs
|
|
||||||
{
|
|
||||||
|
|
||||||
/*WIKI
|
|
||||||
* @page = GUIWindowDefinitionWML
|
|
||||||
* @order = 2_addon_filter_options
|
|
||||||
*
|
|
||||||
* == Add-on filter options ==
|
|
||||||
*
|
|
||||||
* Advanced filtering options for the legacy (GUI1) Add-ons Manager dialog.
|
|
||||||
*
|
|
||||||
* @begin{table}{dialog_widgets}
|
|
||||||
*
|
|
||||||
* statuses_list & & listbox & m &
|
|
||||||
* A listbox for displaying and selecting add-on installation status
|
|
||||||
* filter options. $
|
|
||||||
*
|
|
||||||
* toggle_all_displayed_types & & button & m &
|
|
||||||
* This button toggles the values for all the widgets used to control the
|
|
||||||
* following add-on display options. $
|
|
||||||
*
|
|
||||||
* show_unknown & & toggle_button & m &
|
|
||||||
* Whether to display add-ons of unknown type. $
|
|
||||||
*
|
|
||||||
* show_sp_campaigns & & toggle_button & m &
|
|
||||||
* Whether to display single-player campaign add-ons. $
|
|
||||||
*
|
|
||||||
* show_sp_scenarios & & toggle_button & m &
|
|
||||||
* Whether to display single-player scenario add-ons. $
|
|
||||||
*
|
|
||||||
* show_mp_campaigns & & toggle_button & m &
|
|
||||||
* Whether to display multiplayer campaign add-ons. $
|
|
||||||
*
|
|
||||||
* show_mp_scenarios & & toggle_button & m &
|
|
||||||
* Whether to display multiplayer scenario add-ons. $
|
|
||||||
*
|
|
||||||
* show_mp_maps & & toggle_button & m &
|
|
||||||
* Whether to display multiplayer map-pack add-ons. $
|
|
||||||
*
|
|
||||||
* show_mp_eras & & toggle_button & m &
|
|
||||||
* Whether to display multiplayer era add-ons. $
|
|
||||||
*
|
|
||||||
* show_mp_factions & & toggle_button & m &
|
|
||||||
* Whether to display multiplayer faction add-ons. $
|
|
||||||
*
|
|
||||||
* show_mp_mods & & toggle_button & m &
|
|
||||||
* Whether to display multiplayer mod add-ons. $
|
|
||||||
*
|
|
||||||
* show_media & & toggle_button & m &
|
|
||||||
* Whether to display author resource add-ons. $
|
|
||||||
*
|
|
||||||
* show_other & & toggle_button & m &
|
|
||||||
* Whether to display add-ons of indeterminate types. $
|
|
||||||
*
|
|
||||||
* sort_ascending & & toggle_button & m &
|
|
||||||
* Display add-ons in ascending order by default. $
|
|
||||||
*
|
|
||||||
* sort_descending & & toggle_button & m &
|
|
||||||
* Display add-ons in descending order by default. $
|
|
||||||
*
|
|
||||||
* sort_by_name & & toggle_button & m &
|
|
||||||
* Sort add-ons by name by default. $
|
|
||||||
*
|
|
||||||
* sort_by_last_updated & & toggle_button & m &
|
|
||||||
* Sort add-ons by last update time by default. $
|
|
||||||
*
|
|
||||||
* sort_by_first_upload & & toggle_button & m &
|
|
||||||
* Sort add-ons by creation time by default. $
|
|
||||||
*
|
|
||||||
* @end{table}
|
|
||||||
*/
|
|
||||||
|
|
||||||
REGISTER_DIALOG(addon_filter_options)
|
|
||||||
|
|
||||||
addon_filter_options::addon_filter_options()
|
|
||||||
: displayed_status_()
|
|
||||||
, displayed_types_()
|
|
||||||
, displayed_types_fields_()
|
|
||||||
, sort_()
|
|
||||||
, dir_()
|
|
||||||
, sort_tgroup_()
|
|
||||||
, dir_tgroup_()
|
|
||||||
{
|
|
||||||
displayed_types_.fill(true);
|
|
||||||
|
|
||||||
// This part has to be hardcoded, sadly.
|
|
||||||
|
|
||||||
register_displayed_type_field("show_unknown", ADDON_UNKNOWN);
|
|
||||||
register_displayed_type_field("show_cores", ADDON_CORE);
|
|
||||||
register_displayed_type_field("show_sp_campaigns", ADDON_SP_CAMPAIGN);
|
|
||||||
register_displayed_type_field("show_sp_mp_campaigns", ADDON_SP_MP_CAMPAIGN);
|
|
||||||
register_displayed_type_field("show_sp_scenarios", ADDON_SP_SCENARIO);
|
|
||||||
register_displayed_type_field("show_mp_campaigns", ADDON_MP_CAMPAIGN);
|
|
||||||
register_displayed_type_field("show_mp_scenarios", ADDON_MP_SCENARIO);
|
|
||||||
register_displayed_type_field("show_mp_maps", ADDON_MP_MAPS);
|
|
||||||
register_displayed_type_field("show_mp_eras", ADDON_MP_ERA);
|
|
||||||
register_displayed_type_field("show_mp_factions", ADDON_MP_FACTION);
|
|
||||||
register_displayed_type_field("show_mp_mods", ADDON_MP_MOD);
|
|
||||||
register_displayed_type_field("show_media", ADDON_MEDIA);
|
|
||||||
// FIXME: (also in WML) should this and Unknown be a single option in the
|
|
||||||
// UI?
|
|
||||||
register_displayed_type_field("show_other", ADDON_OTHER);
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_filter_options::register_displayed_type_field(
|
|
||||||
const std::string& field_id, ADDON_TYPE addon_type)
|
|
||||||
{
|
|
||||||
displayed_types_fields_.push_back(
|
|
||||||
register_bool(field_id, true, displayed_types_[addon_type]));
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_filter_options::read_types_vector(const boost::dynamic_bitset<>& v)
|
|
||||||
{
|
|
||||||
for(size_t k = 0; k < displayed_types_.size(); ++k) {
|
|
||||||
// All unspecified types default to visible.
|
|
||||||
displayed_types_[k] = k < v.size() ? v[k] : true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_filter_options::toggle_all_displayed_types_button_callback(
|
|
||||||
window& window)
|
|
||||||
{
|
|
||||||
const bool have_any_unchecked
|
|
||||||
= displayed_types_fields_.end()
|
|
||||||
== std::find_if(displayed_types_fields_.begin(),
|
|
||||||
displayed_types_fields_.end(),
|
|
||||||
std::bind(&unchecked_bool_field_finder,
|
|
||||||
std::ref(window),
|
|
||||||
_1));
|
|
||||||
|
|
||||||
for(const auto field : displayed_types_fields_)
|
|
||||||
{
|
|
||||||
field->set_widget_value(window, !have_any_unchecked);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_filter_options::toggle_sort_callback()
|
|
||||||
{
|
|
||||||
sort_ = sort_tgroup_.get_active_member_value();
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_filter_options::toggle_dir_callback()
|
|
||||||
{
|
|
||||||
dir_ = dir_tgroup_.get_active_member_value();
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_filter_options::pre_show(window& window)
|
|
||||||
{
|
|
||||||
listbox& list = find_widget<listbox>(&window, "statuses_list", false);
|
|
||||||
window.keyboard_capture(&list);
|
|
||||||
|
|
||||||
for(unsigned k = ADDON_STATUS_FILTER(); k < FILTER_COUNT; ++k) {
|
|
||||||
std::map<std::string, string_map> row;
|
|
||||||
string_map column;
|
|
||||||
|
|
||||||
column["label"] = status_label(ADDON_STATUS_FILTER(k));
|
|
||||||
row.emplace("status", column);
|
|
||||||
|
|
||||||
list.add_row(row);
|
|
||||||
}
|
|
||||||
|
|
||||||
list.select_row(displayed_status_);
|
|
||||||
|
|
||||||
connect_signal_mouse_left_click(
|
|
||||||
find_widget<button>(&window, "toggle_all_displayed_types", false),
|
|
||||||
std::bind(&addon_filter_options::
|
|
||||||
toggle_all_displayed_types_button_callback,
|
|
||||||
this,
|
|
||||||
std::ref(window)));
|
|
||||||
|
|
||||||
sort_tgroup_.clear();
|
|
||||||
register_sort_toggle(window, "by_name", SORT_NAMES);
|
|
||||||
register_sort_toggle(window, "by_last_updated", SORT_UPDATED);
|
|
||||||
register_sort_toggle(window, "by_first_upload", SORT_CREATED);
|
|
||||||
|
|
||||||
dir_tgroup_.clear();
|
|
||||||
register_dir_toggle(window, "ascending", DIRECTION_ASCENDING);
|
|
||||||
register_dir_toggle(window, "descending", DIRECTION_DESCENDING);
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_filter_options::register_sort_toggle(window& window,
|
|
||||||
const std::string& toggle_id,
|
|
||||||
ADDON_SORT value)
|
|
||||||
{
|
|
||||||
toggle_button* b
|
|
||||||
= &find_widget<toggle_button>(&window, "sort_" + toggle_id, false);
|
|
||||||
|
|
||||||
b->set_value(value == sort_);
|
|
||||||
|
|
||||||
sort_tgroup_.add_member(b, value);
|
|
||||||
|
|
||||||
connect_signal_mouse_left_click(
|
|
||||||
*b,
|
|
||||||
std::bind(&addon_filter_options::toggle_sort_callback, this));
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_filter_options::register_dir_toggle(window& window,
|
|
||||||
const std::string& toggle_id,
|
|
||||||
ADDON_SORT_DIRECTION value)
|
|
||||||
{
|
|
||||||
toggle_button* b
|
|
||||||
= &find_widget<toggle_button>(&window, "sort_" + toggle_id, false);
|
|
||||||
|
|
||||||
b->set_value(value == dir_);
|
|
||||||
|
|
||||||
dir_tgroup_.add_member(b, value);
|
|
||||||
|
|
||||||
connect_signal_mouse_left_click(
|
|
||||||
*b,
|
|
||||||
std::bind(&addon_filter_options::toggle_dir_callback, this));
|
|
||||||
}
|
|
||||||
|
|
||||||
void addon_filter_options::post_show(window& window)
|
|
||||||
{
|
|
||||||
// Sorting and direction options are handled in widget
|
|
||||||
// callbacks.
|
|
||||||
sort_tgroup_.clear();
|
|
||||||
dir_tgroup_.clear();
|
|
||||||
|
|
||||||
listbox& list = find_widget<listbox>(&window, "statuses_list", false);
|
|
||||||
const int selected = list.get_selected_row();
|
|
||||||
|
|
||||||
if(selected != -1) {
|
|
||||||
displayed_status_ = ADDON_STATUS_FILTER(selected);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string addon_filter_options::status_label(ADDON_STATUS_FILTER s)
|
|
||||||
{
|
|
||||||
switch(s) {
|
|
||||||
case FILTER_NOT_INSTALLED:
|
|
||||||
return _("addons_view^Not Installed");
|
|
||||||
case FILTER_UPGRADABLE:
|
|
||||||
return _("addons_view^Upgradable");
|
|
||||||
case FILTER_INSTALLED:
|
|
||||||
return _("addons_view^Installed");
|
|
||||||
default:
|
|
||||||
return _("addons_view^All Add-ons");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace dialogs
|
|
||||||
} // namespace gui2
|
|
|
@ -1,127 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2012 - 2016 by Ignacio Riquelme Morelle <shadowm2006@gmail.com>
|
|
||||||
Part of the Battle for Wesnoth Project http://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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef GUI_DIALOGS_ADDON_FILTER_OPTIONS_HPP_INCLUDED
|
|
||||||
#define GUI_DIALOGS_ADDON_FILTER_OPTIONS_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include "gui/dialogs/modal_dialog.hpp"
|
|
||||||
#include "gui/widgets/group.hpp"
|
|
||||||
|
|
||||||
#include "addon/validation.hpp"
|
|
||||||
#include "addon/state.hpp"
|
|
||||||
|
|
||||||
#include <array>
|
|
||||||
#include <boost/dynamic_bitset.hpp>
|
|
||||||
|
|
||||||
namespace gui2
|
|
||||||
{
|
|
||||||
|
|
||||||
class toggle_button;
|
|
||||||
|
|
||||||
namespace dialogs
|
|
||||||
{
|
|
||||||
|
|
||||||
class addon_filter_options : public modal_dialog
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
addon_filter_options();
|
|
||||||
|
|
||||||
boost::dynamic_bitset<> displayed_types() const
|
|
||||||
{
|
|
||||||
return boost::dynamic_bitset<>(displayed_types_.begin(), displayed_types_.end());
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_displayed_types(const boost::dynamic_bitset<>& types)
|
|
||||||
{
|
|
||||||
read_types_vector(types);
|
|
||||||
}
|
|
||||||
|
|
||||||
ADDON_STATUS_FILTER displayed_status() const
|
|
||||||
{
|
|
||||||
return displayed_status_;
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_displayed_status(ADDON_STATUS_FILTER status)
|
|
||||||
{
|
|
||||||
displayed_status_ = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
ADDON_SORT sort() const
|
|
||||||
{
|
|
||||||
return sort_;
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_sort(ADDON_SORT sort)
|
|
||||||
{
|
|
||||||
sort_ = sort;
|
|
||||||
}
|
|
||||||
|
|
||||||
ADDON_SORT_DIRECTION direction() const
|
|
||||||
{
|
|
||||||
return dir_;
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_direction(ADDON_SORT_DIRECTION direction)
|
|
||||||
{
|
|
||||||
dir_ = direction;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
ADDON_STATUS_FILTER displayed_status_;
|
|
||||||
std::array<bool, ADDON_TYPES_COUNT> displayed_types_;
|
|
||||||
std::vector<field_bool*> displayed_types_fields_;
|
|
||||||
|
|
||||||
ADDON_SORT sort_;
|
|
||||||
ADDON_SORT_DIRECTION dir_;
|
|
||||||
|
|
||||||
typedef std::pair<toggle_button*, ADDON_SORT> sort_toggle;
|
|
||||||
typedef std::pair<toggle_button*, ADDON_SORT_DIRECTION> dir_toggle;
|
|
||||||
|
|
||||||
// Dialog display state variables.
|
|
||||||
group<ADDON_SORT> sort_tgroup_;
|
|
||||||
group<ADDON_SORT_DIRECTION> dir_tgroup_;
|
|
||||||
|
|
||||||
void register_displayed_type_field(const std::string& field_id,
|
|
||||||
ADDON_TYPE addon_type);
|
|
||||||
|
|
||||||
void read_types_vector(const boost::dynamic_bitset<>& v);
|
|
||||||
|
|
||||||
void toggle_all_displayed_types_button_callback(window& window);
|
|
||||||
|
|
||||||
void register_sort_toggle(window& window,
|
|
||||||
const std::string& toggle_id,
|
|
||||||
ADDON_SORT value);
|
|
||||||
void register_dir_toggle(window& window,
|
|
||||||
const std::string& toggle_id,
|
|
||||||
ADDON_SORT_DIRECTION value);
|
|
||||||
|
|
||||||
void toggle_sort_callback();
|
|
||||||
void toggle_dir_callback();
|
|
||||||
|
|
||||||
/** Inherited from modal_dialog, implemented by REGISTER_DIALOG. */
|
|
||||||
virtual const std::string& window_id() const;
|
|
||||||
|
|
||||||
/** Inherited from modal_dialog. */
|
|
||||||
void pre_show(window& window);
|
|
||||||
|
|
||||||
/** Inherited from modal_dialog. */
|
|
||||||
void post_show(window& window);
|
|
||||||
|
|
||||||
static std::string status_label(ADDON_STATUS_FILTER s);
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace dialogs
|
|
||||||
} // end namespace gui2
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -489,8 +489,6 @@ BOOST_AUTO_TEST_CASE(test_gui2)
|
||||||
* one.
|
* one.
|
||||||
*/
|
*/
|
||||||
"label_settings",
|
"label_settings",
|
||||||
"addon_description",
|
|
||||||
"addon_filter_options",
|
|
||||||
"addon_uninstall_list",
|
"addon_uninstall_list",
|
||||||
"addon_manager",
|
"addon_manager",
|
||||||
"loading_screen",
|
"loading_screen",
|
||||||
|
|
Loading…
Add table
Reference in a new issue