[SCM] Development for GoFind! branch, master, updated. bc8cb24479e127ef2dd1ec2cecff3fc8e561f557
Miriam Ruiz
miriam at debian.org
Wed May 6 20:35:00 UTC 2009
The following commit has been merged in the master branch:
commit b432dc06a7620629b5b1c91d0127510586ba586f
Author: Miriam Ruiz <miriam at debian.org>
Date: Wed May 6 22:32:37 2009 +0200
FLTK list of packages now shows i18n descriptions in Latin1
diff --git a/gui_fltk.cpp b/gui_fltk.cpp
index a014757..36d8df2 100644
--- a/gui_fltk.cpp
+++ b/gui_fltk.cpp
@@ -156,7 +156,7 @@ static void UpdateUILists(GamesUI& ui)
std::string desc;
std::string shortdesc;
- if (pkgdata.GetPkgShortDesc(rec.package(), shortdesc))
+ if (pkgdata.GetPkgLatin1ShortDesc(rec.package(), shortdesc))
{
desc = std::string(fmtstr) + rec.package() + "\t" +
std::string(fmtstr) + shortdesc;
diff --git a/pkgdata.cpp b/pkgdata.cpp
index 91e77f7..e00d234 100644
--- a/pkgdata.cpp
+++ b/pkgdata.cpp
@@ -107,10 +107,13 @@ static const char legalchars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij
void PackageData::AddTextAsHTML(const std::string &in_text, std::string &out_html)
{
std::ostringstream os;
- utf8::html::QuoteHTML(std::cout, in_text.c_str());
+ utf8::html::QuoteHTML(os, in_text.c_str());
+ os << std::ends;
+ os.flush();
std::cout << os.str() << std::endl;
+ const std::string & tempString(os.str());
+ const char *text = tempString.c_str();
- const char *text = in_text.c_str();
const char *src = text;
//out_html.erase();
while (*src)
@@ -171,12 +174,26 @@ bool PackageData::GetPkgShortDesc(const std::string &pkgname, std::string &short
return true;
}
-bool PackageData::GetPkgHTMLShortDesc(const std::string &pkgname, std::string &shortdesc)
+bool PackageData::GetPkgHTMLShortDesc(const std::string &pkgname, std::string &html_short)
{
std::string shdesc;
if (!GetPkgShortDesc(pkgname, shdesc))
return false;
+ html_short.erase();
+ AddTextAsHTML(shdesc, html_short);
+ return true;
+}
+bool PackageData::GetPkgLatin1ShortDesc(const std::string &pkgname, std::string &desc)
+{
+ std::string shdesc;
+ if (!GetPkgShortDesc(pkgname, shdesc))
+ return false;
+ std::ostringstream os;
+ utf8::html::UTF8ToLatin1(os, shdesc.c_str());
+ os << std::ends;
+ os.flush();
+ desc = os.str();
return true;
}
diff --git a/pkgdata.h b/pkgdata.h
index 93bfba9..761b819 100644
--- a/pkgdata.h
+++ b/pkgdata.h
@@ -44,7 +44,8 @@ class PackageData : public Engine
bool AppTemplate(const char *id);
bool GetPkgShortDesc(const std::string &pkgname, std::string &shortdesc);
- bool GetPkgHTMLShortDesc(const std::string &pkgname, std::string &shortdesc);
+ bool GetPkgHTMLShortDesc(const std::string &pkgname, std::string &html_short);
+ bool GetPkgLatin1ShortDesc(const std::string &pkgname, std::string &desc);
bool GetPkgHTMLDesc(const std::string &pkgname, std::string &html_short, std::string &html_long);
char *TagString(const Tag& tag);
diff --git a/utf8/html.cpp b/utf8/html.cpp
index 1e735ad..a02f990 100644
--- a/utf8/html.cpp
+++ b/utf8/html.cpp
@@ -351,7 +351,7 @@ void QuoteHTML(std::ostream &out, const char *in)
Char2UTF8Map::iterator it = char2utf8.find(ch);
if (ch < 128)
{
- out.put(*ptr);
+ out.put(ch);
}
else if (it != char2utf8.end())
{
@@ -369,6 +369,29 @@ void QuoteHTML(std::ostream &out, const char *in)
}
}
+void UTF8ToLatin1(std::ostream &out, const char *in)
+{
+ const char *ptr = in;
+ int len = strlen(in);
+ while (*ptr)
+ {
+ unsigned long int ch;
+ int adv = utf8::parser::utf8_to_char(&ch, ptr, len);
+ if (adv && len >= adv)
+ {
+ Char2UTF8Map::iterator it = char2utf8.find(ch);
+ if (ch < 256)
+ out.put(ch);
+ else
+ out << "?";
+ len -= adv;
+ ptr += adv;
+ }
+ else
+ break;
+ }
+}
+
} } // Close namespaces
#ifdef UNIT_TEST
diff --git a/utf8/html.h b/utf8/html.h
index 17cab36..be84e54 100644
--- a/utf8/html.h
+++ b/utf8/html.h
@@ -29,6 +29,7 @@ namespace utf8
{
void QuoteHTML(std::ostream &out, const char *in);
+ void UTF8ToLatin1(std::ostream &out, const char *in);
} // namespace utf8::html
} // namespace utf8
--
Development for GoFind!
More information about the Pkg-games-commits
mailing list