Commit a67a5198 authored by Oleg.Korshul's avatar Oleg.Korshul Committed by Alexander Trofimov

включение логов в конфиге

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@64270 954022d7-b5bf-4e40-9824-e11837661b57
parent 1ccf28be
...@@ -946,6 +946,25 @@ namespace NSFile ...@@ -946,6 +946,25 @@ namespace NSFile
return FALSE; return FALSE;
} }
static FILE* OpenFileNative(const std::wstring& sFileName, const std::wstring& sMode)
{
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(_WIN64)
return _wfopen(sFileName.c_str(), sMode.c_str());
#else
BYTE* pUtf8 = NULL;
LONG lLen = 0;
CUtf8Converter::GetUtf8StringFromUnicode(sFileName.c_str(), sFileName.length(), pUtf8, lLen, false);
BYTE* pMode = NULL;
LONG lLenMode;
CUtf8Converter::GetUtf8StringFromUnicode(sMode.c_str(), sMode.length(), pMode, lLenMode, false)
m_pFile = fopen((char*)pUtf8, (char*)pMode);
delete [] pUtf8;
delete [] pMode;
#endif
}
}; };
class CBase64Converter class CBase64Converter
......
...@@ -8,35 +8,6 @@ ...@@ -8,35 +8,6 @@
#include "../xml/include/xmlutils.h" #include "../xml/include/xmlutils.h"
// TEST!!!
#if 0
#define _LOG_ERRORS_TO_FILE_
#endif
#ifdef _LOG_ERRORS_TO_FILE_
void __log_error_(const std::wstring& strType, const std::wstring& strError)
{
FILE* f = fopen("C:/doct_renderer_errors.txt", "a+");
std::string sT = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strType);
std::string sE = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strError);
fprintf(f, sT.c_str());
fprintf(f, ": ");
fprintf(f, sE.c_str());
fprintf(f, "\n");
fclose(f);
}
#define _LOGGING_ERROR_(type, err) __log_error_(type, err);
#else
#define _LOGGING_ERROR_(type, err)
#endif
void CreateNativeObject(const v8::FunctionCallbackInfo<v8::Value>& args) void CreateNativeObject(const v8::FunctionCallbackInfo<v8::Value>& args)
{ {
v8::Isolate* isolate = v8::Isolate::GetCurrent(); v8::Isolate* isolate = v8::Isolate::GetCurrent();
...@@ -167,156 +138,185 @@ namespace NSDoctRenderer ...@@ -167,156 +138,185 @@ namespace NSDoctRenderer
string_replace(text, L"\"", L"&quot;"); string_replace(text, L"\"", L"&quot;");
} }
/// class CDoctRenderer_Private
/// \brief Save File method
///
static bool Doct_renderer_SaveFile(CExecuteParams* pParams,
CNativeControl* pNative,
v8::Isolate* isolate,
v8::Local<v8::Object>& global_js,
v8::Handle<v8::Value>* args,
v8::TryCatch& try_catch,
std::wstring& strError)
{ {
bool bIsBreak = false; public:
switch (pParams->m_eDstFormat) CExecuteParams m_oParams;
{
case DoctRendererFormat::DOCT:
case DoctRendererFormat::PPTT:
case DoctRendererFormat::XLST:
{
v8::Handle<v8::Value> js_func_get_file_s = global_js->Get(v8::String::NewFromUtf8(isolate, "NativeGetFileData"));
if (js_func_get_file_s->IsFunction())
{
v8::Handle<v8::Function> func_get_file_s = v8::Handle<v8::Function>::Cast(js_func_get_file_s);
v8::Local<v8::Value> js_result2 = func_get_file_s->Call(global_js, 1, args);
if (try_catch.HasCaught()) std::wstring m_strConfigDir;
{ std::wstring m_strConfigPath;
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); CArray<std::wstring> m_arrFiles;
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"save_code", strCode) std::wstring m_strDoctSDK;
_LOGGING_ERROR_(L"save", strException) std::wstring m_strPpttSDK;
std::wstring m_strXlstSDK;
strError = L"code=\"save\""; std::wstring m_strEditorType;
bIsBreak = true; std::wstring m_strFilePath;
}
else
{
v8::Local<v8::Uint8Array> pArray = v8::Local<v8::Uint8Array>::Cast(js_result2);
BYTE* pData = (BYTE*)pArray->Buffer()->Externalize().Data();
NSFile::CFileBinary oFile; bool m_bIsInitTypedArrays;
if (true == oFile.CreateFileW(pParams->m_strDstFilePath))
{
oFile.WriteFile((BYTE*)pNative->m_sHeader.c_str(), (DWORD)pNative->m_sHeader.length());
char* pDst64 = NULL; std::vector<std::wstring> m_arImagesInChanges;
int nDstLen = 0;
NSFile::CBase64Converter::Encode(pData, pNative->m_nSaveBinaryLen, pDst64, nDstLen, NSBase64::B64_BASE64_FLAG_NOCRLF);
oFile.WriteFile((BYTE*)pDst64, (DWORD)nDstLen); std::wstring m_sConsoleLogFile;
std::wstring m_sErrorsLogFile;
RELEASEARRAYOBJECTS(pDst64); public:
oFile.CloseFile(); CDoctRenderer_Private()
}
}
}
break;
}
case DoctRendererFormat::HTML:
{ {
v8::Handle<v8::Value> js_func_get_file_s = global_js->Get(v8::String::NewFromUtf8(isolate, "NativeGetFileDataHtml")); m_bIsInitTypedArrays = false;
if (js_func_get_file_s->IsFunction())
{
v8::Handle<v8::Function> func_get_file_s = v8::Handle<v8::Function>::Cast(js_func_get_file_s);
v8::Local<v8::Value> js_result2 = func_get_file_s->Call(global_js, 1, args);
if (try_catch.HasCaught())
{
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"save_code", strCode) m_strConfigDir = NSFile::GetProcessDirectory() + L"/";
_LOGGING_ERROR_(L"save", strException) m_strConfigPath = m_strConfigDir + L"DoctRenderer.config";
strError = L"code=\"save\""; XmlUtils::CXmlNode oNode;
bIsBreak = true; if (oNode.FromXmlFile(m_strConfigPath))
} {
else XmlUtils::CXmlNodes oNodes;
if (oNode.GetNodes(L"file", oNodes))
{ {
std::string sHTML_Utf8 = to_cstringA(js_result2); int nCount = oNodes.GetCount();
XmlUtils::CXmlNode _node;
NSFile::CFileBinary oFile; for (int i = 0; i < nCount; ++i)
if (true == oFile.CreateFileW(pParams->m_strDstFilePath))
{ {
oFile.WriteFile((BYTE*)sHTML_Utf8.c_str(), (DWORD)sHTML_Utf8.length()); oNodes.GetAt(i, _node);
oFile.CloseFile(); std::wstring strFilePath = _node.GetText();
if (NSFile::CFileBinary::Exists(strFilePath) &&
!NSFile::CFileBinary::Exists(m_strConfigDir + strFilePath))
m_arrFiles.Add(strFilePath);
else
m_arrFiles.Add(m_strConfigDir + strFilePath);
} }
} }
} }
break;
m_strDoctSDK = L"";
m_strPpttSDK = L"";
m_strXlstSDK = L"";
XmlUtils::CXmlNode oNodeSdk = oNode.ReadNode(L"DoctSdk");
if (oNodeSdk.IsValid())
m_strDoctSDK = oNodeSdk.GetText();
oNodeSdk = oNode.ReadNode(L"PpttSdk");
if (oNodeSdk.IsValid())
m_strPpttSDK = oNodeSdk.GetText();
oNodeSdk = oNode.ReadNode(L"XlstSdk");
if (oNodeSdk.IsValid())
m_strXlstSDK = oNodeSdk.GetText();
if (!NSFile::CFileBinary::Exists(m_strDoctSDK))
m_strDoctSDK = m_strConfigDir + m_strDoctSDK;
if (!NSFile::CFileBinary::Exists(m_strPpttSDK))
m_strPpttSDK = m_strConfigDir + m_strPpttSDK;
if (!NSFile::CFileBinary::Exists(m_strXlstSDK))
m_strXlstSDK = m_strConfigDir + m_strXlstSDK;
m_sConsoleLogFile = L"";
m_sErrorsLogFile = L"";
XmlUtils::CXmlNode oNodeConsoleLogFile = oNode.ReadNode(L"LogFileConsoleLog");
if (oNodeConsoleLogFile.IsValid())
{
m_sConsoleLogFile = oNodeConsoleLogFile.GetText();
if (!NSFile::CFileBinary::Exists(m_sConsoleLogFile))
m_sConsoleLogFile = m_strConfigDir + m_sConsoleLogFile;
}
XmlUtils::CXmlNode oNodeErrorsLogFile = oNode.ReadNode(L"LogFileErrors");
if (oNodeErrorsLogFile.IsValid())
{
m_sErrorsLogFile = oNodeErrorsLogFile.GetText();
if (!NSFile::CFileBinary::Exists(m_sErrorsLogFile))
m_sErrorsLogFile = m_strConfigDir + m_sErrorsLogFile;
}
} }
case DoctRendererFormat::PDF: ~CDoctRenderer_Private()
{ {
v8::Handle<v8::Value> js_func_calculate = global_js->Get(v8::String::NewFromUtf8(isolate, "NativeCalculateFile"));
v8::Handle<v8::Value> js_func_pages_count = global_js->Get(v8::String::NewFromUtf8(isolate, "GetNativeCountPages"));
v8::Handle<v8::Value> js_func_get_file_s = global_js->Get(v8::String::NewFromUtf8(isolate, "GetNativeFileDataPDF"));
// CALCULATE }
if (js_func_calculate->IsFunction())
{
v8::Handle<v8::Function> func_calculate = v8::Handle<v8::Function>::Cast(js_func_calculate);
func_calculate->Call(global_js, 1, args);
if (try_catch.HasCaught()) public:
{
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"calculate_code", strCode) void _LOGGING_ERROR_(const std::wstring& strType, const std::wstring& strError)
_LOGGING_ERROR_(L"calculate", strException) {
if (m_sErrorsLogFile.empty())
return;
strError = L"code=\"calculate\""; FILE* f = NSFile::CFileBinary::OpenFileNative(m_sErrorsLogFile, L"a+");
bIsBreak = true;
}
}
std::string sT = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strType);
std::string sE = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strError);
LONG lPagesCount = 0; fprintf(f, sT.c_str());
fprintf(f, ": ");
fprintf(f, sE.c_str());
fprintf(f, "\n");
fclose(f);
}
// PAGESCOUNT bool Doct_renderer_SaveFile(CExecuteParams* pParams,
if (!bIsBreak) CNativeControl* pNative,
v8::Isolate* isolate,
v8::Local<v8::Object>& global_js,
v8::Handle<v8::Value>* args,
v8::TryCatch& try_catch,
std::wstring& strError)
{
bool bIsBreak = false;
switch (pParams->m_eDstFormat)
{ {
if (js_func_pages_count->IsFunction()) case DoctRendererFormat::DOCT:
case DoctRendererFormat::PPTT:
case DoctRendererFormat::XLST:
{
v8::Handle<v8::Value> js_func_get_file_s = global_js->Get(v8::String::NewFromUtf8(isolate, "NativeGetFileData"));
if (js_func_get_file_s->IsFunction())
{ {
v8::Handle<v8::Function> func_pages_count = v8::Handle<v8::Function>::Cast(js_func_pages_count); v8::Handle<v8::Function> func_get_file_s = v8::Handle<v8::Function>::Cast(js_func_get_file_s);
v8::Local<v8::Value> js_result1 = func_pages_count->Call(global_js, 1, args); v8::Local<v8::Value> js_result2 = func_get_file_s->Call(global_js, 1, args);
if (try_catch.HasCaught()) if (try_catch.HasCaught())
{ {
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get()); std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"calculate_code", strCode) _LOGGING_ERROR_(L"save_code", strCode);
_LOGGING_ERROR_(L"calculate", strException) _LOGGING_ERROR_(L"save", strException);
strError = L"code=\"calculate\""; strError = L"code=\"save\"";
bIsBreak = true; bIsBreak = true;
} }
else else
{ {
v8::Local<v8::Int32> intValue = js_result1->ToInt32(); v8::Local<v8::Uint8Array> pArray = v8::Local<v8::Uint8Array>::Cast(js_result2);
lPagesCount = (LONG)intValue->Value(); BYTE* pData = (BYTE*)pArray->Buffer()->Externalize().Data();
NSFile::CFileBinary oFile;
if (true == oFile.CreateFileW(pParams->m_strDstFilePath))
{
oFile.WriteFile((BYTE*)pNative->m_sHeader.c_str(), (DWORD)pNative->m_sHeader.length());
char* pDst64 = NULL;
int nDstLen = 0;
NSFile::CBase64Converter::Encode(pData, pNative->m_nSaveBinaryLen, pDst64, nDstLen, NSBase64::B64_BASE64_FLAG_NOCRLF);
oFile.WriteFile((BYTE*)pDst64, (DWORD)nDstLen);
RELEASEARRAYOBJECTS(pDst64);
oFile.CloseFile();
}
} }
} }
break;
} }
case DoctRendererFormat::HTML:
// RENDER
if (!bIsBreak)
{ {
v8::Handle<v8::Value> js_func_get_file_s = global_js->Get(v8::String::NewFromUtf8(isolate, "NativeGetFileDataHtml"));
if (js_func_get_file_s->IsFunction()) if (js_func_get_file_s->IsFunction())
{ {
v8::Handle<v8::Function> func_get_file_s = v8::Handle<v8::Function>::Cast(js_func_get_file_s); v8::Handle<v8::Function> func_get_file_s = v8::Handle<v8::Function>::Cast(js_func_get_file_s);
...@@ -327,117 +327,123 @@ namespace NSDoctRenderer ...@@ -327,117 +327,123 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get()); std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"save_code", strCode) _LOGGING_ERROR_(L"save_code", strCode);
_LOGGING_ERROR_(L"save", strException) _LOGGING_ERROR_(L"save", strException);
strError = L"code=\"save\""; strError = L"code=\"save\"";
bIsBreak = true; bIsBreak = true;
} }
else else
{ {
v8::Local<v8::Uint8Array> pArray = v8::Local<v8::Uint8Array>::Cast(js_result2); std::string sHTML_Utf8 = to_cstringA(js_result2);
BYTE* pData = (BYTE*)pArray->Buffer()->Externalize().Data();
NSFile::CFileBinary oFile; NSFile::CFileBinary oFile;
if (true == oFile.CreateFileW(pParams->m_strDstFilePath)) if (true == oFile.CreateFileW(pParams->m_strDstFilePath))
{ {
oFile.WriteFile(pData, (DWORD)pNative->m_nSaveBinaryLen); oFile.WriteFile((BYTE*)sHTML_Utf8.c_str(), (DWORD)sHTML_Utf8.length());
oFile.CloseFile(); oFile.CloseFile();
} }
} }
} }
break;
} }
break; case DoctRendererFormat::PDF:
} {
default: v8::Handle<v8::Value> js_func_calculate = global_js->Get(v8::String::NewFromUtf8(isolate, "NativeCalculateFile"));
break; v8::Handle<v8::Value> js_func_pages_count = global_js->Get(v8::String::NewFromUtf8(isolate, "GetNativeCountPages"));
} v8::Handle<v8::Value> js_func_get_file_s = global_js->Get(v8::String::NewFromUtf8(isolate, "GetNativeFileDataPDF"));
return bIsBreak;
}
///
class CDoctRenderer_Private
{
public:
CExecuteParams m_oParams;
std::wstring m_strConfigDir; // CALCULATE
std::wstring m_strConfigPath; if (js_func_calculate->IsFunction())
CArray<std::wstring> m_arrFiles; {
v8::Handle<v8::Function> func_calculate = v8::Handle<v8::Function>::Cast(js_func_calculate);
func_calculate->Call(global_js, 1, args);
std::wstring m_strDoctSDK; if (try_catch.HasCaught())
std::wstring m_strPpttSDK; {
std::wstring m_strXlstSDK; std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
std::wstring m_strEditorType; _LOGGING_ERROR_(L"calculate_code", strCode);
std::wstring m_strFilePath; _LOGGING_ERROR_(L"calculate", strException);
bool m_bIsInitTypedArrays; strError = L"code=\"calculate\"";
bIsBreak = true;
std::vector<std::wstring> m_arImagesInChanges; }
}
public:
CDoctRenderer_Private()
{
m_bIsInitTypedArrays = false;
m_strConfigDir = NSFile::GetProcessDirectory() + L"/"; LONG lPagesCount = 0;
m_strConfigPath = m_strConfigDir + L"DoctRenderer.config";
XmlUtils::CXmlNode oNode; // PAGESCOUNT
if (oNode.FromXmlFile(m_strConfigPath)) if (!bIsBreak)
{
XmlUtils::CXmlNodes oNodes;
if (oNode.GetNodes(L"file", oNodes))
{ {
int nCount = oNodes.GetCount(); if (js_func_pages_count->IsFunction())
XmlUtils::CXmlNode _node;
for (int i = 0; i < nCount; ++i)
{ {
oNodes.GetAt(i, _node); v8::Handle<v8::Function> func_pages_count = v8::Handle<v8::Function>::Cast(js_func_pages_count);
std::wstring strFilePath = _node.GetText(); v8::Local<v8::Value> js_result1 = func_pages_count->Call(global_js, 1, args);
if (NSFile::CFileBinary::Exists(strFilePath) && if (try_catch.HasCaught())
!NSFile::CFileBinary::Exists(m_strConfigDir + strFilePath)) {
m_arrFiles.Add(strFilePath); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"calculate_code", strCode);
_LOGGING_ERROR_(L"calculate", strException);
strError = L"code=\"calculate\"";
bIsBreak = true;
}
else else
m_arrFiles.Add(m_strConfigDir + strFilePath); {
v8::Local<v8::Int32> intValue = js_result1->ToInt32();
lPagesCount = (LONG)intValue->Value();
}
} }
} }
}
m_strDoctSDK = L"";
m_strPpttSDK = L"";
m_strXlstSDK = L"";
XmlUtils::CXmlNode oNodeSdk = oNode.ReadNode(L"DoctSdk");
if (oNodeSdk.IsValid())
m_strDoctSDK = oNodeSdk.GetText();
oNodeSdk = oNode.ReadNode(L"PpttSdk"); // RENDER
if (oNodeSdk.IsValid()) if (!bIsBreak)
m_strPpttSDK = oNodeSdk.GetText(); {
if (js_func_get_file_s->IsFunction())
{
v8::Handle<v8::Function> func_get_file_s = v8::Handle<v8::Function>::Cast(js_func_get_file_s);
v8::Local<v8::Value> js_result2 = func_get_file_s->Call(global_js, 1, args);
oNodeSdk = oNode.ReadNode(L"XlstSdk"); if (try_catch.HasCaught())
if (oNodeSdk.IsValid()) {
m_strXlstSDK = oNodeSdk.GetText(); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
if (!NSFile::CFileBinary::Exists(m_strDoctSDK)) _LOGGING_ERROR_(L"save_code", strCode);
m_strDoctSDK = m_strConfigDir + m_strDoctSDK; _LOGGING_ERROR_(L"save", strException);
if (!NSFile::CFileBinary::Exists(m_strPpttSDK)) strError = L"code=\"save\"";
m_strPpttSDK = m_strConfigDir + m_strPpttSDK; bIsBreak = true;
}
else
{
v8::Local<v8::Uint8Array> pArray = v8::Local<v8::Uint8Array>::Cast(js_result2);
BYTE* pData = (BYTE*)pArray->Buffer()->Externalize().Data();
if (!NSFile::CFileBinary::Exists(m_strXlstSDK)) NSFile::CFileBinary oFile;
m_strXlstSDK = m_strConfigDir + m_strXlstSDK; if (true == oFile.CreateFileW(pParams->m_strDstFilePath))
{
oFile.WriteFile(pData, (DWORD)pNative->m_nSaveBinaryLen);
oFile.CloseFile();
}
}
}
}
break;
}
default:
break;
}
return bIsBreak;
} }
~CDoctRenderer_Private()
{
}
public:
bool ExecuteScript(const std::string& strScript, std::wstring& strError, std::wstring& strReturnParams) bool ExecuteScript(const std::string& strScript, std::wstring& strError, std::wstring& strReturnParams)
{ {
v8::Platform* platform = v8::platform::CreateDefaultPlatform(); v8::Platform* platform = v8::platform::CreateDefaultPlatform();
...@@ -478,8 +484,8 @@ namespace NSDoctRenderer ...@@ -478,8 +484,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get()); std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"compile_code", strCode) _LOGGING_ERROR_(L"compile_code", strCode);
_LOGGING_ERROR_(L"compile", strException) _LOGGING_ERROR_(L"compile", strException);
strError = L"code=\"compile\""; strError = L"code=\"compile\"";
bIsBreak = true; bIsBreak = true;
...@@ -495,8 +501,8 @@ namespace NSDoctRenderer ...@@ -495,8 +501,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get()); std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"run_code", strCode) _LOGGING_ERROR_(L"run_code", strCode);
_LOGGING_ERROR_(L"run", strException) _LOGGING_ERROR_(L"run", strException);
strError = L"code=\"run\""; strError = L"code=\"run\"";
bIsBreak = true; bIsBreak = true;
...@@ -525,8 +531,8 @@ namespace NSDoctRenderer ...@@ -525,8 +531,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get()); std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"run_code", strCode) _LOGGING_ERROR_(L"run_code", strCode);
_LOGGING_ERROR_(L"run", strException) _LOGGING_ERROR_(L"run", strException);
strError = L"code=\"run\""; strError = L"code=\"run\"";
bIsBreak = true; bIsBreak = true;
...@@ -537,6 +543,7 @@ namespace NSDoctRenderer ...@@ -537,6 +543,7 @@ namespace NSDoctRenderer
v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(objNative->GetInternalField(0)); v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(objNative->GetInternalField(0));
pNative = static_cast<CNativeControl*>(field->Value()); pNative = static_cast<CNativeControl*>(field->Value());
pNative->m_sConsoleLogFile = m_sConsoleLogFile;
} }
} }
} }
...@@ -577,8 +584,8 @@ namespace NSDoctRenderer ...@@ -577,8 +584,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get()); std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"open_code", strCode) _LOGGING_ERROR_(L"open_code", strCode);
_LOGGING_ERROR_(L"open", strException) _LOGGING_ERROR_(L"open", strException);
strError = L"code=\"open\""; strError = L"code=\"open\"";
bIsBreak = true; bIsBreak = true;
...@@ -621,8 +628,8 @@ namespace NSDoctRenderer ...@@ -621,8 +628,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get()); std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode) _LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException) _LOGGING_ERROR_(L"change", strException);
char buffer[50]; char buffer[50];
sprintf(buffer, "index=\"%d\"", pNative->m_nCurrentChangesNumber); sprintf(buffer, "index=\"%d\"", pNative->m_nCurrentChangesNumber);
...@@ -703,8 +710,8 @@ namespace NSDoctRenderer ...@@ -703,8 +710,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get()); std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode) _LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException) _LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"databaseopenjs\""; strError = L"mailmerge=\"databaseopenjs\"";
bIsBreak = true; bIsBreak = true;
...@@ -719,8 +726,8 @@ namespace NSDoctRenderer ...@@ -719,8 +726,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get()); std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode) _LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException) _LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"databaseopenjs\""; strError = L"mailmerge=\"databaseopenjs\"";
bIsBreak = true; bIsBreak = true;
...@@ -757,8 +764,8 @@ namespace NSDoctRenderer ...@@ -757,8 +764,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get()); std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode) _LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException) _LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"preview" + std::to_wstring(nIndexMM) + L"\""; strError = L"mailmerge=\"preview" + std::to_wstring(nIndexMM) + L"\"";
bIsBreak = true; bIsBreak = true;
...@@ -773,7 +780,7 @@ namespace NSDoctRenderer ...@@ -773,7 +780,7 @@ namespace NSDoctRenderer
m_oParams.m_strDstFilePath += (L"/file" + std::to_wstring(nIndexMM)); m_oParams.m_strDstFilePath += (L"/file" + std::to_wstring(nIndexMM));
sSaveFile = m_oParams.m_strDstFilePath; sSaveFile = m_oParams.m_strDstFilePath;
bIsBreak = NSDoctRenderer::Doct_renderer_SaveFile(&m_oParams, pNative, isolate, global_js, bIsBreak = Doct_renderer_SaveFile(&m_oParams, pNative, isolate, global_js,
args, try_catch, strError); args, try_catch, strError);
m_oParams.m_strDstFilePath = sSaveOld; m_oParams.m_strDstFilePath = sSaveOld;
...@@ -797,8 +804,8 @@ namespace NSDoctRenderer ...@@ -797,8 +804,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine()); std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get()); std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode) _LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException) _LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"field" + std::to_wstring(nIndexMM) + L"\""; strError = L"mailmerge=\"field" + std::to_wstring(nIndexMM) + L"\"";
bIsBreak = true; bIsBreak = true;
...@@ -820,7 +827,7 @@ namespace NSDoctRenderer ...@@ -820,7 +827,7 @@ namespace NSDoctRenderer
// SAVE // SAVE
if (!bIsBreak && !bIsMailMerge) if (!bIsBreak && !bIsMailMerge)
{ {
bIsBreak = NSDoctRenderer::Doct_renderer_SaveFile(&m_oParams, pNative, isolate, global_js, args, try_catch, strError); bIsBreak = Doct_renderer_SaveFile(&m_oParams, pNative, isolate, global_js, args, try_catch, strError);
} }
} }
......
...@@ -53,6 +53,8 @@ public: ...@@ -53,6 +53,8 @@ public:
std::map<std::wstring, bool> m_mapImagesInChanges; std::map<std::wstring, bool> m_mapImagesInChanges;
std::wstring m_sConsoleLogFile;
public: public:
CMemoryStream* m_pStream; CMemoryStream* m_pStream;
...@@ -67,6 +69,8 @@ public: ...@@ -67,6 +69,8 @@ public:
m_pSaveBinary = NULL; m_pSaveBinary = NULL;
m_nSaveLen = 0; m_nSaveLen = 0;
m_nSaveBinaryLen = 0; m_nSaveBinaryLen = 0;
m_sConsoleLogFile = L"";
} }
~CNativeControl() ~CNativeControl()
{ {
...@@ -142,12 +146,13 @@ public: ...@@ -142,12 +146,13 @@ public:
void ConsoleLog(/*UTF8*/const std::string& strVal) void ConsoleLog(/*UTF8*/const std::string& strVal)
{ {
#if 1 if (!m_sConsoleLogFile.empty())
FILE* f = fopen("C:/log.txt", "a+"); {
fprintf(f, strVal.c_str()); FILE* f = NSFile::CFileBinary::OpenFileNative(m_sConsoleLogFile, L"a+");
fprintf(f, "\n"); fprintf(f, strVal.c_str());
fclose(f); fprintf(f, "\n");
#endif fclose(f);
}
} }
void CheckFonts() void CheckFonts()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment