diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index fbd70c842..d2a5cb014 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -171,6 +171,7 @@ MACRO(NL_SETUP_DEFAULT_OPTIONS) OPTION(WITH_STATIC "With static libraries." OFF) ENDIF(WIN32) OPTION(WITH_STATIC_DRIVERS "With static drivers." OFF) + OPTION(WITH_STATIC_EXTERNAL "With static external libraries" OFF) ### # GUI toolkits @@ -522,6 +523,14 @@ MACRO(SETUP_EXTERNAL) STRING(REGEX REPLACE "VC/bin/.+" "VC" VC_DIR ${CMAKE_CXX_COMPILER}) ENDIF(${CMAKE_MAKE_PROGRAM} MATCHES "Common7") ENDIF(MSVC10) + ELSE(WIN32) + IF(CMAKE_FIND_LIBRARY_SUFFIXES AND NOT APPLE) + IF(WITH_STATIC_EXTERNAL) + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + ELSE(WITH_STATIC_EXTERNAL) + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so") + ENDIF(WITH_STATIC_EXTERNAL AND NOT APPLE) + ENDIF(CMAKE_FIND_LIBRARY_SUFFIXES) ENDIF(WIN32) IF(WITH_STLPORT) diff --git a/code/nel/tools/3d/object_viewer_qt/src/main.cpp b/code/nel/tools/3d/object_viewer_qt/src/main.cpp index 15173fa5c..050b7716c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/main.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/main.cpp @@ -124,6 +124,7 @@ sint main(int argc, char **argv) nlinfo("Welcome to NeL Object Viewer Qt!"); } + QApplication::setGraphicsSystem("raster"); QApplication app(argc, argv); QSplashScreen *splash = new QSplashScreen(); splash->setPixmap(QPixmap(":/images/nel_ide_load.png")); diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.qrc b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.qrc index a4c87d29c..68b6ad141 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.qrc +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core.qrc @@ -1,6 +1,8 @@ icons/ic_nel_add_item.png + icons/ic_nel_redo.png + icons/ic_nel_undo.png icons/ic_nel_crash.png icons/ic_nel_delete_item.png icons/ic_nel_down_item.png diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core_constants.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core_constants.h index 2acf4f731..be6e666a7 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core_constants.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/core_constants.h @@ -110,6 +110,8 @@ const char * const ICON_NEW = ":/core/icons/ic_nel_new.png"; const char * const ICON_SAVE = ":/core/icons/ic_nel_save.png"; const char * const ICON_SAVE_AS = ":/core/icons/ic_nel_save_as.png"; const char * const ICON_CRASH = ":/core/icons/ic_nel_crash.png"; +const char * const ICON_UNDO = ":/core/icons/ic_nel_undo.png"; +const char * const ICON_REDO = ":/core/icons/ic_nel_redo.png"; } // namespace Constants } // namespace Core diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icons/ic_nel_redo.png b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icons/ic_nel_redo.png new file mode 100644 index 000000000..19ccf20f1 Binary files /dev/null and b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icons/ic_nel_redo.png differ diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icons/ic_nel_undo.png b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icons/ic_nel_undo.png new file mode 100644 index 000000000..d605e4602 Binary files /dev/null and b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/icons/ic_nel_undo.png differ diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.cpp index 21334f7ea..caaeb4d5c 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.cpp @@ -30,6 +30,7 @@ // Qt includes #include +#include #include namespace Core @@ -382,8 +383,17 @@ void MainWindow::createMenus() m_fileMenu->addAction(m_exitAction); m_editMenu = m_menuBar->addMenu(tr("&Edit")); - m_editMenu->addAction(m_undoGroup->createUndoAction(this)); - m_editMenu->addAction(m_undoGroup->createRedoAction(this)); + QAction *undoAction = m_undoGroup->createUndoAction(this); + menuManager()->registerAction(undoAction, Constants::UNDO); + undoAction->setIcon(QIcon(Constants::ICON_UNDO)); + undoAction->setShortcut(QKeySequence::Undo); + QAction *redoAction = m_undoGroup->createRedoAction(this); + menuManager()->registerAction(redoAction, Constants::REDO); + redoAction->setIcon(QIcon(Constants::ICON_REDO)); + redoAction->setShortcut(QKeySequence::Redo); + m_editMenu->addAction(undoAction); + m_editMenu->addAction(redoAction); + m_editMenu->addSeparator(); m_editMenu->addAction(m_cutAction); m_editMenu->addAction(m_copyAction); @@ -398,6 +408,7 @@ void MainWindow::createMenus() m_viewMenu = m_menuBar->addMenu(tr("&View")); m_viewMenu->addAction(m_fullscreenAction); + m_viewMenu->addAction(m_dockWidget->toggleViewAction()); menuManager()->registerMenu(m_viewMenu, Constants::M_VIEW); m_toolsMenu = m_menuBar->addMenu(tr("&Tools")); @@ -427,6 +438,13 @@ void MainWindow::createStatusBar() void MainWindow::createDialogs() { m_pluginView = new ExtensionSystem::CPluginView(m_pluginManager, this); + + // Create undo/redo command list + m_dockWidget = new QDockWidget("Command List", this); + m_dockWidget->setObjectName(QString::fromUtf8("UndoRedoCommandDockWidget")); + QUndoView *undoView = new QUndoView(m_undoGroup, m_dockWidget); + m_dockWidget->setWidget(undoView); + addDockWidget(Qt::RightDockWidgetArea, m_dockWidget); } void MainWindow::readSettings() diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.h index ce439b885..d594692ee 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/core/main_window.h @@ -101,6 +101,7 @@ private: QPalette m_originalPalette; QString m_lastDir; + QDockWidget *m_dockWidget; QUndoGroup *m_undoGroup; QSettings *m_settings; diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_plugin.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_plugin.cpp index 2f88200ec..f31a63924 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_plugin.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_plugin.cpp @@ -68,7 +68,7 @@ namespace Plugin { Q_UNUSED(errorString); m_plugMan = pluginManager; - m_logSettingsPage = new CLogSettingsPage(this); + m_logSettingsPage = new CLogSettingsPage(this, this); addAutoReleasedObject(m_logSettingsPage); return true; } diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_settings_page.cpp b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_settings_page.cpp index f75d6ab37..3aba359a5 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_settings_page.cpp +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_settings_page.cpp @@ -38,8 +38,9 @@ namespace Plugin class CLogPlugin; - CLogSettingsPage::CLogSettingsPage(QObject *parent) + CLogSettingsPage::CLogSettingsPage(CLogPlugin *logPlugin, QObject *parent) : IOptionsPage(parent), + m_logPlugin(logPlugin), m_currentPage(NULL), m_error(true), m_warning(true), @@ -98,13 +99,7 @@ namespace Plugin m_info = m_ui.infoCheck->isChecked(); writeSettings(); - ExtensionSystem::IPluginManager *p = Core::ICore::instance()->pluginManager(); - ExtensionSystem::IPlugin *plugin = p->pluginByName("LogPlugin")->plugin(); - CLogPlugin* lp = dynamic_cast(plugin); - if (lp) - { - lp->setDisplayers(); - } + m_logPlugin->setDisplayers(); } void CLogSettingsPage::readSettings() diff --git a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_settings_page.h b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_settings_page.h index 2c0c5ed98..b8a5fd604 100644 --- a/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_settings_page.h +++ b/code/nel/tools/3d/object_viewer_qt/src/plugins/log/log_settings_page.h @@ -29,6 +29,8 @@ class QWidget; namespace Plugin { + class CLogPlugin; + /** @class CLogSettingsPage */ @@ -36,7 +38,7 @@ namespace Plugin { Q_OBJECT public: - CLogSettingsPage(QObject *parent = 0); + CLogSettingsPage(CLogPlugin *logPlugin, QObject *parent = 0); virtual ~CLogSettingsPage() {} virtual QString id() const; @@ -53,6 +55,7 @@ namespace Plugin void readSettings(); void writeSettings(); + CLogPlugin *m_logPlugin; QWidget *m_currentPage; Ui::CLogSettingsPage m_ui; diff --git a/code/ryzom/client/client_default.cfg.in b/code/ryzom/client/client_default.cfg.in index dad9e3ccb..8ae0117a5 100644 --- a/code/ryzom/client/client_default.cfg.in +++ b/code/ryzom/client/client_default.cfg.in @@ -239,14 +239,14 @@ SkinNbMaxPoly_ps1 = 70000; SkinNbMaxPoly_ps2 = 100000; SkinNbMaxPoly_ps3 = 200000; -NbMaxSkeletonNotCLod = 50; +NbMaxSkeletonNotCLod = 125; NbMaxSkeletonNotCLod_min = 5; -NbMaxSkeletonNotCLod_max = 100; +NbMaxSkeletonNotCLod_max = 255; NbMaxSkeletonNotCLod_step = 5; NbMaxSkeletonNotCLod_ps0 = 10; -NbMaxSkeletonNotCLod_ps1 = 25; -NbMaxSkeletonNotCLod_ps2 = 50; -NbMaxSkeletonNotCLod_ps3 = 100; +NbMaxSkeletonNotCLod_ps1 = 50; +NbMaxSkeletonNotCLod_ps2 = 125; +NbMaxSkeletonNotCLod_ps3 = 255; CharacterFarClip = 200.0; CharacterFarClip_min = 50.0; @@ -386,21 +386,21 @@ SystemInfoColors = }; PrintfCommands = { - "52", "15", "55 55 0 255", "28", "uiChapterIV", "624", + "52", "15", "55 55 0 255", "28", "uiChapterV", "624", "428", "0 0 0 255", "18", "", "624", "378", "0 0 0 255", "14", "", "644", "278", "0 0 0 255", "18", "", "52", "17", "255 255 255 255", "28", - "uiChapterIV", "622", "430", "255 255 255 255", "18", "", + "uiChapterV", "622", "430", "255 255 255 255", "18", "", "622", "380", "255 255 255 255", "14", "", "642", "280", "255 255 255 255", "18", "" }; PrintfCommandsFreeTrial = { - "52", "15", "55 55 0 255", "28", "uiChapterIV", "624", + "52", "15", "55 55 0 255", "28", "uiChapterV", "624", "428", "0 0 0 255", "18", "", "624", "378", "0 0 0 255", "14", "", "644", "278", "0 0 0 255", "18", "", "52", "17", "255 255 255 255", "28", - "uiChapterIV", "622", "430", "255 255 255 255", "18", "", + "uiChapterV", "622", "430", "255 255 255 255", "18", "", "622", "380", "255 255 255 255", "14", "", "642", "280", "255 255 255 255", "18", "" }; diff --git a/code/ryzom/client/src/character_cl.cpp b/code/ryzom/client/src/character_cl.cpp index 6130f2b60..1d7c87c2a 100644 --- a/code/ryzom/client/src/character_cl.cpp +++ b/code/ryzom/client/src/character_cl.cpp @@ -4484,8 +4484,9 @@ bool CCharacterCL::isCurrentBehaviourAttackEnd() const case MBEHAV::AREA_ATTACK: return true; default: - return false; + break; } + return false; } diff --git a/code/ryzom/client/src/interface_v3/action_handler_game.cpp b/code/ryzom/client/src/interface_v3/action_handler_game.cpp index f358fa3fd..22d65d138 100644 --- a/code/ryzom/client/src/interface_v3/action_handler_game.cpp +++ b/code/ryzom/client/src/interface_v3/action_handler_game.cpp @@ -48,6 +48,7 @@ #include "view_bitmap.h" #include "action_handler_tools.h" #include "../connection.h" +#include "../client_chat_manager.h" // Game specific includes #include "../motion/user_controls.h" @@ -99,6 +100,8 @@ extern bool IsInRingSession; // Context help extern void contextHelp (const std::string &help); +extern CClientChatManager ChatMngr; + void beastOrder (const std::string &orderStr, const std::string &beastIndexStr, bool confirmFree = true); @@ -973,6 +976,9 @@ public: // Create the message for the server to execute a phrase. sendMsgToServer("GUILD:QUIT"); CGuildManager::getInstance()->closeAllInterfaces(); + + if (PeopleInterraction.TheUserChat.Filter.getTargetGroup() == CChatGroup::guild) + ChatMngr.updateChatModeAndButton(CChatGroup::say); } }; REGISTER_ACTION_HANDLER( CHandlerDoQuitGuild, "do_quit_guild"); diff --git a/code/ryzom/client/src/interface_v3/dbview_number.cpp b/code/ryzom/client/src/interface_v3/dbview_number.cpp index ebfda110e..8ca6e7c94 100644 --- a/code/ryzom/client/src/interface_v3/dbview_number.cpp +++ b/code/ryzom/client/src/interface_v3/dbview_number.cpp @@ -79,6 +79,10 @@ bool CDBViewNumber::parse (xmlNodePtr cur, CInterfaceGroup * parentGroup) if (ptr) _Positive = convertBool(ptr); else _Positive = false; + ptr = xmlGetProp (cur, (xmlChar*)"format"); + if (ptr) _Format = convertBool(ptr); + else _Format = false; + ptr = xmlGetProp (cur, (xmlChar*)"divisor"); if (ptr) fromString((const char*)ptr, _Divisor); @@ -98,6 +102,30 @@ bool CDBViewNumber::parse (xmlNodePtr cur, CInterfaceGroup * parentGroup) return true; } +// *************************************************************************** +// Helper function +ucstring formatThousands(const ucstring& s, const ucstring& separator) +{ + int j; + int k; + int topI = s.length() - 1; + + if (topI < 4) return s; + + ucstring ns; + do + { + for (j = topI, k = 0; j >= 0 && k < 3; --j, ++k ) + { + ns = s[j] + ns; // new char is added to front of ns + if( j > 0 && k == 2) ns = separator + ns; // j > 0 means still more digits + } + topI -= 3; + + } while(topI >= 0); + return ns; +} + // *************************************************************************** void CDBViewNumber::checkCoords() { @@ -106,8 +134,10 @@ void CDBViewNumber::checkCoords() if (_Cache != val) { _Cache= val; - if (_Positive) setText(val >= 0 ? ((string)_Prefix)+toString(val)+(string)_Suffix : "?"); - else setText( ((string)_Prefix)+toString(val)+(string)_Suffix ); + static ucstring separator = NLMISC::CI18N::get("uiThousandsSeparator"); + ucstring value = _Format ? formatThousands(toString(val), separator) : toString(val); + if (_Positive) setText(val >= 0 ? ( ucstring(_Prefix) + value + ucstring(_Suffix) ) : ucstring("?")); + else setText( ucstring(_Prefix) + value + ucstring(_Suffix) ); } } diff --git a/code/ryzom/client/src/interface_v3/dbview_number.h b/code/ryzom/client/src/interface_v3/dbview_number.h index 724209e73..1c7079f06 100644 --- a/code/ryzom/client/src/interface_v3/dbview_number.h +++ b/code/ryzom/client/src/interface_v3/dbview_number.h @@ -57,6 +57,7 @@ protected: CInterfaceProperty _Number; sint64 _Cache; bool _Positive; // only positive values are displayed + bool _Format; // the number will be formatted (like "1,000,000") if >= 10k sint64 _Divisor, _Modulo; // string to append to the value (eg: meters) CStringShared _Suffix; diff --git a/code/ryzom/client/src/interface_v3/group_html.cpp b/code/ryzom/client/src/interface_v3/group_html.cpp index 30c089aae..487344508 100644 --- a/code/ryzom/client/src/interface_v3/group_html.cpp +++ b/code/ryzom/client/src/interface_v3/group_html.cpp @@ -3540,7 +3540,8 @@ int CGroupHTML::luaShowDiv(CLuaState &ls) CLuaIHM::checkArgType(ls, funcName, 1, LUA_TSTRING); CLuaIHM::checkArgType(ls, funcName, 2, LUA_TBOOLEAN); - if (!_Groups.empty()) { + if (!_Groups.empty()) + { for (uint i=0; i<_Groups.size(); i++) { CInterfaceGroup *group = _Groups[i]; diff --git a/code/ryzom/client/src/interface_v3/guild_manager.cpp b/code/ryzom/client/src/interface_v3/guild_manager.cpp index 6abd0c029..c9bb4ec01 100644 --- a/code/ryzom/client/src/interface_v3/guild_manager.cpp +++ b/code/ryzom/client/src/interface_v3/guild_manager.cpp @@ -29,7 +29,6 @@ #include "group_html.h" #include "../init_main_loop.h" #include "inventory_manager.h" -#include "../client_chat_manager.h" #include "../connection.h" #include "../entity_cl.h" @@ -49,7 +48,6 @@ using namespace std; using namespace NLMISC; extern CPeopleInterraction PeopleInterraction; -extern CClientChatManager ChatMngr; NLMISC_REGISTER_OBJECT(CViewBase, CDBGroupListAscensor, std::string, "list_sheet_guild"); @@ -541,10 +539,6 @@ void CGuildManager::closeAllInterfaces() CGroupContainer *pGuildChat = dynamic_cast(pIM->getElementFromId(WIN_GUILD_CHAT)); if (pGuildChat != NULL) pGuildChat->setActive(false); - - if (PeopleInterraction.TheUserChat.Filter.getTargetGroup() == CChatGroup::guild) - ChatMngr.updateChatModeAndButton(CChatGroup::say); - } // *************************************************************************** diff --git a/code/ryzom/client/src/interface_v3/interface_manager.cpp b/code/ryzom/client/src/interface_v3/interface_manager.cpp index c4e238141..9762193d9 100644 --- a/code/ryzom/client/src/interface_v3/interface_manager.cpp +++ b/code/ryzom/client/src/interface_v3/interface_manager.cpp @@ -1390,7 +1390,7 @@ void CInterfaceManager::runActionHandler (const string &ahCmdLine, CCtrlBase *pC if(!ahUserParams.empty()) ahParams= ahUserParams; - // Execute the action hanlder + // Execute the action handler CActionHandlerFactoryManager *pAHFM = CActionHandlerFactoryManager::getInstance(); map::iterator it = pAHFM->FactoryMap.find (ahName); if (it == pAHFM->FactoryMap.end())