diff --git a/code/nel/include/nel/gui/group_html.h b/code/nel/include/nel/gui/group_html.h
index 645fd7de1..c489168e0 100644
--- a/code/nel/include/nel/gui/group_html.h
+++ b/code/nel/include/nel/gui/group_html.h
@@ -131,7 +131,7 @@ namespace NLGUI
// ImageDownload system
enum TDataType {ImgType= 0, BnpType};
enum TImageType {NormalImage=0, OverImage};
-
+
// Constructor
CGroupHTML(const TCtorParam ¶m);
~CGroupHTML();
@@ -177,7 +177,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);
@@ -264,6 +264,8 @@ namespace NLGUI
// Browser home
std::string Home;
+ // Get Home URL
+ virtual std::string home();
// Undo browse: Browse the precedent url browsed. no op if none
void browseUndo ();
@@ -281,6 +283,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);
@@ -313,6 +317,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_EXPORT_END
@@ -354,9 +359,6 @@ namespace NLGUI
void htmlElement(xmlNode *node, int element_number);
void htmlWalkDOM(xmlNode *a_node);
- // Get Home URL
- virtual std::string home();
-
// Clear style stack and restore default style
void resetCssStyle();
@@ -425,7 +427,7 @@ namespace NLGUI
std::string _DocumentUrl;
std::string _DocumentDomain;
std::string _DocumentHtml; // not updated only set by first render
-
+
// Valid base href was found
bool _IgnoreBaseUrlTag;
// Fragment from loading url
@@ -730,7 +732,7 @@ namespace NLGUI
return 0;
return _Indent.back();
}
-
+
// Current node is a title
@@ -821,7 +823,7 @@ namespace NLGUI
private:
// 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 5c73b7120..46aeffedc 100644
--- a/code/nel/src/gui/group_html.cpp
+++ b/code/nel/src/gui/group_html.cpp
@@ -306,10 +306,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);
@@ -334,14 +334,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
@@ -352,7 +352,7 @@ namespace NLGUI
else
height = width / ratio;
}
-
+
// apply max-width, max-height rules if asked
if (maxw > -1 || maxh > -1)
{
@@ -1680,7 +1680,7 @@ namespace NLGUI
typedef pair TTmplParam;
vector tmplParams;
-
+
string templateName;
if (!style.empty())
{
@@ -1796,7 +1796,7 @@ namespace NLGUI
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");
@@ -3331,12 +3331,12 @@ namespace NLGUI
}
else
if( name == "error_color_global_color" )
- {
+ {
return toString( ErrorColorGlobalColor );
}
else
if( name == "link_color_global_color" )
- {
+ {
return toString( LinkColorGlobalColor );
}
else
@@ -3346,67 +3346,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
@@ -3615,7 +3615,7 @@ namespace NLGUI
}
else
if( name == "error_color_global_color" )
- {
+ {
bool b;
if( fromString( value, b ) )
ErrorColorGlobalColor = b;
@@ -3623,7 +3623,7 @@ namespace NLGUI
}
else
if( name == "link_color_global_color" )
- {
+ {
bool b;
if( fromString( value, b ) )
LinkColorGlobalColor = b;
@@ -3639,7 +3639,7 @@ namespace NLGUI
}
else
if( name == "h1_color_global_color" )
- {
+ {
bool b;
if( fromString( value, b ) )
H1ColorGlobalColor = b;
@@ -3647,7 +3647,7 @@ namespace NLGUI
}
else
if( name == "h2_color_global_color" )
- {
+ {
bool b;
if( fromString( value, b ) )
H2ColorGlobalColor = b;
@@ -3655,7 +3655,7 @@ namespace NLGUI
}
else
if( name == "h3_color_global_color" )
- {
+ {
bool b;
if( fromString( value, b ) )
H3ColorGlobalColor = b;
@@ -3663,7 +3663,7 @@ namespace NLGUI
}
else
if( name == "h4_color_global_color" )
- {
+ {
bool b;
if( fromString( value, b ) )
H4ColorGlobalColor = b;
@@ -3671,7 +3671,7 @@ namespace NLGUI
}
else
if( name == "h5_color_global_color" )
- {
+ {
bool b;
if( fromString( value, b ) )
H5ColorGlobalColor = b;
@@ -3679,7 +3679,7 @@ namespace NLGUI
}
else
if( name == "h6_color_global_color" )
- {
+ {
bool b;
if( fromString( value, b ) )
H6ColorGlobalColor = b;
@@ -3687,7 +3687,7 @@ namespace NLGUI
}
else
if( name == "text_font_size" )
- {
+ {
uint i;
if( fromString( value, i ) )
TextFontSize = i;
@@ -3695,7 +3695,7 @@ namespace NLGUI
}
else
if( name == "h1_font_size" )
- {
+ {
uint i;
if( fromString( value, i ) )
H1FontSize = i;
@@ -3703,7 +3703,7 @@ namespace NLGUI
}
else
if( name == "h2_font_size" )
- {
+ {
uint i;
if( fromString( value, i ) )
H2FontSize = i;
@@ -3711,7 +3711,7 @@ namespace NLGUI
}
else
if( name == "h3_font_size" )
- {
+ {
uint i;
if( fromString( value, i ) )
H3FontSize = i;
@@ -3719,7 +3719,7 @@ namespace NLGUI
}
else
if( name == "h4_font_size" )
- {
+ {
uint i;
if( fromString( value, i ) )
H4FontSize = i;
@@ -3727,7 +3727,7 @@ namespace NLGUI
}
else
if( name == "h5_font_size" )
- {
+ {
uint i;
if( fromString( value, i ) )
H5FontSize = i;
@@ -3735,7 +3735,7 @@ namespace NLGUI
}
else
if( name == "h6_font_size" )
- {
+ {
uint i;
if( fromString( value, i ) )
H6FontSize = i;
@@ -3920,7 +3920,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",
@@ -4580,7 +4580,7 @@ namespace NLGUI
getParagraph()->addChild (buttonGroup);
paragraphChange ();
}
-
+
}
else
{
@@ -6094,14 +6094,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;
@@ -6271,6 +6271,10 @@ namespace NLGUI
renderHtmlString(html);
}
+ void CGroupHTML::setHome(const std::string &home)
+ {
+ Home = home;
+ }
// ***************************************************************************
inline bool isDigit(ucchar c, uint base = 16)
@@ -6732,7 +6736,7 @@ namespace NLGUI
maxw = std::max(minw, maxw);
maxh = std::max(minh, maxh);
-
+
float ratio = (float) width / std::max(1, height);
if (width > maxw)
{
@@ -6791,7 +6795,7 @@ namespace NLGUI
height = minh;
}
}
-
+
// ***************************************************************************
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");