merge default to gsoc2011_worldeditorqt
--HG-- branch : gsoc2011-worldeditorqt
This commit is contained in:
commit
90ae61996e
57 changed files with 1726 additions and 409 deletions
|
@ -288,6 +288,26 @@ MACRO(NL_SETUP_BUILD)
|
||||||
ENDIF(CMAKE_BUILD_TYPE MATCHES "Release")
|
ENDIF(CMAKE_BUILD_TYPE MATCHES "Release")
|
||||||
ENDIF(CMAKE_BUILD_TYPE MATCHES "Debug")
|
ENDIF(CMAKE_BUILD_TYPE MATCHES "Debug")
|
||||||
|
|
||||||
|
# Determine target CPU
|
||||||
|
# IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86")
|
||||||
|
IF(NOT CMAKE_SIZEOF_VOID_P)
|
||||||
|
INCLUDE (CheckTypeSize)
|
||||||
|
CHECK_TYPE_SIZE("void*" CMAKE_SIZEOF_VOID_P)
|
||||||
|
ENDIF(NOT CMAKE_SIZEOF_VOID_P)
|
||||||
|
|
||||||
|
# Using 32 or 64 bits libraries
|
||||||
|
SET(TARGET_X86 1)
|
||||||
|
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||||
|
SET(ARCH "x86_64")
|
||||||
|
SET(TARGET_X64 1)
|
||||||
|
ADD_DEFINITIONS(-DHAVE_X86_64)
|
||||||
|
ELSE(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||||
|
SET(ARCH "x86")
|
||||||
|
ADD_DEFINITIONS(-DHAVE_X86)
|
||||||
|
ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||||
|
# ADD_DEFINITIONS(-DHAVE_IA64)
|
||||||
|
# ENDIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86")
|
||||||
|
|
||||||
IF(WIN32)
|
IF(WIN32)
|
||||||
IF(MSVC10)
|
IF(MSVC10)
|
||||||
# /Ox is working with VC++ 2010, but custom optimizations don't exist
|
# /Ox is working with VC++ 2010, but custom optimizations don't exist
|
||||||
|
@ -301,14 +321,24 @@ MACRO(NL_SETUP_BUILD)
|
||||||
SET(MIN_OPTIMIZATIONS "/Ob1")
|
SET(MIN_OPTIMIZATIONS "/Ob1")
|
||||||
ENDIF(MSVC10)
|
ENDIF(MSVC10)
|
||||||
|
|
||||||
SET(PLATFORM_CFLAGS "/D_CRT_SECURE_NO_WARNINGS /DWIN32 /D_WINDOWS /W3 /Zi /Zm1000 /MP")
|
SET(PLATFORM_CFLAGS "/D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DWIN32 /D_WINDOWS /W3 /Zi /Zm1000 /MP /Gy-")
|
||||||
|
|
||||||
# Exceptions are only set for C++
|
|
||||||
SET(PLATFORM_CXXFLAGS "${PLATFORM_CFLAGS} /EHa")
|
|
||||||
|
|
||||||
# Common link flags
|
# Common link flags
|
||||||
SET(PLATFORM_LINKFLAGS "-DEBUG")
|
SET(PLATFORM_LINKFLAGS "-DEBUG")
|
||||||
|
|
||||||
|
IF(TARGET_X64)
|
||||||
|
# Fix a bug with Intellisense
|
||||||
|
SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} /D_WIN64")
|
||||||
|
# Fix a compilation error for some big C++ files
|
||||||
|
SET(MIN_OPTIMIZATIONS "${MIN_OPTIMIZATIONS} /bigobj")
|
||||||
|
ELSE(TARGET_X64)
|
||||||
|
# Allows 32 bits applications to use 3 GB of RAM
|
||||||
|
SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /LARGEADDRESSAWARE")
|
||||||
|
ENDIF(TARGET_X64)
|
||||||
|
|
||||||
|
# Exceptions are only set for C++
|
||||||
|
SET(PLATFORM_CXXFLAGS "${PLATFORM_CFLAGS} /EHa")
|
||||||
|
|
||||||
SET(NL_DEBUG_CFLAGS "/MDd /RTC1 /D_DEBUG ${MIN_OPTIMIZATIONS}")
|
SET(NL_DEBUG_CFLAGS "/MDd /RTC1 /D_DEBUG ${MIN_OPTIMIZATIONS}")
|
||||||
SET(NL_RELEASE_CFLAGS "/MD /D NDEBUG ${SPEED_OPTIMIZATIONS}")
|
SET(NL_RELEASE_CFLAGS "/MD /D NDEBUG ${SPEED_OPTIMIZATIONS}")
|
||||||
SET(NL_DEBUG_LINKFLAGS "/NODEFAULTLIB:msvcrt /INCREMENTAL:YES")
|
SET(NL_DEBUG_LINKFLAGS "/NODEFAULTLIB:msvcrt /INCREMENTAL:YES")
|
||||||
|
@ -331,29 +361,7 @@ MACRO(NL_SETUP_BUILD)
|
||||||
|
|
||||||
SET(NL_DEBUG_CFLAGS "-DNL_DEBUG -D_DEBUG")
|
SET(NL_DEBUG_CFLAGS "-DNL_DEBUG -D_DEBUG")
|
||||||
SET(NL_RELEASE_CFLAGS "-DNL_RELEASE -DNDEBUG -O6")
|
SET(NL_RELEASE_CFLAGS "-DNL_RELEASE -DNDEBUG -O6")
|
||||||
|
|
||||||
ENDIF(WIN32)
|
ENDIF(WIN32)
|
||||||
|
|
||||||
# Determine target CPU
|
|
||||||
# IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86")
|
|
||||||
IF(NOT CMAKE_SIZEOF_VOID_P)
|
|
||||||
INCLUDE (CheckTypeSize)
|
|
||||||
CHECK_TYPE_SIZE("void*" CMAKE_SIZEOF_VOID_P)
|
|
||||||
ENDIF(NOT CMAKE_SIZEOF_VOID_P)
|
|
||||||
|
|
||||||
# Using 32 or 64 bits libraries
|
|
||||||
SET(TARGET_X86 1)
|
|
||||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
||||||
SET(ARCH "x86_64")
|
|
||||||
SET(TARGET_X64 1)
|
|
||||||
ADD_DEFINITIONS(-DHAVE_X86_64)
|
|
||||||
ELSE(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
||||||
SET(ARCH "x86")
|
|
||||||
ADD_DEFINITIONS(-DHAVE_X86)
|
|
||||||
ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
||||||
# ADD_DEFINITIONS(-DHAVE_IA64)
|
|
||||||
# ENDIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86")
|
|
||||||
|
|
||||||
ENDMACRO(NL_SETUP_BUILD)
|
ENDMACRO(NL_SETUP_BUILD)
|
||||||
|
|
||||||
MACRO(NL_SETUP_BUILD_FLAGS)
|
MACRO(NL_SETUP_BUILD_FLAGS)
|
||||||
|
|
|
@ -945,10 +945,13 @@ inline CSString operator+(const char* s0,const CSString& s1)
|
||||||
return CSString(s0)+s1;
|
return CSString(s0)+s1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef NL_COMP_VC10
|
||||||
|
// TODO: check if it can be disabled for other compilers too
|
||||||
inline CSString operator+(const std::string& s0,const CSString& s1)
|
inline CSString operator+(const std::string& s0,const CSString& s1)
|
||||||
{
|
{
|
||||||
return s0+static_cast<const std::string&>(s1);
|
return s0+static_cast<const std::string&>(s1);
|
||||||
}
|
}
|
||||||
|
#endif // NL_COMP_VC10
|
||||||
|
|
||||||
} // NLMISC
|
} // NLMISC
|
||||||
|
|
||||||
|
|
|
@ -318,7 +318,7 @@ bool CDriverD3D::setupMaterial(CMaterial &mat)
|
||||||
if (!mat._MatDrvInfo)
|
if (!mat._MatDrvInfo)
|
||||||
{
|
{
|
||||||
// Insert into driver list. (so it is deleted when driver is deleted).
|
// Insert into driver list. (so it is deleted when driver is deleted).
|
||||||
ItMatDrvInfoPtrList it= _MatDrvInfos.insert(_MatDrvInfos.end(), NULL);
|
ItMatDrvInfoPtrList it= _MatDrvInfos.insert(_MatDrvInfos.end(), (NL3D::IMaterialDrvInfos*)NULL);
|
||||||
|
|
||||||
*it = mat._MatDrvInfo = new CMaterialDrvInfosD3D(this, it);
|
*it = mat._MatDrvInfo = new CMaterialDrvInfosD3D(this, it);
|
||||||
|
|
||||||
|
|
|
@ -347,7 +347,7 @@ bool CDriverD3D::activeShader(CShader *shd)
|
||||||
if ( !shd->_DrvInfo )
|
if ( !shd->_DrvInfo )
|
||||||
{
|
{
|
||||||
// insert into driver list. (so it is deleted when driver is deleted).
|
// insert into driver list. (so it is deleted when driver is deleted).
|
||||||
ItShaderDrvInfoPtrList it= _ShaderDrvInfos.insert(_ShaderDrvInfos.end(), NULL);
|
ItShaderDrvInfoPtrList it= _ShaderDrvInfos.insert(_ShaderDrvInfos.end(), (NL3D::IShaderDrvInfos*)NULL);
|
||||||
// create and set iterator, for future deletion.
|
// create and set iterator, for future deletion.
|
||||||
shaderInfo = new CShaderDrvInfosD3D(this, it);
|
shaderInfo = new CShaderDrvInfosD3D(this, it);
|
||||||
*it= shd->_DrvInfo = shaderInfo;
|
*it= shd->_DrvInfo = shaderInfo;
|
||||||
|
|
|
@ -514,7 +514,7 @@ bool CDriverD3D::setupTextureEx (ITexture& tex, bool bUpload, bool &bAllUploaded
|
||||||
if ( !tex.TextureDrvShare )
|
if ( !tex.TextureDrvShare )
|
||||||
{
|
{
|
||||||
// insert into driver list. (so it is deleted when driver is deleted).
|
// insert into driver list. (so it is deleted when driver is deleted).
|
||||||
ItTexDrvSharePtrList it= _TexDrvShares.insert(_TexDrvShares.end(), NULL);
|
ItTexDrvSharePtrList it= _TexDrvShares.insert(_TexDrvShares.end(), (NL3D::CTextureDrvShare*)NULL);
|
||||||
// create and set iterator, for future deletion.
|
// create and set iterator, for future deletion.
|
||||||
*it= tex.TextureDrvShare= new CTextureDrvShare(this, it, &tex);
|
*it= tex.TextureDrvShare= new CTextureDrvShare(this, it, &tex);
|
||||||
|
|
||||||
|
|
|
@ -276,7 +276,7 @@ bool CDriverGL::setupMaterial(CMaterial& mat)
|
||||||
if (!mat._MatDrvInfo)
|
if (!mat._MatDrvInfo)
|
||||||
{
|
{
|
||||||
// insert into driver list. (so it is deleted when driver is deleted).
|
// insert into driver list. (so it is deleted when driver is deleted).
|
||||||
ItMatDrvInfoPtrList it= _MatDrvInfos.insert(_MatDrvInfos.end(), NULL);
|
ItMatDrvInfoPtrList it= _MatDrvInfos.insert(_MatDrvInfos.end(), (NL3D::IMaterialDrvInfos*)NULL);
|
||||||
// create and set iterator, for future deletion.
|
// create and set iterator, for future deletion.
|
||||||
*it= mat._MatDrvInfo= new CShaderGL(this, it);
|
*it= mat._MatDrvInfo= new CShaderGL(this, it);
|
||||||
|
|
||||||
|
|
|
@ -626,7 +626,7 @@ bool CDriverGL::setupTextureEx (ITexture& tex, bool bUpload, bool &bAllUploaded,
|
||||||
{
|
{
|
||||||
//nldebug("3D: creating CTextureDrvShare()");
|
//nldebug("3D: creating CTextureDrvShare()");
|
||||||
// insert into driver list. (so it is deleted when driver is deleted).
|
// insert into driver list. (so it is deleted when driver is deleted).
|
||||||
ItTexDrvSharePtrList it= _TexDrvShares.insert(_TexDrvShares.end(), NULL);
|
ItTexDrvSharePtrList it= _TexDrvShares.insert(_TexDrvShares.end(), (NL3D::CTextureDrvShare*)NULL);
|
||||||
// create and set iterator, for future deletion.
|
// create and set iterator, for future deletion.
|
||||||
*it= tex.TextureDrvShare= new CTextureDrvShare(this, it, &tex);
|
*it= tex.TextureDrvShare= new CTextureDrvShare(this, it, &tex);
|
||||||
|
|
||||||
|
|
|
@ -140,7 +140,7 @@ bool CDriverGL::setupVertexBuffer(CVertexBuffer& VB)
|
||||||
// 1. Retrieve/Create driver shader.
|
// 1. Retrieve/Create driver shader.
|
||||||
//==================================
|
//==================================
|
||||||
// insert into driver list. (so it is deleted when driver is deleted).
|
// insert into driver list. (so it is deleted when driver is deleted).
|
||||||
ItVBDrvInfoPtrList it= _VBDrvInfos.insert(_VBDrvInfos.end(), NULL);
|
ItVBDrvInfoPtrList it= _VBDrvInfos.insert(_VBDrvInfos.end(), (NL3D::IVBDrvInfos*)NULL);
|
||||||
// create and set iterator, for future deletion.
|
// create and set iterator, for future deletion.
|
||||||
CVBDrvInfosGL *info = new CVBDrvInfosGL(this, it, &VB);
|
CVBDrvInfosGL *info = new CVBDrvInfosGL(this, it, &VB);
|
||||||
*it= VB.DrvInfos = info;
|
*it= VB.DrvInfos = info;
|
||||||
|
|
|
@ -111,7 +111,7 @@ bool CDriverGL::activeNVVertexProgram (CVertexProgram *program)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Insert into driver list. (so it is deleted when driver is deleted).
|
// Insert into driver list. (so it is deleted when driver is deleted).
|
||||||
ItVtxPrgDrvInfoPtrList it= _VtxPrgDrvInfos.insert(_VtxPrgDrvInfos.end(), NULL);
|
ItVtxPrgDrvInfoPtrList it= _VtxPrgDrvInfos.insert(_VtxPrgDrvInfos.end(), (NL3D::IVertexProgramDrvInfos*)NULL);
|
||||||
|
|
||||||
// Create a driver info
|
// Create a driver info
|
||||||
*it = drvInfo = new CVertexProgamDrvInfosGL (this, it);
|
*it = drvInfo = new CVertexProgamDrvInfosGL (this, it);
|
||||||
|
@ -1472,7 +1472,7 @@ bool CDriverGL::activeARBVertexProgram (CVertexProgram *program)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Insert into driver list. (so it is deleted when driver is deleted).
|
// Insert into driver list. (so it is deleted when driver is deleted).
|
||||||
ItVtxPrgDrvInfoPtrList it= _VtxPrgDrvInfos.insert(_VtxPrgDrvInfos.end(), NULL);
|
ItVtxPrgDrvInfoPtrList it= _VtxPrgDrvInfos.insert(_VtxPrgDrvInfos.end(), (NL3D::IVertexProgramDrvInfos*)NULL);
|
||||||
|
|
||||||
// Create a driver info
|
// Create a driver info
|
||||||
*it = drvInfo = new CVertexProgamDrvInfosGL (this, it);
|
*it = drvInfo = new CVertexProgamDrvInfosGL (this, it);
|
||||||
|
@ -1554,7 +1554,7 @@ bool CDriverGL::activeEXTVertexShader (CVertexProgram *program)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Insert into driver list. (so it is deleted when driver is deleted).
|
// Insert into driver list. (so it is deleted when driver is deleted).
|
||||||
ItVtxPrgDrvInfoPtrList it= _VtxPrgDrvInfos.insert(_VtxPrgDrvInfos.end(), NULL);
|
ItVtxPrgDrvInfoPtrList it= _VtxPrgDrvInfos.insert(_VtxPrgDrvInfos.end(), (NL3D::IVertexProgramDrvInfos*)NULL);
|
||||||
|
|
||||||
// Create a driver info
|
// Create a driver info
|
||||||
*it = drvInfo = new CVertexProgamDrvInfosGL (this, it);
|
*it = drvInfo = new CVertexProgamDrvInfosGL (this, it);
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "nel/misc/bit_mem_stream.h"
|
#include "nel/misc/bit_mem_stream.h"
|
||||||
//
|
//
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <iterator>
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -969,14 +969,12 @@ void force_exception_frame(...) {std::cout.flush();}
|
||||||
static void exceptionTranslator(unsigned, EXCEPTION_POINTERS *pexp)
|
static void exceptionTranslator(unsigned, EXCEPTION_POINTERS *pexp)
|
||||||
{
|
{
|
||||||
#ifndef NL_NO_DEBUG_FILES
|
#ifndef NL_NO_DEBUG_FILES
|
||||||
FILE *file = fopen ("exception_catched", "wb");
|
CFile::createEmptyFile(getLogDirectory() + "exception_catched");
|
||||||
fclose (file);
|
|
||||||
#endif
|
#endif
|
||||||
if (pexp->ExceptionRecord->ExceptionCode == EXCEPTION_BREAKPOINT)
|
if (pexp->ExceptionRecord->ExceptionCode == EXCEPTION_BREAKPOINT)
|
||||||
{
|
{
|
||||||
#ifndef NL_NO_DEBUG_FILES
|
#ifndef NL_NO_DEBUG_FILES
|
||||||
FILE *file2 = fopen ("breakpointed", "wb");
|
CFile::createEmptyFile(getLogDirectory() + "breakpointed");
|
||||||
fclose (file2);
|
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1683,12 +1681,18 @@ NLMISC_CATEGORISED_COMMAND(nel, writeaccess, "write a uint8 value in an invalid
|
||||||
uint8 val = 123;
|
uint8 val = 123;
|
||||||
uint8 *adr = (uint8*)0;
|
uint8 *adr = (uint8*)0;
|
||||||
if(args.size() >= 1)
|
if(args.size() >= 1)
|
||||||
|
{
|
||||||
#ifdef HAVE_X86_64
|
#ifdef HAVE_X86_64
|
||||||
adr = (uint8*)(uint64)atoi(args[0].c_str());
|
uint64 addr64;
|
||||||
|
NLMISC::fromString(args[0], addr64);
|
||||||
|
adr = (uint8*)addr64;
|
||||||
#else
|
#else
|
||||||
adr = (uint8*)atoi(args[0].c_str());
|
uint32 addr32;
|
||||||
|
NLMISC::fromString(args[0], addr32);
|
||||||
|
adr = (uint8*)addr32;
|
||||||
#endif
|
#endif
|
||||||
if(args.size() >= 2) val = (uint8)atoi(args[1].c_str());
|
}
|
||||||
|
if(args.size() >= 2) NLMISC::fromString(args[1], val);
|
||||||
*adr = val;
|
*adr = val;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1698,11 +1702,17 @@ NLMISC_CATEGORISED_COMMAND(nel, readaccess, "read a uint8 value in an invalid ad
|
||||||
uint8 val;
|
uint8 val;
|
||||||
uint8 *adr = (uint8*)0;
|
uint8 *adr = (uint8*)0;
|
||||||
if(args.size() == 1)
|
if(args.size() == 1)
|
||||||
|
{
|
||||||
#ifdef HAVE_X86_64
|
#ifdef HAVE_X86_64
|
||||||
adr = (uint8*)(uint64)atoi(args[0].c_str());
|
uint64 addr64;
|
||||||
|
NLMISC::fromString(args[0], addr64);
|
||||||
|
adr = (uint8*)addr64;
|
||||||
#else
|
#else
|
||||||
adr = (uint8*)atoi(args[0].c_str());
|
uint32 addr32;
|
||||||
|
NLMISC::fromString(args[0], addr32);
|
||||||
|
adr = (uint8*)addr32;
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
val = *adr;
|
val = *adr;
|
||||||
log.displayNL("value is %hu", (uint16)val);
|
log.displayNL("value is %hu", (uint16)val);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -836,7 +836,7 @@ void CAudioMixerUser::buildSampleBankList()
|
||||||
nlinfo("Compiling sample bank [%s]", bankname.c_str());
|
nlinfo("Compiling sample bank [%s]", bankname.c_str());
|
||||||
std::string filename = buildSampleBank(bankDir[i], sbp, bankname);
|
std::string filename = buildSampleBank(bankDir[i], sbp, bankname);
|
||||||
if (bankFile.size() < i + 1) bankFile.resize(i + 1);
|
if (bankFile.size() < i + 1) bankFile.resize(i + 1);
|
||||||
else bankFile.insert(bankFile.begin() + i, NULL);
|
else bankFile.insert(bankFile.begin() + i, std::string());
|
||||||
bankFile[i] = filename;
|
bankFile[i] = filename;
|
||||||
}
|
}
|
||||||
else if (bankname < CFile::getFilenameWithoutExtension(bankDir[i]))
|
else if (bankname < CFile::getFilenameWithoutExtension(bankDir[i]))
|
||||||
|
|
|
@ -77,7 +77,7 @@ void CSimpleSound::getSubSoundList(std::vector<std::pair<std::string, CSound*
|
||||||
{
|
{
|
||||||
// A little hack, we use the reference vector to tag unavailable sample.
|
// A little hack, we use the reference vector to tag unavailable sample.
|
||||||
if (!(_Buffername == CStringMapper::emptyId()) && const_cast<CSimpleSound*>(this)->getBuffer() == 0)
|
if (!(_Buffername == CStringMapper::emptyId()) && const_cast<CSimpleSound*>(this)->getBuffer() == 0)
|
||||||
subsounds.push_back(pair<string, CSound*>(CStringMapper::unmap(_Buffername)+" (sample)", 0));
|
subsounds.push_back(pair<string, CSound*>(CStringMapper::unmap(_Buffername)+" (sample)", (CSound*)NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <numeric>
|
#include <numeric>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
#include <iterator>
|
||||||
|
|
||||||
#include "nel/misc/vector.h"
|
#include "nel/misc/vector.h"
|
||||||
#include "nel/misc/path.h"
|
#include "nel/misc/path.h"
|
||||||
|
|
|
@ -6,3 +6,4 @@ ADD_SUBDIRECTORY(log)
|
||||||
ADD_SUBDIRECTORY(disp_sheet_id)
|
ADD_SUBDIRECTORY(disp_sheet_id)
|
||||||
ADD_SUBDIRECTORY(object_viewer)
|
ADD_SUBDIRECTORY(object_viewer)
|
||||||
ADD_SUBDIRECTORY(zone_painter)
|
ADD_SUBDIRECTORY(zone_painter)
|
||||||
|
ADD_SUBDIRECTORY(georges_editor)
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
<file>icons/ic_nel_down_item.png</file>
|
<file>icons/ic_nel_down_item.png</file>
|
||||||
<file>icons/ic_nel_generic_settings.png</file>
|
<file>icons/ic_nel_generic_settings.png</file>
|
||||||
<file>icons/ic_nel_open.png</file>
|
<file>icons/ic_nel_open.png</file>
|
||||||
|
<file>icons/ic_nel_new.png</file>
|
||||||
|
<file>icons/ic_nel_save.png</file>
|
||||||
|
<file>icons/ic_nel_save_as.png</file>
|
||||||
<file>icons/ic_nel_path_settings.png</file>
|
<file>icons/ic_nel_path_settings.png</file>
|
||||||
<file>icons/ic_nel_pill.png</file>
|
<file>icons/ic_nel_pill.png</file>
|
||||||
<file>icons/ic_nel_reset_all.png</file>
|
<file>icons/ic_nel_reset_all.png</file>
|
||||||
|
|
|
@ -80,11 +80,21 @@ const char * const LEVELDESIGN_PATH = "LevelDesignPath";
|
||||||
const char * const ASSETS_PATH = "AssetsPath";
|
const char * const ASSETS_PATH = "AssetsPath";
|
||||||
const char * const REMAP_EXTENSIONS = "RemapExtensions";
|
const char * const REMAP_EXTENSIONS = "RemapExtensions";
|
||||||
|
|
||||||
|
const char * const LOG_SECTION = "LogSettings";
|
||||||
|
const char * const LOG_ERROR = "LogError";
|
||||||
|
const char * const LOG_WARNING = "LogWarning";
|
||||||
|
const char * const LOG_DEBUG = "LogDebug";
|
||||||
|
const char * const LOG_ASSERT = "LogAssert";
|
||||||
|
const char * const LOG_INFO = "LogInfo";
|
||||||
|
|
||||||
//resources
|
//resources
|
||||||
const char * const ICON_NEL = ":/core/images/nel.png";
|
const char * const ICON_NEL = ":/core/images/nel.png";
|
||||||
const char * const ICON_SETTINGS = ":/core/images/preferences.png";
|
const char * const ICON_SETTINGS = ":/core/images/preferences.png";
|
||||||
const char * const ICON_PILL = ":/core/icons/ic_nel_pill.png";
|
const char * const ICON_PILL = ":/core/icons/ic_nel_pill.png";
|
||||||
const char * const ICON_OPEN = ":/core/icons/ic_nel_open.png";
|
const char * const ICON_OPEN = ":/core/icons/ic_nel_open.png";
|
||||||
|
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_CRASH = ":/core/icons/ic_nel_crash.png";
|
||||||
|
|
||||||
} // namespace Constants
|
} // namespace Constants
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
Binary file not shown.
After Width: | Height: | Size: 43 KiB |
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
|
@ -101,7 +101,8 @@ void MainWindow::extensionsInitialized()
|
||||||
readSettings();
|
readSettings();
|
||||||
connect(m_contextManager, SIGNAL(currentContextChanged(Core::IContext*)),
|
connect(m_contextManager, SIGNAL(currentContextChanged(Core::IContext*)),
|
||||||
this, SLOT(updateContext(Core::IContext*)));
|
this, SLOT(updateContext(Core::IContext*)));
|
||||||
updateContext(m_contextManager->currentContext());
|
if (m_contextManager->currentContext() != NULL)
|
||||||
|
updateContext(m_contextManager->currentContext());
|
||||||
show();
|
show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
${LIBXML2_INCLUDE_DIR}
|
||||||
|
${QT_INCLUDES})
|
||||||
|
|
||||||
|
FILE(GLOB SRC *.cpp *.h)
|
||||||
|
SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.h
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_manager.h
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_spec.h)
|
||||||
|
|
||||||
|
SET(OVQT_PLUG_GEORGES_EDITOR_HDR georges_editor_plugin.h
|
||||||
|
georges_editor_form.h
|
||||||
|
georges_dirtree_dialog.h)
|
||||||
|
|
||||||
|
SET(OVQT_PLUG_GEORGES_EDITOR_UIS georges_editor_form.ui
|
||||||
|
georges_dirtree_form.ui)
|
||||||
|
|
||||||
|
SET(OVQT_PLUGIN_GEORGES_EDITOR_RCS georges_editor.qrc)
|
||||||
|
|
||||||
|
SET(QT_USE_QTGUI TRUE)
|
||||||
|
SET(QT_USE_QTOPENGL TRUE)
|
||||||
|
|
||||||
|
QT4_ADD_RESOURCES(OVQT_PLUGIN_GEORGES_EDITOR_RC_SRCS ${OVQT_PLUGIN_GEORGES_EDITOR_RCS})
|
||||||
|
QT4_WRAP_CPP(OVQT_PLUG_GEORGES_EDITOR_MOC_SRC ${OVQT_PLUG_GEORGES_EDITOR_HDR})
|
||||||
|
QT4_WRAP_UI( OVQT_PLUG_GEORGES_EDITOR_UI_HDRS ${OVQT_PLUG_GEORGES_EDITOR_UIS} )
|
||||||
|
|
||||||
|
SOURCE_GROUP(QtResources FILES ${OVQT_PLUG_GEORGES_EDITOR_UIS} ${OVQT_PLUGIN_GEORGES_EDITOR_RCS})
|
||||||
|
SOURCE_GROUP(QtGeneratedUiHdr FILES ${OVQT_PLUG_GEORGES_EDITOR_UI_HDRS})
|
||||||
|
SOURCE_GROUP(QtGeneratedMocSrc FILES ${OVQT_PLUG_GEORGES_EDITOR_MOC_SRC})
|
||||||
|
SOURCE_GROUP("Georges Editor Plugin" FILES ${SRC})
|
||||||
|
SOURCE_GROUP("OVQT Extension System" FILES ${OVQT_EXT_SYS_SRC})
|
||||||
|
|
||||||
|
ADD_LIBRARY(ovqt_plugin_georges_editor MODULE ${SRC} ${OVQT_PLUG_GEORGES_EDITOR_MOC_SRC} ${OVQT_EXT_SYS_SRC} ${OVQT_PLUG_GEORGES_EDITOR_UI_HDRS} ${OVQT_PLUGIN_GEORGES_EDITOR_RC_SRCS})
|
||||||
|
|
||||||
|
TARGET_LINK_LIBRARIES(ovqt_plugin_georges_editor ovqt_plugin_core nelmisc ${QT_LIBRARIES})
|
||||||
|
|
||||||
|
NL_DEFAULT_PROPS(ovqt_plugin_georges_editor "NeL, Tools, 3D: Object Viewer Qt Plugin: Georges Editor")
|
||||||
|
NL_ADD_RUNTIME_FLAGS(ovqt_plugin_georges_editor)
|
||||||
|
NL_ADD_LIB_SUFFIX(ovqt_plugin_georges_editor)
|
||||||
|
|
||||||
|
ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DQT_PLUGIN -DQT_SHARED ${QT_DEFINITIONS})
|
||||||
|
|
||||||
|
INSTALL(TARGETS ovqt_plugin_georges_editor LIBRARY DESTINATION lib RUNTIME DESTINATION bin ARCHIVE DESTINATION lib COMPONENT tools3d)
|
|
@ -0,0 +1,99 @@
|
||||||
|
// Object Viewer Qt - Georges Editor Plugin - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "georges_dirtree_dialog.h"
|
||||||
|
|
||||||
|
// Qt includes
|
||||||
|
#include <QtGui/QWidget>
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
|
// NeL includes
|
||||||
|
|
||||||
|
//using namespace NLMISC;
|
||||||
|
|
||||||
|
namespace Plugin
|
||||||
|
{
|
||||||
|
|
||||||
|
CGeorgesDirTreeDialog::CGeorgesDirTreeDialog(QString ldPath, QWidget *parent)
|
||||||
|
:QDockWidget(parent), m_ldPath(ldPath)
|
||||||
|
{
|
||||||
|
|
||||||
|
m_ui.setupUi(this);
|
||||||
|
|
||||||
|
m_dirModel = new CGeorgesFileSystemModel(m_ldPath);
|
||||||
|
m_ui.dirTree->setModel(m_dirModel);
|
||||||
|
|
||||||
|
if (m_dirModel->isCorrectLDPath())
|
||||||
|
{
|
||||||
|
m_dirModel->setRootPath(m_ldPath);
|
||||||
|
m_ui.dirTree->setRootIndex(m_dirModel->index(m_ldPath));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_dirModel->setRootPath(QDir::currentPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
m_ui.dirTree->setAnimated(false);
|
||||||
|
m_ui.dirTree->setIndentation(20);
|
||||||
|
|
||||||
|
connect(m_ui.dirTree, SIGNAL(activated(QModelIndex)),
|
||||||
|
this, SLOT(fileSelected(QModelIndex)));
|
||||||
|
}
|
||||||
|
|
||||||
|
CGeorgesDirTreeDialog::~CGeorgesDirTreeDialog()
|
||||||
|
{
|
||||||
|
delete m_dirModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGeorgesDirTreeDialog::fileSelected(QModelIndex index)
|
||||||
|
{
|
||||||
|
QString name;
|
||||||
|
if (index.isValid() && !m_dirModel->isDir(index))
|
||||||
|
{
|
||||||
|
Q_EMIT selectedForm(m_dirModel->fileName(index));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGeorgesDirTreeDialog::changeFile(QString file)
|
||||||
|
{
|
||||||
|
QModelIndex index = m_dirModel->index(file);
|
||||||
|
m_ui.dirTree->selectionModel()->select(index,QItemSelectionModel::ClearAndSelect);
|
||||||
|
m_ui.dirTree->scrollTo(index,QAbstractItemView::PositionAtCenter);
|
||||||
|
fileSelected(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGeorgesDirTreeDialog::ldPathChanged(QString path)
|
||||||
|
{
|
||||||
|
m_ldPath = path;
|
||||||
|
|
||||||
|
delete m_dirModel;
|
||||||
|
|
||||||
|
m_dirModel = new CGeorgesFileSystemModel(m_ldPath);
|
||||||
|
m_ui.dirTree->setModel(m_dirModel);
|
||||||
|
|
||||||
|
if (m_dirModel->isCorrectLDPath())
|
||||||
|
{
|
||||||
|
m_dirModel->setRootPath(m_ldPath);
|
||||||
|
m_ui.dirTree->setRootIndex(m_dirModel->index(m_ldPath));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_dirModel->setRootPath(QDir::currentPath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} /* namespace NLQT */
|
|
@ -0,0 +1,62 @@
|
||||||
|
// Object Viewer Qt - Georges Editor Plugin - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#ifndef GEORGES_DIRTREE_DIALOG_H
|
||||||
|
#define GEORGES_DIRTREE_DIALOG_H
|
||||||
|
|
||||||
|
// Qt includes
|
||||||
|
#include <QtGui/QWidget>
|
||||||
|
|
||||||
|
// STL includes
|
||||||
|
|
||||||
|
// NeL includes
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "ui_georges_dirtree_form.h"
|
||||||
|
#include "georges_filesystem_model.h"
|
||||||
|
|
||||||
|
namespace Plugin
|
||||||
|
{
|
||||||
|
|
||||||
|
class CGeorgesDirTreeDialog: public QDockWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
CGeorgesDirTreeDialog(QString ldPath, QWidget *parent = 0);
|
||||||
|
~CGeorgesDirTreeDialog();
|
||||||
|
|
||||||
|
void ldPathChanged(QString);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::CGeorgesDirTreeDialog m_ui;
|
||||||
|
|
||||||
|
CGeorgesFileSystemModel *m_dirModel;
|
||||||
|
QString m_ldPath;
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void selectedForm(const QString);
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void fileSelected(QModelIndex index);
|
||||||
|
void changeFile(QString file);
|
||||||
|
|
||||||
|
friend class CMainWindow;
|
||||||
|
}; /* CGEorgesDirTreeDialog */
|
||||||
|
|
||||||
|
} /* namespace NLQT */
|
||||||
|
|
||||||
|
#endif // GEORGES_DIRTREE_DIALOG_H
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>CGeorgesDirTreeDialog</class>
|
||||||
|
<widget class="QDockWidget" name="CGeorgesDirTreeDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>200</width>
|
||||||
|
<height>111</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="features">
|
||||||
|
<set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Leveldesign Path</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="dockWidgetContents">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>50</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QTreeView" name="dirTree">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<RCC>
|
||||||
|
<qresource>
|
||||||
|
<file>images/ic_nel_georges_editor.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
|
@ -0,0 +1,31 @@
|
||||||
|
// Object Viewer Qt - Georges Editor Plugin - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#ifndef GEORGES_EDITOR_CONSTANTS_H
|
||||||
|
#define GEORGES_EDITOR_CONSTANTS_H
|
||||||
|
|
||||||
|
namespace Plugin
|
||||||
|
{
|
||||||
|
namespace Constants
|
||||||
|
{
|
||||||
|
//settings
|
||||||
|
const char * const GEORGES_EDITOR_SECTION = "GeorgesEditor";
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace Constants
|
||||||
|
} // namespace Plugin
|
||||||
|
|
||||||
|
#endif // GEORGES_EDITOR_CONSTANTS_H
|
|
@ -0,0 +1,139 @@
|
||||||
|
// Object Viewer Qt - Georges Editor Plugin - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "georges_editor_form.h"
|
||||||
|
#include "georges_editor_constants.h"
|
||||||
|
#include "georges_dirtree_dialog.h"
|
||||||
|
|
||||||
|
#include "../core/icore.h"
|
||||||
|
#include "../core/imenu_manager.h"
|
||||||
|
#include "../core/core_constants.h"
|
||||||
|
|
||||||
|
// NeL includes
|
||||||
|
#include <nel/misc/debug.h>
|
||||||
|
|
||||||
|
// Qt includes
|
||||||
|
#include <QSettings>
|
||||||
|
#include <QFileDialog>
|
||||||
|
#include <QToolBar>
|
||||||
|
|
||||||
|
namespace Plugin
|
||||||
|
{
|
||||||
|
|
||||||
|
GeorgesEditorForm::GeorgesEditorForm(QWidget *parent)
|
||||||
|
: QMainWindow(parent),
|
||||||
|
m_georgesDirTreeDialog(0)
|
||||||
|
{
|
||||||
|
m_ui.setupUi(this);
|
||||||
|
|
||||||
|
m_undoStack = new QUndoStack(this);
|
||||||
|
|
||||||
|
_openAction = new QAction(tr("&Open..."), this);
|
||||||
|
_openAction->setIcon(QIcon(Core::Constants::ICON_OPEN));
|
||||||
|
_openAction->setShortcut(QKeySequence::Open);
|
||||||
|
_openAction->setStatusTip(tr("Open an existing file"));
|
||||||
|
connect(_openAction, SIGNAL(triggered()), this, SLOT(open()));
|
||||||
|
|
||||||
|
_newAction = new QAction(tr("&New..."), this);
|
||||||
|
_newAction->setIcon(QIcon(Core::Constants::ICON_NEW));
|
||||||
|
_newAction->setShortcut(QKeySequence::New);
|
||||||
|
_newAction->setStatusTip(tr("Create a new file"));
|
||||||
|
connect(_newAction, SIGNAL(triggered()), this, SLOT(newFile()));
|
||||||
|
|
||||||
|
_saveAction = new QAction(tr("&Save..."), this);
|
||||||
|
_saveAction->setIcon(QIcon(Core::Constants::ICON_SAVE));
|
||||||
|
_saveAction->setShortcut(QKeySequence::Save);
|
||||||
|
_saveAction->setStatusTip(tr("Save the current file"));
|
||||||
|
connect(_saveAction, SIGNAL(triggered()), this, SLOT(save()));
|
||||||
|
|
||||||
|
_fileToolBar = addToolBar(tr("&File"));
|
||||||
|
_fileToolBar->addAction(_openAction);
|
||||||
|
_fileToolBar->addAction(_newAction);
|
||||||
|
_fileToolBar->addAction(_saveAction);
|
||||||
|
|
||||||
|
readSettings();
|
||||||
|
|
||||||
|
// create leveldesign directory tree dockwidget
|
||||||
|
m_georgesDirTreeDialog = new CGeorgesDirTreeDialog(m_leveldesignPath, this);
|
||||||
|
addDockWidget(Qt::LeftDockWidgetArea, m_georgesDirTreeDialog);
|
||||||
|
//m_georgesDirTreeDialog->setVisible(false);
|
||||||
|
connect(Core::ICore::instance(), SIGNAL(changeSettings()),
|
||||||
|
this, SLOT(settingsChanged()));
|
||||||
|
}
|
||||||
|
|
||||||
|
GeorgesEditorForm::~GeorgesEditorForm()
|
||||||
|
{
|
||||||
|
writeSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
QUndoStack *GeorgesEditorForm::undoStack() const
|
||||||
|
{
|
||||||
|
return m_undoStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeorgesEditorForm::open()
|
||||||
|
{
|
||||||
|
// TODO: FileDialog & loadFile();
|
||||||
|
//QString fileName = QFileDialog::getOpenFileName();
|
||||||
|
//loadFile(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeorgesEditorForm::newFile()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeorgesEditorForm::save()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeorgesEditorForm::readSettings()
|
||||||
|
{
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
settings->beginGroup(Constants::GEORGES_EDITOR_SECTION);
|
||||||
|
settings->endGroup();
|
||||||
|
|
||||||
|
settings->beginGroup(Core::Constants::DATA_PATH_SECTION);
|
||||||
|
m_leveldesignPath = settings->value(Core::Constants::LEVELDESIGN_PATH, "l:/leveldesign").toString();
|
||||||
|
settings->endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeorgesEditorForm::writeSettings()
|
||||||
|
{
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
settings->beginGroup(Constants::GEORGES_EDITOR_SECTION);
|
||||||
|
settings->endGroup();
|
||||||
|
settings->sync();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeorgesEditorForm::settingsChanged()
|
||||||
|
{
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
|
||||||
|
settings->beginGroup(Core::Constants::DATA_PATH_SECTION);
|
||||||
|
QString oldLDPath = m_leveldesignPath;
|
||||||
|
m_leveldesignPath = settings->value(Core::Constants::LEVELDESIGN_PATH, "l:/leveldesign").toString();
|
||||||
|
settings->endGroup();
|
||||||
|
|
||||||
|
if (oldLDPath != m_leveldesignPath)
|
||||||
|
{
|
||||||
|
m_georgesDirTreeDialog->ldPathChanged(m_leveldesignPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} /* namespace Plugin */
|
|
@ -0,0 +1,64 @@
|
||||||
|
// Object Viewer Qt - Georges Editor Plugin - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#ifndef GEORGES_EDITOR_FORM_H
|
||||||
|
#define GEORGES_EDITOR_FORM_H
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "ui_georges_editor_form.h"
|
||||||
|
|
||||||
|
// Qt includes
|
||||||
|
#include <QtGui/QUndoStack>
|
||||||
|
|
||||||
|
namespace Plugin
|
||||||
|
{
|
||||||
|
|
||||||
|
class CGeorgesDirTreeDialog;
|
||||||
|
class GeorgesEditorForm: public QMainWindow
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
GeorgesEditorForm(QWidget *parent = 0);
|
||||||
|
~GeorgesEditorForm();
|
||||||
|
|
||||||
|
QUndoStack *undoStack() const;
|
||||||
|
|
||||||
|
public Q_SLOTS:
|
||||||
|
void open();
|
||||||
|
void newFile();
|
||||||
|
void save();
|
||||||
|
void settingsChanged();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void readSettings();
|
||||||
|
void writeSettings();
|
||||||
|
|
||||||
|
QUndoStack *m_undoStack;
|
||||||
|
Ui::GeorgesEditorForm m_ui;
|
||||||
|
|
||||||
|
CGeorgesDirTreeDialog *m_georgesDirTreeDialog;
|
||||||
|
QToolBar *_fileToolBar;
|
||||||
|
QAction *_openAction;
|
||||||
|
QAction *_newAction;
|
||||||
|
QAction *_saveAction;
|
||||||
|
|
||||||
|
QString m_leveldesignPath;
|
||||||
|
}; /* class GeorgesEditorForm */
|
||||||
|
|
||||||
|
} /* namespace Plugin */
|
||||||
|
|
||||||
|
#endif // GEORGES_EDITOR_FORM_H
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>GeorgesEditorForm</class>
|
||||||
|
<widget class="QMainWindow" name="GeorgesEditorForm">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Georges Editor</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="centralwidget">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">QWidget#centralwidget {
|
||||||
|
image: url(:/images/ic_nel_georges_editor.png);
|
||||||
|
}</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources>
|
||||||
|
<include location="georges_editor.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -0,0 +1,128 @@
|
||||||
|
// Object Viewer Qt - Georges Editor Plugin - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "georges_editor_plugin.h"
|
||||||
|
#include "georges_editor_form.h"
|
||||||
|
|
||||||
|
#include "../core/icore.h"
|
||||||
|
#include "../core/core_constants.h"
|
||||||
|
|
||||||
|
// NeL includes
|
||||||
|
#include "nel/misc/debug.h"
|
||||||
|
|
||||||
|
// Qt includes
|
||||||
|
#include <QtCore/QObject>
|
||||||
|
|
||||||
|
namespace Plugin
|
||||||
|
{
|
||||||
|
|
||||||
|
GeorgesEditorPlugin::~GeorgesEditorPlugin()
|
||||||
|
{
|
||||||
|
Q_FOREACH(QObject *obj, m_autoReleaseObjects)
|
||||||
|
{
|
||||||
|
m_plugMan->removeObject(obj);
|
||||||
|
}
|
||||||
|
qDeleteAll(m_autoReleaseObjects);
|
||||||
|
m_autoReleaseObjects.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GeorgesEditorPlugin::initialize(ExtensionSystem::IPluginManager *pluginManager, QString *errorString)
|
||||||
|
{
|
||||||
|
Q_UNUSED(errorString);
|
||||||
|
m_plugMan = pluginManager;
|
||||||
|
|
||||||
|
addAutoReleasedObject(new GeorgesEditorContext(this));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeorgesEditorPlugin::extensionsInitialized()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeorgesEditorPlugin::shutdown()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeorgesEditorPlugin::setNelContext(NLMISC::INelContext *nelContext)
|
||||||
|
{
|
||||||
|
#ifdef NL_OS_WINDOWS
|
||||||
|
// Ensure that a context doesn't exist yet.
|
||||||
|
// This only applies to platforms without PIC, e.g. Windows.
|
||||||
|
nlassert(!NLMISC::INelContext::isContextInitialised());
|
||||||
|
#endif // NL_OS_WINDOWS
|
||||||
|
m_libContext = new NLMISC::CLibraryContext(*nelContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString GeorgesEditorPlugin::name() const
|
||||||
|
{
|
||||||
|
return tr("Georges Editor");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString GeorgesEditorPlugin::version() const
|
||||||
|
{
|
||||||
|
return "0.2";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString GeorgesEditorPlugin::vendor() const
|
||||||
|
{
|
||||||
|
return "aquiles";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString GeorgesEditorPlugin::description() const
|
||||||
|
{
|
||||||
|
return tr("Tool to create & edit sheets or forms.");
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList GeorgesEditorPlugin::dependencies() const
|
||||||
|
{
|
||||||
|
QStringList list;
|
||||||
|
list.append(Core::Constants::OVQT_CORE_PLUGIN);
|
||||||
|
list.append("ObjectViewer"); // TODO
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeorgesEditorPlugin::addAutoReleasedObject(QObject *obj)
|
||||||
|
{
|
||||||
|
m_plugMan->addObject(obj);
|
||||||
|
m_autoReleaseObjects.prepend(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
GeorgesEditorContext::GeorgesEditorContext(QObject *parent)
|
||||||
|
: IContext(parent),
|
||||||
|
m_georgesEditorForm(0)
|
||||||
|
{
|
||||||
|
m_georgesEditorForm = new GeorgesEditorForm();
|
||||||
|
}
|
||||||
|
|
||||||
|
QUndoStack *GeorgesEditorContext::undoStack()
|
||||||
|
{
|
||||||
|
return m_georgesEditorForm->undoStack();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeorgesEditorContext::open()
|
||||||
|
{
|
||||||
|
m_georgesEditorForm->open();
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget *GeorgesEditorContext::widget()
|
||||||
|
{
|
||||||
|
return m_georgesEditorForm;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_EXPORT_PLUGIN(Plugin::GeorgesEditorPlugin)
|
|
@ -0,0 +1,105 @@
|
||||||
|
// Object Viewer Qt - Georges Editor Plugin - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#ifndef GEORGES_EDITOR_PLUGIN_H
|
||||||
|
#define GEORGES_EDITOR_PLUGIN_H
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "../../extension_system/iplugin.h"
|
||||||
|
#include "../core/icontext.h"
|
||||||
|
|
||||||
|
// NeL includes
|
||||||
|
#include "nel/misc/app_context.h"
|
||||||
|
|
||||||
|
// Qt includes
|
||||||
|
#include <QtCore/QObject>
|
||||||
|
#include <QtGui/QIcon>
|
||||||
|
|
||||||
|
namespace NLMISC
|
||||||
|
{
|
||||||
|
class CLibraryContext;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace ExtensionSystem
|
||||||
|
{
|
||||||
|
class IPluginSpec;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Plugin
|
||||||
|
{
|
||||||
|
class GeorgesEditorForm;
|
||||||
|
class GeorgesEditorPlugin : public QObject, public ExtensionSystem::IPlugin
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_INTERFACES(ExtensionSystem::IPlugin)
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual ~GeorgesEditorPlugin();
|
||||||
|
|
||||||
|
bool initialize(ExtensionSystem::IPluginManager *pluginManager, QString *errorString);
|
||||||
|
void extensionsInitialized();
|
||||||
|
void shutdown();
|
||||||
|
|
||||||
|
void setNelContext(NLMISC::INelContext *nelContext);
|
||||||
|
|
||||||
|
QString name() const;
|
||||||
|
QString version() const;
|
||||||
|
QString vendor() const;
|
||||||
|
QString description() const;
|
||||||
|
QStringList dependencies() const;
|
||||||
|
|
||||||
|
void addAutoReleasedObject(QObject *obj);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
NLMISC::CLibraryContext *m_libContext;
|
||||||
|
|
||||||
|
private:
|
||||||
|
ExtensionSystem::IPluginManager *m_plugMan;
|
||||||
|
QList<QObject *> m_autoReleaseObjects;
|
||||||
|
};
|
||||||
|
|
||||||
|
class GeorgesEditorContext: public Core::IContext
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
GeorgesEditorContext(QObject *parent = 0);
|
||||||
|
virtual ~GeorgesEditorContext() {}
|
||||||
|
|
||||||
|
virtual QString id() const
|
||||||
|
{
|
||||||
|
return QLatin1String("GeorgesEditorContext");
|
||||||
|
}
|
||||||
|
virtual QString trName() const
|
||||||
|
{
|
||||||
|
return tr("Georges Editor");
|
||||||
|
}
|
||||||
|
virtual QIcon icon() const
|
||||||
|
{
|
||||||
|
return QIcon(":/images/ic_nel_georges_editor.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void open();
|
||||||
|
|
||||||
|
virtual QUndoStack *undoStack();
|
||||||
|
|
||||||
|
virtual QWidget *widget();
|
||||||
|
|
||||||
|
GeorgesEditorForm *m_georgesEditorForm;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Plugin
|
||||||
|
|
||||||
|
#endif // LANDSCAPE_EDITOR_PLUGIN_H
|
|
@ -0,0 +1,95 @@
|
||||||
|
// Object Viewer Qt - Georges Editor Plugin - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "georges_filesystem_model.h"
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QStyle>
|
||||||
|
|
||||||
|
namespace Plugin
|
||||||
|
{
|
||||||
|
|
||||||
|
CGeorgesFileSystemModel::CGeorgesFileSystemModel(QString ldPath, QObject *parent)
|
||||||
|
: QFileSystemModel(parent),
|
||||||
|
m_ldPath(ldPath),
|
||||||
|
m_correct(false)
|
||||||
|
{
|
||||||
|
checkLDPath();
|
||||||
|
}
|
||||||
|
|
||||||
|
CGeorgesFileSystemModel::~CGeorgesFileSystemModel()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant CGeorgesFileSystemModel::data(const QModelIndex& index, int role) const
|
||||||
|
{
|
||||||
|
|
||||||
|
if (role == Qt::DecorationRole)
|
||||||
|
{
|
||||||
|
if (!m_correct)
|
||||||
|
return QVariant();
|
||||||
|
if (isDir(index))
|
||||||
|
return QApplication::style()->standardIcon(QStyle::SP_DirIcon);
|
||||||
|
}
|
||||||
|
if (!m_correct && role == Qt::DisplayRole)
|
||||||
|
{
|
||||||
|
if (index.parent().isValid())
|
||||||
|
return QVariant();
|
||||||
|
return tr("Set a correct leveldesign path ...");
|
||||||
|
}
|
||||||
|
return QFileSystemModel::data(index, role);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CGeorgesFileSystemModel::columnCount(const QModelIndex &/*parent*/) const
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CGeorgesFileSystemModel::rowCount(const QModelIndex &parent) const
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!m_correct)
|
||||||
|
{
|
||||||
|
if(parent.isValid())
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return qMin(QFileSystemModel::rowCount(parent),1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return QFileSystemModel::rowCount(parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGeorgesFileSystemModel::checkLDPath()
|
||||||
|
{
|
||||||
|
QFileInfo check1(QString("%1/game_element").arg(m_ldPath));
|
||||||
|
QFileInfo check2(QString("%1/DFN").arg(m_ldPath));
|
||||||
|
|
||||||
|
if (check1.exists() && check2.exists())
|
||||||
|
{
|
||||||
|
m_correct = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_correct = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} /* namespace NLQT */
|
||||||
|
|
||||||
|
/* end of file */
|
|
@ -0,0 +1,50 @@
|
||||||
|
// Object Viewer Qt - Georges Editor Plugin - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#ifndef GEORGES_FILESYSTEM_MODEL_H
|
||||||
|
#define GEORGES_FILESYSTEM_MODEL_H
|
||||||
|
|
||||||
|
#include <QtGui/QFileSystemModel>
|
||||||
|
|
||||||
|
namespace Plugin
|
||||||
|
{
|
||||||
|
|
||||||
|
class CGeorgesFileSystemModel : public QFileSystemModel
|
||||||
|
{
|
||||||
|
QString m_ldPath;
|
||||||
|
|
||||||
|
public:
|
||||||
|
CGeorgesFileSystemModel(QString ldPath, QObject *parent = 0);
|
||||||
|
~CGeorgesFileSystemModel();
|
||||||
|
|
||||||
|
int columnCount(const QModelIndex &/*parent*/) const;
|
||||||
|
int rowCount(const QModelIndex &/*parent*/) const;
|
||||||
|
|
||||||
|
QVariant data(const QModelIndex& index, int role) const ;
|
||||||
|
|
||||||
|
bool isCorrectLDPath()
|
||||||
|
{
|
||||||
|
return m_correct;
|
||||||
|
}
|
||||||
|
void checkLDPath();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_correct;
|
||||||
|
};/* class CGeorgesFileSystemModel */
|
||||||
|
|
||||||
|
} /* namespace NLQT */
|
||||||
|
|
||||||
|
#endif // GEORGES_FILESYSTEM_MODEL_H
|
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
|
@ -1,7 +1,7 @@
|
||||||
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR}
|
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${LIBXML2_INCLUDE_DIR}
|
${LIBXML2_INCLUDE_DIR}
|
||||||
${QT_INCLUDES})
|
${QT_INCLUDES})
|
||||||
|
|
||||||
FILE(GLOB SRC *.cpp *.h)
|
FILE(GLOB SRC *.cpp *.h)
|
||||||
SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.h
|
SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.h
|
||||||
|
|
|
@ -1,24 +1,28 @@
|
||||||
/*
|
// Object Viewer Qt - Log Plugin - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
Log Plugin Qt
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
This program is free software: you can redistribute it and/or modify
|
// it under the terms of the GNU Affero General Public License as
|
||||||
it under the terms of the GNU General Public License as published by
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
// License, or (at your option) any later version.
|
||||||
(at your option) any later version.
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
This program is distributed in the hope that it will be useful,
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// GNU Affero General Public License for more details.
|
||||||
GNU General Public License for more details.
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
You should have received a copy of the GNU General Public License
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
// Project includes
|
||||||
#include "log_plugin.h"
|
#include "log_plugin.h"
|
||||||
#include "log_settings_page.h"
|
#include "log_settings_page.h"
|
||||||
|
#include "qt_displayer.h"
|
||||||
|
|
||||||
|
#include "../core/icore.h"
|
||||||
|
#include "../core/core_constants.h"
|
||||||
|
#include "../core/imenu_manager.h"
|
||||||
|
#include "../../extension_system/iplugin_spec.h"
|
||||||
|
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
|
@ -35,103 +39,153 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
// NeL includes
|
// NeL includes
|
||||||
#include <nel/misc/debug.h>
|
#include <nel/misc/debug.h>
|
||||||
|
|
||||||
// Project includes
|
namespace Plugin
|
||||||
#include "../core/icore.h"
|
|
||||||
#include "../core/core_constants.h"
|
|
||||||
#include "../core/imenu_manager.h"
|
|
||||||
#include "qt_displayer.h"
|
|
||||||
|
|
||||||
using namespace Plugin;
|
|
||||||
|
|
||||||
namespace ExtensionSystem
|
|
||||||
{
|
{
|
||||||
class IPluginSpec;
|
|
||||||
}
|
|
||||||
|
|
||||||
CLogPlugin::CLogPlugin(QWidget *parent): QDockWidget(parent)
|
CLogPlugin::CLogPlugin(QWidget *parent): QDockWidget(parent)
|
||||||
{
|
{
|
||||||
_ui.setupUi(this);
|
m_ui.setupUi(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
CLogPlugin::~CLogPlugin()
|
CLogPlugin::~CLogPlugin()
|
||||||
{
|
{
|
||||||
//_plugMan->removeObject(_logSettingsPage);
|
Q_FOREACH(QObject *obj, m_autoReleaseObjects)
|
||||||
delete _logSettingsPage;
|
{
|
||||||
|
m_plugMan->removeObject(obj);
|
||||||
|
}
|
||||||
|
qDeleteAll(m_autoReleaseObjects);
|
||||||
|
m_autoReleaseObjects.clear();
|
||||||
|
|
||||||
NLMISC::ErrorLog->removeDisplayer(_displayer);
|
NLMISC::ErrorLog->removeDisplayer(m_displayer);
|
||||||
NLMISC::WarningLog->removeDisplayer(_displayer);
|
NLMISC::WarningLog->removeDisplayer(m_displayer);
|
||||||
NLMISC::DebugLog->removeDisplayer(_displayer);
|
NLMISC::DebugLog->removeDisplayer(m_displayer);
|
||||||
NLMISC::AssertLog->removeDisplayer(_displayer);
|
NLMISC::AssertLog->removeDisplayer(m_displayer);
|
||||||
NLMISC::InfoLog->removeDisplayer(_displayer);
|
NLMISC::InfoLog->removeDisplayer(m_displayer);
|
||||||
delete _displayer;
|
delete m_displayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CLogPlugin::initialize(ExtensionSystem::IPluginManager *pluginManager, QString *errorString)
|
bool CLogPlugin::initialize(ExtensionSystem::IPluginManager *pluginManager, QString *errorString)
|
||||||
{
|
{
|
||||||
Q_UNUSED(errorString);
|
Q_UNUSED(errorString);
|
||||||
_plugMan = pluginManager;
|
m_plugMan = pluginManager;
|
||||||
_logSettingsPage = new CLogSettingsPage(this);
|
m_logSettingsPage = new CLogSettingsPage(this);
|
||||||
//_plugMan->addObject(_logSettingsPage);
|
addAutoReleasedObject(m_logSettingsPage);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CLogPlugin::extensionsInitialized()
|
void CLogPlugin::extensionsInitialized()
|
||||||
{
|
{
|
||||||
NLMISC::ErrorLog->addDisplayer(_displayer);
|
setDisplayers();
|
||||||
NLMISC::WarningLog->addDisplayer(_displayer);
|
|
||||||
NLMISC::DebugLog->addDisplayer(_displayer);
|
|
||||||
NLMISC::AssertLog->addDisplayer(_displayer);
|
|
||||||
NLMISC::InfoLog->addDisplayer(_displayer);
|
|
||||||
|
|
||||||
Core::ICore *core = Core::ICore::instance();
|
Core::ICore *core = Core::ICore::instance();
|
||||||
Core::IMenuManager *menuManager = core->menuManager();
|
Core::IMenuManager *menuManager = core->menuManager();
|
||||||
QMenu *viewMenu = menuManager->menu(Core::Constants::M_VIEW);
|
QMenu *viewMenu = menuManager->menu(Core::Constants::M_VIEW);
|
||||||
|
|
||||||
QMainWindow *wnd = Core::ICore::instance()->mainWindow();
|
QMainWindow *wnd = Core::ICore::instance()->mainWindow();
|
||||||
wnd->addDockWidget(Qt::RightDockWidgetArea, this);
|
wnd->addDockWidget(Qt::RightDockWidgetArea, this);
|
||||||
hide();
|
hide();
|
||||||
|
|
||||||
viewMenu->addAction(this->toggleViewAction());
|
viewMenu->addAction(this->toggleViewAction());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CLogPlugin::setNelContext(NLMISC::INelContext *nelContext)
|
void CLogPlugin::setNelContext(NLMISC::INelContext *nelContext)
|
||||||
{
|
{
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
// Ensure that a context doesn't exist yet.
|
// Ensure that a context doesn't exist yet.
|
||||||
// This only applies to platforms without PIC, e.g. Windows.
|
// This only applies to platforms without PIC, e.g. Windows.
|
||||||
nlassert(!NLMISC::INelContext::isContextInitialised());
|
nlassert(!NLMISC::INelContext::isContextInitialised());
|
||||||
#endif // fdef NL_OS_WINDOWS^M
|
#endif // fdef NL_OS_WINDOWS^M
|
||||||
_LibContext = new NLMISC::CLibraryContext(*nelContext);
|
m_libContext = new NLMISC::CLibraryContext(*nelContext);
|
||||||
|
|
||||||
_displayer = new NLQT::CQtDisplayer(_ui.plainTextEdit);
|
m_displayer = new NLQT::CQtDisplayer(m_ui.plainTextEdit);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CLogPlugin::name() const
|
||||||
|
{
|
||||||
|
return "NeL Log";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CLogPlugin::version() const
|
||||||
|
{
|
||||||
|
return "1.1";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CLogPlugin::vendor() const
|
||||||
|
{
|
||||||
|
return "aquiles";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CLogPlugin::description() const
|
||||||
|
{
|
||||||
|
return tr("DockWidget to display all log messages from NeL.");
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList CLogPlugin::dependencies() const
|
||||||
|
{
|
||||||
|
QStringList list;
|
||||||
|
list.append(Core::Constants::OVQT_CORE_PLUGIN);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CLogPlugin::addAutoReleasedObject(QObject *obj)
|
||||||
|
{
|
||||||
|
m_plugMan->addObject(obj);
|
||||||
|
m_autoReleaseObjects.prepend(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CLogPlugin::setDisplayers()
|
||||||
|
{
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
|
||||||
|
settings->beginGroup(Core::Constants::LOG_SECTION);
|
||||||
|
bool error = settings->value(Core::Constants::LOG_ERROR, true).toBool();
|
||||||
|
bool warning = settings->value(Core::Constants::LOG_WARNING, true).toBool();
|
||||||
|
bool debug = settings->value(Core::Constants::LOG_DEBUG, true).toBool();
|
||||||
|
bool assert = settings->value(Core::Constants::LOG_ASSERT, true).toBool();
|
||||||
|
bool info = settings->value(Core::Constants::LOG_INFO, true).toBool();
|
||||||
|
settings->endGroup();
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
if (!NLMISC::ErrorLog->attached(m_displayer))
|
||||||
|
NLMISC::ErrorLog->addDisplayer(m_displayer);
|
||||||
|
} else {
|
||||||
|
if (m_displayer) {
|
||||||
|
NLMISC::ErrorLog->removeDisplayer(m_displayer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (warning) {
|
||||||
|
if (!NLMISC::WarningLog->attached(m_displayer))
|
||||||
|
NLMISC::WarningLog->addDisplayer(m_displayer);
|
||||||
|
} else {
|
||||||
|
if (m_displayer) {
|
||||||
|
NLMISC::WarningLog->removeDisplayer(m_displayer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (debug) {
|
||||||
|
if (!NLMISC::DebugLog->attached(m_displayer))
|
||||||
|
NLMISC::DebugLog->addDisplayer(m_displayer);
|
||||||
|
} else {
|
||||||
|
if (m_displayer) {
|
||||||
|
NLMISC::DebugLog->removeDisplayer(m_displayer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (assert) {
|
||||||
|
if (!NLMISC::AssertLog->attached(m_displayer))
|
||||||
|
NLMISC::AssertLog->addDisplayer(m_displayer);
|
||||||
|
} else {
|
||||||
|
if (m_displayer) {
|
||||||
|
NLMISC::AssertLog->removeDisplayer(m_displayer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (info) {
|
||||||
|
if (!NLMISC::InfoLog->attached(m_displayer))
|
||||||
|
NLMISC::InfoLog->addDisplayer(m_displayer);
|
||||||
|
} else {
|
||||||
|
if (m_displayer) {
|
||||||
|
NLMISC::InfoLog->removeDisplayer(m_displayer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Q_EXPORT_PLUGIN(Plugin::CLogPlugin)
|
||||||
QString CLogPlugin::name() const
|
|
||||||
{
|
|
||||||
return "LogPlugin";
|
|
||||||
}
|
|
||||||
|
|
||||||
QString CLogPlugin::version() const
|
|
||||||
{
|
|
||||||
return "1.0";
|
|
||||||
}
|
|
||||||
|
|
||||||
QString CLogPlugin::vendor() const
|
|
||||||
{
|
|
||||||
return "aquiles";
|
|
||||||
}
|
|
||||||
|
|
||||||
QString CLogPlugin::description() const
|
|
||||||
{
|
|
||||||
return "DockWidget to display all log messages from NeL.";
|
|
||||||
}
|
|
||||||
|
|
||||||
QStringList CLogPlugin::dependencies() const
|
|
||||||
{
|
|
||||||
QStringList list;
|
|
||||||
list.append(Core::Constants::OVQT_CORE_PLUGIN);
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
Q_EXPORT_PLUGIN(CLogPlugin)
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
Log Plugin Qt
|
Log Plugin Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -20,16 +20,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#ifndef LOG_PLUGIN_H
|
#ifndef LOG_PLUGIN_H
|
||||||
#define LOG_PLUGIN_H
|
#define LOG_PLUGIN_H
|
||||||
|
|
||||||
|
// Project includes
|
||||||
|
#include "ui_log_form.h"
|
||||||
#include "../../extension_system/iplugin.h"
|
#include "../../extension_system/iplugin.h"
|
||||||
|
|
||||||
|
// NeL includes
|
||||||
#include "nel/misc/app_context.h"
|
#include "nel/misc/app_context.h"
|
||||||
|
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QDockWidget>
|
#include <QDockWidget>
|
||||||
|
|
||||||
// Project includes
|
|
||||||
#include "ui_log_form.h"
|
|
||||||
|
|
||||||
namespace NLMISC
|
namespace NLMISC
|
||||||
{
|
{
|
||||||
class CLibraryContext;
|
class CLibraryContext;
|
||||||
|
@ -52,7 +52,7 @@ namespace Plugin
|
||||||
class CLogPlugin : public QDockWidget, public ExtensionSystem::IPlugin
|
class CLogPlugin : public QDockWidget, public ExtensionSystem::IPlugin
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_INTERFACES(ExtensionSystem::IPlugin)
|
Q_INTERFACES(ExtensionSystem::IPlugin)
|
||||||
public:
|
public:
|
||||||
CLogPlugin(QWidget *parent = 0);
|
CLogPlugin(QWidget *parent = 0);
|
||||||
~CLogPlugin();
|
~CLogPlugin();
|
||||||
|
@ -61,7 +61,7 @@ namespace Plugin
|
||||||
void extensionsInitialized();
|
void extensionsInitialized();
|
||||||
|
|
||||||
void setNelContext(NLMISC::INelContext *nelContext);
|
void setNelContext(NLMISC::INelContext *nelContext);
|
||||||
NLQT::CQtDisplayer* displayer() { return _displayer; }
|
NLQT::CQtDisplayer* displayer() { return m_displayer; }
|
||||||
|
|
||||||
QString name() const;
|
QString name() const;
|
||||||
QString version() const;
|
QString version() const;
|
||||||
|
@ -69,16 +69,21 @@ namespace Plugin
|
||||||
QString description() const;
|
QString description() const;
|
||||||
QStringList dependencies() const;
|
QStringList dependencies() const;
|
||||||
|
|
||||||
|
void addAutoReleasedObject(QObject *obj);
|
||||||
|
|
||||||
|
void setDisplayers();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
NLMISC::CLibraryContext *_LibContext;
|
NLMISC::CLibraryContext *m_libContext;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ExtensionSystem::IPluginManager *_plugMan;
|
ExtensionSystem::IPluginManager *m_plugMan;
|
||||||
CLogSettingsPage *_logSettingsPage;
|
QList<QObject *> m_autoReleaseObjects;
|
||||||
|
CLogSettingsPage *m_logSettingsPage;
|
||||||
|
|
||||||
Ui::CLogPlugin _ui;
|
Ui::CLogPlugin m_ui;
|
||||||
|
|
||||||
NLQT::CQtDisplayer *_displayer;
|
NLQT::CQtDisplayer *m_displayer;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// Object Viewer Qt - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
// Object Viewer Qt - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
// Copyright (C) 2010 Winch Gate Property Limited
|
// Copyright (C) 2010 Winch Gate Property Limited
|
||||||
// Copyright (C) 2011 Dzmitry Kamiahin <dnk-88@tut.by>
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU Affero General Public License as
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
@ -15,14 +15,19 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// Project includes
|
||||||
#include "log_settings_page.h"
|
#include "log_settings_page.h"
|
||||||
|
#include "log_plugin.h"
|
||||||
// Qt includes
|
#include "../core/core_constants.h"
|
||||||
#include <QtGui/QWidget>
|
#include "../core/icore.h"
|
||||||
|
#include "../../extension_system/plugin_manager.h"
|
||||||
|
|
||||||
// NeL includes
|
// NeL includes
|
||||||
|
|
||||||
// Project includes
|
// Qt includes
|
||||||
|
#include <QtGui/QWidget>
|
||||||
|
#include <QtCore/QSettings>
|
||||||
|
|
||||||
namespace ExtensionSystem
|
namespace ExtensionSystem
|
||||||
{
|
{
|
||||||
class IPluginManager;
|
class IPluginManager;
|
||||||
|
@ -31,15 +36,22 @@ namespace ExtensionSystem
|
||||||
namespace Plugin
|
namespace Plugin
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class CLogPlugin;
|
||||||
|
|
||||||
CLogSettingsPage::CLogSettingsPage(QObject *parent)
|
CLogSettingsPage::CLogSettingsPage(QObject *parent)
|
||||||
: IOptionsPage(parent),
|
: IOptionsPage(parent),
|
||||||
_currentPage(NULL)
|
m_currentPage(NULL),
|
||||||
|
m_error(true),
|
||||||
|
m_warning(true),
|
||||||
|
m_debug(true),
|
||||||
|
m_assert(true),
|
||||||
|
m_info(true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CLogSettingsPage::id() const
|
QString CLogSettingsPage::id() const
|
||||||
{
|
{
|
||||||
return QLatin1String("Log");
|
return QLatin1String("log");
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CLogSettingsPage::trName() const
|
QString CLogSettingsPage::trName() const
|
||||||
|
@ -49,32 +61,78 @@ namespace Plugin
|
||||||
|
|
||||||
QString CLogSettingsPage::category() const
|
QString CLogSettingsPage::category() const
|
||||||
{
|
{
|
||||||
return QLatin1String("General");
|
return QLatin1String(Core::Constants::SETTINGS_CATEGORY_GENERAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CLogSettingsPage::trCategory() const
|
QString CLogSettingsPage::trCategory() const
|
||||||
{
|
{
|
||||||
return tr("General");
|
return tr(Core::Constants::SETTINGS_TR_CATEGORY_GENERAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
QIcon CLogSettingsPage::categoryIcon() const
|
||||||
|
{
|
||||||
|
return QIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *CLogSettingsPage::createPage(QWidget *parent)
|
QWidget *CLogSettingsPage::createPage(QWidget *parent)
|
||||||
{
|
{
|
||||||
_currentPage = new QWidget(parent);
|
m_currentPage = new QWidget(parent);
|
||||||
_ui.setupUi(_currentPage);
|
m_ui.setupUi(m_currentPage);
|
||||||
return _currentPage;
|
|
||||||
|
readSettings();
|
||||||
|
m_ui.errorCheck->setChecked(m_error);
|
||||||
|
m_ui.warningCheck->setChecked(m_warning);
|
||||||
|
m_ui.debugCheck->setChecked(m_debug);
|
||||||
|
m_ui.assertCheck->setChecked(m_assert);
|
||||||
|
m_ui.infoCheck->setChecked(m_info);
|
||||||
|
|
||||||
|
return m_currentPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CLogSettingsPage::apply()
|
void CLogSettingsPage::apply()
|
||||||
{
|
{
|
||||||
//ExtensionSystem::IPluginSpec *spec, _plugMan->plugins()
|
m_error = m_ui.errorCheck->isChecked();
|
||||||
//ExtensionSystem::IPluginManager;
|
m_warning = m_ui.warningCheck->isChecked();
|
||||||
//if (_ui.errorCheck->isChecked()) {
|
m_debug = m_ui.debugCheck->isChecked();
|
||||||
//displayer();
|
m_assert = m_ui.assertCheck->isChecked();
|
||||||
//}
|
m_info = m_ui.infoCheck->isChecked();
|
||||||
//if (_ui.warningCheck->isChecked());
|
|
||||||
//if (_ui.debugCheck->isChecked());
|
writeSettings();
|
||||||
//if (_ui.assertCheck->isChecked());
|
ExtensionSystem::IPluginManager *p = Core::ICore::instance()->pluginManager();
|
||||||
//if (_ui.infoCheck->isChecked());
|
ExtensionSystem::IPlugin *plugin = p->pluginByName("LogPlugin")->plugin();
|
||||||
|
CLogPlugin* lp = dynamic_cast<CLogPlugin*>(plugin);
|
||||||
|
if (lp)
|
||||||
|
{
|
||||||
|
lp->setDisplayers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CLogSettingsPage::readSettings()
|
||||||
|
{
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
|
||||||
|
settings->beginGroup(Core::Constants::LOG_SECTION);
|
||||||
|
m_error = settings->value(Core::Constants::LOG_ERROR, true).toBool();
|
||||||
|
m_warning = settings->value(Core::Constants::LOG_WARNING, true).toBool();
|
||||||
|
m_debug = settings->value(Core::Constants::LOG_DEBUG, true).toBool();
|
||||||
|
m_assert = settings->value(Core::Constants::LOG_ASSERT, true).toBool();
|
||||||
|
m_info = settings->value(Core::Constants::LOG_INFO, true).toBool();
|
||||||
|
settings->endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CLogSettingsPage::writeSettings()
|
||||||
|
{
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
|
||||||
|
settings->beginGroup(Core::Constants::LOG_SECTION);
|
||||||
|
settings->setValue(Core::Constants::LOG_ERROR, m_error);
|
||||||
|
settings->setValue(Core::Constants::LOG_WARNING, m_warning);
|
||||||
|
settings->setValue(Core::Constants::LOG_DEBUG, m_debug);
|
||||||
|
settings->setValue(Core::Constants::LOG_ASSERT, m_assert);
|
||||||
|
settings->setValue(Core::Constants::LOG_INFO, m_info);
|
||||||
|
settings->endGroup();
|
||||||
|
|
||||||
|
settings->sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
} /* namespace Plugin */
|
} /* namespace Plugin */
|
|
@ -29,29 +29,39 @@ class QWidget;
|
||||||
|
|
||||||
namespace Plugin
|
namespace Plugin
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@class CLogSettingsPage
|
@class CLogSettingsPage
|
||||||
*/
|
*/
|
||||||
class CLogSettingsPage : public Core::IOptionsPage
|
class CLogSettingsPage : public Core::IOptionsPage
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
CLogSettingsPage(QObject *parent = 0);
|
CLogSettingsPage(QObject *parent = 0);
|
||||||
virtual ~CLogSettingsPage() {}
|
virtual ~CLogSettingsPage() {}
|
||||||
|
|
||||||
virtual QString id() const;
|
virtual QString id() const;
|
||||||
virtual QString trName() const;
|
virtual QString trName() const;
|
||||||
virtual QString category() const;
|
virtual QString category() const;
|
||||||
virtual QString trCategory() const;
|
virtual QString trCategory() const;
|
||||||
virtual QWidget *createPage(QWidget *parent);
|
QIcon categoryIcon() const;
|
||||||
|
virtual QWidget *createPage(QWidget *parent);
|
||||||
|
|
||||||
virtual void apply();
|
virtual void apply();
|
||||||
virtual void finish() {}
|
virtual void finish() {}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QWidget *_currentPage;
|
void readSettings();
|
||||||
Ui::CLogSettingsPage _ui;
|
void writeSettings();
|
||||||
};
|
|
||||||
|
QWidget *m_currentPage;
|
||||||
|
Ui::CLogSettingsPage m_ui;
|
||||||
|
|
||||||
|
bool m_error;
|
||||||
|
bool m_warning;
|
||||||
|
bool m_debug;
|
||||||
|
bool m_assert;
|
||||||
|
bool m_info;
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace Core
|
} // namespace Core
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,21 @@
|
||||||
/*
|
// Object Viewer Qt - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||||||
Georges Editor Qt
|
// Copyright (C) 2010 Winch Gate Property Limited
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
// Copyright (C) 2011 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
//
|
||||||
This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU Affero General Public License as
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
(at your option) any later version.
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Nel includes
|
// Nel includes
|
||||||
|
|
||||||
#include "qt_displayer.h"
|
#include "qt_displayer.h"
|
||||||
#include <nel/misc/common.h>
|
#include <nel/misc/common.h>
|
||||||
#include <nel/misc/file.h>
|
#include <nel/misc/file.h>
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>361</width>
|
<width>206</width>
|
||||||
<height>555</height>
|
<height>555</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>300</width>
|
<width>200</width>
|
||||||
<height>83</height>
|
<height>83</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
@ -33,21 +33,21 @@
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tileTab">
|
<widget class="QWidget" name="tileTab">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Paint Tiles</string>
|
<string>Tiles</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="colorTab">
|
<widget class="QWidget" name="colorTab">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Paint Colors</string>
|
<string>Colors</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="displaceTab">
|
<widget class="QWidget" name="displaceTab">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Paint Displacement</string>
|
<string>Displacement</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
|
@ -1,9 +1,18 @@
|
||||||
#include "zone_painter_main_window.h"
|
#include "zone_painter_main_window.h"
|
||||||
#include "ui_zone_painter_main_window.h"
|
#include "ui_zone_painter_main_window.h"
|
||||||
|
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QSignalMapper>
|
||||||
|
#include <QColor>
|
||||||
|
#include <QColorDialog>
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
#include "qnel_widget.h"
|
#include "qnel_widget.h"
|
||||||
#include "painter_dock_widget.h"
|
#include "painter_dock_widget.h"
|
||||||
#include <QtGui/QMenu>
|
|
||||||
|
#include "../core/icore.h"
|
||||||
|
#include "../core/imenu_manager.h"
|
||||||
|
#include "../core/core_constants.h"
|
||||||
|
|
||||||
ZonePainterMainWindow::ZonePainterMainWindow(QWidget *parent) :
|
ZonePainterMainWindow::ZonePainterMainWindow(QWidget *parent) :
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
|
@ -13,6 +22,9 @@ ZonePainterMainWindow::ZonePainterMainWindow(QWidget *parent) :
|
||||||
m_nelWidget = new NLQT::QNLWidget(this);
|
m_nelWidget = new NLQT::QNLWidget(this);
|
||||||
setCentralWidget(m_nelWidget);
|
setCentralWidget(m_nelWidget);
|
||||||
|
|
||||||
|
// Load the settings.
|
||||||
|
loadConfig();
|
||||||
|
|
||||||
// Set up dock widget(s) and toolbar.
|
// Set up dock widget(s) and toolbar.
|
||||||
m_painterDockWidget = new PainterDockWidget(this);
|
m_painterDockWidget = new PainterDockWidget(this);
|
||||||
addDockWidget(Qt::RightDockWidgetArea, m_painterDockWidget);
|
addDockWidget(Qt::RightDockWidgetArea, m_painterDockWidget);
|
||||||
|
@ -24,34 +36,127 @@ ZonePainterMainWindow::ZonePainterMainWindow(QWidget *parent) :
|
||||||
ui->painterToolBar->addAction(_toolModeMenu->menuAction());
|
ui->painterToolBar->addAction(_toolModeMenu->menuAction());
|
||||||
//connect(_renderModeMenu->menuAction(), SIGNAL(triggered()), this, SLOT(setRenderMode()));
|
//connect(_renderModeMenu->menuAction(), SIGNAL(triggered()), this, SLOT(setRenderMode()));
|
||||||
|
|
||||||
//QSignalMapper *modeMapper = new QSignalMapper(this);
|
QSignalMapper *modeMapper = new QSignalMapper(this);
|
||||||
|
|
||||||
_toolPaintModeAction = _toolModeMenu->addAction(tr("Paint Mode"));
|
_toolPaintModeAction = _toolModeMenu->addAction(tr("Paint Mode"));
|
||||||
_toolPaintModeAction->setIcon(QIcon(":/painterTools/images/draw-brush.png"));
|
_toolPaintModeAction->setIcon(QIcon(":/painterTools/images/draw-brush.png"));
|
||||||
_toolPaintModeAction->setStatusTip(tr("Set paint mode"));
|
_toolPaintModeAction->setStatusTip(tr("Set paint mode"));
|
||||||
//connect(_pointRenderModeAction, SIGNAL(triggered()), modeMapper, SLOT(map()));
|
connect(_toolPaintModeAction, SIGNAL(triggered()), modeMapper, SLOT(map()));
|
||||||
//modeMapper->setMapping(_pointRenderModeAction, 0);
|
modeMapper->setMapping(_toolPaintModeAction, 0);
|
||||||
|
|
||||||
_toolFillModeAction = _toolModeMenu->addAction(tr("Fill Mode"));
|
_toolFillModeAction = _toolModeMenu->addAction(tr("Fill Mode"));
|
||||||
_toolFillModeAction->setStatusTip(tr("Set fill mode"));
|
_toolFillModeAction->setStatusTip(tr("Set fill mode"));
|
||||||
_toolFillModeAction->setIcon(QIcon(":/painterTools/images/color-fill.png"));
|
_toolFillModeAction->setIcon(QIcon(":/painterTools/images/color-fill.png"));
|
||||||
//connect(_lineRenderModeAction, SIGNAL(triggered()), modeMapper, SLOT(map()));
|
connect(_toolFillModeAction, SIGNAL(triggered()), modeMapper, SLOT(map()));
|
||||||
//modeMapper->setMapping(_lineRenderModeAction, 1);
|
modeMapper->setMapping(_toolFillModeAction, 1);
|
||||||
|
|
||||||
_toolSelectModeAction = _toolModeMenu->addAction(tr("Select mode"));
|
_toolSelectModeAction = _toolModeMenu->addAction(tr("Select mode"));
|
||||||
_toolSelectModeAction->setIcon(QIcon(":/painterTools/images/go-jump-4.png"));
|
_toolSelectModeAction->setIcon(QIcon(":/painterTools/images/go-jump-4.png"));
|
||||||
_toolSelectModeAction->setStatusTip(tr("Set select mode"));
|
_toolSelectModeAction->setStatusTip(tr("Set select mode"));
|
||||||
//connect(_fillRenderModeAction, SIGNAL(triggered()), modeMapper, SLOT(map()));
|
connect(_toolSelectModeAction, SIGNAL(triggered()), modeMapper, SLOT(map()));
|
||||||
//modeMapper->setMapping(_fillRenderModeAction, 2);
|
modeMapper->setMapping(_toolSelectModeAction, 2);
|
||||||
|
|
||||||
_toolPickModeAction = _toolModeMenu->addAction(tr("Pick mode"));
|
_toolPickModeAction = _toolModeMenu->addAction(tr("Pick mode"));
|
||||||
_toolPickModeAction->setIcon(QIcon(":/painterTools/images/color-picker-black.png"));
|
_toolPickModeAction->setIcon(QIcon(":/painterTools/images/color-picker-black.png"));
|
||||||
_toolPickModeAction->setStatusTip(tr("Set color picking mode"));
|
_toolPickModeAction->setStatusTip(tr("Set color picking mode"));
|
||||||
//connect(_fillRenderModeAction, SIGNAL(triggered()), modeMapper, SLOT(map()));
|
connect(_toolPickModeAction, SIGNAL(triggered()), modeMapper, SLOT(map()));
|
||||||
//modeMapper->setMapping(_fillRenderModeAction, 2);
|
modeMapper->setMapping(_toolPickModeAction, 2);
|
||||||
|
|
||||||
//connect(modeMapper, SIGNAL(mapped(int)), this, SLOT(setRenderMode(int)));
|
connect(modeMapper, SIGNAL(mapped(int)), this, SLOT(setToolMode(int)));
|
||||||
|
|
||||||
|
m_statusBarTimer = new QTimer(this);
|
||||||
|
connect(m_statusBarTimer, SIGNAL(timeout()), this, SLOT(updateStatusBar()));
|
||||||
|
m_statusInfo = new QLabel(this);
|
||||||
|
m_statusInfo->hide();
|
||||||
|
|
||||||
|
// Set Background Color Toolbar
|
||||||
|
|
||||||
|
|
||||||
|
connect(ui->actionBackground_Dlg, SIGNAL(triggered()), this, SLOT(setBackgroundColor()));
|
||||||
|
|
||||||
|
|
||||||
|
Core::ICore::instance()->mainWindow()->statusBar()->addPermanentWidget(m_statusInfo);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZonePainterMainWindow::showEvent(QShowEvent *showEvent)
|
||||||
|
{
|
||||||
|
QMainWindow::showEvent(showEvent);
|
||||||
|
m_statusBarTimer->start(1000);
|
||||||
|
m_statusInfo->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZonePainterMainWindow::hideEvent(QHideEvent *hideEvent)
|
||||||
|
{
|
||||||
|
m_statusBarTimer->stop();
|
||||||
|
m_statusInfo->hide();
|
||||||
|
QMainWindow::hideEvent(hideEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZonePainterMainWindow::updateStatusBar()
|
||||||
|
{
|
||||||
|
m_statusInfo->setText(QString("Tool Mode: Paint Mode"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZonePainterMainWindow::setToolMode(int value)
|
||||||
|
{
|
||||||
|
switch (value)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
//Modules::objView().getDriver()->setPolygonMode (NL3D::UDriver::Point);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
//Modules::objView().getDriver()->setPolygonMode (NL3D::UDriver::Line);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
//Modules::objView().getDriver()->setPolygonMode (NL3D::UDriver::Filled);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZonePainterMainWindow::setToolMode()
|
||||||
|
{
|
||||||
|
//switch (Modules::objView().getDriver()->getPolygonMode())
|
||||||
|
//{
|
||||||
|
//case NL3D::UDriver::Filled:
|
||||||
|
// Modules::objView().getDriver()->setPolygonMode (NL3D::UDriver::Line);
|
||||||
|
// break;
|
||||||
|
//case NL3D::UDriver::Line:
|
||||||
|
// Modules::objView().getDriver()->setPolygonMode (NL3D::UDriver::Point);
|
||||||
|
// break;
|
||||||
|
//case NL3D::UDriver::Point:
|
||||||
|
// Modules::objView().getDriver()->setPolygonMode (NL3D::UDriver::Filled);
|
||||||
|
// break;
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZonePainterMainWindow::setBackgroundColor() {
|
||||||
|
QColor color = QColorDialog::getColor(QColor(m_nelWidget->backgroundColor().R,
|
||||||
|
m_nelWidget->backgroundColor().G,
|
||||||
|
m_nelWidget->backgroundColor().B));
|
||||||
|
if (color.isValid())
|
||||||
|
m_nelWidget->setBackgroundColor(NLMISC::CRGBA(color.red(), color.green(), color.blue()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZonePainterMainWindow::loadConfig() {
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
settings->beginGroup("ZonePainter");
|
||||||
|
|
||||||
|
QColor color;
|
||||||
|
color = settings->value("BackgroundColor", QColor(80, 80, 80)).value<QColor>();
|
||||||
|
m_nelWidget->setBackgroundColor(NLMISC::CRGBA(color.red(), color.green(), color.blue(), color.alpha()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ZonePainterMainWindow::saveConfig() {
|
||||||
|
QSettings *settings = Core::ICore::instance()->settings();
|
||||||
|
settings->beginGroup("ZonePainter" );
|
||||||
|
|
||||||
|
QColor color(m_nelWidget->backgroundColor().R, m_nelWidget->backgroundColor().G, m_nelWidget->backgroundColor().B, m_nelWidget->backgroundColor().A);
|
||||||
|
settings->setValue("BackgroundColor", color);
|
||||||
|
|
||||||
|
settings->endGroup();
|
||||||
|
settings->sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
ZonePainterMainWindow::~ZonePainterMainWindow()
|
ZonePainterMainWindow::~ZonePainterMainWindow()
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
#define ZONE_PAINTER_MAIN_WINDOW_H
|
#define ZONE_PAINTER_MAIN_WINDOW_H
|
||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
#include <QTimer>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QAction>
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT {
|
||||||
class QNLWidget;
|
class QNLWidget;
|
||||||
|
@ -21,16 +24,33 @@ public:
|
||||||
explicit ZonePainterMainWindow(QWidget *parent = 0);
|
explicit ZonePainterMainWindow(QWidget *parent = 0);
|
||||||
~ZonePainterMainWindow();
|
~ZonePainterMainWindow();
|
||||||
|
|
||||||
|
void loadConfig();
|
||||||
|
void saveConfig();
|
||||||
|
|
||||||
|
public Q_SLOTS:
|
||||||
|
void setToolMode(int value);
|
||||||
|
void setToolMode();
|
||||||
|
void updateStatusBar();
|
||||||
|
void setBackgroundColor();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void showEvent(QShowEvent *showEvent);
|
||||||
|
virtual void hideEvent(QHideEvent *hideEvent);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::ZonePainterMainWindow *ui;
|
Ui::ZonePainterMainWindow *ui;
|
||||||
NLQT::QNLWidget *m_nelWidget;
|
NLQT::QNLWidget *m_nelWidget;
|
||||||
PainterDockWidget *m_painterDockWidget;
|
PainterDockWidget *m_painterDockWidget;
|
||||||
|
QTimer *m_statusBarTimer;
|
||||||
|
QLabel *m_statusInfo;
|
||||||
|
|
||||||
QAction *_toolPaintModeAction;
|
QAction *_toolPaintModeAction;
|
||||||
QAction *_toolFillModeAction;
|
QAction *_toolFillModeAction;
|
||||||
QAction *_toolSelectModeAction;
|
QAction *_toolSelectModeAction;
|
||||||
QAction *_toolPickModeAction;
|
QAction *_toolPickModeAction;
|
||||||
QMenu *_toolModeMenu;
|
QMenu *_toolModeMenu;
|
||||||
|
|
||||||
|
//QAction *m_setBackColorAction;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ZONE_PAINTER_MAIN_WINDOW_H
|
#endif // ZONE_PAINTER_MAIN_WINDOW_H
|
||||||
|
|
|
@ -1156,7 +1156,7 @@ void CGroupSubMenu::addSeparatorAtIndex(uint index, const std::string &id)
|
||||||
tmp.CheckBox = NULL;
|
tmp.CheckBox = NULL;
|
||||||
tmp.RightArrow = NULL;
|
tmp.RightArrow = NULL;
|
||||||
_Lines.insert(_Lines.begin() + index, tmp);
|
_Lines.insert(_Lines.begin() + index, tmp);
|
||||||
_SubMenus.insert(_SubMenus.begin() + index, NULL);
|
_SubMenus.insert(_SubMenus.begin() + index, (CGroupSubMenu*)NULL);
|
||||||
_GroupMenu->invalidateCoords();
|
_GroupMenu->invalidateCoords();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1304,7 +1304,7 @@ CViewTextMenu* CGroupSubMenu::addLineAtIndex(uint index, const ucstring &name,
|
||||||
_Lines.insert(_Lines.begin() + index, tmp);
|
_Lines.insert(_Lines.begin() + index, tmp);
|
||||||
|
|
||||||
// Add an empty sub menu by default
|
// Add an empty sub menu by default
|
||||||
_SubMenus.insert(_SubMenus.begin() + index, NULL);
|
_SubMenus.insert(_SubMenus.begin() + index, (CGroupSubMenu*)NULL);
|
||||||
|
|
||||||
_GroupMenu->invalidateCoords();
|
_GroupMenu->invalidateCoords();
|
||||||
|
|
||||||
|
|
|
@ -155,7 +155,7 @@ void CGroupTab::addTab(CCtrlTabButton * tabB, sint index)
|
||||||
{
|
{
|
||||||
if(i==index)
|
if(i==index)
|
||||||
{
|
{
|
||||||
tabB->setId(string("tab") + count);
|
tabB->setId("tab" + NLMISC::toString(count));
|
||||||
tabB->setParentPos(lastTab);
|
tabB->setParentPos(lastTab);
|
||||||
if(i==0)
|
if(i==0)
|
||||||
tabB->setParentPosRef(Hotspot_TL);
|
tabB->setParentPosRef(Hotspot_TL);
|
||||||
|
@ -168,7 +168,7 @@ void CGroupTab::addTab(CCtrlTabButton * tabB, sint index)
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
buttons[i]->setId(string("tab") + count);
|
buttons[i]->setId("tab" + NLMISC::toString(count));
|
||||||
buttons[i]->setParentPos(lastTab);
|
buttons[i]->setParentPos(lastTab);
|
||||||
if(i==0 && index!=0)
|
if(i==0 && index!=0)
|
||||||
buttons[i]->setParentPosRef(Hotspot_TL);
|
buttons[i]->setParentPosRef(Hotspot_TL);
|
||||||
|
@ -297,7 +297,7 @@ void CGroupTab::removeTab(sint index)
|
||||||
{
|
{
|
||||||
if(i!=index)
|
if(i!=index)
|
||||||
{
|
{
|
||||||
buttons[i]->setId(string("tab")+count);
|
buttons[i]->setId("tab"+NLMISC::toString(count));
|
||||||
buttons[i]->setParentPos(lastTab);
|
buttons[i]->setParentPos(lastTab);
|
||||||
if((i==0) || (index==0 && i==1))
|
if((i==0) || (index==0 && i==1))
|
||||||
buttons[i]->setParentPosRef(Hotspot_TL);
|
buttons[i]->setParentPosRef(Hotspot_TL);
|
||||||
|
|
|
@ -986,7 +986,7 @@ void CDisplayerVisualEntity::updateName()
|
||||||
}
|
}
|
||||||
std::string firstPart = "";
|
std::string firstPart = "";
|
||||||
if(actNb>0)
|
if(actNb>0)
|
||||||
firstPart = CI18N::get("uiR2EDDefaultActTitle").toString() + " " + actNb;
|
firstPart = CI18N::get("uiR2EDDefaultActTitle").toString() + " " + NLMISC::toString(actNb);
|
||||||
|
|
||||||
if (act->isString("Name"))
|
if (act->isString("Name"))
|
||||||
actName = act->toString("Name");
|
actName = act->toString("Name");
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <iterator>
|
||||||
|
|
||||||
#include <nel/misc/common.h>
|
#include <nel/misc/common.h>
|
||||||
#include <nel/misc/debug.h>
|
#include <nel/misc/debug.h>
|
||||||
|
|
|
@ -688,12 +688,15 @@
|
||||||
<DYNAMIC_CHILD CLASS_NAME="recv_named_item"/>
|
<DYNAMIC_CHILD CLASS_NAME="recv_named_item"/>
|
||||||
<DYNAMIC_CHILD CLASS_NAME="recv_xp"/>
|
<DYNAMIC_CHILD CLASS_NAME="recv_xp"/>
|
||||||
<DYNAMIC_CHILD CLASS_NAME="destroy_item"/>
|
<DYNAMIC_CHILD CLASS_NAME="destroy_item"/>
|
||||||
|
<DYNAMIC_CHILD CLASS_NAME="give_control" />
|
||||||
|
<DYNAMIC_CHILD CLASS_NAME="recv_charge_point" />
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="recv_money" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
<PRIMITIVE CLASS_NAME="recv_money" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="recv_money $amount$"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="recv_money $amount$"/>
|
||||||
<PARAMETER NAME="amount" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="amount" TYPE="string" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="guild" TYPE="boolean" VISIBLE="true" />
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="chain_mission" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
<PRIMITIVE CLASS_NAME="chain_mission" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
||||||
|
@ -836,10 +839,19 @@
|
||||||
<PARAMETER NAME="point" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="point" TYPE="string" VISIBLE="true"/>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
|
<PRIMITIVE CLASS_NAME="give_control" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
||||||
|
<PARAMETER NAME="outpost_name" TYPE="string" VISIBLE="true" />
|
||||||
|
</PRIMITIVE>
|
||||||
|
|
||||||
|
<PRIMITIVE CLASS_NAME="recv_charge_point" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
||||||
|
<PARAMETER NAME="charge_points" TYPE="string" VISIBLE="true" />
|
||||||
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="recv_fame" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
<PRIMITIVE CLASS_NAME="recv_fame" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="recv_fame $value$ $fame_owner$"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="recv_fame $value$ $fame_owner$"/>
|
||||||
<PARAMETER NAME="faction" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="faction" TYPE="string" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="value" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="value" TYPE="string" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="guild" TYPE="boolean" VISIBLE="true" />
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="recv_guild_xp" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
<PRIMITIVE CLASS_NAME="recv_guild_xp" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
||||||
|
@ -852,6 +864,7 @@
|
||||||
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="group" TYPE="boolean" VISIBLE="true"/>
|
<PARAMETER NAME="group" TYPE="boolean" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="guild" TYPE="boolean" VISIBLE="true" />
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="learn_action" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
<PRIMITIVE CLASS_NAME="learn_action" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
||||||
|
@ -1007,6 +1020,7 @@
|
||||||
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="item/quantity" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="item/quantity" TYPE="string_array" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="group" TYPE="boolean" VISIBLE="true"/>
|
<PARAMETER NAME="group" TYPE="boolean" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="guild" TYPE="boolean" VISIBLE="true" />
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="recv_xp" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
<PRIMITIVE CLASS_NAME="recv_xp" TYPE="node" AUTO_INIT="false" DELETABLE="true" NUMBERIZE="false">
|
||||||
|
@ -1019,6 +1033,7 @@
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="destroy_item $item/quantity/quality$"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="destroy_item $item/quantity/quality$"/>
|
||||||
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="guild" TYPE="boolean" VISIBLE="true" />
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<!-- Fin actions -->
|
<!-- Fin actions -->
|
||||||
|
@ -1093,6 +1108,8 @@
|
||||||
<DYNAMIC_CHILD CLASS_NAME="recv_named_item"/>
|
<DYNAMIC_CHILD CLASS_NAME="recv_named_item"/>
|
||||||
<DYNAMIC_CHILD CLASS_NAME="recv_xp"/>
|
<DYNAMIC_CHILD CLASS_NAME="recv_xp"/>
|
||||||
<DYNAMIC_CHILD CLASS_NAME="destroy_item"/>
|
<DYNAMIC_CHILD CLASS_NAME="destroy_item"/>
|
||||||
|
<DYNAMIC_CHILD CLASS_NAME="give_control" />
|
||||||
|
<DYNAMIC_CHILD CLASS_NAME="recv_charge_point" />
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="kill" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="kill" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
|
@ -1106,6 +1123,9 @@
|
||||||
<PARAMETER NAME="faction/quantity" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="faction/quantity" TYPE="string" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="place" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="place" TYPE="string" VISIBLE="true"/>
|
||||||
|
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="talk_to" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="talk_to" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
|
@ -1115,7 +1135,9 @@
|
||||||
<DEFAULT_VALUE VALUE="$giver$"/>
|
<DEFAULT_VALUE VALUE="$giver$"/>
|
||||||
</PARAMETER>
|
</PARAMETER>
|
||||||
<PARAMETER NAME="phrase" TYPE="string_array" VISIBLE="true" FILE_EXTENSION="txt"/>
|
<PARAMETER NAME="phrase" TYPE="string_array" VISIBLE="true" FILE_EXTENSION="txt"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="cast" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="cast" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
|
@ -1124,24 +1146,34 @@
|
||||||
<PARAMETER NAME="action" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="action" TYPE="string_array" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="place" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="place" TYPE="string" VISIBLE="true"/>
|
||||||
|
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
|
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="forage" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="forage" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="forage"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="forage"/>
|
||||||
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="loot" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="loot" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="loot"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="loot"/>
|
||||||
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="craft" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="craft" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="craft"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="craft"/>
|
||||||
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="target" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="target" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
|
@ -1150,20 +1182,27 @@
|
||||||
<PARAMETER NAME="races_to_target" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="races_to_target" TYPE="string_array" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="faunas_to_target" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="faunas_to_target" TYPE="string_array" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="place" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="place" TYPE="string" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="sell" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="sell" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="sell"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="sell"/>
|
||||||
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="buy" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="buy" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="buy"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="buy"/>
|
||||||
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="item/quantity/quality" TYPE="string_array" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="give_item" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="give_item" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
|
@ -1173,7 +1212,9 @@
|
||||||
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true">
|
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true">
|
||||||
<DEFAULT_VALUE VALUE="$giver$"/>
|
<DEFAULT_VALUE VALUE="$giver$"/>
|
||||||
</PARAMETER>
|
</PARAMETER>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="give_money" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="give_money" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
|
@ -1182,7 +1223,9 @@
|
||||||
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true">
|
<PARAMETER NAME="npc_name" TYPE="string" VISIBLE="true">
|
||||||
<DEFAULT_VALUE VALUE="$giver$"/>
|
<DEFAULT_VALUE VALUE="$giver$"/>
|
||||||
</PARAMETER>
|
</PARAMETER>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="visit" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="visit" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
|
@ -1190,7 +1233,9 @@
|
||||||
|
|
||||||
<PARAMETER NAME="place" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="place" TYPE="string" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="items_worn" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="items_worn" TYPE="string_array" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="escort" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="escort" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
|
@ -1198,26 +1243,35 @@
|
||||||
|
|
||||||
<PARAMETER NAME="group_to_escort" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="group_to_escort" TYPE="string" VISIBLE="true"/>
|
||||||
<PARAMETER NAME="save_all" TYPE="boolean" VISIBLE="true"/>
|
<PARAMETER NAME="save_all" TYPE="boolean" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="skill" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="skill" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="skill $skill_name$ $level$"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="skill $skill_name$ $level$"/>
|
||||||
<PARAMETER NAME="skill_name/level" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="skill_name/level" TYPE="string_array" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="do_mission" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="do_mission" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="do_mission"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="do_mission"/>
|
||||||
|
|
||||||
<PARAMETER NAME="mission_names" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="mission_names" TYPE="string_array" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="wait_ai_msg" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="wait_ai_msg" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="wait_ai_msg $msg_content$"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="wait_ai_msg $msg_content$"/>
|
||||||
|
|
||||||
<PARAMETER NAME="msg_content" TYPE="string_array" VISIBLE="true"/>
|
<PARAMETER NAME="msg_content" TYPE="string_array" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="queue_start" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="queue_start" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
|
@ -1250,13 +1304,18 @@
|
||||||
<CONTEXT_VALUE VALUE="zorai_newbie"/>
|
<CONTEXT_VALUE VALUE="zorai_newbie"/>
|
||||||
</COMBO_VALUES>
|
</COMBO_VALUES>
|
||||||
</PARAMETER>
|
</PARAMETER>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
<PRIMITIVE CLASS_NAME="ring_scenario" TYPE="node" PARENT_CLASS="objective_parent">
|
<PRIMITIVE CLASS_NAME="ring_scenario" TYPE="node" PARENT_CLASS="objective_parent">
|
||||||
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="ring_scenario"/>
|
<PARAMETER NAME="name" TYPE="string" VISIBLE="true" AUTONAME="ring_scenario"/>
|
||||||
|
|
||||||
<PARAMETER NAME="scenario_tag" TYPE="string" VISIBLE="true"/>
|
<PARAMETER NAME="scenario_tag" TYPE="string" VISIBLE="true"/>
|
||||||
|
<PARAMETER NAME="nb_guild_members_needed" TYPE="string" VISIBLE="true">
|
||||||
|
<DEFAULT_VALUE VALUE="1" />
|
||||||
|
</PARAMETER>
|
||||||
</PRIMITIVE>
|
</PRIMITIVE>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -674,7 +674,7 @@ void md5sum_s_s(CStateInstance* entity, CScriptStack& stack)
|
||||||
{
|
{
|
||||||
std::string str = (std::string)stack.top();
|
std::string str = (std::string)stack.top();
|
||||||
|
|
||||||
std::string value = NLMISC::getMD5((uint8*)&str[0], str.size() ).toString();
|
std::string value = NLMISC::getMD5((uint8*)&str[0], (uint32)str.size() ).toString();
|
||||||
nlinfo(value.c_str());
|
nlinfo(value.c_str());
|
||||||
stack.top() = value;
|
stack.top() = value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,7 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <iterator>
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "nel/misc/types_nl.h"
|
#include "nel/misc/types_nl.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <iterator>
|
||||||
|
|
||||||
#include "nel/misc/common.h"
|
#include "nel/misc/common.h"
|
||||||
|
|
||||||
|
|
|
@ -10,11 +10,11 @@ ADD_SUBDIRECTORY(named_items_2_csv)
|
||||||
IF(WIN32)
|
IF(WIN32)
|
||||||
ADD_SUBDIRECTORY(export)
|
ADD_SUBDIRECTORY(export)
|
||||||
ADD_SUBDIRECTORY(world_editor)
|
ADD_SUBDIRECTORY(world_editor)
|
||||||
|
IF(WITH_MFC)
|
||||||
|
ADD_SUBDIRECTORY(mission_compiler_fe)
|
||||||
|
ENDIF(WITH_MFC)
|
||||||
ENDIF(WIN32)
|
ENDIF(WIN32)
|
||||||
|
|
||||||
IF(WITH_MFC)
|
|
||||||
ADD_SUBDIRECTORY(mission_compiler_fe)
|
|
||||||
ENDIF(WITH_MFC)
|
|
||||||
|
|
||||||
IF(WITH_QT)
|
IF(WITH_QT)
|
||||||
ADD_SUBDIRECTORY(georges_editor_qt)
|
ADD_SUBDIRECTORY(georges_editor_qt)
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "mission_compiler.h"
|
#include "mission_compiler.h"
|
||||||
#include "step.h"
|
#include "step.h"
|
||||||
#include "nel/misc/i18n.h"
|
#include "nel/misc/i18n.h"
|
||||||
|
#include "nel/ligo/primitive_utils.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
|
@ -526,7 +527,12 @@ bool CMissionCompiler::compileMission(NLLIGO::IPrimitive *rootPrim, const std::s
|
||||||
}
|
}
|
||||||
|
|
||||||
// first, start by reading mission variables
|
// first, start by reading mission variables
|
||||||
IPrimitive *variables = getPrimitiveChild(mission, TPrimitiveClassPredicate("variables"));
|
IPrimitive *variables;
|
||||||
|
{
|
||||||
|
TPrimitiveClassPredicate predTmp("variables");
|
||||||
|
variables= NLLIGO::getPrimitiveChild(mission, predTmp);
|
||||||
|
}
|
||||||
|
|
||||||
if (!variables)
|
if (!variables)
|
||||||
{
|
{
|
||||||
nlwarning("Can't find variables !");
|
nlwarning("Can't find variables !");
|
||||||
|
@ -540,7 +546,12 @@ bool CMissionCompiler::compileMission(NLLIGO::IPrimitive *rootPrim, const std::s
|
||||||
// now, we can init the mission header phrase (they need variable knwoled)
|
// now, we can init the mission header phrase (they need variable knwoled)
|
||||||
md.initHeaderPhrase(rootPrim);
|
md.initHeaderPhrase(rootPrim);
|
||||||
|
|
||||||
IPrimitive *preReq = getPrimitiveChild(mission, TPrimitiveClassPredicate("pre_requisite"));
|
IPrimitive *preReq;
|
||||||
|
{
|
||||||
|
TPrimitiveClassPredicate predTmp("pre_requisite");
|
||||||
|
preReq = getPrimitiveChild(mission, predTmp);
|
||||||
|
}
|
||||||
|
|
||||||
if (!preReq)
|
if (!preReq)
|
||||||
{
|
{
|
||||||
nlwarning("Can't find pre requisite !");
|
nlwarning("Can't find pre requisite !");
|
||||||
|
@ -598,7 +609,8 @@ bool CMissionCompiler::compileMissions(IPrimitive *rootPrim, const std::string &
|
||||||
|
|
||||||
CPrimitiveSet<TPrimitiveClassPredicate> scriptsSet;
|
CPrimitiveSet<TPrimitiveClassPredicate> scriptsSet;
|
||||||
|
|
||||||
scriptsSet.buildSet(rootPrim, TPrimitiveClassPredicate("mission_tree"), missionTrees);
|
TPrimitiveClassPredicate pred("mission_tree");
|
||||||
|
scriptsSet.buildSet(rootPrim, pred, missionTrees);
|
||||||
|
|
||||||
nlinfo("Found %u mission tree in the primitive file", missionTrees.size());
|
nlinfo("Found %u mission tree in the primitive file", missionTrees.size());
|
||||||
|
|
||||||
|
@ -667,7 +679,8 @@ bool CMissionCompiler::installCompiledMission(NLLIGO::CLigoConfig &ligoConfig, c
|
||||||
|
|
||||||
TPrimitiveSet scripts;
|
TPrimitiveSet scripts;
|
||||||
CPrimitiveSet<TPrimitiveClassPredicate> filter;
|
CPrimitiveSet<TPrimitiveClassPredicate> filter;
|
||||||
filter.buildSet(primDoc->RootNode, TPrimitiveClassPredicate("mission"), scripts);
|
TPrimitiveClassPredicate pred("mission");
|
||||||
|
filter.buildSet(primDoc->RootNode, pred, scripts);
|
||||||
|
|
||||||
// for each script, check if it was generated, and if so, check the name
|
// for each script, check if it was generated, and if so, check the name
|
||||||
// of the source primitive file.
|
// of the source primitive file.
|
||||||
|
@ -732,7 +745,8 @@ bool CMissionCompiler::installCompiledMission(NLLIGO::CLigoConfig &ligoConfig, c
|
||||||
|
|
||||||
TPrimitiveSet bots;
|
TPrimitiveSet bots;
|
||||||
CPrimitiveSet<TPrimitiveClassAndNamePredicate> filter;
|
CPrimitiveSet<TPrimitiveClassAndNamePredicate> filter;
|
||||||
filter.buildSet(primDoc->RootNode, TPrimitiveClassAndNamePredicate("npc_bot", mission.getGiverName()), bots);
|
TPrimitiveClassAndNamePredicate pred("npc_bot", mission.getGiverName());
|
||||||
|
filter.buildSet(primDoc->RootNode, pred, bots);
|
||||||
|
|
||||||
if (bots.empty())
|
if (bots.empty())
|
||||||
{
|
{
|
||||||
|
@ -961,7 +975,8 @@ bool CMissionCompiler::parseOneStep(CMissionData &md, IPrimitive *stepToParse, I
|
||||||
bool CMissionCompiler::parseSteps(CMissionData &md, IPrimitive *steps, IStep *parent)
|
bool CMissionCompiler::parseSteps(CMissionData &md, IPrimitive *steps, IStep *parent)
|
||||||
{
|
{
|
||||||
TPrimitiveSet childs;
|
TPrimitiveSet childs;
|
||||||
filterPrimitiveChilds(steps, TPrimitivePropertyPredicate("step_tag", "true"), childs);
|
TPrimitivePropertyPredicate pred("step_tag", "true");
|
||||||
|
filterPrimitiveChilds(steps, pred, childs);
|
||||||
|
|
||||||
if (childs.empty())
|
if (childs.empty())
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,7 +55,11 @@ IStep::IStep(CMissionData &md, NLLIGO::IPrimitive *prim)
|
||||||
// parse the sub prim to create action & objectives;
|
// parse the sub prim to create action & objectives;
|
||||||
IPrimitive *child;
|
IPrimitive *child;
|
||||||
// parse the preactions
|
// parse the preactions
|
||||||
child = getPrimitiveChild(prim, TPrimitiveClassAndNamePredicate("actions", "pre_actions"));
|
{
|
||||||
|
TPrimitiveClassAndNamePredicate pred("actions", "pre_actions");
|
||||||
|
child = getPrimitiveChild(prim, pred);
|
||||||
|
}
|
||||||
|
|
||||||
if (child)
|
if (child)
|
||||||
{
|
{
|
||||||
for (uint i=0; i<child->getNumChildren(); ++i)
|
for (uint i=0; i<child->getNumChildren(); ++i)
|
||||||
|
@ -72,7 +76,10 @@ IStep::IStep(CMissionData &md, NLLIGO::IPrimitive *prim)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// parse the objectives
|
// parse the objectives
|
||||||
child = getPrimitiveChild(prim, TPrimitiveClassAndNamePredicate("mission_objectives", "objectives"));
|
{
|
||||||
|
TPrimitiveClassAndNamePredicate pred("mission_objectives", "objectives");
|
||||||
|
child = getPrimitiveChild(prim, pred);
|
||||||
|
}
|
||||||
if (child)
|
if (child)
|
||||||
{
|
{
|
||||||
for (uint i=0; i<child->getNumChildren(); ++i)
|
for (uint i=0; i<child->getNumChildren(); ++i)
|
||||||
|
@ -89,7 +96,10 @@ IStep::IStep(CMissionData &md, NLLIGO::IPrimitive *prim)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// parse the post actions
|
// parse the post actions
|
||||||
child = getPrimitiveChild(prim, TPrimitiveClassAndNamePredicate("actions", "post_actions"));
|
{
|
||||||
|
TPrimitiveClassAndNamePredicate pred("actions", "post_actions");
|
||||||
|
child = getPrimitiveChild(prim, pred);
|
||||||
|
}
|
||||||
if (child)
|
if (child)
|
||||||
{
|
{
|
||||||
for (uint i=0; i<child->getNumChildren(); ++i)
|
for (uint i=0; i<child->getNumChildren(); ++i)
|
||||||
|
@ -447,7 +457,10 @@ public:
|
||||||
// parse the sub prim to create action & objectives;
|
// parse the sub prim to create action & objectives;
|
||||||
IPrimitive *child;
|
IPrimitive *child;
|
||||||
// parse the pre-actions
|
// parse the pre-actions
|
||||||
child = getPrimitiveChild(prim, TPrimitiveClassAndNamePredicate("actions", "actions"));
|
{
|
||||||
|
TPrimitiveClassAndNamePredicate pred("actions", "actions");
|
||||||
|
child = getPrimitiveChild(prim, pred);
|
||||||
|
}
|
||||||
if (child)
|
if (child)
|
||||||
{
|
{
|
||||||
for (uint i=0; i<child->getNumChildren(); ++i)
|
for (uint i=0; i<child->getNumChildren(); ++i)
|
||||||
|
@ -464,7 +477,10 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// look for an optional jump
|
// look for an optional jump
|
||||||
child = getPrimitiveChild(prim, TPrimitiveClassPredicate("jump_to"));
|
{
|
||||||
|
TPrimitiveClassPredicate pred("jump_to");
|
||||||
|
child = getPrimitiveChild(prim, pred);
|
||||||
|
}
|
||||||
if (child)
|
if (child)
|
||||||
{
|
{
|
||||||
// ok, we have a jump at end of fail step
|
// ok, we have a jump at end of fail step
|
||||||
|
@ -515,7 +531,10 @@ public:
|
||||||
// parse the sub prim to create action & objectives;
|
// parse the sub prim to create action & objectives;
|
||||||
IPrimitive *child;
|
IPrimitive *child;
|
||||||
// parse the pre-actions
|
// parse the pre-actions
|
||||||
child = getPrimitiveChild(prim, TPrimitiveClassAndNamePredicate("actions", "actions"));
|
{
|
||||||
|
TPrimitiveClassAndNamePredicate pred("actions", "actions");
|
||||||
|
child = getPrimitiveChild(prim, pred);
|
||||||
|
}
|
||||||
if (child)
|
if (child)
|
||||||
{
|
{
|
||||||
for (uint i=0; i<child->getNumChildren(); ++i)
|
for (uint i=0; i<child->getNumChildren(); ++i)
|
||||||
|
@ -546,7 +565,10 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// look for an optional jump
|
// look for an optional jump
|
||||||
child = getPrimitiveChild(prim, TPrimitiveClassPredicate("jump_to"));
|
{
|
||||||
|
TPrimitiveClassPredicate pred("jump_to");
|
||||||
|
child = getPrimitiveChild(prim, pred);
|
||||||
|
}
|
||||||
if (child)
|
if (child)
|
||||||
{
|
{
|
||||||
// ok, we have a jump at end of fail step
|
// ok, we have a jump at end of fail step
|
||||||
|
@ -607,14 +629,20 @@ CStepPlayerReconnect::CStepPlayerReconnect(CMissionData &md, IPrimitive *prim) :
|
||||||
IPrimitive *child;
|
IPrimitive *child;
|
||||||
|
|
||||||
TPrimitiveSet resp;
|
TPrimitiveSet resp;
|
||||||
filterPrimitiveChilds(prim, TPrimitivePropertyPredicate("step_tag", "true"), resp);
|
{
|
||||||
|
TPrimitivePropertyPredicate pred("step_tag", "true");
|
||||||
|
filterPrimitiveChilds(prim, pred, resp);
|
||||||
|
}
|
||||||
for (uint i=0; i<resp.size(); ++i)
|
for (uint i=0; i<resp.size(); ++i)
|
||||||
{
|
{
|
||||||
_SubBranchs.push_back(resp[i]);
|
_SubBranchs.push_back(resp[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// look for an optional jump
|
// look for an optional jump
|
||||||
child = getPrimitiveChild(prim, TPrimitiveClassPredicate("jump_to"));
|
{
|
||||||
|
TPrimitiveClassPredicate pred("jump_to");
|
||||||
|
child = getPrimitiveChild(prim, pred);
|
||||||
|
}
|
||||||
if (child)
|
if (child)
|
||||||
{
|
{
|
||||||
// ok, we have a jump at end of fail step
|
// ok, we have a jump at end of fail step
|
||||||
|
@ -721,12 +749,19 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// build the sub branch list
|
// build the sub branch list
|
||||||
IPrimitive *noResp = getPrimitiveChild(prim, TPrimitiveClassPredicate("no_answer"));
|
IPrimitive *noResp;
|
||||||
|
{
|
||||||
|
TPrimitiveClassPredicate pred("no_answer");
|
||||||
|
noResp = getPrimitiveChild(prim, pred);
|
||||||
|
}
|
||||||
nlassert(noResp);
|
nlassert(noResp);
|
||||||
_SubBranchs.push_back(noResp);
|
_SubBranchs.push_back(noResp);
|
||||||
|
|
||||||
TPrimitiveSet resp;
|
TPrimitiveSet resp;
|
||||||
filterPrimitiveChilds(prim, TPrimitiveClassPredicate("dyn_answer"), resp);
|
{
|
||||||
|
TPrimitiveClassPredicate pred("dyn_answer");
|
||||||
|
filterPrimitiveChilds(prim, pred, resp);
|
||||||
|
}
|
||||||
_Responses.resize(resp.size());
|
_Responses.resize(resp.size());
|
||||||
for (uint i=0; i<resp.size(); ++i)
|
for (uint i=0; i<resp.size(); ++i)
|
||||||
{
|
{
|
||||||
|
@ -750,7 +785,10 @@ public:
|
||||||
for (uint i = 0; i < _SubBranchs.size(); ++i)
|
for (uint i = 0; i < _SubBranchs.size(); ++i)
|
||||||
{
|
{
|
||||||
TPrimitiveSet childs;
|
TPrimitiveSet childs;
|
||||||
filterPrimitiveChilds(_SubBranchs[i], TPrimitivePropertyPredicate("step_tag", "true"), childs);
|
{
|
||||||
|
TPrimitivePropertyPredicate pred("step_tag", "true");
|
||||||
|
filterPrimitiveChilds(_SubBranchs[i], pred, childs);
|
||||||
|
}
|
||||||
for (uint j = 0; j < childs.size(); ++j)
|
for (uint j = 0; j < childs.size(); ++j)
|
||||||
vStepsToReturn.push_back(childs[j]);
|
vStepsToReturn.push_back(childs[j]);
|
||||||
}
|
}
|
||||||
|
@ -1008,7 +1046,10 @@ TPrimitiveSet CStepIf::getSubBranchs()
|
||||||
for (uint i = 0; i < _SubBranchs.size(); ++i)
|
for (uint i = 0; i < _SubBranchs.size(); ++i)
|
||||||
{
|
{
|
||||||
TPrimitiveSet childs;
|
TPrimitiveSet childs;
|
||||||
filterPrimitiveChilds(_SubBranchs[i], TPrimitivePropertyPredicate("step_tag", "true"), childs);
|
{
|
||||||
|
TPrimitivePropertyPredicate pred("step_tag", "true");
|
||||||
|
filterPrimitiveChilds(_SubBranchs[i], pred, childs);
|
||||||
|
}
|
||||||
for (uint j = 0; j < childs.size(); ++j)
|
for (uint j = 0; j < childs.size(); ++j)
|
||||||
vStepsToReturn.push_back(childs[j]);
|
vStepsToReturn.push_back(childs[j]);
|
||||||
}
|
}
|
||||||
|
@ -1055,7 +1096,10 @@ string CStepIf::genCode(CMissionData &md)
|
||||||
vector<IStep*> noSteps;
|
vector<IStep*> noSteps;
|
||||||
|
|
||||||
// Get the 'yes branch' jump point
|
// Get the 'yes branch' jump point
|
||||||
filterPrimitiveChilds(_SubBranchs[1], TPrimitivePropertyPredicate("step_tag", "true"), childs);
|
{
|
||||||
|
TPrimitivePropertyPredicate pred("step_tag", "true");
|
||||||
|
filterPrimitiveChilds(_SubBranchs[1], pred, childs);
|
||||||
|
}
|
||||||
if (!childs.empty())
|
if (!childs.empty())
|
||||||
{
|
{
|
||||||
for (i = 0; i < _SubSteps.size(); ++i)
|
for (i = 0; i < _SubSteps.size(); ++i)
|
||||||
|
@ -1071,7 +1115,10 @@ string CStepIf::genCode(CMissionData &md)
|
||||||
|
|
||||||
// Get the 'no branch' jump point
|
// Get the 'no branch' jump point
|
||||||
childs.clear();
|
childs.clear();
|
||||||
filterPrimitiveChilds(_SubBranchs[0], TPrimitivePropertyPredicate("step_tag", "true"), childs);
|
{
|
||||||
|
TPrimitivePropertyPredicate pred("step_tag", "true");
|
||||||
|
filterPrimitiveChilds(_SubBranchs[0], pred, childs);
|
||||||
|
}
|
||||||
if (!childs.empty())
|
if (!childs.empty())
|
||||||
{
|
{
|
||||||
for (i = 0; i < _SubSteps.size(); ++i)
|
for (i = 0; i < _SubSteps.size(); ++i)
|
||||||
|
|
|
@ -1305,7 +1305,7 @@ void ItemNamesSave()
|
||||||
output = "i";
|
output = "i";
|
||||||
output += data.splitTo( "prospector", true );
|
output += data.splitTo( "prospector", true );
|
||||||
|
|
||||||
set<CSString, CUnsensitiveSStringLessPred>::iterator it = itemNames.begin();
|
CSortedStringSet::const_iterator it = itemNames.begin();
|
||||||
|
|
||||||
while ( it != itemNames.end() )
|
while ( it != itemNames.end() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -61,9 +61,11 @@
|
||||||
* trans_tool update_phrase_work
|
* trans_tool update_phrase_work
|
||||||
* trans_tool inject_clause
|
* trans_tool inject_clause
|
||||||
* trans_tool sort_trans_phrase
|
* trans_tool sort_trans_phrase
|
||||||
|
* trans_tool make_worksheet_diff
|
||||||
|
* trans_tool merge_worksheet_diff
|
||||||
|
* trans_tool crop_lines
|
||||||
|
* trans_tool extract_bot_names
|
||||||
|
* trans_tool extract_new_sheet_names
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -78,6 +80,7 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <iterator>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
|
|
Loading…
Reference in a new issue