diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index b229d87a5..98c814599 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -118,6 +118,7 @@ ENDIF(WIN32) FIND_PACKAGE(ZLIB REQUIRED) FIND_PACKAGE(LibXml2 REQUIRED) FIND_PACKAGE(PNG REQUIRED) +FIND_PACKAGE(OpenSSL REQUIRED) FIND_PACKAGE(GIF) FIND_PACKAGE(Jpeg) @@ -257,10 +258,6 @@ IF(WITH_QT5) FIND_PACKAGE(Qt5LinguistTools) FIND_PACKAGE(Qt5Network) - IF(WIN32) - FIND_PACKAGE(Qt5WinExtras) - ENDIF() - IF(QT_STATIC) ADD_DEFINITIONS(-DQT_STATICPLUGIN) @@ -346,8 +343,6 @@ IF(WITH_QT5) # Network SET(QT_LIBRARIES ${QT_LIBRARIES} Qt5::Network Qt5::Xml) - - FIND_PACKAGE(OpenSSL REQUIRED) SET(QT_LIBRARIES ${QT_LIBRARIES} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES}) IF(WIN32) @@ -421,12 +416,8 @@ IF(WITH_NEL) IF(CURL_STATIC) SET(CURL_DEFINITIONS -DCURL_STATICLIB) - FIND_PACKAGE(OpenSSL QUIET) - - IF(OPENSSL_FOUND) - SET(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR}) - SET(CURL_LIBRARIES ${CURL_LIBRARIES} ${OPENSSL_LIBRARIES}) - ENDIF(OPENSSL_FOUND) + SET(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR}) + SET(CURL_LIBRARIES ${CURL_LIBRARIES} ${OPENSSL_LIBRARIES}) IF(UNIX) # CURL depends on libidn diff --git a/code/CMakeModules/FindLuabind.cmake b/code/CMakeModules/FindLuabind.cmake index 6795a5089..64fd5e1cf 100644 --- a/code/CMakeModules/FindLuabind.cmake +++ b/code/CMakeModules/FindLuabind.cmake @@ -9,38 +9,64 @@ MACRO(FIND_CORRECT_LUA_VERSION) IF(LUABIND_LIBRARY_RELEASE MATCHES "\\.so") INCLUDE(CheckDepends) - SET(LUA52_LIBRARY "liblua5.2") - CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE LUA52_LIBRARY LUALIB_FOUND) - - IF(NOT LUALIB_FOUND) - # fedora (v20) - SET(LUA52_LIBRARY "liblua-5.2") - CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE LUA52_LIBRARY LUALIB_FOUND) - ENDIF(NOT LUALIB_FOUND) - - IF(LUALIB_FOUND) - MESSAGE(STATUS "Luabind is using Lua 5.2") - FIND_PACKAGE(Lua52 REQUIRED) - ELSE(LUALIB_FOUND) - SET(LUA51_LIBRARY "liblua5.1") - CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE LUA51_LIBRARY LUALIB_FOUND) + # check for Lua 5.3 + SET(LUA53_LIBRARIES liblua5.3 liblua-5.3 liblua.so.5.3) + FOREACH(_LIB ${LUA53_LIBRARIES}) + CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE _LIB LUALIB_FOUND) IF(LUALIB_FOUND) - MESSAGE(STATUS "Luabind is using Lua 5.1") - FIND_PACKAGE(Lua51 REQUIRED) - ELSE(LUALIB_FOUND) - SET(LUA50_LIBRARY "liblua5.0") - CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE LUA50_LIBRARY LUALIB_FOUND) + MESSAGE(STATUS "Luabind is using Lua 5.3") + FIND_PACKAGE(Lua53 REQUIRED) + BREAK() + ENDIF() + ENDFOREACH() + IF(NOT LUALIB_FOUND) + # check for Lua 5.2 + SET(LUA52_LIBRARIES liblua5.2 liblua-5.2 liblua.so.5.2) + + FOREACH(_LIB ${LUA52_LIBRARIES}) + CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE _LIB LUALIB_FOUND) + IF(LUALIB_FOUND) + MESSAGE(STATUS "Luabind is using Lua 5.2") + FIND_PACKAGE(Lua52 REQUIRED) + BREAK() + ENDIF() + ENDFOREACH() + ENDIF() + + IF(NOT LUALIB_FOUND) + # check for Lua 5.1 + SET(LUA51_LIBRARIES liblua5.1 liblua-5.1 liblua.so.5.1) + + FOREACH(_LIB ${LUA51_LIBRARIES}) + CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE _LIB LUALIB_FOUND) + IF(LUALIB_FOUND) + MESSAGE(STATUS "Luabind is using Lua 5.1") + FIND_PACKAGE(Lua51 REQUIRED) + BREAK() + ENDIF() + ENDFOREACH() + ENDIF() + + IF(NOT LUALIB_FOUND) + # check for Lua 5.0 + SET(LUA50_LIBRARIES liblua5.0 liblua-5.0 liblua.so.5.0) + + FOREACH(_LIB ${LUA50_LIBRARIES}) + CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE _LIB LUALIB_FOUND) IF(LUALIB_FOUND) MESSAGE(STATUS "Luabind is using Lua 5.0") FIND_PACKAGE(Lua50 REQUIRED) - ELSE(LUALIB_FOUND) - MESSAGE(FATAL_ERROR "Can't determine Lua version used by Luabind") - ENDIF(LUALIB_FOUND) - ENDIF(LUALIB_FOUND) - ENDIF(LUALIB_FOUND) - ELSE(LUABIND_LIBRARY_RELEASE MATCHES "\\.so") + BREAK() + ENDIF() + ENDFOREACH() + ENDIF() + + IF(NOT LUALIB_FOUND) + MESSAGE(FATAL_ERROR "Can't determine Lua version used by Luabind") + ENDIF() + ELSE() # TODO: find a way to detect Lua version IF(WITH_LUA53) FIND_PACKAGE(Lua53 REQUIRED) diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index 2888e9a46..4339c0520 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -872,7 +872,7 @@ MACRO(NL_SETUP_BUILD) ENDIF(ANDROID) IF(APPLE) - ADD_PLATFORM_FLAGS("-gdwarf-2") + ADD_PLATFORM_FLAGS("-gdwarf-2 -D_DARWIN_UNLIMITED_STREAMS") ENDIF(APPLE) # Fix "relocation R_X86_64_32 against.." error on x64 platforms diff --git a/code/nel/include/nel/gui/ctrl_button.h b/code/nel/include/nel/gui/ctrl_button.h index 02b827329..1910ea72a 100644 --- a/code/nel/include/nel/gui/ctrl_button.h +++ b/code/nel/include/nel/gui/ctrl_button.h @@ -51,7 +51,7 @@ namespace NLGUI xmlNodePtr serialize( xmlNodePtr parentNode, const char *type ) const; // Init part - virtual bool parse (xmlNodePtr cur,CInterfaceGroup * parentGroup); + virtual bool parse (xmlNodePtr cur, CInterfaceGroup * parentGroup); virtual void updateCoords(); diff --git a/code/nel/include/nel/gui/ctrl_text_button.h b/code/nel/include/nel/gui/ctrl_text_button.h index 4f5251a8b..69898639d 100644 --- a/code/nel/include/nel/gui/ctrl_text_button.h +++ b/code/nel/include/nel/gui/ctrl_text_button.h @@ -49,7 +49,7 @@ namespace NLGUI xmlNodePtr serialize( xmlNodePtr parentNode, const char *type ) const; // Init part - virtual bool parse (xmlNodePtr cur,CInterfaceGroup * parentGroup); + virtual bool parse (xmlNodePtr cur, CInterfaceGroup * parentGroup); virtual void checkCoords(); virtual void updateCoords(); diff --git a/code/nel/include/nel/gui/dbgroup_combo_box.h b/code/nel/include/nel/gui/dbgroup_combo_box.h index e7be1de4b..87e6d758a 100644 --- a/code/nel/include/nel/gui/dbgroup_combo_box.h +++ b/code/nel/include/nel/gui/dbgroup_combo_box.h @@ -63,6 +63,8 @@ namespace NLGUI uint getTextId(uint i) const; uint getTextPos(uint nId) const; const ucstring &getTexture(uint i) const; + void setGrayed(uint i, bool g); + bool getGrayed(uint i) const; void removeText(uint nPos); uint getNumTexts() const {return (uint)_Texts.size();} void sortText(); @@ -132,6 +134,7 @@ namespace NLGUI sint32 _NotLinkedToDBSelection; std::vector > _Texts; std::vector _Textures; + std::vector _Grayed; // Action Handler called on combo click std::string _AHOnSelectStart; diff --git a/code/nel/include/nel/gui/group_html.h b/code/nel/include/nel/gui/group_html.h index 5cc632a4e..635136220 100644 --- a/code/nel/include/nel/gui/group_html.h +++ b/code/nel/include/nel/gui/group_html.h @@ -34,6 +34,7 @@ namespace NLGUI class CCtrlButton; class CCtrlScroll; class CGroupList; + class CGroupMenu; class CDBGroupComboBox; class CGroupParagraph; @@ -189,6 +190,7 @@ namespace NLGUI std::string DefaultFormTextGroup; std::string DefaultFormTextAreaGroup; std::string DefaultFormSelectGroup; + std::string DefaultFormSelectBoxMenuGroup; std::string DefaultCheckBoxBitmapNormal; std::string DefaultCheckBoxBitmapPushed; std::string DefaultCheckBoxBitmapOver; @@ -345,6 +347,7 @@ namespace NLGUI // Add a combo box in the current paragraph CDBGroupComboBox *addComboBox(const std::string &templateName, const char *name); + CGroupMenu *addSelectBox(const std::string &templateName, const char *name); // Add a button in the current paragraph. actionHandler, actionHandlerParams and tooltip can be NULL. CCtrlButton *addButton(CCtrlButton::EType type, const std::string &name, const std::string &normalBitmap, const std::string &pushedBitmap, @@ -409,6 +412,10 @@ namespace NLGUI double _TimeoutValue; // the timeout in seconds double _ConnectingTimeout; sint _RedirectsRemaining; + // Automatic page refresh + double _LastRefreshTime; + double _NextRefreshTime; + std::string _RefreshUrl; // minimal embeded lua script support // Note : any embeded script is executed immediately after the closing @@ -626,6 +633,10 @@ namespace NLGUI TextArea = NULL; Checkbox = NULL; ComboBox = NULL; + SelectBox = NULL; + sbRBRef = NULL; + sbMultiple = false; + sbOptionDisabled = -1; InitialSelection = 0; } @@ -644,6 +655,19 @@ namespace NLGUI // Combobox group CDBGroupComboBox *ComboBox; + // Combobox with multiple selection or display size >= 2 + CGroupMenu *SelectBox; + + // Single or multiple selections for SelectBox + bool sbMultiple; + + // Marks OPTION element as disabled + // Only valid when parsing html + sint sbOptionDisabled; + + // First radio button in SelectBox if single selection + CCtrlBaseButton *sbRBRef; + // select values (for the