1// Copyright 2014 PDFium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7#ifndef _APP_H_ 8#define _APP_H_ 9 10class CJS_Runtime; 11 12/* ---------------------------- TimerObj ---------------------------- */ 13 14class CJS_Timer; 15 16class TimerObj : public CJS_EmbedObj 17{ 18public: 19 TimerObj(CJS_Object* pJSObject); 20 virtual ~TimerObj(); 21 22public: 23 void SetTimer(CJS_Timer* pTimer); 24 CJS_Timer* GetTimer() const; 25 26private: 27 CJS_Timer* m_pTimer; 28}; 29 30class CJS_TimerObj : public CJS_Object 31{ 32public: 33 CJS_TimerObj(JSFXObject pObject) : CJS_Object(pObject) {} 34 virtual ~CJS_TimerObj(){} 35 36 DECLARE_JS_CLASS(CJS_TimerObj); 37}; 38 39 40// struct APP_MENUITEM_ARRAY; 41// 42// struct APP_MENUITEM 43// { 44// APP_MENUITEM() : oSubMenu(NULL), cName(L""), cReturn(L""), bMarked(false), bEnabled(true) 45// { 46// } 47// CFX_WideString cName; 48// CFX_WideString cReturn; 49// APP_MENUITEM_ARRAY* oSubMenu; 50// bool bMarked; 51// bool bEnabled; 52// }; 53 54// struct APP_MENUITEM_ARRAY 55// { 56// APP_MENUITEM_ARRAY() : m_hMenu(NULL), pContents(NULL), nSize(0) 57// { 58// 59// } 60// APP_MENUITEM * pContents; 61// HMENU m_hMenu; 62// int nSize; 63// }; 64 65// struct APP_MENU; 66// struct APP_MENU_ARRAY 67// { 68// APP_MENU_ARRAY(): 69// pContent(NULL) 70// { 71// } 72// 73// APP_MENU* pContent; 74// }; 75 76// struct APP_MENU 77// { 78// APP_MENU():bSubMenu(false), 79// SubMenuItems(NULL), 80// cwMenuItemName(L""), 81// hMenu(NULL), 82// iSize(0) 83// { 84// 85// } 86// 87// APP_MENU(CFX_WideString &cwName): 88// cwMenuItemName(cwName), 89// bSubMenu(false), 90// SubMenuItems(NULL), 91// hMenu(NULL), 92// iSize(0) 93// { 94// 95// } 96// 97// CFX_WideString cwMenuItemName; 98// bool bSubMenu; 99// APP_MENU_ARRAY* SubMenuItems; 100// int iSize; 101// HMENU hMenu; 102// }; 103 104class app : public CJS_EmbedObj 105{ 106public: 107 app(CJS_Object * pJSObject); 108 virtual ~app(); 109 110public: 111 FX_BOOL activeDocs(OBJ_PROP_PARAMS); 112 FX_BOOL calculate(OBJ_PROP_PARAMS); 113 FX_BOOL formsVersion(OBJ_PROP_PARAMS); 114 FX_BOOL fs(OBJ_PROP_PARAMS); 115 FX_BOOL fullscreen(OBJ_PROP_PARAMS); 116 FX_BOOL language(OBJ_PROP_PARAMS); 117 FX_BOOL media(OBJ_PROP_PARAMS); 118 FX_BOOL platform(OBJ_PROP_PARAMS); 119 FX_BOOL runtimeHighlight(OBJ_PROP_PARAMS); 120 FX_BOOL viewerType(OBJ_PROP_PARAMS); 121 FX_BOOL viewerVariation(OBJ_PROP_PARAMS); 122 FX_BOOL viewerVersion(OBJ_PROP_PARAMS); 123 124 125 FX_BOOL alert(OBJ_METHOD_PARAMS); 126 FX_BOOL beep(OBJ_METHOD_PARAMS); 127 FX_BOOL browseForDoc(OBJ_METHOD_PARAMS); 128 FX_BOOL clearInterval(OBJ_METHOD_PARAMS); 129 FX_BOOL clearTimeOut(OBJ_METHOD_PARAMS); 130 FX_BOOL execDialog(OBJ_METHOD_PARAMS); 131 FX_BOOL execMenuItem(OBJ_METHOD_PARAMS); 132 FX_BOOL findComponent(OBJ_METHOD_PARAMS); 133 FX_BOOL goBack(OBJ_METHOD_PARAMS); 134 FX_BOOL goForward(OBJ_METHOD_PARAMS); 135 FX_BOOL launchURL(OBJ_METHOD_PARAMS); 136 FX_BOOL mailMsg(OBJ_METHOD_PARAMS); 137 FX_BOOL newFDF(OBJ_METHOD_PARAMS); 138 FX_BOOL newDoc(OBJ_METHOD_PARAMS); 139 FX_BOOL openDoc(OBJ_METHOD_PARAMS); 140 FX_BOOL openFDF(OBJ_METHOD_PARAMS); 141 FX_BOOL popUpMenuEx(OBJ_METHOD_PARAMS); 142 FX_BOOL popUpMenu(OBJ_METHOD_PARAMS); 143 FX_BOOL response(OBJ_METHOD_PARAMS); 144 FX_BOOL setInterval(OBJ_METHOD_PARAMS); 145 FX_BOOL setTimeOut(OBJ_METHOD_PARAMS); 146 147private: 148// FX_DWORD AppGetTickCount(); 149 void TimerProc(CJS_Timer* pTimer); 150 void RunJsScript(CJS_Runtime * pRuntime,const CFX_WideString & wsScript); 151// void ParsePopupMenuObj(APP_MENUITEM * ppMenuItem,JSObject * pObj); 152// void DeleteMenuItems(APP_MENUITEM_ARRAY * pMenuItems); 153// void AddMenuItem(APP_MENUITEM_ARRAY * pMenuItems, HMENU hMenu, MENUITEMINFO MenuItemInfo); 154// void InitMenuItemInfo(MENUITEMINFO& MenuItemInfo); 155// void DestroyPopUpMenu(); 156 157// void ParserMenuItem(APP_MENU* pHead, const CJS_Parameters¶ms); 158// void AddItemToMenu(APP_MENU* pHead, HMENU hMenu, MENUITEMINFO MenuItemInfo); 159// void DestroyMenuItems(APP_MENU* pHead); 160 161public: 162 static CFX_WideString SysPathToPDFPath(const CFX_WideString& sOldPath); 163 static CFX_WideString PDFPathToSysPath(const CFX_WideString& sOldPath); 164 static CFX_WideString RelativePathToSysPath(const CFX_WideString& sOldPath, const CFX_WideString& sFilePath); 165 166 167private: 168 169 bool m_bCalculate; 170 CJS_Runtime* m_pRuntime; 171 bool m_bRuntimeHighLight; 172 173 CFX_ArrayTemplate<CJS_Timer*> m_aTimer; 174// APP_MENU* m_pMenuHead; 175 176public: 177// static CReader_App* s_App; 178}; 179 180class CJS_App : public CJS_Object 181{ 182public: 183 CJS_App(JSFXObject pObject) : CJS_Object(pObject) {}; 184 virtual ~CJS_App(void){}; 185 186 DECLARE_JS_CLASS(CJS_App); 187 188 JS_STATIC_PROP(activeDocs, app); 189 JS_STATIC_PROP(calculate, app); 190 JS_STATIC_PROP(formsVersion, app); 191 JS_STATIC_PROP(fs, app); 192 JS_STATIC_PROP(fullscreen, app); 193 JS_STATIC_PROP(language, app); 194 JS_STATIC_PROP(media, app); 195 JS_STATIC_PROP(platform, app); 196 JS_STATIC_PROP(runtimeHighlight, app); 197 JS_STATIC_PROP(viewerType, app); 198 JS_STATIC_PROP(viewerVariation, app); 199 JS_STATIC_PROP(viewerVersion, app); 200 201 JS_STATIC_METHOD(alert, app); 202 JS_STATIC_METHOD(beep, app); 203 JS_STATIC_METHOD(browseForDoc, app); 204 JS_STATIC_METHOD(clearInterval, app); 205 JS_STATIC_METHOD(clearTimeOut, app); 206 JS_STATIC_METHOD(execDialog, app); 207 JS_STATIC_METHOD(execMenuItem, app); 208 JS_STATIC_METHOD(findComponent, app); 209 JS_STATIC_METHOD(goBack, app); 210 JS_STATIC_METHOD(goForward, app); 211 JS_STATIC_METHOD(launchURL, app); 212 JS_STATIC_METHOD(mailMsg, app); 213 JS_STATIC_METHOD(newFDF, app); 214 JS_STATIC_METHOD(newDoc, app); 215 JS_STATIC_METHOD(openDoc, app); 216 JS_STATIC_METHOD(openFDF, app); 217 JS_STATIC_METHOD(popUpMenuEx, app); 218 JS_STATIC_METHOD(popUpMenu, app); 219 JS_STATIC_METHOD(response, app); 220 JS_STATIC_METHOD(setInterval, app); 221 JS_STATIC_METHOD(setTimeOut, app); 222 223}; 224 225#endif //_APP_H_ 226