r3258 - software/ui/src
Miriam Ruiz
baby-guest at alioth.debian.org
Fri Jul 6 19:36:41 UTC 2007
Author: baby-guest
Date: 2007-07-06 19:36:41 +0000 (Fri, 06 Jul 2007)
New Revision: 3258
Modified:
software/ui/src/pkgbrowser.cpp
Log:
converted description to html
Modified: software/ui/src/pkgbrowser.cpp
===================================================================
--- software/ui/src/pkgbrowser.cpp 2007-07-06 17:03:37 UTC (rev 3257)
+++ software/ui/src/pkgbrowser.cpp 2007-07-06 19:36:41 UTC (rev 3258)
@@ -54,6 +54,9 @@
using namespace ept::apt;
using namespace ept::textsearch;
+static const char legalchars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz at _?+-,.~/%&=:*#";
+#define SIZE_URI 256
+
PackageBrowser::PackageBrowser(int x, int y, int w, int h, const char *l)
: VersatileBrowser(x, y, w, h, l), num_bar_images(2)
{
@@ -79,6 +82,46 @@
}
}
+static void text2html(const std::string &in_text, std::string &out_html)
+{
+ const char *text = in_text.c_str();
+ const char *src = text;
+ //out_html.erase();
+ while (*src)
+ {
+ if (!strncasecmp("http:", src, 5) || !strncasecmp("mailto:", src, 7) ||
+ !strncasecmp("ftp:", src, 4) || !strncasecmp("https:", src, 6))
+ {
+ char uri[SIZE_URI];
+ int i;
+ for (i = 0; *src && (strchr(legalchars, *src) || *src < 0) && i < SIZE_URI-1; i++)
+ uri[i] = *src++;
+ if (strchr(".?!", uri[i-1])) { --i; --src; } // Probably the end of a sentence
+ uri[i] = 0;
+ out_html += "<a href=\"";
+ out_html += uri;
+ out_html += "\">";
+ out_html += uri;
+ out_html += "</a>";
+ }
+ else if (!strncasecmp(" .\n", src, 3))
+ {
+ out_html += "<br /> <br />";
+ src += 2;
+ }
+ else if (*src <= ' ')
+ {
+ out_html += " ";
+ src++;
+ }
+ else
+ {
+ out_html += *src;
+ src++;
+ }
+ }
+}
+
void PackageBrowser::item_select(void *p, int s)
{
VersatileBrowser::item_select(p, s);
@@ -143,18 +186,15 @@
PackageRecord rec(ui->engine->apt().rawRecord((const char *)data));
- char *pkg_txt = new char[4096];
+ std::string pkg_desc;
if (ui)
{
- snprintf(pkg_txt, 4096, "<center><h1><a href=\"pkg:%s\">%s</a></h1></center><br /><center>%s</center><hr /><p>%s</p>",
- rec.package().c_str(),
- rec.package().c_str(),
- rec.shortDescription().c_str(),
- rec.longDescription().c_str()
- );
- ui->InfoView->value(pkg_txt);
+ pkg_desc = std::string ("<center><h1><a href=\"pkg:") + rec.package() + "\">" + rec.package() +
+ "</a></h1></center><br />";
+ pkg_desc += std::string("<center>") + rec.shortDescription() + "</center><hr /><p>";
+ text2html(rec.longDescription(), pkg_desc);
+ ui->InfoView->value(pkg_desc.c_str());
}
- delete [] pkg_txt;
static int widths[] = { 150, 0 }; // widths for each column
ui->DebTagsBrowser->clear();
More information about the Pkg-games-commits
mailing list