added MacOpenURL() (patch 1235957)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45306 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-04-07 16:05:11 +00:00
parent 6a121452ee
commit 947848a1dd
2 changed files with 44 additions and 0 deletions

View File

@@ -112,6 +112,7 @@ public:
bool MacSendCharEvent( wxWindow* focus , long keymessage , 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 ) ; void MacCreateKeyEvent( wxKeyEvent& event, wxWindow* focus , long keymessage , long modifiers , long when , short wherex , short wherey , wxChar uniChar ) ;
virtual short MacHandleAEODoc(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ; 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 MacHandleAEPDoc(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
virtual short MacHandleAEOApp(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ; virtual short MacHandleAEOApp(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
virtual short MacHandleAEQuit(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ; virtual short MacHandleAEQuit(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
@@ -119,6 +120,8 @@ public:
// in response of an open-document apple event // in response of an open-document apple event
virtual void MacOpenFile(const wxString &fileName) ; 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 // in response of a print-document apple event
virtual void MacPrintFile(const wxString &fileName) ; virtual void MacPrintFile(const wxString &fileName) ;
// in response of a open-application apple event // in response of a open-application apple event

View File

@@ -133,6 +133,12 @@ pascal OSErr AEHandleRApp( const AppleEvent *event , AppleEvent *reply , SRefCon
return wxTheApp->MacHandleAERApp( (AppleEvent*) event , reply) ; return wxTheApp->MacHandleAERApp( (AppleEvent*) event , reply) ;
} }
pascal OSErr AEHandleGURL( const AppleEvent *event , AppleEvent *reply , long WXUNUSED(refcon) )
{
return wxTheApp->MacHandleAEGURL((WXEVENTREF *)event , reply) ;
}
// AEODoc Calls MacOpenFile on each of the files passed // AEODoc Calls MacOpenFile on each of the files passed
short wxApp::MacHandleAEODoc(const WXEVENTREF event, WXEVENTREF WXUNUSED(reply)) short wxApp::MacHandleAEODoc(const WXEVENTREF event, WXEVENTREF WXUNUSED(reply))
@@ -174,6 +180,31 @@ short wxApp::MacHandleAEODoc(const WXEVENTREF event, WXEVENTREF WXUNUSED(reply))
return noErr; return noErr;
} }
// AEODoc Calls MacOpenURL on the url passed
short wxApp::MacHandleAEGURL(const WXEVENTREF event, WXEVENTREF WXUNUSED(reply))
{
DescType returnedType;
Size actualSize;
char url[255];
OSErr err = AEGetParamPtr((AppleEvent *)event, keyDirectObject, typeChar,
&returnedType, url, sizeof(url)-1,
&actualSize);
if (err != noErr)
return err;
url[actualSize] = '\0'; // Terminate the C string
ProcessSerialNumber PSN ;
PSN.highLongOfPSN = 0 ;
PSN.lowLongOfPSN = kCurrentProcess ;
SetFrontProcess( &PSN ) ;
MacOpenURL(wxString(url, wxConvUTF8));
return noErr;
}
// AEPDoc Calls MacPrintFile on each of the files passed // AEPDoc Calls MacPrintFile on each of the files passed
short wxApp::MacHandleAEPDoc(const WXEVENTREF event , WXEVENTREF WXUNUSED(reply)) short wxApp::MacHandleAEPDoc(const WXEVENTREF event , WXEVENTREF WXUNUSED(reply))
@@ -264,6 +295,9 @@ void wxApp::MacOpenFile(const wxString & fileName )
#endif #endif
} }
void wxApp::MacOpenURL(const wxString & url )
{
}
void wxApp::MacPrintFile(const wxString & fileName ) void wxApp::MacPrintFile(const wxString & fileName )
{ {
@@ -860,6 +894,7 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
} }
AEEventHandlerUPP sODocHandler = NULL ; AEEventHandlerUPP sODocHandler = NULL ;
AEEventHandlerUPP sGURLHandler = NULL ;
AEEventHandlerUPP sOAppHandler = NULL ; AEEventHandlerUPP sOAppHandler = NULL ;
AEEventHandlerUPP sPDocHandler = NULL ; AEEventHandlerUPP sPDocHandler = NULL ;
AEEventHandlerUPP sRAppHandler = NULL ; AEEventHandlerUPP sRAppHandler = NULL ;
@@ -882,6 +917,7 @@ bool wxApp::OnInitGui()
if (!sm_isEmbedded) if (!sm_isEmbedded)
{ {
sODocHandler = NewAEEventHandlerUPP(AEHandleODoc) ; sODocHandler = NewAEEventHandlerUPP(AEHandleODoc) ;
sGURLHandler = NewAEEventHandlerUPP(AEHandleGURL) ;
sOAppHandler = NewAEEventHandlerUPP(AEHandleOApp) ; sOAppHandler = NewAEEventHandlerUPP(AEHandleOApp) ;
sPDocHandler = NewAEEventHandlerUPP(AEHandlePDoc) ; sPDocHandler = NewAEEventHandlerUPP(AEHandlePDoc) ;
sRAppHandler = NewAEEventHandlerUPP(AEHandleRApp) ; sRAppHandler = NewAEEventHandlerUPP(AEHandleRApp) ;
@@ -889,6 +925,8 @@ bool wxApp::OnInitGui()
AEInstallEventHandler( kCoreEventClass , kAEOpenDocuments , AEInstallEventHandler( kCoreEventClass , kAEOpenDocuments ,
sODocHandler , 0 , FALSE ) ; sODocHandler , 0 , FALSE ) ;
AEInstallEventHandler( kInternetEventClass, kAEGetURL,
sGURLHandler , 0 , FALSE ) ;
AEInstallEventHandler( kCoreEventClass , kAEOpenApplication , AEInstallEventHandler( kCoreEventClass , kAEOpenApplication ,
sOAppHandler , 0 , FALSE ) ; sOAppHandler , 0 , FALSE ) ;
AEInstallEventHandler( kCoreEventClass , kAEPrintDocuments , AEInstallEventHandler( kCoreEventClass , kAEPrintDocuments ,
@@ -937,6 +975,8 @@ void wxApp::CleanUp()
{ {
AERemoveEventHandler( kCoreEventClass , kAEOpenDocuments , AERemoveEventHandler( kCoreEventClass , kAEOpenDocuments ,
sODocHandler , FALSE ) ; sODocHandler , FALSE ) ;
AERemoveEventHandler( kInternetEventClass, kAEGetURL,
sGURLHandler , FALSE ) ;
AERemoveEventHandler( kCoreEventClass , kAEOpenApplication , AERemoveEventHandler( kCoreEventClass , kAEOpenApplication ,
sOAppHandler , FALSE ) ; sOAppHandler , FALSE ) ;
AERemoveEventHandler( kCoreEventClass , kAEPrintDocuments , AERemoveEventHandler( kCoreEventClass , kAEPrintDocuments ,
@@ -947,6 +987,7 @@ void wxApp::CleanUp()
sQuitHandler , FALSE ) ; sQuitHandler , FALSE ) ;
DisposeAEEventHandlerUPP( sODocHandler ) ; DisposeAEEventHandlerUPP( sODocHandler ) ;
DisposeAEEventHandlerUPP( sGURLHandler ) ;
DisposeAEEventHandlerUPP( sOAppHandler ) ; DisposeAEEventHandlerUPP( sOAppHandler ) ;
DisposeAEEventHandlerUPP( sPDocHandler ) ; DisposeAEEventHandlerUPP( sPDocHandler ) ;
DisposeAEEventHandlerUPP( sRAppHandler ) ; DisposeAEEventHandlerUPP( sRAppHandler ) ;