diff --git a/code/nel/include/nel/gui/group_html.h b/code/nel/include/nel/gui/group_html.h index 6a8760533..cf06a49d0 100644 --- a/code/nel/include/nel/gui/group_html.h +++ b/code/nel/include/nel/gui/group_html.h @@ -238,8 +238,6 @@ namespace NLGUI int luaInsertText(CLuaState &ls); int luaAddString(CLuaState &ls); int luaAddImage(CLuaState &ls); - int luaBeginElement(CLuaState &ls); - int luaEndElement(CLuaState &ls); int luaShowDiv(CLuaState &ls); int luaParseHtml(CLuaState &ls); int luaRenderHtml(CLuaState &ls); @@ -253,8 +251,6 @@ namespace NLGUI REFLECT_LUA_METHOD("insertText", luaInsertText) REFLECT_LUA_METHOD("addString", luaAddString) REFLECT_LUA_METHOD("addImage", luaAddImage) - REFLECT_LUA_METHOD("beginElement", luaBeginElement) - REFLECT_LUA_METHOD("endElement", luaEndElement) REFLECT_LUA_METHOD("showDiv", luaShowDiv) REFLECT_LUA_METHOD("parseHtml", luaParseHtml) REFLECT_LUA_METHOD("renderHtml", luaRenderHtml) @@ -736,9 +732,6 @@ namespace NLGUI private: friend class CHtmlParser; - // TODO: beginElement is overwritten in client quick help class, merge it here? - void beginElementDeprecated(uint element_number, const std::vector &present, const std::vector &value); - void endElementDeprecated(uint element_number); // move src->Children into CurrentHtmlElement.parent.children element void spliceFragment(std::list::iterator src); diff --git a/code/nel/src/gui/group_html.cpp b/code/nel/src/gui/group_html.cpp index c40617f50..1f9eb5fd2 100644 --- a/code/nel/src/gui/group_html.cpp +++ b/code/nel/src/gui/group_html.cpp @@ -1503,1578 +1503,6 @@ namespace NLGUI } } - // *************************************************************************** - void CGroupHTML::beginElementDeprecated(uint element_number, const std::vector &present, const std::vector &value) - { - if (_Browsing) - { - // Paragraph ? - switch(element_number) - { - case HTML_HTML: - if (present[MY_HTML_HTML_STYLE] && value[MY_HTML_HTML_STYLE]) - _Style.applyRootStyle(value[MY_HTML_HTML_STYLE]); - - _Style.Current = _Style.Root; - setBackgroundColor(_Style.Current.BackgroundColor); - break; - case HTML_HEAD: - _ReadingHeadTag = !_IgnoreHeadTag; - _IgnoreHeadTag = true; - break; - case HTML_BASE: - if (_ReadingHeadTag && !_IgnoreBaseUrlTag) - { - if (present[HTML_BASE_HREF] && value[HTML_BASE_HREF]) - { - CUrlParser uri(value[HTML_BASE_HREF]); - if (uri.isAbsolute()) - { - _URL = uri.toString(); - _IgnoreBaseUrlTag = true; - } - } - } - break; - case HTML_META: - if (_ReadingHeadTag) - { - bool httpEquiv = present[HTML_META_HTTP_EQUIV] && value[HTML_META_HTTP_EQUIV]; - bool httpContent = present[HTML_META_CONTENT] && value[HTML_META_CONTENT]; - if (httpEquiv && httpContent) - { - // only first http-equiv="refresh" should be handled - if (_RefreshUrl.empty() && toLower(value[HTML_META_HTTP_EQUIV]) == "refresh") - { - const CWidgetManager::SInterfaceTimes × = CWidgetManager::getInstance()->getInterfaceTimes(); - double timeSec = times.thisFrameMs / 1000.0f; - string content(value[HTML_META_CONTENT]); - - string::size_type pos = content.find_first_of(";"); - if (pos == string::npos) - { - fromString(content, _NextRefreshTime); - _RefreshUrl = _URL; - } - else - { - fromString(content.substr(0, pos), _NextRefreshTime); - - pos = toLower(content).find("url="); - if (pos != string::npos) - _RefreshUrl = getAbsoluteUrl(content.substr(pos + 4)); - } - - _NextRefreshTime += timeSec; - } - } - } - break; - case HTML_A: - { - registerAnchorName(MY_HTML_A); - - _Style.pushStyle(); - _Style.Current.TextColor = LinkColor; - _Style.Current.Underlined = true; - _Style.Current.GlobalColor = LinkColorGlobalColor; - _Style.Current.Width = -1; - _Style.Current.Height = -1; - - if (present[HTML_A_STYLE] && value[HTML_A_STYLE]) - _Style.applyStyle(value[HTML_A_STYLE]); - - _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]) - _LinkTitle.back() = value[MY_HTML_A_TITLE]; - if (present[MY_HTML_A_CLASS] && 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; - case HTML_DIV: - { - _BlockLevelElement.push_back(true); - registerAnchorName(MY_HTML_DIV); - _Style.pushStyle(); - - if (present[MY_HTML_DIV_NAME] && value[MY_HTML_DIV_NAME]) - _DivName = value[MY_HTML_DIV_NAME]; - - string instClass; - if (present[MY_HTML_DIV_CLASS] && value[MY_HTML_DIV_CLASS]) - instClass = value[MY_HTML_DIV_CLASS]; - - string style; - if (present[MY_HTML_DIV_STYLE] && value[MY_HTML_DIV_STYLE]) - style = value[MY_HTML_DIV_STYLE]; - - if (!style.empty()) - _Style.applyStyle(style); - - // use generic template system - if (_TrustedDomain && !instClass.empty() && instClass == "ryzom-ui-grouptemplate") - { - string id; - if (present[MY_HTML_DIV_ID] && value[MY_HTML_DIV_ID]) - id = value[MY_HTML_DIV_ID]; - - typedef pair TTmplParam; - vector tmplParams; - - string templateName; - if (!style.empty()) - { - TStyle styles = parseStyle(style); - TStyle::iterator it; - for (it=styles.begin(); it != styles.end(); it++) - { - if ((*it).first == "template") - templateName = (*it).second; - else if ((*it).first == "display" && (*it).second == "inline-block") - _BlockLevelElement.back() = false; - else - tmplParams.push_back(TTmplParam((*it).first, (*it).second)); - } - } - - if (!templateName.empty()) - { - string parentId; - bool haveParentDiv = getDiv() != NULL; - if (haveParentDiv) - parentId = getDiv()->getId(); - else - { - if (!_Paragraph) - newParagraph (0); - - parentId = _Paragraph->getId(); - } - - CInterfaceGroup *inst = CWidgetManager::getInstance()->getParser()->createGroupInstance(templateName, parentId+":"+id, tmplParams); - if (inst) - { - inst->setId(parentId+":"+id); - inst->updateCoords(); - if (haveParentDiv) - { - inst->setParent(getDiv()); - inst->setParentSize(getDiv()); - inst->setParentPos(getDiv()); - inst->setPosRef(Hotspot_TL); - inst->setParentPosRef(Hotspot_TL); - getDiv()->addGroup(inst); - - _BlockLevelElement.back() = false; - } - else - { - getParagraph()->addChild(inst); - paragraphChange(); - } - _Divs.push_back(inst); - } - } - } - - if (isBlockLevelElement()) - { - newParagraph(0); - } - } - break; - case HTML_FONT: - { - _Style.pushStyle(); - if (present[HTML_FONT_COLOR] && value[HTML_FONT_COLOR]) - { - CRGBA color; - if (scanHTMLColor(value[HTML_FONT_COLOR], color)) - _Style.Current.TextColor = color; - } - - if (present[HTML_FONT_SIZE] && value[HTML_FONT_SIZE]) - { - uint fontsize; - fromString(value[HTML_FONT_SIZE], fontsize); - _Style.Current.FontSize = fontsize; - } - } - break; - case HTML_BR: - { - endParagraph(); - - // insert zero-width-space (0x200B) to prevent removal of empty lines - ucstring tmp; - tmp.fromUtf8("\xe2\x80\x8b"); - addString(tmp); - } - break; - case HTML_BODY: - { - _Style.pushStyle(); - - string style; - if (present[HTML_BODY_STYLE] && value[HTML_BODY_STYLE]) - style = value[HTML_BODY_STYLE]; - - if (!style.empty()) - _Style.applyStyle(style); - - CRGBA bgColor = _Style.Current.BackgroundColor; - if (present[HTML_BODY_BGCOLOR] && value[HTML_BODY_BGCOLOR]) - scanHTMLColor(value[HTML_BODY_BGCOLOR], bgColor); - - if (bgColor != _Style.Current.BackgroundColor) - setBackgroundColor(bgColor); - - if (!style.empty()) - { - TStyle styles = parseStyle(style); - TStyle::iterator it; - - it = styles.find("background-repeat"); - bool repeat = (it != styles.end() && it->second == "1"); - - // Webig only - it = styles.find("background-scale"); - bool scale = (it != styles.end() && it->second == "1"); - - it = styles.find("background-image"); - if (it != styles.end()) - { - string image = it->second; - string::size_type texExt = toLower(image).find("url("); - // Url image - if (texExt != string::npos) - // Remove url() - image = image.substr(4, image.size()-5); - setBackground (image, scale, repeat); - } - } - } - break; - case HTML_FORM: - { - // Build the form - CGroupHTML::CForm form; - - // Get the action name - if (present[HTML_FORM_ACTION] && value[HTML_FORM_ACTION]) - { - form.Action = getAbsoluteUrl(string(value[HTML_FORM_ACTION])); - } - else - { - form.Action = _URL; - } - _Forms.push_back(form); - } - break; - case HTML_H1: - { - registerAnchorName(MY_HTML_H1); - newParagraph(PBeginSpace); - _Style.pushStyle(); - _Style.Current.FontSize = H1FontSize; - _Style.Current.TextColor = H1Color; - _Style.Current.GlobalColor = H1ColorGlobalColor; - if (present[MY_HTML_H1_STYLE] && value[MY_HTML_H1_STYLE]) - _Style.applyStyle(value[MY_HTML_H1_STYLE]); - } - break; - case HTML_H2: - { - registerAnchorName(MY_HTML_H2); - newParagraph(PBeginSpace); - _Style.pushStyle(); - _Style.Current.FontSize = H2FontSize; - _Style.Current.TextColor = H2Color; - _Style.Current.GlobalColor = H2ColorGlobalColor; - if (present[MY_HTML_H2_STYLE] && value[MY_HTML_H2_STYLE]) - _Style.applyStyle(value[MY_HTML_H2_STYLE]); - } - break; - case HTML_H3: - { - registerAnchorName(MY_HTML_H3); - newParagraph(PBeginSpace); - _Style.pushStyle(); - _Style.Current.FontSize = H3FontSize; - _Style.Current.TextColor = H3Color; - _Style.Current.GlobalColor = H3ColorGlobalColor; - if (present[MY_HTML_H3_STYLE] && value[MY_HTML_H3_STYLE]) - _Style.applyStyle(value[MY_HTML_H3_STYLE]); - } - break; - case HTML_H4: - { - registerAnchorName(MY_HTML_H4); - newParagraph(PBeginSpace); - _Style.pushStyle(); - _Style.Current.FontSize = H4FontSize; - _Style.Current.TextColor = H4Color; - _Style.Current.GlobalColor = H4ColorGlobalColor; - if (present[MY_HTML_H4_STYLE] && value[MY_HTML_H4_STYLE]) - _Style.applyStyle(value[MY_HTML_H4_STYLE]); - } - break; - case HTML_H5: - { - registerAnchorName(MY_HTML_H5); - newParagraph(PBeginSpace); - _Style.pushStyle(); - _Style.Current.FontSize = H5FontSize; - _Style.Current.TextColor = H5Color; - _Style.Current.GlobalColor = H5ColorGlobalColor; - if (present[MY_HTML_H5_STYLE] && value[MY_HTML_H5_STYLE]) - _Style.applyStyle(value[MY_HTML_H5_STYLE]); - } - break; - case HTML_H6: - { - registerAnchorName(MY_HTML_H6); - newParagraph(PBeginSpace); - _Style.pushStyle(); - _Style.Current.FontSize = H6FontSize; - _Style.Current.TextColor = H6Color; - _Style.Current.GlobalColor = H6ColorGlobalColor; - if (present[MY_HTML_H6_STYLE] && value[MY_HTML_H6_STYLE]) - _Style.applyStyle(value[MY_HTML_H6_STYLE]); - } - break; - case HTML_IMG: - { - // Get the string name - if (present[MY_HTML_IMG_SRC] && value[MY_HTML_IMG_SRC]) - { - float tmpf; - std::string id; - - _Style.pushStyle(); - - if (present[MY_HTML_IMG_ID] && value[MY_HTML_IMG_ID]) - id = value[MY_HTML_IMG_ID]; - - if (present[MY_HTML_IMG_WIDTH] && value[MY_HTML_IMG_WIDTH]) - getPercentage(_Style.Current.Width, tmpf, value[MY_HTML_IMG_WIDTH]); - if (present[MY_HTML_IMG_HEIGHT] && value[MY_HTML_IMG_HEIGHT]) - getPercentage(_Style.Current.Height, tmpf, value[MY_HTML_IMG_HEIGHT]); - - // Get the global color name - if (present[MY_HTML_IMG_GLOBAL_COLOR]) - _Style.Current.GlobalColor = true; - - // width, height from inline css - if (present[MY_HTML_IMG_STYLE] && value[MY_HTML_IMG_STYLE]) - _Style.applyStyle(value[MY_HTML_IMG_STYLE]); - - // Tooltip - const char *tooltip = NULL; - // keep "alt" attribute for backward compatibility - if (present[MY_HTML_IMG_ALT] && value[MY_HTML_IMG_ALT]) - tooltip = value[MY_HTML_IMG_ALT]; - // tooltip - if (present[MY_HTML_IMG_TITLE] && value[MY_HTML_IMG_TITLE]) - tooltip = value[MY_HTML_IMG_TITLE]; - - // Mouse over image - string overSrc; - if (present[MY_HTML_IMG_DATA_OVER_SRC] && value[MY_HTML_IMG_DATA_OVER_SRC]) - { - overSrc = value[MY_HTML_IMG_DATA_OVER_SRC]; - } - - - if (getA() && getParent () && getParent ()->getParent()) - { - string params = "name=" + getId() + "|url=" + getLink (); - addButton(CCtrlButton::PushButton, id, value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC], - overSrc, "browse", params.c_str(), tooltip, _Style.Current); - } - else - if (tooltip || !overSrc.empty()) - { - addButton(CCtrlButton::PushButton, id, value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC], - overSrc, "", "", tooltip, _Style.Current); - } - else - { - // Get the option to reload (class==reload) - bool reloadImg = false; - - string styleString; - if (present[MY_HTML_IMG_STYLE] && value[MY_HTML_IMG_STYLE]) - styleString = value[MY_HTML_IMG_STYLE]; - - if (!styleString.empty()) - { - TStyle styles = parseStyle(styleString); - TStyle::iterator it; - - it = styles.find("reload"); - if (it != styles.end() && (*it).second == "1") - reloadImg = true; - } - - addImage(id, value[MY_HTML_IMG_SRC], reloadImg, _Style.Current); - } - - _Style.popStyle(); - } - } - break; - case HTML_INPUT: - // Got one form ? - if (!(_Forms.empty())) - { - // read general property - string templateName; - string minWidth; - string id; - - if (present[MY_HTML_INPUT_ID] && value[MY_HTML_INPUT_ID]) - id = value[MY_HTML_INPUT_ID]; - - // Widget template name - if (present[MY_HTML_INPUT_Z_BTN_TMPL] && value[MY_HTML_INPUT_Z_BTN_TMPL]) - templateName = value[MY_HTML_INPUT_Z_BTN_TMPL]; - // Input name is the new - if (present[MY_HTML_INPUT_Z_INPUT_TMPL] && value[MY_HTML_INPUT_Z_INPUT_TMPL]) - templateName = value[MY_HTML_INPUT_Z_INPUT_TMPL]; - // Widget minimal width - if (present[MY_HTML_INPUT_Z_INPUT_WIDTH] && value[MY_HTML_INPUT_Z_INPUT_WIDTH]) - minWidth = value[MY_HTML_INPUT_Z_INPUT_WIDTH]; - - // Get the type - if (present[MY_HTML_INPUT_TYPE] && value[MY_HTML_INPUT_TYPE]) - { - // by default not inherited, font family defaults to system font - _Style.pushStyle(); - _Style.Current.TextColor = TextColor; - _Style.Current.FontSize = TextFontSize; - _Style.Current.FontWeight = FONT_WEIGHT_NORMAL; - _Style.Current.FontOblique = false; - _Style.Current.TextShadow = CStyleParams::STextShadow(true); - _Style.Current.Width = -1; - _Style.Current.Height = -1; - - // Global color flag - if (present[MY_HTML_INPUT_GLOBAL_COLOR]) - _Style.Current.GlobalColor = true; - - // Tooltip - const char *tooltip = NULL; - if (present[MY_HTML_INPUT_ALT] && value[MY_HTML_INPUT_ALT]) - tooltip = value[MY_HTML_INPUT_ALT]; - - if (present[MY_HTML_INPUT_STYLE] && value[MY_HTML_INPUT_STYLE]) - _Style.applyStyle(value[MY_HTML_INPUT_STYLE]); - - string type = toLower(value[MY_HTML_INPUT_TYPE]); - if (type == "image") - { - // The submit button - string name; - string normal; - string pushed; - string over; - if (present[MY_HTML_INPUT_NAME] && value[MY_HTML_INPUT_NAME]) - name = value[MY_HTML_INPUT_NAME]; - if (present[MY_HTML_INPUT_SRC] && value[MY_HTML_INPUT_SRC]) - normal = value[MY_HTML_INPUT_SRC]; - - // Action handler parameters : "name=group_html_id|form=id_of_the_form|submit_button=button_name" - string param = "name=" + getId() + "|form=" + toString (_Forms.size()-1) + "|submit_button=" + name + "|submit_button_type=image"; - - // Add the ctrl button - addButton (CCtrlButton::PushButton, name, normal, pushed.empty()?normal:pushed, over, - "html_submit_form", param.c_str(), tooltip, _Style.Current); - } - if (type == "button" || type == "submit") - { - // The submit button - string name; - string text; - string normal; - string pushed; - string over; - - string buttonTemplate(!templateName.empty() ? templateName : DefaultButtonGroup ); - if (present[MY_HTML_INPUT_NAME] && value[MY_HTML_INPUT_NAME]) - name = value[MY_HTML_INPUT_NAME]; - if (present[MY_HTML_INPUT_SRC] && value[MY_HTML_INPUT_SRC]) - normal = value[MY_HTML_INPUT_SRC]; - if (present[MY_HTML_INPUT_VALUE] && value[MY_HTML_INPUT_VALUE]) - text = value[MY_HTML_INPUT_VALUE]; - - // Action handler parameters : "name=group_html_id|form=id_of_the_form|submit_button=button_name" - string param = "name=" + getId() + "|form=" + toString (_Forms.size()-1) + "|submit_button=" + name + "|submit_button_type=submit"; - if (!text.empty()) - { - // escape AH param separator - string tmp = text; - while(NLMISC::strFindReplace(tmp, "|", "|")) - ; - param = param + "|submit_button_value=" + tmp; - } - - // Add the ctrl button - if (!_Paragraph) - { - newParagraph (0); - paragraphChange (); - } - - typedef pair TTmplParam; - vector tmplParams; - tmplParams.push_back(TTmplParam("id", name)); - tmplParams.push_back(TTmplParam("onclick", "html_submit_form")); - tmplParams.push_back(TTmplParam("onclick_param", param)); - //tmplParams.push_back(TTmplParam("text", text)); - tmplParams.push_back(TTmplParam("active", "true")); - if (!minWidth.empty()) - tmplParams.push_back(TTmplParam("wmin", minWidth)); - CInterfaceGroup *buttonGroup = CWidgetManager::getInstance()->getParser()->createGroupInstance(buttonTemplate, _Paragraph->getId(), tmplParams); - if (buttonGroup) - { - - // Add the ctrl button - CCtrlTextButton *ctrlButton = dynamic_cast(buttonGroup->getCtrl("button")); - if (!ctrlButton) ctrlButton = dynamic_cast(buttonGroup->getCtrl("b")); - if (ctrlButton) - { - ctrlButton->setModulateGlobalColorAll (_Style.Current.GlobalColor); - - // Translate the tooltip - if (tooltip) - { - if (CI18N::hasTranslation(tooltip)) - { - ctrlButton->setDefaultContextHelp(CI18N::get(tooltip)); - } - else - { - ctrlButton->setDefaultContextHelp(ucstring(tooltip)); - } - } - - ctrlButton->setText(ucstring::makeFromUtf8(text)); - - setTextButtonStyle(ctrlButton, _Style.Current); - } - getParagraph()->addChild (buttonGroup); - paragraphChange (); - } - } - else if (type == "text") - { - // Get the string name - string name; - ucstring ucValue; - uint size = 120; - uint maxlength = 1024; - if (present[MY_HTML_INPUT_NAME] && value[MY_HTML_INPUT_NAME]) - name = value[MY_HTML_INPUT_NAME]; - if (present[MY_HTML_INPUT_SIZE] && value[MY_HTML_INPUT_SIZE]) - fromString(value[MY_HTML_INPUT_SIZE], size); - if (present[MY_HTML_INPUT_VALUE] && value[MY_HTML_INPUT_VALUE]) - ucValue.fromUtf8(value[MY_HTML_INPUT_VALUE]); - if (present[MY_HTML_INPUT_MAXLENGTH] && value[MY_HTML_INPUT_MAXLENGTH]) - fromString(value[MY_HTML_INPUT_MAXLENGTH], maxlength); - - string textTemplate(!templateName.empty() ? templateName : DefaultFormTextGroup); - // Add the editbox - CInterfaceGroup *textArea = addTextArea (textTemplate, name.c_str (), 1, size/12, false, ucValue, maxlength); - if (textArea) - { - // Add the text area to the form - CGroupHTML::CForm::CEntry entry; - entry.Name = name; - entry.TextArea = textArea; - _Forms.back().Entries.push_back (entry); - } - } - else if (type == "checkbox" || type == "radio") - { - CCtrlButton::EType btnType; - string name; - string normal; - string pushed; - string over; - ucstring ucValue = ucstring("on"); - bool checked = false; - - if (type == "radio") - { - btnType = CCtrlButton::RadioButton; - normal = DefaultRadioButtonBitmapNormal; - pushed = DefaultRadioButtonBitmapPushed; - over = DefaultRadioButtonBitmapOver; - } - else - { - btnType = CCtrlButton::ToggleButton; - normal = DefaultCheckBoxBitmapNormal; - pushed = DefaultCheckBoxBitmapPushed; - over = DefaultCheckBoxBitmapOver; - } - - if (present[MY_HTML_INPUT_NAME] && value[MY_HTML_INPUT_NAME]) - name = value[MY_HTML_INPUT_NAME]; - if (present[MY_HTML_INPUT_SRC] && value[MY_HTML_INPUT_SRC]) - normal = value[MY_HTML_INPUT_SRC]; - if (present[MY_HTML_INPUT_VALUE] && value[MY_HTML_INPUT_VALUE]) - ucValue.fromUtf8(value[MY_HTML_INPUT_VALUE]); - checked = (present[MY_HTML_INPUT_CHECKED] && value[MY_HTML_INPUT_CHECKED]); - - // Add the ctrl button - CCtrlButton *checkbox = addButton (btnType, name, normal, pushed, over, "", "", tooltip, _Style.Current); - if (checkbox) - { - if (btnType == CCtrlButton::RadioButton) - { - // override with 'id' because radio buttons share same name - if (!id.empty()) - checkbox->setId(id); - - // group together buttons with same name - CForm &form = _Forms.back(); - bool notfound = true; - for (uint i=0; igetType() == CCtrlButton::RadioButton) - { - checkbox->initRBRefFromRadioButton(form.Entries[i].Checkbox); - notfound = false; - break; - } - } - if (notfound) - { - // this will start a new group (initRBRef() would take first button in group container otherwise) - checkbox->initRBRefFromRadioButton(checkbox); - } - } - - checkbox->setPushed (checked); - - // Add the button to the form - CGroupHTML::CForm::CEntry entry; - entry.Name = name; - entry.Value = decodeHTMLEntities(ucValue); - entry.Checkbox = checkbox; - _Forms.back().Entries.push_back (entry); - } - } - else if (type == "hidden") - { - if (present[MY_HTML_INPUT_NAME] && value[MY_HTML_INPUT_NAME]) - { - // Get the name - string name = value[MY_HTML_INPUT_NAME]; - - // Get the value - ucstring ucValue; - if (present[MY_HTML_INPUT_VALUE] && value[MY_HTML_INPUT_VALUE]) - ucValue.fromUtf8(value[MY_HTML_INPUT_VALUE]); - - // Add an entry - CGroupHTML::CForm::CEntry entry; - entry.Name = name; - entry.Value = decodeHTMLEntities(ucValue); - _Forms.back().Entries.push_back (entry); - } - } - - _Style.popStyle(); - } - } - break; - case HTML_SELECT: - if (!(_Forms.empty())) - { - _Style.pushStyle(); - _Style.Current.Width = -1; - _Style.Current.Height = -1; - - // A select box - string name; - bool multiple = false; - sint32 size = 0; - - if (present[HTML_SELECT_NAME] && value[HTML_SELECT_NAME]) - name = value[HTML_SELECT_NAME]; - if (present[HTML_SELECT_SIZE] && value[HTML_SELECT_SIZE]) - fromString(value[HTML_SELECT_SIZE], size); - if (present[HTML_SELECT_MULTIPLE] && value[HTML_SELECT_MULTIPLE]) - multiple = true; - if (present[HTML_SELECT_STYLE] && value[HTML_SELECT_STYLE]) - _Style.applyStyle(value[HTML_SELECT_STYLE]); - - CGroupHTML::CForm::CEntry entry; - entry.Name = name; - entry.sbMultiple = multiple; - if (size > 1 || multiple) - { - entry.InitialSelection = -1; - CGroupMenu *sb = addSelectBox(DefaultFormSelectBoxMenuGroup, name.c_str()); - if (sb) - { - if (size < 1) - size = 4; - - if (_Style.Current.Width > -1) - sb->setMinW(_Style.Current.Width); - - if (_Style.Current.Height > -1) - sb->setMinH(_Style.Current.Height); - - sb->setMaxVisibleLine(size); - sb->setFontSize(_Style.Current.FontSize); - } - - entry.SelectBox = sb; - } - else - { - CDBGroupComboBox *cb = addComboBox(DefaultFormSelectGroup, name.c_str()); - entry.ComboBox = cb; - - if (cb) - { - // create view text - cb->updateCoords(); - if (cb->getViewText()) - setTextStyle(cb->getViewText(), _Style.Current); - } - } - _Forms.back().Entries.push_back (entry); - - _Style.popStyle(); - } - break; - case HTML_OPTION: - // Got one form ? - if (!(_Forms.empty())) - { - if (!_Forms.back().Entries.empty()) - { - // clear the option string - _SelectOptionStr.clear(); - - std::string optionValue; - if (present[HTML_OPTION_VALUE] && value[HTML_OPTION_VALUE]) - optionValue = value[HTML_OPTION_VALUE]; - _Forms.back().Entries.back().SelectValues.push_back(optionValue); - - if (present[HTML_OPTION_SELECTED]) - _Forms.back().Entries.back().InitialSelection = (sint)_Forms.back().Entries.back().SelectValues.size() - 1; - if (present[HTML_OPTION_DISABLED]) - _Forms.back().Entries.back().sbOptionDisabled = (sint)_Forms.back().Entries.back().SelectValues.size() - 1; - } - } - _SelectOption = true; - break; - case HTML_LI: - if (!_UL.empty()) - { - // UL, OL top margin if this is the first LI - if (!_LI) - { - _LI = true; - newParagraph(ULBeginSpace); - } - else - { - newParagraph(LIBeginSpace); - } - - // OL list index can be overridden by
  • attribute - if (present[HTML_LI_VALUE] && value[HTML_LI_VALUE]) - fromString(value[HTML_LI_VALUE], _UL.back().Value); - - _Style.pushStyle(); - if (present[HTML_LI_STYLE] && value[HTML_LI_STYLE]) - _Style.applyStyle(value[HTML_LI_STYLE]); - - ucstring str; - str.fromUtf8(_UL.back().getListMarkerText()); - addString (str); - - sint32 indent = LIIndent; - // list-style-type: outside - if (_CurrentViewLink) - { - getParagraph()->setFirstViewIndent(-_CurrentViewLink->getMaxUsedW()); - } - - flushString (); - - _UL.back().Value++; - } - break; - case HTML_P: - { - newParagraph(PBeginSpace); - _Style.pushStyle(); - if (present[MY_HTML_P_STYLE] && value[MY_HTML_P_STYLE]) - _Style.applyStyle(value[MY_HTML_P_STYLE]); - } - break; - case HTML_PRE: - { - _Style.pushStyle(); - _Style.Current.FontFamily = "monospace"; - - if (present[HTML_PRE_STYLE] && value[HTML_PRE_STYLE]) - _Style.applyStyle(value[HTML_PRE_STYLE]); - - - _PRE.push_back(true); - } - break; - case HTML_TABLE: - { - _Style.pushStyle(); - registerAnchorName(MY_HTML_TABLE); - - // Get cells parameters - getCellsParameters_DEP (MY_HTML_TABLE, false); - - CGroupTable *table = new CGroupTable(TCtorParam()); - table->BgColor = _CellParams.back().BgColor; - - if (present[MY_HTML_TABLE_WIDTH] && value[MY_HTML_TABLE_WIDTH]) - getPercentage (table->ForceWidthMin, table->TableRatio, value[MY_HTML_TABLE_WIDTH]); - if (present[MY_HTML_TABLE_BORDER] && value[MY_HTML_TABLE_BORDER]) - fromString(value[MY_HTML_TABLE_BORDER], table->Border); - if (present[MY_HTML_TABLE_BORDERCOLOR] && value[MY_HTML_TABLE_BORDERCOLOR]) - scanHTMLColor(value[MY_HTML_TABLE_BORDERCOLOR], table->BorderColor); - if (present[MY_HTML_TABLE_CELLSPACING] && value[MY_HTML_TABLE_CELLSPACING]) - fromString(value[MY_HTML_TABLE_CELLSPACING], table->CellSpacing); - if (present[MY_HTML_TABLE_CELLPADDING] && value[MY_HTML_TABLE_CELLPADDING]) - fromString(value[MY_HTML_TABLE_CELLPADDING], table->CellPadding); - if (present[MY_HTML_TABLE_STYLE] && value[MY_HTML_TABLE_STYLE]) - _Style.applyStyle(value[MY_HTML_TABLE_STYLE]); - - table->setMarginLeft(getIndent()); - addHtmlGroup (table, 0); - - _Tables.push_back(table); - - // Add a cell pointer - _Cells.push_back(NULL); - _TR.push_back(false); - _Indent.push_back(0); - } - break; - case HTML_TH: - // TH is similar to TD, just different font style - case HTML_TD: - { - // Get cells parameters - getCellsParameters_DEP (MY_HTML_TD, true); - - _Style.pushStyle(); - if (element_number == HTML_TH) - { - _Style.Current.FontWeight = FONT_WEIGHT_BOLD; - // center if not specified otherwise. TD/TH present/value arrays have same indices - if (!(present[MY_HTML_TD_ALIGN] && value[MY_HTML_TD_ALIGN])) - _CellParams.back().Align = CGroupCell::Center; - } - - if (present[MY_HTML_TD_STYLE] && value[MY_HTML_TD_STYLE]) - _Style.applyStyle(value[MY_HTML_TD_STYLE]); - - CGroupTable *table = getTable(); - if (table) - { - if (!_Cells.empty()) - { - _Cells.back() = new CGroupCell(CViewBase::TCtorParam()); - string style; - if (present[MY_HTML_TD_STYLE] && value[MY_HTML_TD_STYLE]) - style = value[MY_HTML_TD_STYLE]; - - // Set the cell parameters - if (!style.empty()) - { - TStyle styles = parseStyle(style); - TStyle::iterator it; - - it = styles.find("background-repeat"); - _Cells.back()->setTextureTile(it != styles.end()); - - // Webig only - it = styles.find("background-scale"); - _Cells.back()->setTextureScale(it != styles.end()); - - it = styles.find("background-image"); - if (it != styles.end()) - { - string image = (*it).second; - string::size_type texExt = toLower(image).find("url("); - // Url image - if (texExt != string::npos) - { - // Remove url() - image = image.substr(4, image.size()-5); - addImageDownload(image, _Cells.back()); - // Image in BNP - } - else - { - _Cells.back()->setTexture(image); - } - } - } - - if (present[MY_HTML_TD_COLSPAN] && value[MY_HTML_TD_COLSPAN]) - fromString(value[MY_HTML_TD_COLSPAN], _Cells.back()->ColSpan); - if (present[MY_HTML_TD_ROWSPAN] && value[MY_HTML_TD_ROWSPAN]) - fromString(value[MY_HTML_TD_ROWSPAN], _Cells.back()->RowSpan); - - _Cells.back()->BgColor = _CellParams.back().BgColor; - _Cells.back()->Align = _CellParams.back().Align; - _Cells.back()->VAlign = _CellParams.back().VAlign; - _Cells.back()->LeftMargin = _CellParams.back().LeftMargin; - _Cells.back()->NoWrap = _CellParams.back().NoWrap; - _Cells.back()->ColSpan = std::max(1, _Cells.back()->ColSpan); - _Cells.back()->RowSpan = std::max(1, _Cells.back()->RowSpan); - - float temp; - if (present[MY_HTML_TD_WIDTH] && value[MY_HTML_TD_WIDTH]) - getPercentage (_Cells.back()->WidthWanted, _Cells.back()->TableRatio, value[MY_HTML_TD_WIDTH]); - if (present[MY_HTML_TD_HEIGHT] && value[MY_HTML_TD_HEIGHT]) - getPercentage (_Cells.back()->Height, temp, value[MY_HTML_TD_HEIGHT]); - - _Cells.back()->NewLine = getTR(); - table->addChild (_Cells.back()); - - // reusing indent pushed by table - _Indent.back() = 0; - - newParagraph(TDBeginSpace); - // indent is already 0, getParagraph()->setMarginLeft(0); // maybe setIndent(0) if LI is using one - - // Reset TR flag - if (!_TR.empty()) - _TR.back() = false; - } - } - } - break; - case HTML_TEXTAREA: - _Style.pushStyle(); - _PRE.push_back(true); - - // not inherited by default, font family defaults to system font - _Style.Current.TextColor = TextColor; - _Style.Current.FontWeight = FONT_WEIGHT_NORMAL; - _Style.Current.FontOblique = false; - _Style.Current.FontSize = TextFontSize; - _Style.Current.TextShadow = CStyleParams::STextShadow(true); - _Style.Current.Width = -1; - _Style.Current.Height = -1; - - if (present[MY_HTML_TEXTAREA_STYLE] && value[MY_HTML_TEXTAREA_STYLE]) - _Style.applyStyle(value[MY_HTML_TEXTAREA_STYLE]); - - // Got one form ? - if (!(_Forms.empty())) - { - // read general property - string templateName; - - // Widget template name - if (present[MY_HTML_TEXTAREA_Z_INPUT_TMPL] && value[MY_HTML_TEXTAREA_Z_INPUT_TMPL]) - templateName = value[MY_HTML_TEXTAREA_Z_INPUT_TMPL]; - - // Get the string name - _TextAreaName.clear(); - _TextAreaRow = 1; - _TextAreaCols = 10; - _TextAreaContent.clear(); - _TextAreaMaxLength = 1024; - if (present[MY_HTML_TEXTAREA_NAME] && value[MY_HTML_TEXTAREA_NAME]) - _TextAreaName = value[MY_HTML_TEXTAREA_NAME]; - if (present[MY_HTML_TEXTAREA_ROWS] && value[MY_HTML_TEXTAREA_ROWS]) - fromString(value[MY_HTML_TEXTAREA_ROWS], _TextAreaRow); - if (present[MY_HTML_TEXTAREA_COLS] && value[MY_HTML_TEXTAREA_COLS]) - fromString(value[MY_HTML_TEXTAREA_COLS], _TextAreaCols); - if (present[MY_HTML_TEXTAREA_MAXLENGTH] && value[MY_HTML_TEXTAREA_MAXLENGTH]) - fromString(value[MY_HTML_TEXTAREA_MAXLENGTH], _TextAreaMaxLength); - - _TextAreaTemplate = !templateName.empty() ? templateName : DefaultFormTextAreaGroup; - _TextArea = true; - } - break; - case HTML_TITLE: - { - if(!_TitlePrefix.empty()) - _TitleString = _TitlePrefix + " - "; - else - _TitleString.clear(); - _Title = true; - } - break; - case HTML_I: - { - _Localize = true; - } - break; - case HTML_TR: - { - // Get cells parameters - getCellsParameters_DEP (MY_HTML_TR, true); - - // Set TR flag - if (!_TR.empty()) - _TR.back() = true; - - _Style.pushStyle(); - if (present[MY_HTML_TR_STYLE] && value[MY_HTML_TR_STYLE]) - _Style.applyStyle(value[MY_HTML_TR_STYLE]); - } - break; - case HTML_UL: - if (_UL.empty()) - _UL.push_back(HTMLOListElement(1, "disc")); - else if (_UL.size() == 1) - _UL.push_back(HTMLOListElement(1, "circle")); - else - _UL.push_back(HTMLOListElement(1, "square")); - // if LI is already present - _LI = _UL.size() > 1 || _DL.size() > 1; - _Indent.push_back(getIndent() + ULIndent); - endParagraph(); - - _Style.pushStyle(); - if (present[HTML_UL_STYLE] && value[HTML_UL_STYLE]) - _Style.applyStyle(value[HTML_UL_STYLE]); - break; - case HTML_OBJECT: - _ObjectType.clear(); - _ObjectData.clear(); - _ObjectMD5Sum.clear(); - _ObjectAction.clear(); - if (present[HTML_OBJECT_TYPE] && value[HTML_OBJECT_TYPE]) - _ObjectType = value[HTML_OBJECT_TYPE]; - if (present[HTML_OBJECT_DATA] && value[HTML_OBJECT_DATA]) - _ObjectData = value[HTML_OBJECT_DATA]; - if (present[HTML_OBJECT_ID] && value[HTML_OBJECT_ID]) - _ObjectMD5Sum = value[HTML_OBJECT_ID]; - if (present[HTML_OBJECT_STANDBY] && value[HTML_OBJECT_STANDBY]) - _ObjectAction = value[HTML_OBJECT_STANDBY]; - _Object = true; - - break; - case HTML_SPAN: - { - _Style.pushStyle(); - - if (present[MY_HTML_SPAN_STYLE] && value[MY_HTML_SPAN_STYLE]) - _Style.applyStyle(value[MY_HTML_SPAN_STYLE]); - } - break; - case HTML_DEL: - { - _Style.pushStyle(); - _Style.Current.StrikeThrough = true; - } - break; - case HTML_U: - { - _Style.pushStyle(); - _Style.Current.Underlined = true; - } - break; - case HTML_EM: - { - _Style.pushStyle(); - _Style.Current.FontOblique = true; - } - break; - case HTML_STRONG: - { - _Style.pushStyle(); - _Style.Current.FontWeight = FONT_WEIGHT_BOLD; - } - break; - case HTML_SMALL: - { - _Style.pushStyle(); - _Style.Current.FontSize = _Style.getFontSizeSmaller(); - } - break; - case HTML_STYLE: - case HTML_SCRIPT: - _IgnoreText = true; - break; - case HTML_DL: - { - _DL.push_back(HTMLDListElement()); - _LI = _DL.size() > 1 || !_UL.empty(); - endParagraph(); - _Style.pushStyle(); - if (present[HTML_GEN_STYLE] && value[HTML_GEN_STYLE]) - _Style.applyStyle(value[HTML_GEN_STYLE]); - } - break; - case HTML_DT: - if (!_DL.empty()) - { - // close if still open - if (_DL.back().DD) - { - _DL.back().DD = false; - popIfNotEmpty(_Indent); - _Style.popStyle(); - } - - // close if still open - if (_DL.back().DT) - _Style.popStyle(); - - _DL.back().DT = true; - - _Style.pushStyle(); - _Style.Current.FontWeight = FONT_WEIGHT_BOLD; - if (present[HTML_GEN_STYLE] && value[HTML_GEN_STYLE]) - _Style.applyStyle(value[HTML_GEN_STYLE]); - - if (!_LI) - { - _LI = true; - newParagraph(ULBeginSpace); - } - else - { - newParagraph(LIBeginSpace); - } - } - break; - case HTML_DD: - if (!_DL.empty()) - { - // if there was no closing tag for
    , then remove
    style - if (_DL.back().DT) - { - _DL.back().DT = false; - _Style.popStyle(); - } - - if (_DL.back().DD) - { - _DL.back().DD = false; - _Style.popStyle(); - popIfNotEmpty(_Indent); - } - - _DL.back().DD = true; - _Indent.push_back(getIndent() + ULIndent); - - _Style.pushStyle(); - if (present[HTML_GEN_STYLE] && value[HTML_GEN_STYLE]) - _Style.applyStyle(value[HTML_GEN_STYLE]); - - if (!_LI) - { - _LI = true; - newParagraph(ULBeginSpace); - } - else - { - newParagraph(LIBeginSpace); - } - } - break; - case HTML_OL: - { - _Style.pushStyle(); - sint32 start = 1; - std::string type("1"); - - if (present[HTML_OL_START] && value[HTML_OL_START]) - fromString(value[HTML_OL_START], start); - if (present[HTML_OL_TYPE] && value[HTML_OL_TYPE]) - type = value[HTML_OL_TYPE]; - if (present[HTML_OL_STYLE] && value[HTML_OL_STYLE]) - _Style.applyStyle(value[HTML_OL_STYLE]); - - _UL.push_back(HTMLOListElement(start, type)); - // if LI is already present - _LI = _UL.size() > 1 || _DL.size() > 1; - _Indent.push_back(getIndent() + ULIndent); - endParagraph(); - } - break; - case HTML_HR: - { - newParagraph(0); - - CInterfaceGroup *sep = CWidgetManager::getInstance()->getParser()->createGroupInstance("html_hr", "", NULL, 0); - if (sep) - { - _Style.pushStyle(); - _Style.Current.TextColor = CRGBA(120, 120, 120, 255); - _Style.Current.Height = -1; - _Style.Current.Width = -1; - - if (present[HTML_HR_STYLE] && value[HTML_HR_STYLE]) - _Style.applyStyle(value[HTML_HR_STYLE]); - - CViewBitmap *bitmap = dynamic_cast(sep->getView("hr")); - if (bitmap) - { - bitmap->setColor(_Style.Current.TextColor); - if (_Style.Current.Width > 0) - { - clamp(_Style.Current.Width, 1, 32000); - bitmap->setW(_Style.Current.Width); - bitmap->setSizeRef(CInterfaceElement::none); - } - if (_Style.Current.Height > 0) - { - clamp(_Style.Current.Height, 1, 1000); - bitmap->setH(_Style.Current.Height); - } - } - - getParagraph()->addChild(sep); - endParagraph(); - - _Style.popStyle(); - } - } - break; - } - } - } - - // *************************************************************************** - - void CGroupHTML::endElementDeprecated(uint element_number) - { - if (_Browsing) - { - // Paragraph ? - switch(element_number) - { - case HTML_HEAD: - _ReadingHeadTag = false; - break; - case HTML_BODY: - _Style.popStyle(); - break; - case HTML_FONT: - _Style.popStyle(); - break; - case HTML_A: - _Style.popStyle(); - popIfNotEmpty (_A); - popIfNotEmpty (_Link); - popIfNotEmpty (_LinkTitle); - popIfNotEmpty (_LinkClass); - break; - case HTML_H1: - case HTML_H2: - case HTML_H3: - case HTML_H4: - case HTML_H5: - case HTML_H6: - _Style.popStyle(); - endParagraph(); - break; - case HTML_P: - _Style.popStyle(); - endParagraph(); - break; - case HTML_PRE: - _Style.popStyle(); - popIfNotEmpty (_PRE); - break; - case HTML_DIV: - _Style.popStyle(); - if (isBlockLevelElement()) - { - endParagraph(); - } - _DivName.clear(); - popIfNotEmpty (_Divs); - popIfNotEmpty (_BlockLevelElement); - break; - - case HTML_TABLE: - _Style.popStyle(); - popIfNotEmpty (_CellParams); - popIfNotEmpty (_TR); - popIfNotEmpty (_Cells); - popIfNotEmpty (_Tables); - popIfNotEmpty (_Indent); - endParagraph(); - // Add a cell - break; - case HTML_TH: - // no break; - case HTML_TD: - _Style.popStyle(); - popIfNotEmpty (_CellParams); - if (!_Cells.empty()) - _Cells.back() = NULL; - break; - case HTML_TR: - _Style.popStyle(); - popIfNotEmpty (_CellParams); - break; - case HTML_TEXTAREA: - { - _TextArea = false; - if (!(_Forms.empty())) - { - CInterfaceGroup *textArea = addTextArea (_TextAreaTemplate, _TextAreaName.c_str (), _TextAreaRow, _TextAreaCols, true, _TextAreaContent, _TextAreaMaxLength); - if (textArea) - { - // Add the text area to the form - CGroupHTML::CForm::CEntry entry; - entry.Name = _TextAreaName; - entry.TextArea = textArea; - _Forms.back().Entries.push_back (entry); - } - } - - _Style.popStyle(); - popIfNotEmpty (_PRE); - } - break; - case HTML_TITLE: - { - _Title = false; - - // Get the parent container - setTitle (_TitleString); - } - break; - case HTML_SELECT: - { - _SelectOption = false; - if (!(_Forms.empty())) - { - if (!_Forms.back().Entries.empty()) - { - CDBGroupComboBox *cb = _Forms.back().Entries.back().ComboBox; - if (cb) - { - cb->setSelectionNoTrigger(_Forms.back().Entries.back().InitialSelection); - cb->setW(cb->evalContentWidth() + 16); - } - } - } - } - break; - case HTML_OPTION: - if (!(_Forms.empty()) && !(_Forms.back().Entries.empty())) - { - // insert the parsed text into the select control - CDBGroupComboBox *cb = _Forms.back().Entries.back().ComboBox; - if (cb) - { - uint lineIndex = cb->getNumTexts(); - cb->addText(_SelectOptionStr); - if (_Forms.back().Entries.back().sbOptionDisabled == lineIndex) - { - cb->setGrayed(lineIndex, true); - } - } - else - { - CGroupMenu *sb = _Forms.back().Entries.back().SelectBox; - if (sb) - { - uint lineIndex = sb->getNumLine(); - sb->addLine(_SelectOptionStr, "", ""); - - if (_Forms.back().Entries.back().sbOptionDisabled == lineIndex) - { - sb->setGrayedLine(lineIndex, true); - } - else - { - // create option line checkbox, CGroupMenu is taking ownership of the checbox - CInterfaceGroup *ig = CWidgetManager::getInstance()->getParser()->createGroupInstance("menu_checkbox", "", NULL, 0); - if (ig) - { - CCtrlButton *cb = dynamic_cast(ig->getCtrl("b")); - if (cb) - { - if (_Forms.back().Entries.back().sbMultiple) - { - cb->setType(CCtrlButton::ToggleButton); - cb->setTexture(DefaultCheckBoxBitmapNormal); - cb->setTexturePushed(DefaultCheckBoxBitmapPushed); - cb->setTextureOver(DefaultCheckBoxBitmapOver); - } - else - { - cb->setType(CCtrlButton::RadioButton); - cb->setTexture(DefaultRadioButtonBitmapNormal); - cb->setTexturePushed(DefaultRadioButtonBitmapPushed); - cb->setTextureOver(DefaultRadioButtonBitmapOver); - - if (_Forms.back().Entries.back().sbRBRef == NULL) - _Forms.back().Entries.back().sbRBRef = cb; - - cb->initRBRefFromRadioButton(_Forms.back().Entries.back().sbRBRef); - } - - cb->setPushed(_Forms.back().Entries.back().InitialSelection == lineIndex); - sb->setUserGroupLeft(lineIndex, ig); - } - else - { - nlwarning("Failed to get 'b' element from 'menu_checkbox' template"); - delete ig; - } - } - } - } - } - } - break; - case HTML_I: - { - _Localize = false; - } - break; - case HTML_OL: - case HTML_UL: - if (!_UL.empty()) - { - endParagraph(); - _Style.popStyle(); - popIfNotEmpty(_UL); - popIfNotEmpty(_Indent); - } - break; - case HTML_LI: - { - _Style.popStyle(); - } - break; - case HTML_DL: - if (!_DL.empty()) - { - endParagraph(); - - // unclosed DT - if (_DL.back().DT) - { - _Style.popStyle(); - } - - // unclosed DD - if (_DL.back().DD) - { - popIfNotEmpty(_Indent); - _Style.popStyle(); - } - - popIfNotEmpty (_DL); - _Style.popStyle(); - } - break; - case HTML_DT: - if (!_DL.empty()) - { - if (_DL.back().DT) - _Style.popStyle(); - _DL.back().DT = false; - } - break; - case HTML_DD: - if (!_DL.empty()) - { - // parser will process two DD in a row as nested when first DD is not closed - if (_DL.back().DD) - { - _DL.back().DD = false; - popIfNotEmpty(_Indent); - _Style.popStyle(); - } - } - break; - case HTML_SPAN: - _Style.popStyle(); - break; - case HTML_DEL: - _Style.popStyle(); - break; - case HTML_U: - _Style.popStyle(); - break; - case HTML_EM: - _Style.popStyle(); - break; - case HTML_STRONG: - _Style.popStyle(); - break; - case HTML_SMALL: - _Style.popStyle(); - break; - case HTML_STYLE: - case HTML_SCRIPT: - _IgnoreText = false; - break; - case HTML_OBJECT: - if (_TrustedDomain) - { - if (_ObjectType=="application/ryzom-data") - { - if (!_ObjectData.empty()) - { - if (addBnpDownload(_ObjectData, _ObjectAction, _ObjectScript, _ObjectMD5Sum)) - { - CLuaManager::getInstance().executeLuaScript("\nlocal __ALLREADYDL__=true\n"+_ObjectScript, true); - } - _ObjectScript.clear(); - } - } - _Object = false; - } - break; - } - } - } - // *************************************************************************** NLMISC_REGISTER_OBJECT(CViewBase, CGroupHTML, std::string, "html"); @@ -6237,77 +4665,6 @@ namespace NLGUI return 0; } - // *************************************************************************** - // @deprecated - int CGroupHTML::luaBeginElement(CLuaState &ls) - { - nlwarning("Deprecated luaBeginElement on url '%s'", _URL.c_str()); - - const char *funcName = "beginElement"; - CLuaIHM::checkArgCount(ls, funcName, 2); - CLuaIHM::checkArgType(ls, funcName, 1, LUA_TNUMBER); - CLuaIHM::checkArgType(ls, funcName, 2, LUA_TTABLE); - - uint element_number = (uint)ls.toInteger(1); - std::vector present; - std::vector value; - present.resize(30, false); - value.resize(30); - - CLuaObject params; - params.pop(ls); - uint max_idx = 0; - - - ENUM_LUA_TABLE(params, it) - { - if (!it.nextKey().isInteger()) - { - nlwarning("%s : bad key encountered with type %s, integer expected.", funcName, it.nextKey().getTypename()); - continue; - } - if (!it.nextValue().isString()) - { - nlwarning("%s : bad value encountered with type %s for key %s, string expected.", funcName, it.nextValue().getTypename(), it.nextKey().toString().c_str()); - continue; - } - uint idx = (uint)it.nextKey().toInteger(); - - present.insert(present.begin() + (uint)it.nextKey().toInteger(), true); - - string str = it.nextValue().toString(); - size_t size = str.size() + 1; - char * buffer = new char[ size ]; - strncpy(buffer, str.c_str(), size ); - - value.insert(value.begin() + (uint)it.nextKey().toInteger(), buffer); - } - - // ingame lua scripts from browser are using url scheme - // reason unknown - _LuaHrefHack = true; - beginElementDeprecated(element_number, present, value); - _LuaHrefHack = false; - - return 0; - } - - - // *************************************************************************** - // @deprecated - int CGroupHTML::luaEndElement(CLuaState &ls) - { - const char *funcName = "endElement"; - CLuaIHM::checkArgCount(ls, funcName, 1); - CLuaIHM::checkArgType(ls, funcName, 1, LUA_TNUMBER); - - uint element_number = (uint)ls.toInteger(1); - endElementDeprecated(element_number); - - return 0; - } - - // *************************************************************************** int CGroupHTML::luaShowDiv(CLuaState &ls) {