Clang 3.4 is unhappy that Doxygen comment with @deprecated is not
accompanied with a deprecated attribute. Since we don't do that, disable
the warning.
While I tested my whofield feature, unfortunately it was on an
old version of the campaign in which all shamans were on side 1,
so the macros had no side field. Recently, it was decided that
the shamans in this scenario should start on side 3, and a side
field was inserted into the macros.
When it was time to commit, there was of course a conflict, but
I simply put my existing magic comments into the new version,
not considering that now the id field had been shifted to the
right by one, and didn't re-run wmllint.
For example defined strings with empty lines would not work. The problem
was a direct check for newlines which failed if there were chr(254)
commands on the same line.
The URL controls overlay a placeholder "None" label using the
[stacked_widget]. When there's no URL to show, the URL controls are
hidden. When there is a URL to show, the placeholder is hidden instead.
Fixes the description box and header being centered on the dialog when
the description box and/or its container grid are narrower than the
column containing them.
The new layout merges some information rows together to increase
available vertical space for displaying additional fields later, and
uses a 'description' scroll_label type for the add-on Description field
to improve its appearance, especially for multi-line descriptions.
This also makes the dialog non-click-dismissable and adds a Close button
on the bottom right corner. Since we're about to add more interactive
controls, there's really not much of a choice about the click-dismiss
option; it gets disabled for such dialogs automatically.
This scroll_label definition is intended to be used for big description
boxes like in the Add-ons Manager's description dialog. It paints a
darker transparent background behind the inner grid and adds some
padding to the inner label.
The .pbl [feedback] block (also used in the server configuration WML)
specifies a list of format values interpolated into the
feedback_url_format string from [server_info] to build a web page URL
that is delivered to clients each time an add-on's metadata is sent in a
[campaign] block.
For example, given the following campaignd-side configuration:
[server_info]
feedback_url_format="http://forums.wesnoth.org/viewtopic.php?t=$thread_id"
[/server_info]
And the following tag in the _server.pbl WML:
[feedback]
thread_id=32091
[/feedback]
..., the server will deliver the following field as part of the
[campaign] block provided in the response to [request_campaign_list]:
feedback_url="http://forums.wesnoth.org/viewtopic.php?t=32091
The fields from the [feedback] block are percent-encoded to ensure that
the .pbl WML can't manipulate query strings from the
feedback_url_format. If for a system administrator it is somehow
desirable to let authors enter arbitrary URL fragments (e.g.
feedback_url_format="$url" and [feedback]
url="http://this-site-kills-kittens.example.com, bad idea btw), then
they should probably remove the utils::urlencode() call themselves and
take responsibility for any malicious links that could be served to
users of the add-ons server that way.
The [server_info] configuration block is intended to contain additional
information about a campaignd instance that may be used by clients or
the server for various purposes.
As a first such information field, the feedback_url_format string
contains a format string for use with
fast_interpolate_variables_into_string() to build add-on feedback page
URLs.
utils::interpolate_variables_into_string() requires a bunch of formula
AI implementation details at linking time, which really shouldn't be in
server-side code (see commit 495f481fdf6cbd6d5eea2ffaa20423f08c955eec).
Since I'm going to need a similar variable interpolation scheme for an
upcoming campaignd feature, add a
fast_interpolate_variables_into_string() function that does something
roughly equivalent, except using simple string replacements without
support for the full WML $variable syntax (e.g. pipes don't have any
meaning in this version of the functionality).