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 10 class CJS_Runtime; 11 12 /* ---------------------------- TimerObj ---------------------------- */ 13 14 class CJS_Timer; 15 16 class TimerObj : public CJS_EmbedObj 17 { 18 public: 19 TimerObj(CJS_Object* pJSObject); 20 virtual ~TimerObj(); 21 22 public: 23 void SetTimer(CJS_Timer* pTimer); 24 CJS_Timer* GetTimer() const; 25 26 private: 27 CJS_Timer* m_pTimer; 28 }; 29 30 class CJS_TimerObj : public CJS_Object 31 { 32 public: CJS_TimerObj(JSFXObject pObject)33 CJS_TimerObj(JSFXObject pObject) : CJS_Object(pObject) {} ~CJS_TimerObj()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 104 class app : public CJS_EmbedObj 105 { 106 public: 107 app(CJS_Object * pJSObject); 108 virtual ~app(); 109 110 public: 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 147 private: 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 161 public: 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 167 private: 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 176 public: 177 // static CReader_App* s_App; 178 }; 179 180 class CJS_App : public CJS_Object 181 { 182 public: CJS_App(JSFXObject pObject)183 CJS_App(JSFXObject pObject) : CJS_Object(pObject) {}; ~CJS_App(void)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