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
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
......
......@@ -8,35 +8,6 @@
#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)
{
v8::Isolate* isolate = v8::Isolate::GetCurrent();
......@@ -167,156 +138,185 @@ namespace NSDoctRenderer
string_replace(text, L"\"", L"&quot;");
}
///
/// \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)
class CDoctRenderer_Private
{
bool bIsBreak = false;
switch (pParams->m_eDstFormat)
{
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);
public:
CExecuteParams m_oParams;
if (try_catch.HasCaught())
{
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
std::wstring m_strConfigDir;
std::wstring m_strConfigPath;
CArray<std::wstring> m_arrFiles;
_LOGGING_ERROR_(L"save_code", strCode)
_LOGGING_ERROR_(L"save", strException)
std::wstring m_strDoctSDK;
std::wstring m_strPpttSDK;
std::wstring m_strXlstSDK;
strError = L"code=\"save\"";
bIsBreak = true;
}
else
{
v8::Local<v8::Uint8Array> pArray = v8::Local<v8::Uint8Array>::Cast(js_result2);
BYTE* pData = (BYTE*)pArray->Buffer()->Externalize().Data();
std::wstring m_strEditorType;
std::wstring m_strFilePath;
NSFile::CFileBinary oFile;
if (true == oFile.CreateFileW(pParams->m_strDstFilePath))
{
oFile.WriteFile((BYTE*)pNative->m_sHeader.c_str(), (DWORD)pNative->m_sHeader.length());
bool m_bIsInitTypedArrays;
char* pDst64 = NULL;
int nDstLen = 0;
NSFile::CBase64Converter::Encode(pData, pNative->m_nSaveBinaryLen, pDst64, nDstLen, NSBase64::B64_BASE64_FLAG_NOCRLF);
std::vector<std::wstring> m_arImagesInChanges;
oFile.WriteFile((BYTE*)pDst64, (DWORD)nDstLen);
std::wstring m_sConsoleLogFile;
std::wstring m_sErrorsLogFile;
RELEASEARRAYOBJECTS(pDst64);
oFile.CloseFile();
}
}
}
break;
}
case DoctRendererFormat::HTML:
public:
CDoctRenderer_Private()
{
v8::Handle<v8::Value> js_func_get_file_s = global_js->Get(v8::String::NewFromUtf8(isolate, "NativeGetFileDataHtml"));
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());
m_bIsInitTypedArrays = false;
_LOGGING_ERROR_(L"save_code", strCode)
_LOGGING_ERROR_(L"save", strException)
m_strConfigDir = NSFile::GetProcessDirectory() + L"/";
m_strConfigPath = m_strConfigDir + L"DoctRenderer.config";
strError = L"code=\"save\"";
bIsBreak = true;
}
else
XmlUtils::CXmlNode oNode;
if (oNode.FromXmlFile(m_strConfigPath))
{
XmlUtils::CXmlNodes oNodes;
if (oNode.GetNodes(L"file", oNodes))
{
std::string sHTML_Utf8 = to_cstringA(js_result2);
NSFile::CFileBinary oFile;
if (true == oFile.CreateFileW(pParams->m_strDstFilePath))
int nCount = oNodes.GetCount();
XmlUtils::CXmlNode _node;
for (int i = 0; i < nCount; ++i)
{
oFile.WriteFile((BYTE*)sHTML_Utf8.c_str(), (DWORD)sHTML_Utf8.length());
oFile.CloseFile();
oNodes.GetAt(i, _node);
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())
{
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
public:
_LOGGING_ERROR_(L"calculate_code", strCode)
_LOGGING_ERROR_(L"calculate", strException)
void _LOGGING_ERROR_(const std::wstring& strType, const std::wstring& strError)
{
if (m_sErrorsLogFile.empty())
return;
strError = L"code=\"calculate\"";
bIsBreak = true;
}
}
FILE* f = NSFile::CFileBinary::OpenFileNative(m_sErrorsLogFile, L"a+");
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
if (!bIsBreak)
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;
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::Local<v8::Value> js_result1 = func_pages_count->Call(global_js, 1, args);
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"calculate_code", strCode)
_LOGGING_ERROR_(L"calculate", strException)
_LOGGING_ERROR_(L"save_code", strCode);
_LOGGING_ERROR_(L"save", strException);
strError = L"code=\"calculate\"";
strError = L"code=\"save\"";
bIsBreak = true;
}
else
{
v8::Local<v8::Int32> intValue = js_result1->ToInt32();
lPagesCount = (LONG)intValue->Value();
v8::Local<v8::Uint8Array> pArray = v8::Local<v8::Uint8Array>::Cast(js_result2);
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;
}
// RENDER
if (!bIsBreak)
case DoctRendererFormat::HTML:
{
v8::Handle<v8::Value> js_func_get_file_s = global_js->Get(v8::String::NewFromUtf8(isolate, "NativeGetFileDataHtml"));
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);
......@@ -327,117 +327,123 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"save_code", strCode)
_LOGGING_ERROR_(L"save", strException)
_LOGGING_ERROR_(L"save_code", strCode);
_LOGGING_ERROR_(L"save", strException);
strError = L"code=\"save\"";
bIsBreak = true;
}
else
{
v8::Local<v8::Uint8Array> pArray = v8::Local<v8::Uint8Array>::Cast(js_result2);
BYTE* pData = (BYTE*)pArray->Buffer()->Externalize().Data();
std::string sHTML_Utf8 = to_cstringA(js_result2);
NSFile::CFileBinary oFile;
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();
}
}
}
break;
}
break;
}
default:
break;
}
return bIsBreak;
}
///
class CDoctRenderer_Private
{
public:
CExecuteParams m_oParams;
case DoctRendererFormat::PDF:
{
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"));
std::wstring m_strConfigDir;
std::wstring m_strConfigPath;
CArray<std::wstring> m_arrFiles;
// 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);
std::wstring m_strDoctSDK;
std::wstring m_strPpttSDK;
std::wstring m_strXlstSDK;
if (try_catch.HasCaught())
{
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
std::wstring m_strEditorType;
std::wstring m_strFilePath;
_LOGGING_ERROR_(L"calculate_code", strCode);
_LOGGING_ERROR_(L"calculate", strException);
bool m_bIsInitTypedArrays;
std::vector<std::wstring> m_arImagesInChanges;
strError = L"code=\"calculate\"";
bIsBreak = true;
}
}
public:
CDoctRenderer_Private()
{
m_bIsInitTypedArrays = false;
m_strConfigDir = NSFile::GetProcessDirectory() + L"/";
m_strConfigPath = m_strConfigDir + L"DoctRenderer.config";
LONG lPagesCount = 0;
XmlUtils::CXmlNode oNode;
if (oNode.FromXmlFile(m_strConfigPath))
{
XmlUtils::CXmlNodes oNodes;
if (oNode.GetNodes(L"file", oNodes))
// PAGESCOUNT
if (!bIsBreak)
{
int nCount = oNodes.GetCount();
XmlUtils::CXmlNode _node;
for (int i = 0; i < nCount; ++i)
if (js_func_pages_count->IsFunction())
{
oNodes.GetAt(i, _node);
std::wstring strFilePath = _node.GetText();
v8::Handle<v8::Function> func_pages_count = v8::Handle<v8::Function>::Cast(js_func_pages_count);
v8::Local<v8::Value> js_result1 = func_pages_count->Call(global_js, 1, args);
if (NSFile::CFileBinary::Exists(strFilePath) &&
!NSFile::CFileBinary::Exists(m_strConfigDir + strFilePath))
m_arrFiles.Add(strFilePath);
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"calculate_code", strCode);
_LOGGING_ERROR_(L"calculate", strException);
strError = L"code=\"calculate\"";
bIsBreak = true;
}
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");
if (oNodeSdk.IsValid())
m_strPpttSDK = oNodeSdk.GetText();
// RENDER
if (!bIsBreak)
{
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 (oNodeSdk.IsValid())
m_strXlstSDK = oNodeSdk.GetText();
if (try_catch.HasCaught())
{
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
if (!NSFile::CFileBinary::Exists(m_strDoctSDK))
m_strDoctSDK = m_strConfigDir + m_strDoctSDK;
_LOGGING_ERROR_(L"save_code", strCode);
_LOGGING_ERROR_(L"save", strException);
if (!NSFile::CFileBinary::Exists(m_strPpttSDK))
m_strPpttSDK = m_strConfigDir + m_strPpttSDK;
strError = L"code=\"save\"";
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))
m_strXlstSDK = m_strConfigDir + m_strXlstSDK;
NSFile::CFileBinary oFile;
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)
{
v8::Platform* platform = v8::platform::CreateDefaultPlatform();
......@@ -478,8 +484,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"compile_code", strCode)
_LOGGING_ERROR_(L"compile", strException)
_LOGGING_ERROR_(L"compile_code", strCode);
_LOGGING_ERROR_(L"compile", strException);
strError = L"code=\"compile\"";
bIsBreak = true;
......@@ -495,8 +501,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"run_code", strCode)
_LOGGING_ERROR_(L"run", strException)
_LOGGING_ERROR_(L"run_code", strCode);
_LOGGING_ERROR_(L"run", strException);
strError = L"code=\"run\"";
bIsBreak = true;
......@@ -525,8 +531,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"run_code", strCode)
_LOGGING_ERROR_(L"run", strException)
_LOGGING_ERROR_(L"run_code", strCode);
_LOGGING_ERROR_(L"run", strException);
strError = L"code=\"run\"";
bIsBreak = true;
......@@ -537,6 +543,7 @@ namespace NSDoctRenderer
v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(objNative->GetInternalField(0));
pNative = static_cast<CNativeControl*>(field->Value());
pNative->m_sConsoleLogFile = m_sConsoleLogFile;
}
}
}
......@@ -577,8 +584,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"open_code", strCode)
_LOGGING_ERROR_(L"open", strException)
_LOGGING_ERROR_(L"open_code", strCode);
_LOGGING_ERROR_(L"open", strException);
strError = L"code=\"open\"";
bIsBreak = true;
......@@ -621,8 +628,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode)
_LOGGING_ERROR_(L"change", strException)
_LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException);
char buffer[50];
sprintf(buffer, "index=\"%d\"", pNative->m_nCurrentChangesNumber);
......@@ -703,8 +710,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode)
_LOGGING_ERROR_(L"change", strException)
_LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"databaseopenjs\"";
bIsBreak = true;
......@@ -719,8 +726,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode)
_LOGGING_ERROR_(L"change", strException)
_LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"databaseopenjs\"";
bIsBreak = true;
......@@ -757,8 +764,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode)
_LOGGING_ERROR_(L"change", strException)
_LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"preview" + std::to_wstring(nIndexMM) + L"\"";
bIsBreak = true;
......@@ -773,7 +780,7 @@ namespace NSDoctRenderer
m_oParams.m_strDstFilePath += (L"/file" + std::to_wstring(nIndexMM));
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);
m_oParams.m_strDstFilePath = sSaveOld;
......@@ -797,8 +804,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode)
_LOGGING_ERROR_(L"change", strException)
_LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"field" + std::to_wstring(nIndexMM) + L"\"";
bIsBreak = true;
......@@ -820,7 +827,7 @@ namespace NSDoctRenderer
// SAVE
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:
std::map<std::wstring, bool> m_mapImagesInChanges;
std::wstring m_sConsoleLogFile;
public:
CMemoryStream* m_pStream;
......@@ -67,6 +69,8 @@ public:
m_pSaveBinary = NULL;
m_nSaveLen = 0;
m_nSaveBinaryLen = 0;
m_sConsoleLogFile = L"";
}
~CNativeControl()
{
......@@ -142,12 +146,13 @@ public:
void ConsoleLog(/*UTF8*/const std::string& strVal)
{
#if 1
FILE* f = fopen("C:/log.txt", "a+");
fprintf(f, strVal.c_str());
fprintf(f, "\n");
fclose(f);
#endif
if (!m_sConsoleLogFile.empty())
{
FILE* f = NSFile::CFileBinary::OpenFileNative(m_sConsoleLogFile, L"a+");
fprintf(f, strVal.c_str());
fprintf(f, "\n");
fclose(f);
}
}
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