diff --git a/code/nel/include/nel/gui/group_html.h b/code/nel/include/nel/gui/group_html.h index ee87741d5..8e39c4455 100644 --- a/code/nel/include/nel/gui/group_html.h +++ b/code/nel/include/nel/gui/group_html.h @@ -78,7 +78,7 @@ namespace NLGUI // ImageDownload system enum TDataType {ImgType= 0, BnpType, StylesheetType}; enum TImageType {NormalImage=0, OverImage}; - + // Constructor CGroupHTML(const TCtorParam ¶m); ~CGroupHTML(); @@ -122,7 +122,7 @@ namespace NLGUI // End of the paragraph void endParagraph(); - + // add image download (used by view_bitmap.cpp to load web images) void addImageDownload(const std::string &url, CViewBase *img, const CStyleParams &style = CStyleParams(), const TImageType type = NormalImage); std::string localImageName(const std::string &url); @@ -228,6 +228,8 @@ namespace NLGUI std::string getHTML() const { return _DocumentHtml; } void setHTML(const std::string &html); + void setHome(const std::string &home); + int luaClearRefresh(CLuaState &ls); int luaClearUndoRedo(CLuaState &ls); int luaBrowse(CLuaState &ls); @@ -256,6 +258,7 @@ namespace NLGUI REFLECT_LUA_METHOD("setBackground", luaSetBackground) REFLECT_STRING("url", getURL, setURL) REFLECT_STRING("html", getHTML, setHTML) + REFLECT_STRING("home", home, setHome) REFLECT_FLOAT("timeout", getTimeout, setTimeout) REFLECT_STRING("title", getTitle, setTitle) REFLECT_EXPORT_END @@ -714,7 +717,7 @@ namespace NLGUI return 0; return _Indent.back(); } - + // Current node is a title @@ -806,7 +809,7 @@ namespace NLGUI // decode all HTML entities static ucstring decodeHTMLEntities(const ucstring &str); - + struct CDataImageDownload { public: diff --git a/code/nel/src/gui/group_html.cpp b/code/nel/src/gui/group_html.cpp index e5987d210..335155a78 100644 --- a/code/nel/src/gui/group_html.cpp +++ b/code/nel/src/gui/group_html.cpp @@ -318,10 +318,10 @@ namespace NLGUI sint32 height = style.Height; sint32 maxw = style.MaxWidth; sint32 maxh = style.MaxHeight; - + sint32 imageWidth, imageHeight; bool changed = true; - + // get image texture size // if image is being downloaded, then correct size is set after thats done CCtrlButton *btn = dynamic_cast(view); @@ -346,14 +346,14 @@ namespace NLGUI return; } } - + // if width/height is not requested, then use image size // else recalculate missing value, keep image ratio if (width == -1 && height == -1) { width = imageWidth; height = imageHeight; - + changed = false; } else @@ -364,7 +364,7 @@ namespace NLGUI else height = width / ratio; } - + // apply max-width, max-height rules if asked if (maxw > -1 || maxh > -1) { @@ -1555,12 +1555,12 @@ namespace NLGUI } else if( name == "error_color_global_color" ) - { + { return toString( ErrorColorGlobalColor ); } else if( name == "link_color_global_color" ) - { + { return toString( LinkColorGlobalColor ); } else @@ -1570,67 +1570,67 @@ namespace NLGUI } else if( name == "h1_color_global_color" ) - { + { return toString( H1ColorGlobalColor ); } else if( name == "h2_color_global_color" ) - { + { return toString( H2ColorGlobalColor ); } else if( name == "h3_color_global_color" ) - { + { return toString( H3ColorGlobalColor ); } else if( name == "h4_color_global_color" ) - { + { return toString( H4ColorGlobalColor ); } else if( name == "h5_color_global_color" ) - { + { return toString( H5ColorGlobalColor ); } else if( name == "h6_color_global_color" ) - { + { return toString( H6ColorGlobalColor ); } else if( name == "text_font_size" ) - { + { return toString( TextFontSize ); } else if( name == "h1_font_size" ) - { + { return toString( H1FontSize ); } else if( name == "h2_font_size" ) - { + { return toString( H2FontSize ); } else if( name == "h3_font_size" ) - { + { return toString( H3FontSize ); } else if( name == "h4_font_size" ) - { + { return toString( H4FontSize ); } else if( name == "h5_font_size" ) - { + { return toString( H5FontSize ); } else if( name == "h6_font_size" ) - { + { return toString( H6FontSize ); } else @@ -1839,7 +1839,7 @@ namespace NLGUI } else if( name == "error_color_global_color" ) - { + { bool b; if( fromString( value, b ) ) ErrorColorGlobalColor = b; @@ -1847,7 +1847,7 @@ namespace NLGUI } else if( name == "link_color_global_color" ) - { + { bool b; if( fromString( value, b ) ) LinkColorGlobalColor = b; @@ -1863,7 +1863,7 @@ namespace NLGUI } else if( name == "h1_color_global_color" ) - { + { bool b; if( fromString( value, b ) ) H1ColorGlobalColor = b; @@ -1871,7 +1871,7 @@ namespace NLGUI } else if( name == "h2_color_global_color" ) - { + { bool b; if( fromString( value, b ) ) H2ColorGlobalColor = b; @@ -1879,7 +1879,7 @@ namespace NLGUI } else if( name == "h3_color_global_color" ) - { + { bool b; if( fromString( value, b ) ) H3ColorGlobalColor = b; @@ -1887,7 +1887,7 @@ namespace NLGUI } else if( name == "h4_color_global_color" ) - { + { bool b; if( fromString( value, b ) ) H4ColorGlobalColor = b; @@ -1895,7 +1895,7 @@ namespace NLGUI } else if( name == "h5_color_global_color" ) - { + { bool b; if( fromString( value, b ) ) H5ColorGlobalColor = b; @@ -1903,7 +1903,7 @@ namespace NLGUI } else if( name == "h6_color_global_color" ) - { + { bool b; if( fromString( value, b ) ) H6ColorGlobalColor = b; @@ -1911,7 +1911,7 @@ namespace NLGUI } else if( name == "text_font_size" ) - { + { uint i; if( fromString( value, i ) ) TextFontSize = i; @@ -1919,7 +1919,7 @@ namespace NLGUI } else if( name == "h1_font_size" ) - { + { uint i; if( fromString( value, i ) ) H1FontSize = i; @@ -1927,7 +1927,7 @@ namespace NLGUI } else if( name == "h2_font_size" ) - { + { uint i; if( fromString( value, i ) ) H2FontSize = i; @@ -1935,7 +1935,7 @@ namespace NLGUI } else if( name == "h3_font_size" ) - { + { uint i; if( fromString( value, i ) ) H3FontSize = i; @@ -1943,7 +1943,7 @@ namespace NLGUI } else if( name == "h4_font_size" ) - { + { uint i; if( fromString( value, i ) ) H4FontSize = i; @@ -1951,7 +1951,7 @@ namespace NLGUI } else if( name == "h5_font_size" ) - { + { uint i; if( fromString( value, i ) ) H5FontSize = i; @@ -1959,7 +1959,7 @@ namespace NLGUI } else if( name == "h6_font_size" ) - { + { uint i; if( fromString( value, i ) ) H6FontSize = i; @@ -2144,7 +2144,7 @@ namespace NLGUI xmlSetProp( node, BAD_CAST "h4_color", BAD_CAST toString( H4Color ).c_str() ); xmlSetProp( node, BAD_CAST "h5_color", BAD_CAST toString( H5Color ).c_str() ); xmlSetProp( node, BAD_CAST "h6_color", BAD_CAST toString( H6Color ).c_str() ); - + xmlSetProp( node, BAD_CAST "error_color_global_color", BAD_CAST toString( ErrorColorGlobalColor ).c_str() ); xmlSetProp( node, BAD_CAST "link_color_global_color", @@ -2781,7 +2781,7 @@ namespace NLGUI getParagraph()->addChild (buttonGroup); paragraphChange (); } - + } else { @@ -4529,14 +4529,14 @@ namespace NLGUI } // *************************************************************************** - int CGroupHTML::luaInsertText(CLuaState &ls) + int CGroupHTML::luaInsertText(CLuaState &ls) { const char *funcName = "insertText"; CLuaIHM::checkArgCount(ls, funcName, 3); CLuaIHM::checkArgType(ls, funcName, 1, LUA_TSTRING); CLuaIHM::checkArgType(ls, funcName, 2, LUA_TSTRING); CLuaIHM::checkArgType(ls, funcName, 3, LUA_TBOOLEAN); - + string name = ls.toString(1); ucstring text; @@ -4639,6 +4639,11 @@ namespace NLGUI renderHtmlString(html); } + void CGroupHTML::setHome(const std::string &home) + { + Home = home; + } + // *************************************************************************** void CGroupHTML::parseStylesheetFile(const std::string &fname) { @@ -4940,7 +4945,7 @@ namespace NLGUI css += "progress::-webkit-progress-value { background-color: rgb(0, 100, 180);}"; _Style.parseStylesheet(css); } - + // *************************************************************************** std::string CGroupHTML::HTMLOListElement::getListMarkerText() const { diff --git a/code/ryzom/client/src/interface_v3/group_map.cpp b/code/ryzom/client/src/interface_v3/group_map.cpp index 5e7c9e4c8..60a13eed1 100644 --- a/code/ryzom/client/src/interface_v3/group_map.cpp +++ b/code/ryzom/client/src/interface_v3/group_map.cpp @@ -32,6 +32,7 @@ #include "nel/gui/action_handler.h" #include "../dummy_progress.h" #include "group_compas.h" +#include "group_html_cs.h" #include "../connection.h" #include "../net_manager.h" #include "people_interraction.h" // for MaxNumPeopleInTeam @@ -114,10 +115,10 @@ static void popupLandMarkNameDialog() gc->center(); CWidgetManager::getInstance()->setTopWindow(gc); gc->enableBlink(1); - + CGroupEditBox *eb = dynamic_cast(gc->getGroup("eb")); - if (!eb) return; - + if (!eb) return; + // Load ComboBox for Landmarks & sort entries CDBGroupComboBox *cb = dynamic_cast(gc->getGroup("landmarktypes")); cb->sortText(); @@ -126,7 +127,7 @@ static void popupLandMarkNameDialog() { CGroupMap *map = dynamic_cast(LastSelectedLandMark->getParent()); if (!map) return; - + const CUserLandMark userLM = map->getUserLandMark(LastSelectedLandMark); NLGUI::CDBManager::getInstance()->getDbProp( "UI:TEMP:LANDMARKTYPE" )->setValue8(cb->getTextPos(userLM.Type)); @@ -1207,22 +1208,54 @@ void CGroupMap::checkCoords() // **** retrieve pos of respawn and update it, or hide it if there's no target uint i; + uint offset = 0; + if (!_ArkPoints.empty()) + { + offset = _ArkPoints.size(); + if (_ArkPoints.size() < _RespawnLM.size()) + { + for (i = (uint)_ArkPoints.size(); i < _RespawnLM.size(); i++) + { + delCtrl(_RespawnLM[i]); + _RespawnLM[i] = NULL; + } + } - if (_ArkPoints.empty()) // Ark points replace Respawn Points + _RespawnLM.resize(_ArkPoints.size(), NULL); + for(i = 0; i < _ArkPoints.size(); i++) + { + if (_RespawnLM[i] == NULL) + { + _RespawnLM[i] = createArkPointButton(_ArkPoints[i]); + _RespawnLM[i]->setId(this->getId() + ":arklm_" + NLMISC::toString(i)); + _RespawnLM[i]->setParent(this); + ucstring title; + title.fromUtf8(_ArkPoints[i].Title); + _RespawnLM[i]->setDefaultContextHelp(title); + _RespawnLM[i]->HandleEvents = true; + addCtrl(_RespawnLM[i]); + updateLMPosFromDBPos(_RespawnLM[i], _ArkPoints[i].x, _ArkPoints[i].y); + } + } + } + + + if (_ArkPoints.empty() || !isIsland()) { - if (_RespawnPos.size() < _RespawnLM.size()) + if (offset + _RespawnPos.size() < _RespawnLM.size()) { - for (i = (uint)_RespawnPos.size(); i < _RespawnLM.size(); i++) + for (i = offset + _RespawnPos.size(); i < _RespawnLM.size(); i++) { delCtrl(_RespawnLM[i]); _RespawnLM[i] = NULL; } } - - _RespawnLM.resize(_RespawnPos.size(), NULL); - for(i = 0; i < _RespawnPos.size(); ++i) + + _RespawnLM.resize(offset + _RespawnPos.size(), NULL); + for(int j = 0; j < _RespawnPos.size(); ++j) { + i = offset + j; if (_RespawnLM[i] == NULL) { _RespawnLM[i] = createLandMarkButton(_RespawnLMOptions); @@ -1245,38 +1278,11 @@ void CGroupMap::checkCoords() addCtrl(_RespawnLM[i]); } if (_RespawnLM[i]) - updateLMPosFromDBPos(_RespawnLM[i], _RespawnPos[i].x, _RespawnPos[i].y); + updateLMPosFromDBPos(_RespawnLM[i], _RespawnPos[j].x, _RespawnPos[j].y); } } - else - { - if (_ArkPoints.size() < _RespawnLM.size()) - { - for (i = (uint)_ArkPoints.size(); i < _RespawnLM.size(); i++) - { - delCtrl(_RespawnLM[i]); - _RespawnLM[i] = NULL; - } - } - - _RespawnLM.resize(_ArkPoints.size(), NULL); - for(i = 0; i < _ArkPoints.size(); i++) - { - if (_RespawnLM[i] == NULL) - { - _RespawnLM[i] = createArkPointButton(_ArkPoints[i]); - _RespawnLM[i]->setId(this->getId() + ":arklm_" + NLMISC::toString(i)); - _RespawnLM[i]->setParent(this); - ucstring title; - title.fromUtf8(_ArkPoints[i].Title); - _RespawnLM[i]->setDefaultContextHelp(title); - _RespawnLM[i]->HandleEvents = true; - addCtrl(_RespawnLM[i]); - updateLMPosFromDBPos(_RespawnLM[i], _ArkPoints[i].x, _ArkPoints[i].y); - } - } - } - + + if ((_MapMode == MapMode_Death) || (_MapMode == MapMode_SpawnSquad)) { if (_RespawnPosReseted) @@ -1381,7 +1387,7 @@ void CGroupMap::checkCoords() { if (_TeammateLM[i]) - { + { sint32 px, py; if (_TeammatePosStates[i]->getPos(px, py)) @@ -2271,6 +2277,21 @@ void CGroupMap::setMap(SMap *map) invalidateCoords(); createContinentLandMarks(); + nlinfo("setMap (%f,%f) (%f,%f)", _CurMap->MinX, _CurMap->MinY, _CurMap->MaxX, _CurMap->MaxY); + + delArkPoints(); + + CGroupHTML *groupHtml = dynamic_cast(CWidgetManager::getInstance()->getElementFromId("ui:interface:map:content:map_content:lm_events:html")); + + if (groupHtml) + { + groupHtml->setHome(groupHtml->Home+toString("&min_x=%f&min_y=%f&max_x=%f&max_y=%f", _CurMap->MinX, _CurMap->MinY, _CurMap->MaxX, _CurMap->MaxY)); + if (groupHtml->isBrowsing()) + groupHtml->stopBrowse(); + groupHtml->browse(groupHtml->Home.c_str()); + } + + if (_CurContinent != NULL) _MapMaterial.setTexture(1, _CurContinent->FoW.Tx); else @@ -2626,7 +2647,7 @@ static void hideTeleportButtonsInPopupMenuIfNotEnoughPriv() CInterfaceElement *ie = CWidgetManager::getInstance()->getElementFromId("ui:interface:map_menu:teleport"); if(ie) ie->setActive(showTeleport); - + ie = CWidgetManager::getInstance()->getElementFromId("ui:interface:map_menu_island:teleport"); if(ie) ie->setActive(showTeleport); @@ -2723,7 +2744,7 @@ CGroupMap::CLandMarkButton *CGroupMap::createArkPointButton(const CArkPoint &poi lmb->setColorOver(point.Color); lmb->setColorPushed(point.Color); lmb->setModulateGlobalColorAll(false); - + lmb->setPosRef(Hotspot_MM); return lmb; } @@ -2772,13 +2793,13 @@ void CGroupMap::addLandMark(TLandMarkButtonVect &destList, const NLMISC::CVector void CGroupMap::addUserLandMark(const NLMISC::CVector2f &pos, const ucstring &title, NLMISC::CRGBA color) { if (_CurContinent == NULL) return; - + CUserLandMark ulm; mapToWorld(ulm.Pos, pos); ulm.Title = title; ulm.Type = 5; _CurContinent->UserLandMarks.push_back(ulm); - + CLandMarkOptions options(_UserLMOptions); options.ColorNormal = options.ColorOver = options.ColorPushed = color; // create a new button and add it to the list @@ -2894,7 +2915,7 @@ CUserLandMark CGroupMap::getUserLandMark(CCtrlButton *button) const } } - + return ulm; } @@ -2907,7 +2928,7 @@ uint CGroupMap::getNumUserLandMarks() const //============================================================================================================ CLandMarkOptions CGroupMap::getUserLandMarkOptions(uint32 lmindex) const { - if (_CurContinent == NULL || _CurContinent->UserLandMarks.size() < lmindex) + if (_CurContinent == NULL || _CurContinent->UserLandMarks.size() < lmindex) return _UserLMOptions; CLandMarkOptions clmo(_UserLMOptions); @@ -3936,9 +3957,9 @@ REGISTER_ACTION_HANDLER(CAHMapTeleport, "map_teleport"); //========================================================================================================= // update LandMarks Colors -class CUpdateLandMarksColor : public IActionHandler{public: virtual void execute (CCtrlBase * /* pCaller */, const string &/* Params */) -{ - CInterfaceManager *pIM = CInterfaceManager::getInstance(); +class CUpdateLandMarksColor : public IActionHandler{public: virtual void execute (CCtrlBase * /* pCaller */, const string &/* Params */) +{ + CInterfaceManager *pIM = CInterfaceManager::getInstance(); CUserLandMark::_LandMarksColor[CUserLandMark::Misc] = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:LANDMARK:COLORS:MISC")->getValueRGBA(); CUserLandMark::_LandMarksColor[CUserLandMark::Tribe] = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:LANDMARK:COLORS:TRIBE")->getValueRGBA(); @@ -3972,10 +3993,10 @@ class CUpdateLandMarksColor : public IActionHandler{public: virtual void execute CUserLandMark::_LandMarksColor[CUserLandMark::Teleporter] = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:LANDMARK:COLORS:TELEPORTER")->getValueRGBA(); - - CGroupMap *pGM = dynamic_cast(CWidgetManager::getInstance()->getElementFromId("ui:interface:map:content:map_content:actual_map")); - if (pGM == NULL) return; - pGM->updateUserLandMarks(); + + CGroupMap *pGM = dynamic_cast(CWidgetManager::getInstance()->getElementFromId("ui:interface:map:content:map_content:actual_map")); + if (pGM == NULL) return; + pGM->updateUserLandMarks(); }}; REGISTER_ACTION_HANDLER (CUpdateLandMarksColor, "update_landmarks_color");