+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/osx/app.h
+// Purpose: wxApp class
+// Author: Stefan Csomor
+// Modified by:
+// Created: 1998-01-01
+// RCS-ID: $Id$
+// Copyright: (c) Stefan Csomor
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_APP_H_
+#define _WX_APP_H_
+
+#include "wx/defs.h"
+#include "wx/object.h"
+#include "wx/gdicmn.h"
+#include "wx/event.h"
+
+class WXDLLIMPEXP_FWD_CORE wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxWindowMac;
+class WXDLLIMPEXP_FWD_CORE wxApp ;
+class WXDLLIMPEXP_FWD_CORE wxKeyEvent;
+class WXDLLIMPEXP_FWD_BASE wxLog;
+class WXDLLIMPEXP_FWD_CORE wxMacAutoreleasePool;
+
+// Force an exit from main loop
+void WXDLLIMPEXP_CORE wxExit();
+
+// Yield to other apps/messages
+bool WXDLLIMPEXP_CORE wxYield();
+
+// Represents the application. Derive OnInit and declare
+// a new App object to start application
+class WXDLLIMPEXP_CORE wxApp: public wxAppBase
+{
+ DECLARE_DYNAMIC_CLASS(wxApp)
+
+ wxApp();
+ virtual ~wxApp();
+
+ virtual void WakeUpIdle();
+
+ virtual void SetPrintMode(int mode) { m_printMode = mode; }
+ virtual int GetPrintMode() const { return m_printMode; }
+
+ // calling OnInit with an auto-release pool ready ...
+ virtual bool CallOnInit();
+#if wxUSE_GUI
+ // setting up all MacOS Specific Event-Handlers etc
+ virtual bool OnInitGui();
+#endif // wxUSE_GUI
+
+ virtual int OnRun();
+
+ virtual bool ProcessIdle();
+
+ // implementation only
+ void OnIdle(wxIdleEvent& event);
+ void OnEndSession(wxCloseEvent& event);
+ void OnQueryEndSession(wxCloseEvent& event);
+
+protected:
+ int m_printMode; // wxPRINT_WINDOWS, wxPRINT_POSTSCRIPT
+ wxMacAutoreleasePool* m_macPool;
+
+public:
+
+ static bool sm_isEmbedded;
+ // Implementation
+ virtual bool Initialize(int& argc, wxChar **argv);
+ virtual void CleanUp();
+
+ // the installed application event handler
+ WXEVENTHANDLERREF MacGetEventHandler() { return m_macEventHandler ; }
+ WXEVENTHANDLERREF MacGetCurrentEventHandlerCallRef() { return m_macCurrentEventHandlerCallRef ; }
+ void MacSetCurrentEvent( WXEVENTREF event , WXEVENTHANDLERCALLREF handler )
+ { m_macCurrentEvent = event ; m_macCurrentEventHandlerCallRef = handler ; }
+
+ // adding a CFType object to be released only at the end of the current event cycle (increases the
+ // refcount of the object passed), needed in case we are in the middle of an event concering an object
+ // we want to delete and cannot do it immediately
+ // TODO change semantics to be in line with cocoa (make autrelease NOT increase the count)
+ void MacAddToAutorelease( void* cfrefobj );
+ void MacReleaseAutoreleasePool();
+
+public:
+ static wxWindow* s_captureWindow ;
+ static long s_lastModifiers ;
+
+ int m_nCmdShow;
+
+ // mac specifics
+protected:
+#if wxOSX_USE_COCOA
+ // override for support of custom app controllers
+ virtual WX_NSObject OSXCreateAppController();