// 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 #ifndef _FPDFXFA_APP_H_ #define _FPDFXFA_APP_H_ class CPDFXFA_App; class IFXJS_Runtime; class CJS_RuntimeFactory; class CPDFXFA_App : public IXFA_AppProvider { public: CPDFXFA_App(); ~CPDFXFA_App(); FX_BOOL Initialize(); IXFA_App* GetXFAApp() { return m_pXFAApp; } /*CPDFDoc_Environment*GetFormFillEnv(){ return m_pEnv; }*/ FX_BOOL AddFormFillEnv(CPDFDoc_Environment* pEnv); FX_BOOL RemoveFormFillEnv(CPDFDoc_Environment* pEnv); FXJSE_HRUNTIME GetJSERuntime() { return m_hJSERuntime; } void ReleaseRuntime(); FX_BOOL InitRuntime(FX_BOOL bReset = FALSE) { if (bReset) { m_bInitRuntime = FALSE; return TRUE; } if (m_bInitRuntime) return TRUE; m_bInitRuntime = TRUE; return FALSE; } //IFXJS_Runtime* GetJSRuntime(); CJS_RuntimeFactory* GetRuntimeFactory() {return m_pJSRuntimeFactory;} public: /** *Specifies the name of the client application in which a form currently exists. Such as Exchange-Pro. */ virtual void GetAppType(CFX_WideString &wsAppType); virtual void SetAppType(FX_WSTR wsAppType) ; virtual void SetFoxitAppType(FX_WSTR wsFoxitAppType) { return; } virtual void GetFoxitAppType(CFX_WideString &wsFoxitAppType) { return; } virtual void GetFoxitAppName(CFX_WideString& wsFoxitName) {wsFoxitName = L"Foxit";} virtual void GetFoxitVersion(CFX_WideString &wsFoxitVersion) {wsFoxitVersion = L"7.0";} /** *Returns the language of the running host application. Such as zh_CN */ virtual void GetLanguage(CFX_WideString &wsLanguage); /** *Returns the platform of the machine running the script. Such as WIN */ virtual void GetPlatform(CFX_WideString &wsPlatform); /** * Indicates the packaging of the application that is running the script. Such as Full */ virtual void GetVariation(CFX_WideString &wsVariation); /** * Indicates the version number of the current application. Such as 9 */ virtual void GetVersion(CFX_WideString &wsVersion); //Get application name, such as Phantom virtual void GetAppName(CFX_WideString& wsName); /** *Causes the system to play a sound. * @param[in] dwType The system code for the appropriate sound.0 (Error)1 (Warning)2 (Question)3 (Status)4 (Default) */ virtual void Beep(FX_DWORD dwType); /** * Displays a message box. * @param[in] dwIconType Icon type, refer to XFA_MBICON. * @param[in] dwButtonType Button type, refer to XFA_MESSAGEBUTTON. * @return A valid integer representing the value of the button pressed by the user, refer to XFA_ID. */ virtual FX_INT32 MsgBox(FX_WSTR wsMessage, FX_WSTR wsTitle = FX_WSTRC(L""), FX_DWORD dwIconType = 0, FX_DWORD dwButtonType = 0); //bMark True (default) Masks the user¡¯s answer with * (asterisks). False Does not mask the user¡¯s answer. virtual void Response(CFX_WideString &wsAnswer, FX_WSTR wsQuestion, FX_WSTR wsTitle = FX_WSTRC(L""), FX_WSTR wsDefaultAnswer = FX_WSTRC(L""), FX_BOOL bMark = TRUE); virtual FX_INT32 GetDocumentCountInBatch(); virtual FX_INT32 GetCurDocumentInBatch(); //wsURL http, ftp, such as "http://www.w3.org/TR/REC-xml-names/". virtual IFX_FileRead* DownloadURL(FX_WSTR wsURL); /* * Post data to the given url. * @param[in] wsURL the URL being uploaded. * @param[in] wsData the data being uploaded. * @param[in] wsContentType the content type of data including text/html, text/xml, text/plain, multipart/form-data, * application/x-www-form-urlencoded, application/octet-stream, any valid MIME type. * @param[in] wsEncode the encode of data including UTF-8, UTF-16, ISO8859-1, any recognized [IANA]character encoding * @param[in] wsHeader any additional HTTP headers to be included in the post. * @param[out] wsResponse decoded response from server. * @return TRUE Server permitted the post request, FALSE otherwise. */ virtual FX_BOOL PostRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsContentType, FX_WSTR wsEncode, FX_WSTR wsHeader, CFX_WideString &wsResponse); /* * Put data to the given url. * @param[in] wsURL the URL being uploaded. * @param[in] wsData the data being uploaded. * @param[in] wsEncode the encode of data including UTF-8, UTF-16, ISO8859-1, any recognized [IANA]character encoding * @return TRUE Server permitted the post request, FALSE otherwise. */ virtual FX_BOOL PutRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsEncode); virtual void LoadString(FX_INT32 iStringID, CFX_WideString &wsString); virtual FX_BOOL ShowFileDialog(FX_WSTR wsTitle, FX_WSTR wsFilter, CFX_WideStringArray &wsPathArr, FX_BOOL bOpen = TRUE); virtual IFWL_AdapterTimerMgr* GetTimerMgr(); CFX_ArrayTemplate m_pEnvList; public: static CPDFXFA_App* m_pApp; private: IXFA_App* m_pXFAApp; IXFA_FontMgr* m_pFontMgr; FXJSE_HRUNTIME m_hJSERuntime; IFXJS_Runtime* m_pJSRuntime; CJS_RuntimeFactory* m_pJSRuntimeFactory; CFX_WideString m_csAppType; FX_BOOL m_bInitRuntime; }; CPDFXFA_App* FPDFXFA_GetApp(); void FPDFXFA_ReleaseApp(); #endif