14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cscript_hostpseudomodel.h" 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <memory> 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fxjs/cfxjse_arguments.h" 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/app/xfa_ffnotify.h" 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_document.h" 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_layoutprocessor.h" 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_scriptcontext.h" 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/xfa_localemgr.h" 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/xfa_object.h" 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/xfa_resolvenode_rs.h" 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/xfa_utils.h" 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannnamespace { 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCXFA_Node* ToNode(CFXJSE_Value* pValue, CFXJSE_Class* pClass) { 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return static_cast<CXFA_Node*>(pValue->ToHostObject(pClass)); 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} // namespace 284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCScript_HostPseudoModel::CScript_HostPseudoModel(CXFA_Document* pDocument) 304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann : CXFA_Object(pDocument, 314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ObjectType::Object, 324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_Element::HostPseudoModel, 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideStringC(L"hostPseudoModel")) {} 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCScript_HostPseudoModel::~CScript_HostPseudoModel() {} 364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::AppType(CFXJSE_Value* pValue, 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetString("Exchange"); 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::CalculationsEnabled(CFXJSE_Value* pValue, 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetDocEnvironment()->SetCalculationsEnabled(hDoc, 604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->ToBoolean()); 614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetBoolean(pNotify->GetDocEnvironment()->IsCalculationsEnabled(hDoc)); 644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::CurrentPage(CFXJSE_Value* pValue, 674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetDocEnvironment()->SetCurrentPage(hDoc, pValue->ToInteger()); 764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(pNotify->GetDocEnvironment()->GetCurrentPage(hDoc)); 794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::Language(CFXJSE_Value* pValue, 824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowSetLanguageException(); 894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetString( 9233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pNotify->GetAppProvider()->GetLanguage().UTF8Encode().AsStringC()); 934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::NumPages(CFXJSE_Value* pValue, 964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 1004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 1034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 1044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowSetNumPagesException(); 1054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(pNotify->GetDocEnvironment()->CountPages(hDoc)); 1084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::Platform(CFXJSE_Value* pValue, 1114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 1124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 1134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 1144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 1154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 1174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowSetPlatformException(); 1184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetString( 12133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pNotify->GetAppProvider()->GetPlatform().UTF8Encode().AsStringC()); 1224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 12333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann 1244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::Title(CFXJSE_Value* pValue, 1254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 1264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 1274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pDocument->GetScriptContext()->IsRunAtClient()) { 1284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 1314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 1324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 1354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 1364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetDocEnvironment()->SetTitle(hDoc, pValue->ToWideString()); 1374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsTitle; 1404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetDocEnvironment()->GetTitle(hDoc, wsTitle); 14133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pValue->SetString(wsTitle.UTF8Encode().AsStringC()); 1424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::ValidationsEnabled(CFXJSE_Value* pValue, 1454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 1464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 1474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 1484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 1494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 1524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 1534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetDocEnvironment()->SetValidationsEnabled(hDoc, 1544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->ToBoolean()); 1554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bEnabled = pNotify->GetDocEnvironment()->IsValidationsEnabled(hDoc); 1584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetBoolean(bEnabled); 1594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::Variation(CFXJSE_Value* pValue, 1624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 1634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 1644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pDocument->GetScriptContext()->IsRunAtClient()) 1654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 1684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) 1694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 1714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowSetVariationException(); 1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetString("Full"); 1754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::Version(CFXJSE_Value* pValue, 1784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 1794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 1804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 1814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 1824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 1854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowSetVersionException(); 1864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetString("11"); 1894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 1904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::Name(CFXJSE_Value* pValue, 1924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bSetting, 1934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_ATTRIBUTE eAttribute) { 1944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 1954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 1964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 1974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bSetting) { 1994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowInvalidPropertyException(); 2004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetString( 20333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pNotify->GetAppProvider()->GetAppName().UTF8Encode().AsStringC()); 2044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::GotoURL(CFXJSE_Arguments* pArguments) { 2074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pDocument->GetScriptContext()->IsRunAtClient()) { 2084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 2114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 2124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"gotoURL"); 2134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 2164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 2174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 2204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsURL; 2214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 1) { 2224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsURL = pArguments->GetUTF8String(0); 2234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsURL = CFX_WideString::FromUTF8(bsURL.AsStringC()); 2244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetDocEnvironment()->GotoURL(hDoc, wsURL); 2264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::OpenList(CFXJSE_Arguments* pArguments) { 2284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pDocument->GetScriptContext()->IsRunAtClient()) { 2294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 2324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 2334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"openList"); 2344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 2374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 2384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = nullptr; 2414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 1) { 2424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::unique_ptr<CFXJSE_Value> pValue(pArguments->GetValue(0)); 2434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue->IsObject()) { 2444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = ToNode(pValue.get(), nullptr); 2454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pValue->IsString()) { 2464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); 2474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pScriptContext) 2484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Object* pObject = pScriptContext->GetThisObject(); 2514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pObject) 2524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent | 2554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_Siblings; 2564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_RS resoveNodeRS; 2574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = pScriptContext->ResolveObjects( 2584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pObject, pValue->ToWideString().AsStringC(), resoveNodeRS, dwFlag); 2594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iRet < 1 || !resoveNodeRS.nodes[0]->IsNode()) 2604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 2624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = resoveNodeRS.nodes[0]->AsNode(); 2634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_LayoutProcessor* pDocLayout = m_pDocument->GetDocLayout(); 2664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pDocLayout) { 2674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFWidget* hWidget = 2704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetHWidget(pDocLayout->GetLayoutItem(pNode)); 2714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!hWidget) { 2724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetDocEnvironment()->SetFocusWidget(pNotify->GetHDOC(), hWidget); 2754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->OpenDropDownList(hWidget); 2764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 2774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::Response(CFXJSE_Arguments* pArguments) { 2784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 2794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 1 || iLength > 4) { 2804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"response"); 2814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 2844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 2854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 2864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsQuestion; 2884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsTitle; 2894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsDefaultAnswer; 2904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bMark = false; 2914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 1) { 2924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsQuestion = pArguments->GetUTF8String(0); 2934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsQuestion = CFX_WideString::FromUTF8(bsQuestion.AsStringC()); 2944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 2) { 2964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsTitle = pArguments->GetUTF8String(1); 2974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsTitle = CFX_WideString::FromUTF8(bsTitle.AsStringC()); 2984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 2994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 3) { 3004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsDefaultAnswer = pArguments->GetUTF8String(2); 3014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsDefaultAnswer = CFX_WideString::FromUTF8(bsDefaultAnswer.AsStringC()); 3024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 4) { 3044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bMark = pArguments->GetInt32(3) == 0 ? false : true; 3054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsAnswer = pNotify->GetAppProvider()->Response( 3074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsQuestion, wsTitle, wsDefaultAnswer, bMark); 3084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Value* pValue = pArguments->GetReturnValue(); 3094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue) 31033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pValue->SetString(wsAnswer.UTF8Encode().AsStringC()); 3114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 3134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::DocumentInBatch(CFXJSE_Arguments* pArguments) { 3144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (CFXJSE_Value* pValue = pArguments->GetReturnValue()) 3154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(0); 3164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannstatic int32_t XFA_FilterName(const CFX_WideStringC& wsExpression, 3184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t nStart, 3194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsFilter) { 3204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ASSERT(nStart > -1); 3214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = wsExpression.GetLength(); 3224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nStart >= iLength) { 3234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return iLength; 3244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_WCHAR* pBuf = wsFilter.GetBuffer(iLength - nStart); 3264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t nCount = 0; 3274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const FX_WCHAR* pSrc = wsExpression.c_str(); 3284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_WCHAR wCur; 3294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (nStart < iLength) { 3304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wCur = pSrc[nStart++]; 3314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wCur == ',') { 3324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann break; 3334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pBuf[nCount++] = wCur; 3354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsFilter.ReleaseBuffer(nCount); 3374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsFilter.TrimLeft(); 3384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsFilter.TrimRight(); 3394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return nStart; 3404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::ResetData(CFXJSE_Arguments* pArguments) { 3424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 3434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 0 || iLength > 1) { 3444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"resetData"); 3454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 3464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 3484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 3494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 3504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsExpression; 3524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 1) { 3534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsExpression = pArguments->GetUTF8String(0); 3544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsExpression = CFX_WideString::FromUTF8(bsExpression.AsStringC()); 3554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (wsExpression.IsEmpty()) { 3574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ResetData(); 3584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 3594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iStart = 0; 3614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsName; 3624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = nullptr; 3634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iExpLength = wsExpression.GetLength(); 3644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann while (iStart < iExpLength) { 3654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann iStart = XFA_FilterName(wsExpression.AsStringC(), iStart, wsName); 3664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); 3674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pScriptContext) { 3684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 3694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Object* pObject = pScriptContext->GetThisObject(); 3714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pObject) { 3724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 3734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent | 3754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_Siblings; 3764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_RS resoveNodeRS; 3774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = pScriptContext->ResolveObjects(pObject, wsName.AsStringC(), 3784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann resoveNodeRS, dwFlag); 3794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iRet < 1 || !resoveNodeRS.nodes[0]->IsNode()) { 3804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann continue; 3814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = resoveNodeRS.nodes[0]->AsNode(); 3834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ResetData(pNode->GetWidgetData()); 3844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNode) { 3864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->ResetData(); 3874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 3894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::Beep(CFXJSE_Arguments* pArguments) { 3904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pDocument->GetScriptContext()->IsRunAtClient()) { 3914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 3924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 3944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 0 || iLength > 1) { 3954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"beep"); 3964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 3974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 3984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 3994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 4004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwType = 4; 4034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 1) { 4044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwType = pArguments->GetInt32(0); 4054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetAppProvider()->Beep(dwType); 4074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::SetFocus(CFXJSE_Arguments* pArguments) { 4094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pDocument->GetScriptContext()->IsRunAtClient()) { 4104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 4134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 1) { 4144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"setFocus"); 4154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 4184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 4194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = nullptr; 4224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 1) { 4234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::unique_ptr<CFXJSE_Value> pValue(pArguments->GetValue(0)); 4244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue->IsObject()) { 4254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = ToNode(pValue.get(), nullptr); 4264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else if (pValue->IsString()) { 4274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_ScriptContext* pScriptContext = m_pDocument->GetScriptContext(); 4284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pScriptContext) 4294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Object* pObject = pScriptContext->GetThisObject(); 4324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pObject) 4334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent | 4364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_Siblings; 4374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_RESOLVENODE_RS resoveNodeRS; 4384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iRet = pScriptContext->ResolveObjects( 4394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pObject, pValue->ToWideString().AsStringC(), resoveNodeRS, dwFlag); 4404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iRet < 1 || !resoveNodeRS.nodes[0]->IsNode()) 4414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNode = resoveNodeRS.nodes[0]->AsNode(); 4444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->SetFocusWidgetNode(pNode); 4474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 4494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::GetFocus(CFXJSE_Arguments* pArguments) { 4504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 4514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 4524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_Node* pNode = pNotify->GetFocusWidgetNode(); 4554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNode) { 4564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pArguments->GetReturnValue()->Assign( 4594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pDocument->GetScriptContext()->GetJSValueFromMap(pNode)); 4604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 4614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::MessageBox(CFXJSE_Arguments* pArguments) { 4624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pDocument->GetScriptContext()->IsRunAtClient()) { 4634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 4664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 1 || iLength > 4) { 4674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"messageBox"); 4684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 4714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 4724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsMessage; 4754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString bsTitle; 4764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwMessageType = XFA_MBICON_Error; 4774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwButtonType = XFA_MB_OK; 4784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 1) { 4794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!ValidateArgsForMsg(pArguments, 0, wsMessage)) { 4804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 2) { 4844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!ValidateArgsForMsg(pArguments, 1, bsTitle)) { 4854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 4864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 3) { 4894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwMessageType = pArguments->GetInt32(2); 4904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (dwMessageType > XFA_MBICON_Status) { 4914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwMessageType = XFA_MBICON_Error; 4924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 4) { 4954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwButtonType = pArguments->GetInt32(3); 4964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (dwButtonType > XFA_MB_YesNoCancel) { 4974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwButtonType = XFA_MB_OK; 4984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 4994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iValue = pNotify->GetAppProvider()->MsgBox( 5014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsMessage, bsTitle, dwMessageType, dwButtonType); 5024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Value* pValue = pArguments->GetReturnValue(); 5034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue) 5044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(iValue); 5054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannbool CScript_HostPseudoModel::ValidateArgsForMsg(CFXJSE_Arguments* pArguments, 5074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iArgIndex, 5084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString& wsValue) { 5094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pArguments || iArgIndex < 0) { 5104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 5114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bIsJsType = false; 5134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (m_pDocument->GetScriptContext()->GetType() == 5144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann XFA_SCRIPTLANGTYPE_Javascript) { 5154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bIsJsType = true; 5164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::unique_ptr<CFXJSE_Value> pValueArg(pArguments->GetValue(iArgIndex)); 5184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pValueArg->IsString() && bIsJsType) { 5194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowArgumentMismatchException(); 5204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return false; 5214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValueArg->IsNull()) { 52333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann wsValue = L""; 5244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 5254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsValue = pValueArg->ToWideString(); 5264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return true; 5284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::DocumentCountInBatch( 5304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Arguments* pArguments) { 5314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (CFXJSE_Value* pValue = pArguments->GetReturnValue()) 5324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pValue->SetInteger(0); 5334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 5344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::Print(CFXJSE_Arguments* pArguments) { 5354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!m_pDocument->GetScriptContext()->IsRunAtClient()) { 5364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 5374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 5394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength != 8) { 5404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"print"); 5414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 5424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 5444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 5454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 5464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 5484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwOptions = 0; 5494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bShowDialog = true; 5504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 1) { 5514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bShowDialog = pArguments->GetInt32(0) == 0 ? false : true; 5524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bShowDialog) { 5544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwOptions |= XFA_PRINTOPT_ShowDialog; 5554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t nStartPage = 0; 5574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 2) { 5584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nStartPage = pArguments->GetInt32(1); 5594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t nEndPage = 0; 5614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 3) { 5624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nEndPage = pArguments->GetInt32(2); 5634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bCanCancel = true; 5654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 4) { 5664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bCanCancel = pArguments->GetInt32(3) == 0 ? false : true; 5674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bCanCancel) { 5694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwOptions |= XFA_PRINTOPT_CanCancel; 5704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bShrinkPage = true; 5724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 5) { 5734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bShrinkPage = pArguments->GetInt32(4) == 0 ? false : true; 5744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bShrinkPage) { 5764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwOptions |= XFA_PRINTOPT_ShrinkPage; 5774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bAsImage = true; 5794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 6) { 5804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bAsImage = pArguments->GetInt32(5) == 0 ? false : true; 5814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bAsImage) { 5834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwOptions |= XFA_PRINTOPT_AsImage; 5844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bReverseOrder = true; 5864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 7) { 5874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bAsImage = pArguments->GetInt32(5) == 0 ? false : true; 5884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bReverseOrder = pArguments->GetInt32(6) == 0 ? false : true; 5904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bReverseOrder) { 5914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwOptions |= XFA_PRINTOPT_ReverseOrder; 5924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bPrintAnnot = true; 5944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 8) { 5954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bPrintAnnot = pArguments->GetInt32(7) == 0 ? false : true; 5964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 5974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (bPrintAnnot) { 5984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwOptions |= XFA_PRINTOPT_PrintAnnot; 5994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetDocEnvironment()->Print(hDoc, nStartPage, nEndPage, dwOptions); 6014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::ImportData(CFXJSE_Arguments* pArguments) { 6044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 6054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 0 || iLength > 1) { 6064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"importData"); 6074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 6084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // Not implemented. 6104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::ExportData(CFXJSE_Arguments* pArguments) { 6134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t iLength = pArguments->GetLength(); 6144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength < 0 || iLength > 2) { 6154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowParamCountMismatchException(L"exportData"); 6164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 6174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 6194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 6204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 6214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 6234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsFilePath; 6244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool bXDP = true; 6254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 1) { 6264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_ByteString bsFilePath = pArguments->GetUTF8String(0); 6274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann wsFilePath = CFX_WideString::FromUTF8(bsFilePath.AsStringC()); 6284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (iLength >= 2) { 6304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bXDP = pArguments->GetInt32(1) == 0 ? false : true; 6314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetDocEnvironment()->ExportData(hDoc, wsFilePath, bXDP); 6334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::PageUp(CFXJSE_Arguments* pArguments) { 6364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 6374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 6384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 6394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 6414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t nCurPage = pNotify->GetDocEnvironment()->GetCurrentPage(hDoc); 6424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t nNewPage = 0; 6434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nCurPage <= 1) { 6444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 6454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nNewPage = nCurPage - 1; 6474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetDocEnvironment()->SetCurrentPage(hDoc, nNewPage); 6484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::PageDown(CFXJSE_Arguments* pArguments) { 6514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 6524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 6534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 6544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 6564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t nCurPage = pNotify->GetDocEnvironment()->GetCurrentPage(hDoc); 6574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t nPageCount = pNotify->GetDocEnvironment()->CountPages(hDoc); 6584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!nPageCount || nCurPage == nPageCount) { 6594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 6604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t nNewPage = 0; 6624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (nCurPage >= nPageCount) { 6634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nNewPage = nPageCount - 1; 6644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } else { 6654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nNewPage = nCurPage + 1; 6664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pNotify->GetDocEnvironment()->SetCurrentPage(hDoc, nNewPage); 6684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::CurrentDateTime(CFXJSE_Arguments* pArguments) { 6714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CXFA_FFNotify* pNotify = m_pDocument->GetNotify(); 6724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (!pNotify) { 6734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return; 6744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 6754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_WideString wsDataTime = pNotify->GetCurrentDateTime(); 6764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFXJSE_Value* pValue = pArguments->GetReturnValue(); 6774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann if (pValue) 67833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann pValue->SetString(wsDataTime.UTF8Encode().AsStringC()); 6794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::ThrowSetLanguageException() const { 6824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowException(L"Unable to set language value."); 6834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::ThrowSetNumPagesException() const { 6864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowException(L"Unable to set numPages value."); 6874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::ThrowSetPlatformException() const { 6904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowException(L"Unable to set platform value."); 6914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::ThrowSetVariationException() const { 6944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowException(L"Unable to set variation value."); 6954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 6964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 6974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CScript_HostPseudoModel::ThrowSetVersionException() const { 6984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ThrowException(L"Unable to set version value."); 6994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann} 700