GUI2: taddon_description: merge 2/2

This commit is contained in:
Ignacio R. Morelle 2010-12-21 21:08:58 +00:00
parent e7b7abe209
commit 979f2e4e69
4 changed files with 214 additions and 84 deletions

View file

@ -15,6 +15,8 @@
[row]
[column]
border = "all"
border_size = 5
vertical_alignment = "top"
[image]
@ -25,28 +27,9 @@
[/column]
[column]
border = "all"
border_size = 5
horizontal_alignment = "left"
vertical_alignment = "top"
[label]
id = "title"
definition = "title"
[/label]
[/column]
[/row]
[row]
{GUI_FILLER}
[column]
horizontal_alignment = "left"
[grid]
[row]
@ -55,23 +38,11 @@
border = "all"
border_size = 5
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"
id = "title"
definition = "title"
[/label]
[/column]
@ -79,60 +50,167 @@
[/row]
[row]
grow_factor = 1
[column]
border = "all"
border_size = 5
horizontal_alignment = "left"
[label]
definition = "default"
label = _ "Description:"
[/label]
[grid]
[/column]
[row]
[column]
border = "all"
border_size = 5
vertical_alignment = "top"
horizontal_alignment = "left"
[column]
border = "all"
border_size = 5
vertical_alignment = "top"
horizontal_alignment = "left"
[scroll_label]
id = "description"
definition = "default"
[/scroll_label]
[label]
definition = "default"
label = _ "Author:"
[/label]
[/column]
[/column]
[/row]
[column]
border = "all"
border_size = 5
horizontal_alignment = "left"
vertical_alignment = "top"
[row]
grow_factor = 1
[label]
id = "author"
definition = "default"
[/label]
[column]
border = "all"
border_size = 5
horizontal_alignment = "left"
[/column]
[label]
definition = "default"
label = _ "Translations:"
[/label]
[/row]
[/column]
[row]
[column]
border = "all"
border_size = 5
vertical_alignment = "top"
horizontal_alignment = "left"
[column]
border = "all"
border_size = 5
vertical_alignment = "top"
horizontal_alignment = "left"
[scroll_label]
id = "translations"
definition = "default"
[/scroll_label]
[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]
[/row]
[row]
grow_factor = 1
[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]
grow_factor = 1
[column]
border = "all"
border_size = 5
vertical_alignment = "top"
horizontal_alignment = "left"
[label]
definition = "default"
label = _ "Description:"
[/label]
[/column]
[column]
border = "all"
border_size = 5
vertical_alignment = "top"
horizontal_alignment = "left"
[scroll_label]
id = "description"
definition = "default"
label = _ "No description available."
[/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]

View file

@ -1167,12 +1167,14 @@ namespace {
addon_info inf;
inf.sizestr = sizef;
addons.push_back(name);
versions.push_back(c["version"]);
uploads.push_back(c["uploads"]);
descriptions.push_back(c["description"]);
inf.description = c["description"];
inf.description = c["description"].str();
types.push_back(type_str);
@ -1192,6 +1194,7 @@ namespace {
std::string version = c["version"], author = c["author"];
inf.version = version;
inf.author = author;
//add negative sizes to reverse the sort order
sizes.push_back(-size);

View file

@ -23,7 +23,7 @@
#include "language.hpp"
namespace {
t_string langcode_to_tstring(const std::string& lcode)
std::string langcode_to_string(const std::string& lcode)
{
foreach(const language_def& ld, get_languages()) {
if(ld.localename == lcode) {
@ -37,27 +37,75 @@ namespace {
namespace gui2 {
/*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 & & control & m &
* Label for displaying the add-on icon, in a 72x72 area. $
*
* title & & control & m &
* Dialog title label, corresponding to the add-on name. $
*
* version & & control & m &
* Label for displaying the add-on version number. $
*
* author & & control & m &
* Label for displaying the add-on author/maintainer name. $
*
* size & & control & m &
* Label for displaying the add-on package size. $
*
* description & & control & m &
* Text label for displaying the add-on's description. $
*
* translations & & control & m &
* Label for displaying a list of translations provided by the add-on. $
*
* @end{table}
*/
REGISTER_WINDOW(addon_description)
void taddon_description::pre_show(CVideo& /*video*/, twindow& window)
{
const std::string fixed_icon = ainfo_.icon + "~SCALE(72,72)";
find_widget<tcontrol>(&window, "image", false).set_label(fixed_icon);
find_widget<tcontrol>(&window, "image", false).set_label(fixed_icon);
find_widget<tcontrol>(&window, "title", false).set_label(ainfo_.name);
find_widget<tcontrol>(&window, "description", false).set_label(ainfo_.description);
find_widget<tcontrol>(&window, "version", false).set_label(ainfo_.version);
find_widget<tcontrol>(&window, "author", false).set_label(ainfo_.author);
find_widget<tcontrol>(&window, "size", false).set_label(ainfo_.sizestr);
// Validate widget presence in either path
tcontrol& ctl_description = find_widget<tcontrol>(&window, "description", false);
if(ainfo_.description.empty() == false) {
ctl_description.set_label(ainfo_.description);
}
std::string languages;
foreach(const std::string& lc, ainfo_.translations) {
if(languages.empty() == false) {
languages += ", ";
const std::string& langlabel = langcode_to_string(lc);
if(langlabel.empty() == false) {
if(languages.empty() == false) {
languages += ", ";
}
languages += langlabel;
}
languages += langcode_to_tstring(lc);
}
find_widget<tcontrol>(&window, "translations", false).set_label(languages);
// Validate widget presence in either path
tcontrol& ctl_languages = find_widget<tcontrol>(&window, "translations", false);
if(languages.empty() == false) {
ctl_languages.set_label(languages);
}
}
}

View file

@ -17,16 +17,17 @@
#define GUI_DIALOGS_ADDON_DESCRIPTION_HPP_INCLUDED
#include "gui/dialogs/dialog.hpp"
#include "tstring.hpp"
#include <vector>
struct addon_info
{
t_string name;
t_string description;
std::string name;
std::string description;
std::string icon;
std::string version;
std::string author;
std::string sizestr;
std::vector<std::string> translations;
};