Merge with develop
--HG-- branch : compatibility-develop
This commit is contained in:
commit
52f81ca56d
3 changed files with 40 additions and 143 deletions
|
@ -281,9 +281,6 @@ namespace NLGUI
|
||||||
// A new text block has been parsed
|
// A new text block has been parsed
|
||||||
virtual void addText (const char * buf, int len);
|
virtual void addText (const char * buf, int len);
|
||||||
|
|
||||||
// A link has been parsed
|
|
||||||
virtual void addLink (uint element_number, const std::vector<bool> &present, const std::vector<const char *> &value);
|
|
||||||
|
|
||||||
// A new begin HTML element has been parsed (<IMG> for exemple)
|
// A new begin HTML element has been parsed (<IMG> for exemple)
|
||||||
virtual void beginElement (uint element_number, const std::vector<bool> &present, const std::vector<const char *> &value);
|
virtual void beginElement (uint element_number, const std::vector<bool> &present, const std::vector<const char *> &value);
|
||||||
|
|
||||||
|
|
|
@ -316,6 +316,11 @@ namespace NLGUI
|
||||||
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, true);
|
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, true);
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, finalUrl.c_str());
|
curl_easy_setopt(curl, CURLOPT_URL, finalUrl.c_str());
|
||||||
|
|
||||||
|
std::string userAgent = options.appName + "/" + options.appVersion;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_USERAGENT, userAgent.c_str());
|
||||||
|
|
||||||
|
sendCookies(curl, _DocumentDomain, _TrustedDomain);
|
||||||
|
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
|
||||||
|
|
||||||
|
@ -338,14 +343,7 @@ namespace NLGUI
|
||||||
#ifdef LOG_DL
|
#ifdef LOG_DL
|
||||||
nlwarning("Init Image Download");
|
nlwarning("Init Image Download");
|
||||||
#endif
|
#endif
|
||||||
/*
|
|
||||||
// Get current flag
|
|
||||||
int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );
|
|
||||||
// Turn on leak-checking bit
|
|
||||||
tmpFlag |= _CRTDBG_CHECK_ALWAYS_DF;
|
|
||||||
// Set flag to the new value
|
|
||||||
_CrtSetDbgFlag( tmpFlag );
|
|
||||||
*/
|
|
||||||
string pathName = "cache";
|
string pathName = "cache";
|
||||||
if ( ! CFile::isExists( pathName ) )
|
if ( ! CFile::isExists( pathName ) )
|
||||||
CFile::createDirectory( pathName );
|
CFile::createDirectory( pathName );
|
||||||
|
@ -628,32 +626,6 @@ namespace NLGUI
|
||||||
curl_multi_cleanup(MultiCurl);
|
curl_multi_cleanup(MultiCurl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
void dolibcurltest()
|
|
||||||
{
|
|
||||||
nlwarning("start libcurl test");
|
|
||||||
|
|
||||||
initImageDownload();
|
|
||||||
|
|
||||||
addImageDownload("http://www.ryzom.com/en/");
|
|
||||||
addImageDownload("http://www.ryzom.com/fr/");
|
|
||||||
addImageDownload("http://www.ryzom.com/de/");
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
checkImageDownload();
|
|
||||||
nlwarning("continue to sleep");
|
|
||||||
nlSleep(300);
|
|
||||||
}
|
|
||||||
while(RunningCurls);
|
|
||||||
|
|
||||||
releaseImageDownload();
|
|
||||||
|
|
||||||
nlwarning("end libcurl test");
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
class CGroupListAdaptor : public CInterfaceGroup
|
class CGroupListAdaptor : public CInterfaceGroup
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -726,10 +698,6 @@ namespace NLGUI
|
||||||
|
|
||||||
// Build a UTF8 string
|
// Build a UTF8 string
|
||||||
string inputString(buf, buf+len);
|
string inputString(buf, buf+len);
|
||||||
// inputString.resize (len);
|
|
||||||
// uint i;
|
|
||||||
// for (i=0; i<(uint)len; i++)
|
|
||||||
// inputString[i] = buf[i];
|
|
||||||
|
|
||||||
if (_ParsingLua && _TrustedDomain)
|
if (_ParsingLua && _TrustedDomain)
|
||||||
{
|
{
|
||||||
|
@ -747,7 +715,6 @@ namespace NLGUI
|
||||||
ucstring tmp;
|
ucstring tmp;
|
||||||
tmp.reserve(len);
|
tmp.reserve(len);
|
||||||
uint ucLen = (uint)inputUCString.size();
|
uint ucLen = (uint)inputUCString.size();
|
||||||
//uint ucLenWithoutSpace = 0;
|
|
||||||
for (uint i=0; i<ucLen; i++)
|
for (uint i=0; i<ucLen; i++)
|
||||||
{
|
{
|
||||||
ucchar output;
|
ucchar output;
|
||||||
|
@ -768,23 +735,8 @@ namespace NLGUI
|
||||||
if (keep)
|
if (keep)
|
||||||
{
|
{
|
||||||
tmp.push_back(output);
|
tmp.push_back(output);
|
||||||
/*
|
|
||||||
// Break if the string is more than 50 chars long without space
|
|
||||||
if (output != ucchar(' '))
|
|
||||||
{
|
|
||||||
ucLenWithoutSpace++;
|
|
||||||
if (ucLenWithoutSpace == 50)
|
|
||||||
{
|
|
||||||
tmp.push_back(ucchar(' '));
|
|
||||||
ucLenWithoutSpace = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
ucLenWithoutSpace = 0;
|
|
||||||
}
|
|
||||||
*/ }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!tmp.empty())
|
if (!tmp.empty())
|
||||||
addString(tmp);
|
addString(tmp);
|
||||||
|
@ -801,69 +753,6 @@ namespace NLGUI
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
||||||
void CGroupHTML::addLink (uint element_number, const std::vector<bool> &present, const std::vector<const char *> &value)
|
|
||||||
{
|
|
||||||
if (_Browsing)
|
|
||||||
{
|
|
||||||
if (element_number == HTML_A)
|
|
||||||
{
|
|
||||||
registerAnchorName(MY_HTML_A);
|
|
||||||
|
|
||||||
// #fragment works with both ID and NAME so register both
|
|
||||||
if (present[MY_HTML_A_NAME] && value[MY_HTML_A_NAME])
|
|
||||||
_AnchorName.push_back(value[MY_HTML_A_NAME]);
|
|
||||||
|
|
||||||
if (present[MY_HTML_A_HREF] && value[MY_HTML_A_HREF])
|
|
||||||
{
|
|
||||||
string suri = value[MY_HTML_A_HREF];
|
|
||||||
if(suri.find("ah:") == 0)
|
|
||||||
{
|
|
||||||
if (_TrustedDomain)
|
|
||||||
_Link.push_back (suri);
|
|
||||||
else
|
|
||||||
_Link.push_back ("");
|
|
||||||
}
|
|
||||||
else if (_TrustedDomain && suri[0] == '#' && _LuaHrefHack)
|
|
||||||
{
|
|
||||||
// Direct url (hack for lua beginElement)
|
|
||||||
_Link.push_back (suri.substr(1));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// convert href from "?key=val" into "http://domain.com/?key=val"
|
|
||||||
_Link.push_back(getAbsoluteUrl(suri));
|
|
||||||
}
|
|
||||||
|
|
||||||
for(uint8 i = MY_HTML_A_ACCESSKEY; i < MY_HTML_A_Z_ACTION_SHORTCUT; i++)
|
|
||||||
{
|
|
||||||
if (present[i] && value[i])
|
|
||||||
{
|
|
||||||
string title = value[i];
|
|
||||||
// nlinfo("key %d = %s", i, title.c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//nlinfo("key of TITLE is : %d", MY_HTML_A_Z_ACTION_PARAMS);
|
|
||||||
if (present[MY_HTML_A_Z_ACTION_PARAMS] && value[MY_HTML_A_Z_ACTION_PARAMS])
|
|
||||||
{
|
|
||||||
string title = value[MY_HTML_A_Z_ACTION_PARAMS];
|
|
||||||
_LinkTitle.push_back(title);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
_LinkTitle.push_back("");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_Link.push_back("");
|
|
||||||
_LinkTitle.push_back("");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************************************************************************
|
|
||||||
|
|
||||||
#define getCellsParameters(prefix,inherit) \
|
#define getCellsParameters(prefix,inherit) \
|
||||||
{\
|
{\
|
||||||
CGroupHTML::CCellParams cellParams; \
|
CGroupHTML::CCellParams cellParams; \
|
||||||
|
@ -1176,6 +1065,8 @@ namespace NLGUI
|
||||||
break;
|
break;
|
||||||
case HTML_A:
|
case HTML_A:
|
||||||
{
|
{
|
||||||
|
registerAnchorName(MY_HTML_A);
|
||||||
|
|
||||||
CStyleParams style;
|
CStyleParams style;
|
||||||
style.FontSize = getFontSize();
|
style.FontSize = getFontSize();
|
||||||
style.TextColor = LinkColor;
|
style.TextColor = LinkColor;
|
||||||
|
@ -1191,15 +1082,38 @@ namespace NLGUI
|
||||||
_FontStrikeThrough.push_back(style.StrikeThrough);
|
_FontStrikeThrough.push_back(style.StrikeThrough);
|
||||||
_GlobalColor.push_back(LinkColorGlobalColor);
|
_GlobalColor.push_back(LinkColorGlobalColor);
|
||||||
_A.push_back(true);
|
_A.push_back(true);
|
||||||
|
_Link.push_back ("");
|
||||||
|
_LinkTitle.push_back("");
|
||||||
|
_LinkClass.push_back("");
|
||||||
|
|
||||||
|
// #fragment works with both ID and NAME so register both
|
||||||
|
if (present[MY_HTML_A_NAME] && value[MY_HTML_A_NAME])
|
||||||
|
_AnchorName.push_back(value[MY_HTML_A_NAME]);
|
||||||
if (present[MY_HTML_A_TITLE] && value[MY_HTML_A_TITLE])
|
if (present[MY_HTML_A_TITLE] && value[MY_HTML_A_TITLE])
|
||||||
_LinkTitle.push_back(value[MY_HTML_A_TITLE]);
|
_LinkTitle.back() = value[MY_HTML_A_TITLE];
|
||||||
if (present[MY_HTML_A_CLASS] && value[MY_HTML_A_CLASS])
|
if (present[MY_HTML_A_CLASS] && value[MY_HTML_A_CLASS])
|
||||||
_LinkClass.push_back(value[MY_HTML_A_CLASS]);
|
_LinkClass.back() = value[MY_HTML_A_CLASS];
|
||||||
|
if (present[MY_HTML_A_HREF] && value[MY_HTML_A_HREF])
|
||||||
|
{
|
||||||
|
string suri = value[MY_HTML_A_HREF];
|
||||||
|
if(suri.find("ah:") == 0)
|
||||||
|
{
|
||||||
|
if (_TrustedDomain)
|
||||||
|
_Link.back() = suri;
|
||||||
|
}
|
||||||
|
else if (_TrustedDomain && suri[0] == '#' && _LuaHrefHack)
|
||||||
|
{
|
||||||
|
// Direct url (hack for lua beginElement)
|
||||||
|
_Link.back() = suri.substr(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// convert href from "?key=val" into "http://domain.com/?key=val"
|
||||||
|
_Link.back() = getAbsoluteUrl(suri);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HTML_DIV:
|
case HTML_DIV:
|
||||||
{
|
{
|
||||||
_BlockLevelElement.push_back(true);
|
_BlockLevelElement.push_back(true);
|
||||||
|
@ -1286,7 +1200,6 @@ namespace NLGUI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HTML_FONT:
|
case HTML_FONT:
|
||||||
{
|
{
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
@ -1602,9 +1515,6 @@ namespace NLGUI
|
||||||
getParagraph()->addChild (buttonGroup);
|
getParagraph()->addChild (buttonGroup);
|
||||||
paragraphChange ();
|
paragraphChange ();
|
||||||
}
|
}
|
||||||
|
|
||||||
// addButton (CCtrlTextButton::PushButton, name, normal, pushed.empty()?normal:pushed, over,
|
|
||||||
// globalColor, "html_submit_form", param.c_str(), tooltip);
|
|
||||||
}
|
}
|
||||||
else if (type == "text")
|
else if (type == "text")
|
||||||
{
|
{
|
||||||
|
@ -5470,15 +5380,11 @@ namespace NLGUI
|
||||||
value.insert(value.begin() + (uint)it.nextKey().toInteger(), buffer);
|
value.insert(value.begin() + (uint)it.nextKey().toInteger(), buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
beginElement(element_number, present, value);
|
|
||||||
if (element_number == HTML_A)
|
|
||||||
{
|
|
||||||
// ingame lua scripts from browser are using <a href="#http://..."> url scheme
|
// ingame lua scripts from browser are using <a href="#http://..."> url scheme
|
||||||
// reason unknown
|
// reason unknown
|
||||||
_LuaHrefHack = true;
|
_LuaHrefHack = true;
|
||||||
addLink(element_number, present, value);
|
beginElement(element_number, present, value);
|
||||||
_LuaHrefHack = false;
|
_LuaHrefHack = false;
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -5829,7 +5735,6 @@ namespace NLGUI
|
||||||
{
|
{
|
||||||
std::string ret;
|
std::string ret;
|
||||||
sint32 number = Value;
|
sint32 number = Value;
|
||||||
bool upper = false;
|
|
||||||
|
|
||||||
if (Type == "disc")
|
if (Type == "disc")
|
||||||
{
|
{
|
||||||
|
|
|
@ -61,11 +61,6 @@ namespace NLGUI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (element_number == HTML_A)
|
|
||||||
{
|
|
||||||
addLink(element_number, present, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
beginElement(element_number, present, value);
|
beginElement(element_number, present, value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue