| Index: xfa/src/fxfa/src/parser/xfa_script_hostpseudomodel.cpp
|
| diff --git a/xfa/src/fxfa/src/parser/xfa_script_hostpseudomodel.cpp b/xfa/src/fxfa/src/parser/xfa_script_hostpseudomodel.cpp
|
| index bf79220ccbfd2d03461624c46b91fb95442dc12e..39e8d29c5904e104cd58ad2d29c3886664815deb 100644
|
| --- a/xfa/src/fxfa/src/parser/xfa_script_hostpseudomodel.cpp
|
| +++ b/xfa/src/fxfa/src/parser/xfa_script_hostpseudomodel.cpp
|
| @@ -1,799 +1,799 @@
|
| -// Copyright 2014 PDFium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
| -
|
| -#include "xfa/src/foxitlib.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_utils.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_object.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_document.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_parser.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_script.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_docdata.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_doclayout.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_localemgr.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_fm2jsapi.h"
|
| -#include "xfa_script_hostpseudomodel.h"
|
| -CScript_HostPseudoModel::CScript_HostPseudoModel(CXFA_Document* pDocument)
|
| - : CXFA_OrdinaryObject(pDocument, XFA_ELEMENT_HostPseudoModel) {
|
| - m_uScriptHash = XFA_HASHCODE_Host;
|
| -}
|
| -CScript_HostPseudoModel::~CScript_HostPseudoModel() {}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_LoadString(
|
| - FXJSE_HVALUE hValue,
|
| - IXFA_Notify* pNotify,
|
| - FX_DWORD dwFlag) {
|
| - CFX_WideString wsValue;
|
| - pNotify->GetAppProvider()->LoadString(dwFlag, wsValue);
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsValue));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_AppType(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - if (bSetting) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET);
|
| - return;
|
| - }
|
| - CFX_WideString wsAppType;
|
| - pNotify->GetAppProvider()->GetAppType(wsAppType);
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAppType));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_FoxitAppType(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - if (bSetting) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET);
|
| - return;
|
| - }
|
| - CFX_WideString wsAppType;
|
| - pNotify->GetAppProvider()->GetFoxitAppType(wsAppType);
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAppType));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_CalculationsEnabled(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| - if (bSetting) {
|
| - pNotify->GetDocProvider()->SetCalculationsEnabled(
|
| - hDoc, FXJSE_Value_ToBoolean(hValue));
|
| - return;
|
| - }
|
| - FX_BOOL bEnabled = pNotify->GetDocProvider()->IsCalculationsEnabled(hDoc);
|
| - FXJSE_Value_SetBoolean(hValue, bEnabled);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_CurrentPage(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| - if (bSetting) {
|
| - pNotify->GetDocProvider()->SetCurrentPage(hDoc,
|
| - FXJSE_Value_ToInteger(hValue));
|
| - return;
|
| - }
|
| - int32_t iCurrentPage = pNotify->GetDocProvider()->GetCurrentPage(hDoc);
|
| - FXJSE_Value_SetInteger(hValue, iCurrentPage);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_Language(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - if (bSetting) {
|
| - ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_LANGUAGE);
|
| - return;
|
| - }
|
| - CFX_WideString wsLanguage;
|
| - pNotify->GetAppProvider()->GetLanguage(wsLanguage);
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsLanguage));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_NumPages(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| - if (bSetting) {
|
| - ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_NUMPAGES);
|
| - return;
|
| - }
|
| - int32_t iNumPages = pNotify->GetDocProvider()->CountPages(hDoc);
|
| - FXJSE_Value_SetInteger(hValue, iNumPages);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_Platform(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - if (bSetting) {
|
| - ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_PLATFORM);
|
| - return;
|
| - }
|
| - CFX_WideString wsPlatform;
|
| - pNotify->GetAppProvider()->GetPlatform(wsPlatform);
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsPlatform));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_Title(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| - if (bSetting) {
|
| - CFX_ByteString bsValue;
|
| - FXJSE_Value_ToUTF8String(hValue, bsValue);
|
| - pNotify->GetDocProvider()->SetTitle(
|
| - hDoc, CFX_WideString::FromUTF8(bsValue, bsValue.GetLength()));
|
| - return;
|
| - }
|
| - CFX_WideString wsTitle;
|
| - pNotify->GetDocProvider()->GetTitle(hDoc, wsTitle);
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsTitle));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_ValidationsEnabled(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| - if (bSetting) {
|
| - pNotify->GetDocProvider()->SetValidationsEnabled(
|
| - hDoc, FXJSE_Value_ToBoolean(hValue));
|
| - return;
|
| - }
|
| - FX_BOOL bEnabled = pNotify->GetDocProvider()->IsValidationsEnabled(hDoc);
|
| - FXJSE_Value_SetBoolean(hValue, bEnabled);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_Variation(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - if (bSetting) {
|
| - ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_VARIATION);
|
| - return;
|
| - }
|
| - CFX_WideString wsVariation;
|
| - pNotify->GetAppProvider()->GetVariation(wsVariation);
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsVariation));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_Version(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - if (bSetting) {
|
| - ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_VERSION);
|
| - return;
|
| - }
|
| - CFX_WideString wsVersion;
|
| - pNotify->GetAppProvider()->GetVersion(wsVersion);
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsVersion));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_FoxitVersion(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - if (bSetting) {
|
| - ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_VERSION);
|
| - return;
|
| - }
|
| - CFX_WideString wsVersion;
|
| - pNotify->GetAppProvider()->GetFoxitVersion(wsVersion);
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsVersion));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_Name(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - if (bSetting) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET);
|
| - return;
|
| - }
|
| - CFX_WideString wsAppName;
|
| - pNotify->GetAppProvider()->GetAppName(wsAppName);
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAppName));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_FoxitName(
|
| - FXJSE_HVALUE hValue,
|
| - FX_BOOL bSetting,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - if (bSetting) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET);
|
| - return;
|
| - }
|
| - CFX_WideString wsFoxitAppName;
|
| - pNotify->GetAppProvider()->GetFoxitAppName(wsFoxitAppName);
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsFoxitAppName));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_GotoURL(
|
| - CFXJSE_Arguments* pArguments) {
|
| - if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| - return;
|
| - }
|
| - int32_t iLength = pArguments->GetLength();
|
| - if (iLength != 1) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"gotoURL");
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| - CFX_WideString wsURL;
|
| - if (iLength >= 1) {
|
| - CFX_ByteString bsURL = pArguments->GetUTF8String(0);
|
| - wsURL = CFX_WideString::FromUTF8(bsURL, bsURL.GetLength());
|
| - }
|
| - pNotify->GetDocProvider()->GotoURL(hDoc, wsURL);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_OpenList(
|
| - CFXJSE_Arguments* pArguments) {
|
| - if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| - return;
|
| - }
|
| - int32_t iLength = pArguments->GetLength();
|
| - if (iLength != 1) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"openList");
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - CXFA_Node* pNode = NULL;
|
| - if (iLength >= 1) {
|
| - FXJSE_HVALUE hValue = pArguments->GetValue(0);
|
| - if (FXJSE_Value_IsObject(hValue)) {
|
| - pNode = (CXFA_Node*)FXJSE_Value_ToObject(hValue, NULL);
|
| - } else if (FXJSE_Value_IsUTF8String(hValue)) {
|
| - CFX_ByteString bsString;
|
| - FXJSE_Value_ToUTF8String(hValue, bsString);
|
| - CFX_WideString wsExpression =
|
| - CFX_WideString::FromUTF8(bsString, bsString.GetLength());
|
| - IXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext();
|
| - if (!pScriptContext) {
|
| - FXJSE_Value_Release(hValue);
|
| - return;
|
| - }
|
| - CXFA_Object* pObject = pScriptContext->GetThisObject();
|
| - if (!pObject) {
|
| - FXJSE_Value_Release(hValue);
|
| - return;
|
| - }
|
| - FX_DWORD dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent |
|
| - XFA_RESOLVENODE_Siblings;
|
| - XFA_RESOLVENODE_RS resoveNodeRS;
|
| - int32_t iRet = pScriptContext->ResolveObjects(pObject, wsExpression,
|
| - resoveNodeRS, dwFlag);
|
| - if (iRet < 1 || !resoveNodeRS.nodes[0]->IsNode()) {
|
| - FXJSE_Value_Release(hValue);
|
| - return;
|
| - }
|
| - pNode = (CXFA_Node*)resoveNodeRS.nodes[0];
|
| - }
|
| - FXJSE_Value_Release(hValue);
|
| - }
|
| - IXFA_DocLayout* pDocLayout = m_pDocument->GetDocLayout();
|
| - if (!pDocLayout) {
|
| - return;
|
| - }
|
| - IXFA_Widget* hWidget = pNotify->GetHWidget(pDocLayout->GetLayoutItem(pNode));
|
| - if (!hWidget) {
|
| - return;
|
| - }
|
| - pNotify->GetDocProvider()->SetFocusWidget(pNotify->GetHDOC(), hWidget);
|
| - pNotify->OpenDropDownList(hWidget);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_Response(
|
| - CFXJSE_Arguments* pArguments) {
|
| - int32_t iLength = pArguments->GetLength();
|
| - if (iLength < 1 || iLength > 4) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"response");
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - CFX_WideString wsQuestion;
|
| - CFX_WideString wsTitle;
|
| - CFX_WideString wsDefaultAnswer;
|
| - FX_BOOL bMark = FALSE;
|
| - if (iLength >= 1) {
|
| - CFX_ByteString bsQuestion = pArguments->GetUTF8String(0);
|
| - wsQuestion = CFX_WideString::FromUTF8(bsQuestion, bsQuestion.GetLength());
|
| - }
|
| - if (iLength >= 2) {
|
| - CFX_ByteString bsTitle = pArguments->GetUTF8String(1);
|
| - wsTitle = CFX_WideString::FromUTF8(bsTitle, bsTitle.GetLength());
|
| - }
|
| - if (iLength >= 3) {
|
| - CFX_ByteString bsDefaultAnswer = pArguments->GetUTF8String(2);
|
| - wsDefaultAnswer =
|
| - CFX_WideString::FromUTF8(bsDefaultAnswer, bsDefaultAnswer.GetLength());
|
| - }
|
| - if (iLength >= 4) {
|
| - bMark = pArguments->GetInt32(3) == 0 ? FALSE : TRUE;
|
| - }
|
| - CFX_WideString wsAnswer;
|
| - pNotify->GetAppProvider()->Response(wsAnswer, wsQuestion, wsTitle,
|
| - wsDefaultAnswer, bMark);
|
| - FXJSE_HVALUE hValue = pArguments->GetReturnValue();
|
| - if (hValue) {
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAnswer));
|
| - }
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_DocumentInBatch(
|
| - CFXJSE_Arguments* pArguments) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - int32_t iCur = pNotify->GetAppProvider()->GetCurDocumentInBatch();
|
| - FXJSE_HVALUE hValue = pArguments->GetReturnValue();
|
| - if (hValue) {
|
| - FXJSE_Value_SetInteger(hValue, iCur);
|
| - }
|
| -}
|
| -static int32_t XFA_FilterName(const CFX_WideStringC& wsExpression,
|
| - int32_t nStart,
|
| - CFX_WideString& wsFilter) {
|
| - FXSYS_assert(nStart > -1);
|
| - int32_t iLength = wsExpression.GetLength();
|
| - if (nStart >= iLength) {
|
| - return iLength;
|
| - }
|
| - FX_WCHAR* pBuf = wsFilter.GetBuffer(iLength - nStart);
|
| - int32_t nCount = 0;
|
| - const FX_WCHAR* pSrc = wsExpression.GetPtr();
|
| - FX_WCHAR wCur;
|
| - while (nStart < iLength) {
|
| - wCur = pSrc[nStart++];
|
| - if (wCur == ',') {
|
| - break;
|
| - }
|
| - pBuf[nCount++] = wCur;
|
| - }
|
| - wsFilter.ReleaseBuffer(nCount);
|
| - wsFilter.TrimLeft();
|
| - wsFilter.TrimRight();
|
| - return nStart;
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_ResetData(
|
| - CFXJSE_Arguments* pArguments) {
|
| - int32_t iLength = pArguments->GetLength();
|
| - if (iLength < 0 || iLength > 1) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"resetData");
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - CFX_WideString wsExpression;
|
| - if (iLength >= 1) {
|
| - CFX_ByteString bsExpression = pArguments->GetUTF8String(0);
|
| - wsExpression =
|
| - CFX_WideString::FromUTF8(bsExpression, bsExpression.GetLength());
|
| - }
|
| - if (wsExpression.IsEmpty()) {
|
| - pNotify->ResetData();
|
| - return;
|
| - }
|
| - int32_t iStart = 0;
|
| - CFX_WideString wsName;
|
| - CXFA_Node* pNode = NULL;
|
| - int32_t iExpLength = wsExpression.GetLength();
|
| - while (iStart < iExpLength) {
|
| - iStart = XFA_FilterName(wsExpression, iStart, wsName);
|
| - IXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext();
|
| - if (!pScriptContext) {
|
| - return;
|
| - }
|
| - CXFA_Object* pObject = pScriptContext->GetThisObject();
|
| - if (!pObject) {
|
| - return;
|
| - }
|
| - FX_DWORD dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent |
|
| - XFA_RESOLVENODE_Siblings;
|
| - XFA_RESOLVENODE_RS resoveNodeRS;
|
| - int32_t iRet =
|
| - pScriptContext->ResolveObjects(pObject, wsName, resoveNodeRS, dwFlag);
|
| - if (iRet < 1 || !resoveNodeRS.nodes[0]->IsNode()) {
|
| - continue;
|
| - }
|
| - pNode = (CXFA_Node*)resoveNodeRS.nodes[0];
|
| - pNotify->ResetData(pNode->GetWidgetData());
|
| - }
|
| - if (!pNode) {
|
| - pNotify->ResetData();
|
| - }
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_Beep(
|
| - CFXJSE_Arguments* pArguments) {
|
| - if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| - return;
|
| - }
|
| - int32_t iLength = pArguments->GetLength();
|
| - if (iLength < 0 || iLength > 1) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"beep");
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - FX_DWORD dwType = 4;
|
| - if (iLength >= 1) {
|
| - dwType = pArguments->GetInt32(0);
|
| - }
|
| - pNotify->GetAppProvider()->Beep(dwType);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_SetFocus(
|
| - CFXJSE_Arguments* pArguments) {
|
| - if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| - return;
|
| - }
|
| - int32_t iLength = pArguments->GetLength();
|
| - if (iLength != 1) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"setFocus");
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - CXFA_Node* pNode = NULL;
|
| - if (iLength >= 1) {
|
| - FXJSE_HVALUE hValue = pArguments->GetValue(0);
|
| - if (FXJSE_Value_IsObject(hValue)) {
|
| - pNode = (CXFA_Node*)FXJSE_Value_ToObject(hValue, NULL);
|
| - } else if (FXJSE_Value_IsUTF8String(hValue)) {
|
| - CFX_ByteString bsString;
|
| - FXJSE_Value_ToUTF8String(hValue, bsString);
|
| - CFX_WideString wsExpression =
|
| - CFX_WideString::FromUTF8(bsString, bsString.GetLength());
|
| - IXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext();
|
| - if (!pScriptContext) {
|
| - FXJSE_Value_Release(hValue);
|
| - return;
|
| - }
|
| - CXFA_Object* pObject = pScriptContext->GetThisObject();
|
| - if (!pObject) {
|
| - FXJSE_Value_Release(hValue);
|
| - return;
|
| - }
|
| - FX_DWORD dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent |
|
| - XFA_RESOLVENODE_Siblings;
|
| - XFA_RESOLVENODE_RS resoveNodeRS;
|
| - int32_t iRet = pScriptContext->ResolveObjects(pObject, wsExpression,
|
| - resoveNodeRS, dwFlag);
|
| - if (iRet < 1 || !resoveNodeRS.nodes[0]->IsNode()) {
|
| - FXJSE_Value_Release(hValue);
|
| - return;
|
| - }
|
| - pNode = (CXFA_Node*)resoveNodeRS.nodes[0];
|
| - }
|
| - FXJSE_Value_Release(hValue);
|
| - }
|
| - pNotify->SetFocusWidgetNode(pNode);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_GetFocus(
|
| - CFXJSE_Arguments* pArguments) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - CXFA_Node* pNode = pNotify->GetFocusWidgetNode();
|
| - if (!pNode) {
|
| - return;
|
| - }
|
| - FXJSE_Value_Set(pArguments->GetReturnValue(),
|
| - m_pDocument->GetScriptContext()->GetJSValueFromMap(pNode));
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_MessageBox(
|
| - CFXJSE_Arguments* pArguments) {
|
| - if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| - return;
|
| - }
|
| - int32_t iLength = pArguments->GetLength();
|
| - if (iLength < 1 || iLength > 4) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"messageBox");
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - CFX_WideString wsMessage;
|
| - CFX_WideString bsTitle;
|
| - FX_DWORD dwMessageType = XFA_MBICON_Error;
|
| - FX_DWORD dwButtonType = XFA_MB_OK;
|
| - if (iLength >= 1) {
|
| - if (!Script_HostPseudoModel_ValidateArgsForMsg(pArguments, 0, wsMessage)) {
|
| - return;
|
| - }
|
| - }
|
| - if (iLength >= 2) {
|
| - if (!Script_HostPseudoModel_ValidateArgsForMsg(pArguments, 1, bsTitle)) {
|
| - return;
|
| - }
|
| - }
|
| - if (iLength >= 3) {
|
| - dwMessageType = pArguments->GetInt32(2);
|
| - if (dwMessageType > XFA_MBICON_Status) {
|
| - dwMessageType = XFA_MBICON_Error;
|
| - }
|
| - }
|
| - if (iLength >= 4) {
|
| - dwButtonType = pArguments->GetInt32(3);
|
| - if (dwButtonType > XFA_MB_YesNoCancel) {
|
| - dwButtonType = XFA_MB_OK;
|
| - }
|
| - }
|
| - int32_t iValue = pNotify->GetAppProvider()->MsgBox(
|
| - wsMessage, bsTitle, dwMessageType, dwButtonType);
|
| - FXJSE_HVALUE hValue = pArguments->GetReturnValue();
|
| - if (hValue) {
|
| - FXJSE_Value_SetInteger(hValue, iValue);
|
| - }
|
| -}
|
| -FX_BOOL CScript_HostPseudoModel::Script_HostPseudoModel_ValidateArgsForMsg(
|
| - CFXJSE_Arguments* pArguments,
|
| - int32_t iArgIndex,
|
| - CFX_WideString& wsValue) {
|
| - if (pArguments == NULL || iArgIndex < 0) {
|
| - return FALSE;
|
| - }
|
| - FX_BOOL bIsJsType = FALSE;
|
| - if (m_pDocument->GetScriptContext()->GetType() ==
|
| - XFA_SCRIPTLANGTYPE_Javascript) {
|
| - bIsJsType = TRUE;
|
| - }
|
| - FXJSE_HVALUE hValueArg = pArguments->GetValue(iArgIndex);
|
| - if (!FXJSE_Value_IsUTF8String(hValueArg) && bIsJsType) {
|
| - ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH);
|
| - FXJSE_Value_Release(hValueArg);
|
| - return FALSE;
|
| - }
|
| - if (FXJSE_Value_IsNull(hValueArg)) {
|
| - wsValue = FX_WSTRC(L"");
|
| - } else {
|
| - CFX_ByteString byMessage;
|
| - FXJSE_Value_ToUTF8String(hValueArg, byMessage);
|
| - wsValue = CFX_WideString::FromUTF8(byMessage, byMessage.GetLength());
|
| - }
|
| - FXJSE_Value_Release(hValueArg);
|
| - return TRUE;
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_DocumentCountInBatch(
|
| - CFXJSE_Arguments* pArguments) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - int32_t iValue = pNotify->GetAppProvider()->GetDocumentCountInBatch();
|
| - FXJSE_HVALUE hValue = pArguments->GetReturnValue();
|
| - if (hValue) {
|
| - FXJSE_Value_SetInteger(hValue, iValue);
|
| - }
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_Print(
|
| - CFXJSE_Arguments* pArguments) {
|
| - if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| - return;
|
| - }
|
| - int32_t iLength = pArguments->GetLength();
|
| - if (iLength != 8) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"print");
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| - FX_DWORD dwOptions = 0;
|
| - FX_BOOL bShowDialog = TRUE;
|
| - if (iLength >= 1) {
|
| - bShowDialog = pArguments->GetInt32(0) == 0 ? FALSE : TRUE;
|
| - }
|
| - if (bShowDialog) {
|
| - dwOptions |= XFA_PRINTOPT_ShowDialog;
|
| - }
|
| - int32_t nStartPage = 0;
|
| - if (iLength >= 2) {
|
| - nStartPage = pArguments->GetInt32(1);
|
| - }
|
| - int32_t nEndPage = 0;
|
| - if (iLength >= 3) {
|
| - nEndPage = pArguments->GetInt32(2);
|
| - }
|
| - FX_BOOL bCanCancel = TRUE;
|
| - if (iLength >= 4) {
|
| - bCanCancel = pArguments->GetInt32(3) == 0 ? FALSE : TRUE;
|
| - }
|
| - if (bCanCancel) {
|
| - dwOptions |= XFA_PRINTOPT_CanCancel;
|
| - }
|
| - FX_BOOL bShrinkPage = TRUE;
|
| - if (iLength >= 5) {
|
| - bShrinkPage = pArguments->GetInt32(4) == 0 ? FALSE : TRUE;
|
| - }
|
| - if (bShrinkPage) {
|
| - dwOptions |= XFA_PRINTOPT_ShrinkPage;
|
| - }
|
| - FX_BOOL bAsImage = TRUE;
|
| - if (iLength >= 6) {
|
| - bAsImage = pArguments->GetInt32(5) == 0 ? FALSE : TRUE;
|
| - }
|
| - if (bAsImage) {
|
| - dwOptions |= XFA_PRINTOPT_AsImage;
|
| - }
|
| - FX_BOOL bReverseOrder = TRUE;
|
| - if (iLength >= 7) {
|
| - bAsImage = pArguments->GetInt32(5) == 0 ? FALSE : TRUE;
|
| - }
|
| - bReverseOrder = pArguments->GetInt32(6) == 0 ? FALSE : TRUE;
|
| - if (bReverseOrder) {
|
| - dwOptions |= XFA_PRINTOPT_ReverseOrder;
|
| - }
|
| - FX_BOOL bPrintAnnot = TRUE;
|
| - if (iLength >= 8) {
|
| - bPrintAnnot = pArguments->GetInt32(7) == 0 ? FALSE : TRUE;
|
| - }
|
| - if (bPrintAnnot) {
|
| - dwOptions |= XFA_PRINTOPT_PrintAnnot;
|
| - }
|
| - pNotify->GetDocProvider()->Print(hDoc, nStartPage, nEndPage, dwOptions);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_ImportData(
|
| - CFXJSE_Arguments* pArguments) {
|
| - int32_t iLength = pArguments->GetLength();
|
| - if (iLength < 0 || iLength > 1) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"importData");
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - CFX_WideString wsFilePath;
|
| - if (iLength > 0) {
|
| - CFX_ByteString bsFilePath = pArguments->GetUTF8String(0);
|
| - wsFilePath = CFX_WideString::FromUTF8(bsFilePath, bsFilePath.GetLength());
|
| - }
|
| - IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| - pNotify->GetDocProvider()->ImportData(hDoc, wsFilePath);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_ExportData(
|
| - CFXJSE_Arguments* pArguments) {
|
| - int32_t iLength = pArguments->GetLength();
|
| - if (iLength < 0 || iLength > 2) {
|
| - ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"exportData");
|
| - return;
|
| - }
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| - CFX_WideString wsFilePath;
|
| - FX_BOOL bXDP = TRUE;
|
| - if (iLength >= 1) {
|
| - CFX_ByteString bsFilePath = pArguments->GetUTF8String(0);
|
| - wsFilePath = CFX_WideString::FromUTF8(bsFilePath, bsFilePath.GetLength());
|
| - }
|
| - if (iLength >= 2) {
|
| - bXDP = pArguments->GetInt32(1) == 0 ? FALSE : TRUE;
|
| - }
|
| - pNotify->GetDocProvider()->ExportData(hDoc, wsFilePath, bXDP);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_PageUp(
|
| - CFXJSE_Arguments* pArguments) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| - int32_t nCurPage = pNotify->GetDocProvider()->GetCurrentPage(hDoc);
|
| - int32_t nNewPage = 0;
|
| - if (nCurPage <= 1) {
|
| - return;
|
| - }
|
| - nNewPage = nCurPage - 1;
|
| - pNotify->GetDocProvider()->SetCurrentPage(hDoc, nNewPage);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_PageDown(
|
| - CFXJSE_Arguments* pArguments) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| - int32_t nCurPage = pNotify->GetDocProvider()->GetCurrentPage(hDoc);
|
| - int32_t nPageCount = pNotify->GetDocProvider()->CountPages(hDoc);
|
| - if (!nPageCount || nCurPage == nPageCount) {
|
| - return;
|
| - }
|
| - int32_t nNewPage = 0;
|
| - if (nCurPage >= nPageCount) {
|
| - nNewPage = nPageCount - 1;
|
| - } else {
|
| - nNewPage = nCurPage + 1;
|
| - }
|
| - pNotify->GetDocProvider()->SetCurrentPage(hDoc, nNewPage);
|
| -}
|
| -void CScript_HostPseudoModel::Script_HostPseudoModel_CurrentDateTime(
|
| - CFXJSE_Arguments* pArguments) {
|
| - IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| - if (!pNotify) {
|
| - return;
|
| - }
|
| - CFX_WideString wsDataTime = pNotify->GetCurrentDateTime();
|
| - FXJSE_HVALUE hValue = pArguments->GetReturnValue();
|
| - if (hValue) {
|
| - FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsDataTime));
|
| - }
|
| -}
|
| +// Copyright 2014 PDFium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
| +
|
| +#include "xfa/src/foxitlib.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_utils.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_object.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_document.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_parser.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_script.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_docdata.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_doclayout.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_localemgr.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_fm2jsapi.h"
|
| +#include "xfa_script_hostpseudomodel.h"
|
| +CScript_HostPseudoModel::CScript_HostPseudoModel(CXFA_Document* pDocument)
|
| + : CXFA_OrdinaryObject(pDocument, XFA_ELEMENT_HostPseudoModel) {
|
| + m_uScriptHash = XFA_HASHCODE_Host;
|
| +}
|
| +CScript_HostPseudoModel::~CScript_HostPseudoModel() {}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_LoadString(
|
| + FXJSE_HVALUE hValue,
|
| + IXFA_Notify* pNotify,
|
| + FX_DWORD dwFlag) {
|
| + CFX_WideString wsValue;
|
| + pNotify->GetAppProvider()->LoadString(dwFlag, wsValue);
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsValue));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_AppType(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + if (bSetting) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET);
|
| + return;
|
| + }
|
| + CFX_WideString wsAppType;
|
| + pNotify->GetAppProvider()->GetAppType(wsAppType);
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAppType));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_FoxitAppType(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + if (bSetting) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET);
|
| + return;
|
| + }
|
| + CFX_WideString wsAppType;
|
| + pNotify->GetAppProvider()->GetFoxitAppType(wsAppType);
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAppType));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_CalculationsEnabled(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| + if (bSetting) {
|
| + pNotify->GetDocProvider()->SetCalculationsEnabled(
|
| + hDoc, FXJSE_Value_ToBoolean(hValue));
|
| + return;
|
| + }
|
| + FX_BOOL bEnabled = pNotify->GetDocProvider()->IsCalculationsEnabled(hDoc);
|
| + FXJSE_Value_SetBoolean(hValue, bEnabled);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_CurrentPage(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| + if (bSetting) {
|
| + pNotify->GetDocProvider()->SetCurrentPage(hDoc,
|
| + FXJSE_Value_ToInteger(hValue));
|
| + return;
|
| + }
|
| + int32_t iCurrentPage = pNotify->GetDocProvider()->GetCurrentPage(hDoc);
|
| + FXJSE_Value_SetInteger(hValue, iCurrentPage);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_Language(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + if (bSetting) {
|
| + ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_LANGUAGE);
|
| + return;
|
| + }
|
| + CFX_WideString wsLanguage;
|
| + pNotify->GetAppProvider()->GetLanguage(wsLanguage);
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsLanguage));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_NumPages(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| + if (bSetting) {
|
| + ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_NUMPAGES);
|
| + return;
|
| + }
|
| + int32_t iNumPages = pNotify->GetDocProvider()->CountPages(hDoc);
|
| + FXJSE_Value_SetInteger(hValue, iNumPages);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_Platform(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + if (bSetting) {
|
| + ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_PLATFORM);
|
| + return;
|
| + }
|
| + CFX_WideString wsPlatform;
|
| + pNotify->GetAppProvider()->GetPlatform(wsPlatform);
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsPlatform));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_Title(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| + if (bSetting) {
|
| + CFX_ByteString bsValue;
|
| + FXJSE_Value_ToUTF8String(hValue, bsValue);
|
| + pNotify->GetDocProvider()->SetTitle(
|
| + hDoc, CFX_WideString::FromUTF8(bsValue, bsValue.GetLength()));
|
| + return;
|
| + }
|
| + CFX_WideString wsTitle;
|
| + pNotify->GetDocProvider()->GetTitle(hDoc, wsTitle);
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsTitle));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_ValidationsEnabled(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| + if (bSetting) {
|
| + pNotify->GetDocProvider()->SetValidationsEnabled(
|
| + hDoc, FXJSE_Value_ToBoolean(hValue));
|
| + return;
|
| + }
|
| + FX_BOOL bEnabled = pNotify->GetDocProvider()->IsValidationsEnabled(hDoc);
|
| + FXJSE_Value_SetBoolean(hValue, bEnabled);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_Variation(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + if (bSetting) {
|
| + ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_VARIATION);
|
| + return;
|
| + }
|
| + CFX_WideString wsVariation;
|
| + pNotify->GetAppProvider()->GetVariation(wsVariation);
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsVariation));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_Version(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + if (bSetting) {
|
| + ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_VERSION);
|
| + return;
|
| + }
|
| + CFX_WideString wsVersion;
|
| + pNotify->GetAppProvider()->GetVersion(wsVersion);
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsVersion));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_FoxitVersion(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + if (bSetting) {
|
| + ThrowScriptErrorMessage(XFA_IDS_UNABLE_SET_VERSION);
|
| + return;
|
| + }
|
| + CFX_WideString wsVersion;
|
| + pNotify->GetAppProvider()->GetFoxitVersion(wsVersion);
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsVersion));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_Name(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + if (bSetting) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET);
|
| + return;
|
| + }
|
| + CFX_WideString wsAppName;
|
| + pNotify->GetAppProvider()->GetAppName(wsAppName);
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAppName));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_FoxitName(
|
| + FXJSE_HVALUE hValue,
|
| + FX_BOOL bSetting,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + if (bSetting) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET);
|
| + return;
|
| + }
|
| + CFX_WideString wsFoxitAppName;
|
| + pNotify->GetAppProvider()->GetFoxitAppName(wsFoxitAppName);
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsFoxitAppName));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_GotoURL(
|
| + CFXJSE_Arguments* pArguments) {
|
| + if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| + return;
|
| + }
|
| + int32_t iLength = pArguments->GetLength();
|
| + if (iLength != 1) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"gotoURL");
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| + CFX_WideString wsURL;
|
| + if (iLength >= 1) {
|
| + CFX_ByteString bsURL = pArguments->GetUTF8String(0);
|
| + wsURL = CFX_WideString::FromUTF8(bsURL, bsURL.GetLength());
|
| + }
|
| + pNotify->GetDocProvider()->GotoURL(hDoc, wsURL);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_OpenList(
|
| + CFXJSE_Arguments* pArguments) {
|
| + if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| + return;
|
| + }
|
| + int32_t iLength = pArguments->GetLength();
|
| + if (iLength != 1) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"openList");
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + CXFA_Node* pNode = NULL;
|
| + if (iLength >= 1) {
|
| + FXJSE_HVALUE hValue = pArguments->GetValue(0);
|
| + if (FXJSE_Value_IsObject(hValue)) {
|
| + pNode = (CXFA_Node*)FXJSE_Value_ToObject(hValue, NULL);
|
| + } else if (FXJSE_Value_IsUTF8String(hValue)) {
|
| + CFX_ByteString bsString;
|
| + FXJSE_Value_ToUTF8String(hValue, bsString);
|
| + CFX_WideString wsExpression =
|
| + CFX_WideString::FromUTF8(bsString, bsString.GetLength());
|
| + IXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext();
|
| + if (!pScriptContext) {
|
| + FXJSE_Value_Release(hValue);
|
| + return;
|
| + }
|
| + CXFA_Object* pObject = pScriptContext->GetThisObject();
|
| + if (!pObject) {
|
| + FXJSE_Value_Release(hValue);
|
| + return;
|
| + }
|
| + FX_DWORD dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent |
|
| + XFA_RESOLVENODE_Siblings;
|
| + XFA_RESOLVENODE_RS resoveNodeRS;
|
| + int32_t iRet = pScriptContext->ResolveObjects(pObject, wsExpression,
|
| + resoveNodeRS, dwFlag);
|
| + if (iRet < 1 || !resoveNodeRS.nodes[0]->IsNode()) {
|
| + FXJSE_Value_Release(hValue);
|
| + return;
|
| + }
|
| + pNode = (CXFA_Node*)resoveNodeRS.nodes[0];
|
| + }
|
| + FXJSE_Value_Release(hValue);
|
| + }
|
| + IXFA_DocLayout* pDocLayout = m_pDocument->GetDocLayout();
|
| + if (!pDocLayout) {
|
| + return;
|
| + }
|
| + IXFA_Widget* hWidget = pNotify->GetHWidget(pDocLayout->GetLayoutItem(pNode));
|
| + if (!hWidget) {
|
| + return;
|
| + }
|
| + pNotify->GetDocProvider()->SetFocusWidget(pNotify->GetHDOC(), hWidget);
|
| + pNotify->OpenDropDownList(hWidget);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_Response(
|
| + CFXJSE_Arguments* pArguments) {
|
| + int32_t iLength = pArguments->GetLength();
|
| + if (iLength < 1 || iLength > 4) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"response");
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + CFX_WideString wsQuestion;
|
| + CFX_WideString wsTitle;
|
| + CFX_WideString wsDefaultAnswer;
|
| + FX_BOOL bMark = FALSE;
|
| + if (iLength >= 1) {
|
| + CFX_ByteString bsQuestion = pArguments->GetUTF8String(0);
|
| + wsQuestion = CFX_WideString::FromUTF8(bsQuestion, bsQuestion.GetLength());
|
| + }
|
| + if (iLength >= 2) {
|
| + CFX_ByteString bsTitle = pArguments->GetUTF8String(1);
|
| + wsTitle = CFX_WideString::FromUTF8(bsTitle, bsTitle.GetLength());
|
| + }
|
| + if (iLength >= 3) {
|
| + CFX_ByteString bsDefaultAnswer = pArguments->GetUTF8String(2);
|
| + wsDefaultAnswer =
|
| + CFX_WideString::FromUTF8(bsDefaultAnswer, bsDefaultAnswer.GetLength());
|
| + }
|
| + if (iLength >= 4) {
|
| + bMark = pArguments->GetInt32(3) == 0 ? FALSE : TRUE;
|
| + }
|
| + CFX_WideString wsAnswer;
|
| + pNotify->GetAppProvider()->Response(wsAnswer, wsQuestion, wsTitle,
|
| + wsDefaultAnswer, bMark);
|
| + FXJSE_HVALUE hValue = pArguments->GetReturnValue();
|
| + if (hValue) {
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsAnswer));
|
| + }
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_DocumentInBatch(
|
| + CFXJSE_Arguments* pArguments) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + int32_t iCur = pNotify->GetAppProvider()->GetCurDocumentInBatch();
|
| + FXJSE_HVALUE hValue = pArguments->GetReturnValue();
|
| + if (hValue) {
|
| + FXJSE_Value_SetInteger(hValue, iCur);
|
| + }
|
| +}
|
| +static int32_t XFA_FilterName(const CFX_WideStringC& wsExpression,
|
| + int32_t nStart,
|
| + CFX_WideString& wsFilter) {
|
| + FXSYS_assert(nStart > -1);
|
| + int32_t iLength = wsExpression.GetLength();
|
| + if (nStart >= iLength) {
|
| + return iLength;
|
| + }
|
| + FX_WCHAR* pBuf = wsFilter.GetBuffer(iLength - nStart);
|
| + int32_t nCount = 0;
|
| + const FX_WCHAR* pSrc = wsExpression.GetPtr();
|
| + FX_WCHAR wCur;
|
| + while (nStart < iLength) {
|
| + wCur = pSrc[nStart++];
|
| + if (wCur == ',') {
|
| + break;
|
| + }
|
| + pBuf[nCount++] = wCur;
|
| + }
|
| + wsFilter.ReleaseBuffer(nCount);
|
| + wsFilter.TrimLeft();
|
| + wsFilter.TrimRight();
|
| + return nStart;
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_ResetData(
|
| + CFXJSE_Arguments* pArguments) {
|
| + int32_t iLength = pArguments->GetLength();
|
| + if (iLength < 0 || iLength > 1) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"resetData");
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + CFX_WideString wsExpression;
|
| + if (iLength >= 1) {
|
| + CFX_ByteString bsExpression = pArguments->GetUTF8String(0);
|
| + wsExpression =
|
| + CFX_WideString::FromUTF8(bsExpression, bsExpression.GetLength());
|
| + }
|
| + if (wsExpression.IsEmpty()) {
|
| + pNotify->ResetData();
|
| + return;
|
| + }
|
| + int32_t iStart = 0;
|
| + CFX_WideString wsName;
|
| + CXFA_Node* pNode = NULL;
|
| + int32_t iExpLength = wsExpression.GetLength();
|
| + while (iStart < iExpLength) {
|
| + iStart = XFA_FilterName(wsExpression, iStart, wsName);
|
| + IXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext();
|
| + if (!pScriptContext) {
|
| + return;
|
| + }
|
| + CXFA_Object* pObject = pScriptContext->GetThisObject();
|
| + if (!pObject) {
|
| + return;
|
| + }
|
| + FX_DWORD dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent |
|
| + XFA_RESOLVENODE_Siblings;
|
| + XFA_RESOLVENODE_RS resoveNodeRS;
|
| + int32_t iRet =
|
| + pScriptContext->ResolveObjects(pObject, wsName, resoveNodeRS, dwFlag);
|
| + if (iRet < 1 || !resoveNodeRS.nodes[0]->IsNode()) {
|
| + continue;
|
| + }
|
| + pNode = (CXFA_Node*)resoveNodeRS.nodes[0];
|
| + pNotify->ResetData(pNode->GetWidgetData());
|
| + }
|
| + if (!pNode) {
|
| + pNotify->ResetData();
|
| + }
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_Beep(
|
| + CFXJSE_Arguments* pArguments) {
|
| + if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| + return;
|
| + }
|
| + int32_t iLength = pArguments->GetLength();
|
| + if (iLength < 0 || iLength > 1) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"beep");
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + FX_DWORD dwType = 4;
|
| + if (iLength >= 1) {
|
| + dwType = pArguments->GetInt32(0);
|
| + }
|
| + pNotify->GetAppProvider()->Beep(dwType);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_SetFocus(
|
| + CFXJSE_Arguments* pArguments) {
|
| + if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| + return;
|
| + }
|
| + int32_t iLength = pArguments->GetLength();
|
| + if (iLength != 1) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"setFocus");
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + CXFA_Node* pNode = NULL;
|
| + if (iLength >= 1) {
|
| + FXJSE_HVALUE hValue = pArguments->GetValue(0);
|
| + if (FXJSE_Value_IsObject(hValue)) {
|
| + pNode = (CXFA_Node*)FXJSE_Value_ToObject(hValue, NULL);
|
| + } else if (FXJSE_Value_IsUTF8String(hValue)) {
|
| + CFX_ByteString bsString;
|
| + FXJSE_Value_ToUTF8String(hValue, bsString);
|
| + CFX_WideString wsExpression =
|
| + CFX_WideString::FromUTF8(bsString, bsString.GetLength());
|
| + IXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext();
|
| + if (!pScriptContext) {
|
| + FXJSE_Value_Release(hValue);
|
| + return;
|
| + }
|
| + CXFA_Object* pObject = pScriptContext->GetThisObject();
|
| + if (!pObject) {
|
| + FXJSE_Value_Release(hValue);
|
| + return;
|
| + }
|
| + FX_DWORD dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent |
|
| + XFA_RESOLVENODE_Siblings;
|
| + XFA_RESOLVENODE_RS resoveNodeRS;
|
| + int32_t iRet = pScriptContext->ResolveObjects(pObject, wsExpression,
|
| + resoveNodeRS, dwFlag);
|
| + if (iRet < 1 || !resoveNodeRS.nodes[0]->IsNode()) {
|
| + FXJSE_Value_Release(hValue);
|
| + return;
|
| + }
|
| + pNode = (CXFA_Node*)resoveNodeRS.nodes[0];
|
| + }
|
| + FXJSE_Value_Release(hValue);
|
| + }
|
| + pNotify->SetFocusWidgetNode(pNode);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_GetFocus(
|
| + CFXJSE_Arguments* pArguments) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + CXFA_Node* pNode = pNotify->GetFocusWidgetNode();
|
| + if (!pNode) {
|
| + return;
|
| + }
|
| + FXJSE_Value_Set(pArguments->GetReturnValue(),
|
| + m_pDocument->GetScriptContext()->GetJSValueFromMap(pNode));
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_MessageBox(
|
| + CFXJSE_Arguments* pArguments) {
|
| + if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| + return;
|
| + }
|
| + int32_t iLength = pArguments->GetLength();
|
| + if (iLength < 1 || iLength > 4) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"messageBox");
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + CFX_WideString wsMessage;
|
| + CFX_WideString bsTitle;
|
| + FX_DWORD dwMessageType = XFA_MBICON_Error;
|
| + FX_DWORD dwButtonType = XFA_MB_OK;
|
| + if (iLength >= 1) {
|
| + if (!Script_HostPseudoModel_ValidateArgsForMsg(pArguments, 0, wsMessage)) {
|
| + return;
|
| + }
|
| + }
|
| + if (iLength >= 2) {
|
| + if (!Script_HostPseudoModel_ValidateArgsForMsg(pArguments, 1, bsTitle)) {
|
| + return;
|
| + }
|
| + }
|
| + if (iLength >= 3) {
|
| + dwMessageType = pArguments->GetInt32(2);
|
| + if (dwMessageType > XFA_MBICON_Status) {
|
| + dwMessageType = XFA_MBICON_Error;
|
| + }
|
| + }
|
| + if (iLength >= 4) {
|
| + dwButtonType = pArguments->GetInt32(3);
|
| + if (dwButtonType > XFA_MB_YesNoCancel) {
|
| + dwButtonType = XFA_MB_OK;
|
| + }
|
| + }
|
| + int32_t iValue = pNotify->GetAppProvider()->MsgBox(
|
| + wsMessage, bsTitle, dwMessageType, dwButtonType);
|
| + FXJSE_HVALUE hValue = pArguments->GetReturnValue();
|
| + if (hValue) {
|
| + FXJSE_Value_SetInteger(hValue, iValue);
|
| + }
|
| +}
|
| +FX_BOOL CScript_HostPseudoModel::Script_HostPseudoModel_ValidateArgsForMsg(
|
| + CFXJSE_Arguments* pArguments,
|
| + int32_t iArgIndex,
|
| + CFX_WideString& wsValue) {
|
| + if (pArguments == NULL || iArgIndex < 0) {
|
| + return FALSE;
|
| + }
|
| + FX_BOOL bIsJsType = FALSE;
|
| + if (m_pDocument->GetScriptContext()->GetType() ==
|
| + XFA_SCRIPTLANGTYPE_Javascript) {
|
| + bIsJsType = TRUE;
|
| + }
|
| + FXJSE_HVALUE hValueArg = pArguments->GetValue(iArgIndex);
|
| + if (!FXJSE_Value_IsUTF8String(hValueArg) && bIsJsType) {
|
| + ThrowScriptErrorMessage(XFA_IDS_ARGUMENT_MISMATCH);
|
| + FXJSE_Value_Release(hValueArg);
|
| + return FALSE;
|
| + }
|
| + if (FXJSE_Value_IsNull(hValueArg)) {
|
| + wsValue = FX_WSTRC(L"");
|
| + } else {
|
| + CFX_ByteString byMessage;
|
| + FXJSE_Value_ToUTF8String(hValueArg, byMessage);
|
| + wsValue = CFX_WideString::FromUTF8(byMessage, byMessage.GetLength());
|
| + }
|
| + FXJSE_Value_Release(hValueArg);
|
| + return TRUE;
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_DocumentCountInBatch(
|
| + CFXJSE_Arguments* pArguments) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + int32_t iValue = pNotify->GetAppProvider()->GetDocumentCountInBatch();
|
| + FXJSE_HVALUE hValue = pArguments->GetReturnValue();
|
| + if (hValue) {
|
| + FXJSE_Value_SetInteger(hValue, iValue);
|
| + }
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_Print(
|
| + CFXJSE_Arguments* pArguments) {
|
| + if (!m_pDocument->GetScriptContext()->IsRunAtClient()) {
|
| + return;
|
| + }
|
| + int32_t iLength = pArguments->GetLength();
|
| + if (iLength != 8) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"print");
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| + FX_DWORD dwOptions = 0;
|
| + FX_BOOL bShowDialog = TRUE;
|
| + if (iLength >= 1) {
|
| + bShowDialog = pArguments->GetInt32(0) == 0 ? FALSE : TRUE;
|
| + }
|
| + if (bShowDialog) {
|
| + dwOptions |= XFA_PRINTOPT_ShowDialog;
|
| + }
|
| + int32_t nStartPage = 0;
|
| + if (iLength >= 2) {
|
| + nStartPage = pArguments->GetInt32(1);
|
| + }
|
| + int32_t nEndPage = 0;
|
| + if (iLength >= 3) {
|
| + nEndPage = pArguments->GetInt32(2);
|
| + }
|
| + FX_BOOL bCanCancel = TRUE;
|
| + if (iLength >= 4) {
|
| + bCanCancel = pArguments->GetInt32(3) == 0 ? FALSE : TRUE;
|
| + }
|
| + if (bCanCancel) {
|
| + dwOptions |= XFA_PRINTOPT_CanCancel;
|
| + }
|
| + FX_BOOL bShrinkPage = TRUE;
|
| + if (iLength >= 5) {
|
| + bShrinkPage = pArguments->GetInt32(4) == 0 ? FALSE : TRUE;
|
| + }
|
| + if (bShrinkPage) {
|
| + dwOptions |= XFA_PRINTOPT_ShrinkPage;
|
| + }
|
| + FX_BOOL bAsImage = TRUE;
|
| + if (iLength >= 6) {
|
| + bAsImage = pArguments->GetInt32(5) == 0 ? FALSE : TRUE;
|
| + }
|
| + if (bAsImage) {
|
| + dwOptions |= XFA_PRINTOPT_AsImage;
|
| + }
|
| + FX_BOOL bReverseOrder = TRUE;
|
| + if (iLength >= 7) {
|
| + bAsImage = pArguments->GetInt32(5) == 0 ? FALSE : TRUE;
|
| + }
|
| + bReverseOrder = pArguments->GetInt32(6) == 0 ? FALSE : TRUE;
|
| + if (bReverseOrder) {
|
| + dwOptions |= XFA_PRINTOPT_ReverseOrder;
|
| + }
|
| + FX_BOOL bPrintAnnot = TRUE;
|
| + if (iLength >= 8) {
|
| + bPrintAnnot = pArguments->GetInt32(7) == 0 ? FALSE : TRUE;
|
| + }
|
| + if (bPrintAnnot) {
|
| + dwOptions |= XFA_PRINTOPT_PrintAnnot;
|
| + }
|
| + pNotify->GetDocProvider()->Print(hDoc, nStartPage, nEndPage, dwOptions);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_ImportData(
|
| + CFXJSE_Arguments* pArguments) {
|
| + int32_t iLength = pArguments->GetLength();
|
| + if (iLength < 0 || iLength > 1) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"importData");
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + CFX_WideString wsFilePath;
|
| + if (iLength > 0) {
|
| + CFX_ByteString bsFilePath = pArguments->GetUTF8String(0);
|
| + wsFilePath = CFX_WideString::FromUTF8(bsFilePath, bsFilePath.GetLength());
|
| + }
|
| + IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| + pNotify->GetDocProvider()->ImportData(hDoc, wsFilePath);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_ExportData(
|
| + CFXJSE_Arguments* pArguments) {
|
| + int32_t iLength = pArguments->GetLength();
|
| + if (iLength < 0 || iLength > 2) {
|
| + ThrowScriptErrorMessage(XFA_IDS_INCORRECT_NUMBER_OF_METHOD, L"exportData");
|
| + return;
|
| + }
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| + CFX_WideString wsFilePath;
|
| + FX_BOOL bXDP = TRUE;
|
| + if (iLength >= 1) {
|
| + CFX_ByteString bsFilePath = pArguments->GetUTF8String(0);
|
| + wsFilePath = CFX_WideString::FromUTF8(bsFilePath, bsFilePath.GetLength());
|
| + }
|
| + if (iLength >= 2) {
|
| + bXDP = pArguments->GetInt32(1) == 0 ? FALSE : TRUE;
|
| + }
|
| + pNotify->GetDocProvider()->ExportData(hDoc, wsFilePath, bXDP);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_PageUp(
|
| + CFXJSE_Arguments* pArguments) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| + int32_t nCurPage = pNotify->GetDocProvider()->GetCurrentPage(hDoc);
|
| + int32_t nNewPage = 0;
|
| + if (nCurPage <= 1) {
|
| + return;
|
| + }
|
| + nNewPage = nCurPage - 1;
|
| + pNotify->GetDocProvider()->SetCurrentPage(hDoc, nNewPage);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_PageDown(
|
| + CFXJSE_Arguments* pArguments) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + IXFA_Doc* hDoc = pNotify->GetHDOC();
|
| + int32_t nCurPage = pNotify->GetDocProvider()->GetCurrentPage(hDoc);
|
| + int32_t nPageCount = pNotify->GetDocProvider()->CountPages(hDoc);
|
| + if (!nPageCount || nCurPage == nPageCount) {
|
| + return;
|
| + }
|
| + int32_t nNewPage = 0;
|
| + if (nCurPage >= nPageCount) {
|
| + nNewPage = nPageCount - 1;
|
| + } else {
|
| + nNewPage = nCurPage + 1;
|
| + }
|
| + pNotify->GetDocProvider()->SetCurrentPage(hDoc, nNewPage);
|
| +}
|
| +void CScript_HostPseudoModel::Script_HostPseudoModel_CurrentDateTime(
|
| + CFXJSE_Arguments* pArguments) {
|
| + IXFA_Notify* pNotify = m_pDocument->GetParser()->GetNotify();
|
| + if (!pNotify) {
|
| + return;
|
| + }
|
| + CFX_WideString wsDataTime = pNotify->GetCurrentDateTime();
|
| + FXJSE_HVALUE hValue = pArguments->GetReturnValue();
|
| + if (hValue) {
|
| + FXJSE_Value_SetUTF8String(hValue, FX_UTF8Encode(wsDataTime));
|
| + }
|
| +}
|
|
|