1///////////////////////////////////////////////////////////////////////////// 2// Name: app.h 3// Purpose: wxApp class 4// Author: Stefan Csomor 5// Modified by: 6// Created: 1998-01-01 7// RCS-ID: $Id: app.h 53370 2008-04-26 05:43:41Z KO $ 8// Copyright: (c) Stefan Csomor 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_APP_H_ 13#define _WX_APP_H_ 14 15#include "wx/defs.h" 16#include "wx/object.h" 17#include "wx/gdicmn.h" 18#include "wx/event.h" 19 20#ifdef __WXMAC_OSX__ 21typedef struct __CFRunLoopSource * CFRunLoopSourceRef; 22#endif 23 24class WXDLLEXPORT wxFrame; 25class WXDLLEXPORT wxWindowMac; 26class WXDLLEXPORT wxApp ; 27class WXDLLEXPORT wxKeyEvent; 28class WXDLLEXPORT wxLog; 29 30// Force an exit from main loop 31void WXDLLEXPORT wxExit(); 32 33// Yield to other apps/messages 34bool WXDLLEXPORT wxYield(); 35 36// Represents the application. Derive OnInit and declare 37// a new App object to start application 38class WXDLLEXPORT wxApp: public wxAppBase 39{ 40 DECLARE_DYNAMIC_CLASS(wxApp) 41 42 wxApp(); 43 virtual ~wxApp() {} 44 45 virtual bool Yield(bool onlyIfNeeded = FALSE); 46 virtual void WakeUpIdle(); 47 48 virtual void SetPrintMode(int mode) { m_printMode = mode; } 49 virtual int GetPrintMode() const { return m_printMode; } 50 51#if wxUSE_GUI 52 // setting up all MacOS Specific Event-Handlers etc 53 virtual bool OnInitGui(); 54#endif // wxUSE_GUI 55 // implementation only 56 void OnIdle(wxIdleEvent& event); 57 void OnEndSession(wxCloseEvent& event); 58 void OnQueryEndSession(wxCloseEvent& event); 59 60 void MacDoOneEvent() ; 61 62protected: 63 int m_printMode; // wxPRINT_WINDOWS, wxPRINT_POSTSCRIPT 64 65public: 66 67 static bool sm_isEmbedded; 68 // Implementation 69 virtual bool Initialize(int& argc, wxChar **argv); 70 virtual void CleanUp(); 71 72 // the installed application event handler 73 WXEVENTHANDLERREF MacGetEventHandler() { return m_macEventHandler ; } 74 WXEVENTHANDLERREF MacGetCurrentEventHandlerCallRef() { return m_macCurrentEventHandlerCallRef ; } 75 void MacSetCurrentEvent( WXEVENTREF event , WXEVENTHANDLERCALLREF handler ) 76 { m_macCurrentEvent = event ; m_macCurrentEventHandlerCallRef = handler ; } 77 78 void MacRequestUserAttention(wxNotificationOptions options); 79 80 // adding a CFType object to be released only at the end of the current event cycle (increases the 81 // refcount of the object passed), needed in case we are in the middle of an event concering an object 82 // we want to delete and cannot do it immediately 83 // TODO change semantics to be in line with cocoa (make autrelease NOT increase the count) 84 void MacAddToAutorelease( void* cfrefobj ); 85public: 86 static wxWindow* s_captureWindow ; 87 static long s_lastModifiers ; 88 89 int m_nCmdShow; 90 91private: 92 // mac specifics 93 94 WXEVENTHANDLERREF m_macEventHandler ; 95 WXEVENTHANDLERCALLREF m_macCurrentEventHandlerCallRef ; 96 WXEVENTREF m_macCurrentEvent ; 97#ifdef __WXMAC_OSX__ 98 CFRunLoopSourceRef m_macEventPosted ; 99#endif 100 101public: 102 static long s_macAboutMenuItemId ; 103 static long s_macPreferencesMenuItemId ; 104 static long s_macExitMenuItemId ; 105 static wxString s_macHelpMenuTitleName ; 106 static void* s_macNotificationRecord ; 107 108 WXEVENTREF MacGetCurrentEvent() { return m_macCurrentEvent ; } 109 void MacHandleOneEvent( WXEVENTREF ev ) ; 110 111 // For embedded use. By default does nothing. 112 virtual void MacHandleUnhandledEvent( WXEVENTREF ev ); 113 114 bool MacSendKeyDownEvent( wxWindow* focus , long keyval , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ; 115 bool MacSendKeyUpEvent( wxWindow* focus , long keyval , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ; 116 bool MacSendCharEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ; 117 void MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ; 118 virtual short MacHandleAEODoc(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ; 119 virtual short MacHandleAEPDoc(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ; 120 virtual short MacHandleAEOApp(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ; 121 virtual short MacHandleAEQuit(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ; 122 virtual short MacHandleAERApp(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ; 123 124 // in response of an open-document apple event 125 virtual void MacOpenFile(const wxString &fileName) ; 126 // in response of a print-document apple event 127 virtual void MacPrintFile(const wxString &fileName) ; 128 // in response of a open-application apple event 129 virtual void MacNewFile() ; 130 // in response of a reopen-application apple event 131 virtual void MacReopenApp() ; 132 133#if wxABI_VERSION >= 20808 134 // Hide the application windows the same as the system hide command would do it. 135 void MacHideApp(); 136#endif 137 138 DECLARE_EVENT_TABLE() 139}; 140 141#endif 142 // _WX_APP_H_ 143 144