1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     wxApp class 
   4 // Author:      Stefan Csomor 
   8 // Copyright:   (c) Stefan Csomor 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  16 #include "wx/object.h" 
  17 #include "wx/gdicmn.h" 
  20 class WXDLLIMPEXP_FWD_CORE wxFrame
; 
  21 class WXDLLIMPEXP_FWD_CORE wxWindowMac
; 
  22 class WXDLLIMPEXP_FWD_CORE wxApp 
; 
  23 class WXDLLIMPEXP_FWD_CORE wxKeyEvent
; 
  24 class WXDLLIMPEXP_FWD_BASE wxLog
; 
  26 // Force an exit from main loop 
  27 void WXDLLIMPEXP_CORE 
wxExit(); 
  29 // Yield to other apps/messages 
  30 bool WXDLLIMPEXP_CORE 
wxYield(); 
  32 // Represents the application. Derive OnInit and declare 
  33 // a new App object to start application 
  34 class WXDLLIMPEXP_CORE wxApp
: public wxAppBase
 
  36     DECLARE_DYNAMIC_CLASS(wxApp
) 
  41     virtual bool Yield(bool onlyIfNeeded 
= FALSE
); 
  42     virtual void WakeUpIdle(); 
  44     virtual void SetPrintMode(int mode
) { m_printMode 
= mode
; } 
  45     virtual int GetPrintMode() const { return m_printMode
; } 
  47     // calling OnInit with an auto-release pool ready ... 
  48     virtual bool CallOnInit(); 
  50     // setting up all MacOS Specific Event-Handlers etc 
  51     virtual bool OnInitGui(); 
  54     virtual bool ProcessIdle(); 
  56     // implementation only 
  57     void OnIdle(wxIdleEvent
& event
); 
  58     void OnEndSession(wxCloseEvent
& event
); 
  59     void OnQueryEndSession(wxCloseEvent
& event
); 
  62     int                   m_printMode
; // wxPRINT_WINDOWS, wxPRINT_POSTSCRIPT 
  66     static bool           sm_isEmbedded
; 
  68     virtual bool Initialize(int& argc
, wxChar 
**argv
); 
  69     virtual void CleanUp(); 
  71     // the installed application event handler 
  72     WXEVENTHANDLERREF    
MacGetEventHandler() { return m_macEventHandler 
; } 
  73     WXEVENTHANDLERREF    
MacGetCurrentEventHandlerCallRef() { return m_macCurrentEventHandlerCallRef 
; } 
  74     void MacSetCurrentEvent( WXEVENTREF event 
, WXEVENTHANDLERCALLREF handler 
) 
  75     { m_macCurrentEvent 
= event 
; m_macCurrentEventHandlerCallRef 
= handler 
; } 
  77     // adding a CFType object to be released only at the end of the current event cycle (increases the 
  78     // refcount of the object passed), needed in case we are in the middle of an event concering an object 
  79     // we want to delete and cannot do it immediately 
  80     // TODO change semantics to be in line with cocoa (make autrelease NOT increase the count) 
  81     void                  MacAddToAutorelease( void* cfrefobj 
); 
  83     static wxWindow
*      s_captureWindow 
; 
  84     static long           s_lastModifiers 
; 
  90     virtual bool        DoInitGui(); 
  91     virtual void        DoCleanUp();   
  93     WXEVENTHANDLERREF     m_macEventHandler 
; 
  94     WXEVENTHANDLERCALLREF m_macCurrentEventHandlerCallRef 
; 
  95     WXEVENTREF            m_macCurrentEvent 
; 
  96     CFRunLoopSourceRef    m_macEventPosted 
; 
  99     static long           s_macAboutMenuItemId 
; 
 100     static long           s_macPreferencesMenuItemId 
; 
 101     static long           s_macExitMenuItemId 
; 
 102     static wxString       s_macHelpMenuTitleName 
; 
 104     WXEVENTREF            
MacGetCurrentEvent() { return m_macCurrentEvent 
; } 
 106     // For embedded use. By default does nothing. 
 107     virtual void          MacHandleUnhandledEvent( WXEVENTREF ev 
); 
 109     bool    MacSendKeyDownEvent( wxWindow
* focus 
, long keyval 
, long modifiers 
, long when 
, short wherex 
, short wherey 
, wxChar uniChar 
) ; 
 110     bool    MacSendKeyUpEvent( wxWindow
* focus 
, long keyval 
, long modifiers 
, long when 
, short wherex 
, short wherey 
, wxChar uniChar 
) ; 
 111     bool    MacSendCharEvent( wxWindow
* focus 
, long keymessage 
, long modifiers 
, long when 
, short wherex 
, short wherey 
, wxChar uniChar 
) ; 
 112     void    MacCreateKeyEvent( wxKeyEvent
& event
, wxWindow
* focus 
, long keymessage 
, long modifiers 
, long when 
, short wherex 
, short wherey 
, wxChar uniChar 
) ; 
 113 #if wxOSX_USE_COCOA_OR_CARBON 
 114     // we only have applescript on these 
 115     virtual short         MacHandleAEODoc(const WXAPPLEEVENTREF event 
, WXAPPLEEVENTREF reply
) ; 
 116     virtual short         MacHandleAEGURL(const WXAPPLEEVENTREF event 
, WXAPPLEEVENTREF reply
) ; 
 117     virtual short         MacHandleAEPDoc(const WXAPPLEEVENTREF event 
, WXAPPLEEVENTREF reply
) ; 
 118     virtual short         MacHandleAEOApp(const WXAPPLEEVENTREF event 
, WXAPPLEEVENTREF reply
) ; 
 119     virtual short         MacHandleAEQuit(const WXAPPLEEVENTREF event 
, WXAPPLEEVENTREF reply
) ; 
 120     virtual short         MacHandleAERApp(const WXAPPLEEVENTREF event 
, WXAPPLEEVENTREF reply
) ; 
 122     // in response of an open-document apple event 
 123     virtual void         MacOpenFile(const wxString 
&fileName
) ; 
 124     // in response of a get-url apple event 
 125     virtual void         MacOpenURL(const wxString 
&url
) ; 
 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() ; 
 133     // Hide the application windows the same as the system hide command would do it. 
 136     DECLARE_EVENT_TABLE()