openFiles (available since OS X 10.3) replaces using the openFile method. It allows for more convenient handling of multiple drops and knowing in advance how much files/folders are dropped instead of openFile with which you only get to respond to a single file/folder drop at a time. By default openFiles calls the newly added MacOpenFiles which calls MacOpenFile multiple times, so ordinarily the behaviour is backwards compatible (both on wxOSX Cocoa and Carbon). The openFile instance method has been removed because it doesn't seem to be called anymore: neither when dropping a single file on the application in the dock or Finder nor when passed as a command-line argument. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68617 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			148 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // 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;
 | |
| 
 | |
| private:
 | |
|     // mac specifics
 | |
|     virtual bool        DoInitGui();
 | |
|     virtual void        DoCleanUp();
 | |
| 
 | |
|     WXEVENTHANDLERREF     m_macEventHandler ;
 | |
|     WXEVENTHANDLERCALLREF m_macCurrentEventHandlerCallRef ;
 | |
|     WXEVENTREF            m_macCurrentEvent ;
 | |
| 
 | |
| public:
 | |
|     static long           s_macAboutMenuItemId ;
 | |
|     static long           s_macPreferencesMenuItemId ;
 | |
|     static long           s_macExitMenuItemId ;
 | |
|     static wxString       s_macHelpMenuTitleName ;
 | |
| 
 | |
|     WXEVENTREF            MacGetCurrentEvent() { return m_macCurrentEvent ; }
 | |
| 
 | |
|     // For embedded use. By default does nothing.
 | |
|     virtual void          MacHandleUnhandledEvent( WXEVENTREF ev );
 | |
| 
 | |
|     bool    MacSendKeyDownEvent( wxWindow* focus , long keyval , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ;
 | |
|     bool    MacSendKeyUpEvent( wxWindow* focus , long keyval , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ;
 | |
|     bool    MacSendCharEvent( wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ;
 | |
|     void    MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ;
 | |
| #if wxOSX_USE_CARBON
 | |
|     // we only have applescript on these
 | |
|     virtual short         MacHandleAEODoc(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
 | |
|     virtual short         MacHandleAEGURL(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
 | |
|     virtual short         MacHandleAEPDoc(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
 | |
|     virtual short         MacHandleAEOApp(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
 | |
|     virtual short         MacHandleAEQuit(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
 | |
|     virtual short         MacHandleAERApp(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
 | |
| #endif
 | |
|     // in response of an openFiles message with Cocoa and an
 | |
|     // open-document apple event with Carbon
 | |
|     virtual void         MacOpenFiles(const wxArrayString &fileNames) ;
 | |
|     // called by MacOpenFiles for each file.
 | |
|     virtual void         MacOpenFile(const wxString &fileName) ;
 | |
|     // in response of a get-url apple event
 | |
|     virtual void         MacOpenURL(const wxString &url) ;
 | |
|     // in response of a print-document apple event
 | |
|     virtual void         MacPrintFile(const wxString &fileName) ;
 | |
|     // in response of a open-application apple event
 | |
|     virtual void         MacNewFile() ;
 | |
|     // in response of a reopen-application apple event
 | |
|     virtual void         MacReopenApp() ;
 | |
| 
 | |
|     // Hide the application windows the same as the system hide command would do it.
 | |
|     void MacHideApp();
 | |
| 
 | |
|     DECLARE_EVENT_TABLE()
 | |
| };
 | |
| 
 | |
| #endif
 | |
|     // _WX_APP_H_
 | |
| 
 |