added trivial wxLaunchDefaultApplication() implementation for wxMac; added a test for it to the exec sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54933 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -115,6 +115,7 @@ public:
|
|||||||
void OnPOpen(wxCommandEvent& event);
|
void OnPOpen(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnFileExec(wxCommandEvent& event);
|
void OnFileExec(wxCommandEvent& event);
|
||||||
|
void OnFileLaunch(wxCommandEvent& event);
|
||||||
void OnOpenURL(wxCommandEvent& event);
|
void OnOpenURL(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnAbout(wxCommandEvent& event);
|
void OnAbout(wxCommandEvent& event);
|
||||||
@@ -304,6 +305,7 @@ enum
|
|||||||
Exec_Shell,
|
Exec_Shell,
|
||||||
Exec_POpen,
|
Exec_POpen,
|
||||||
Exec_OpenFile,
|
Exec_OpenFile,
|
||||||
|
Exec_LaunchFile,
|
||||||
Exec_OpenURL,
|
Exec_OpenURL,
|
||||||
Exec_DDEExec,
|
Exec_DDEExec,
|
||||||
Exec_DDERequest,
|
Exec_DDERequest,
|
||||||
@@ -344,6 +346,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
|||||||
EVT_MENU(Exec_POpen, MyFrame::OnPOpen)
|
EVT_MENU(Exec_POpen, MyFrame::OnPOpen)
|
||||||
|
|
||||||
EVT_MENU(Exec_OpenFile, MyFrame::OnFileExec)
|
EVT_MENU(Exec_OpenFile, MyFrame::OnFileExec)
|
||||||
|
EVT_MENU(Exec_LaunchFile, MyFrame::OnFileLaunch)
|
||||||
EVT_MENU(Exec_OpenURL, MyFrame::OnOpenURL)
|
EVT_MENU(Exec_OpenURL, MyFrame::OnOpenURL)
|
||||||
|
|
||||||
#ifdef __WINDOWS__
|
#ifdef __WINDOWS__
|
||||||
@@ -460,6 +463,8 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
|||||||
execMenu->AppendSeparator();
|
execMenu->AppendSeparator();
|
||||||
execMenu->Append(Exec_OpenFile, _T("Open &file...\tCtrl-F"),
|
execMenu->Append(Exec_OpenFile, _T("Open &file...\tCtrl-F"),
|
||||||
_T("Launch the command to open this kind of files"));
|
_T("Launch the command to open this kind of files"));
|
||||||
|
execMenu->Append(Exec_LaunchFile, _T("La&unch file...\tShift-Ctrl-F"),
|
||||||
|
_T("Launch the default application associated with the file"));
|
||||||
execMenu->Append(Exec_OpenURL, _T("Open &URL...\tCtrl-U"),
|
execMenu->Append(Exec_OpenURL, _T("Open &URL...\tCtrl-U"),
|
||||||
_T("Launch the default browser with the given URL"));
|
_T("Launch the default browser with the given URL"));
|
||||||
#ifdef __WINDOWS__
|
#ifdef __WINDOWS__
|
||||||
@@ -867,25 +872,33 @@ void MyFrame::OnPOpen(wxCommandEvent& WXUNUSED(event))
|
|||||||
new MyPipeFrame(this, cmd, process);
|
new MyPipeFrame(this, cmd, process);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyFrame::OnFileExec(wxCommandEvent& WXUNUSED(event))
|
static wxString gs_lastFile;
|
||||||
{
|
|
||||||
static wxString s_filename;
|
|
||||||
|
|
||||||
|
static bool AskUserForFileName()
|
||||||
|
{
|
||||||
wxString filename;
|
wxString filename;
|
||||||
|
|
||||||
#if wxUSE_FILEDLG
|
#if wxUSE_FILEDLG
|
||||||
filename = wxLoadFileSelector(_T("any file"), wxEmptyString, s_filename, this);
|
filename = wxLoadFileSelector(_T("any file"), wxEmptyString, gs_lastFile);
|
||||||
#else // !wxUSE_FILEDLG
|
#else // !wxUSE_FILEDLG
|
||||||
filename = wxGetTextFromUser(_T("Enter the file name"), _T("exec sample"),
|
filename = wxGetTextFromUser(_T("Enter the file name"), _T("exec sample"),
|
||||||
s_filename, this);
|
gs_lastFile);
|
||||||
#endif // wxUSE_FILEDLG/!wxUSE_FILEDLG
|
#endif // wxUSE_FILEDLG/!wxUSE_FILEDLG
|
||||||
|
|
||||||
if ( filename.empty() )
|
if ( filename.empty() )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
gs_lastFile = filename;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnFileExec(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
if ( !AskUserForFileName() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
s_filename = filename;
|
wxString ext = gs_lastFile.AfterLast(_T('.'));
|
||||||
|
|
||||||
wxString ext = filename.AfterLast(_T('.'));
|
|
||||||
wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(ext);
|
wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(ext);
|
||||||
if ( !ft )
|
if ( !ft )
|
||||||
{
|
{
|
||||||
@@ -896,7 +909,7 @@ void MyFrame::OnFileExec(wxCommandEvent& WXUNUSED(event))
|
|||||||
|
|
||||||
wxString cmd;
|
wxString cmd;
|
||||||
bool ok = ft->GetOpenCommand(&cmd,
|
bool ok = ft->GetOpenCommand(&cmd,
|
||||||
wxFileType::MessageParameters(filename));
|
wxFileType::MessageParameters(gs_lastFile));
|
||||||
delete ft;
|
delete ft;
|
||||||
if ( !ok )
|
if ( !ok )
|
||||||
{
|
{
|
||||||
@@ -908,25 +921,36 @@ void MyFrame::OnFileExec(wxCommandEvent& WXUNUSED(event))
|
|||||||
DoAsyncExec(cmd);
|
DoAsyncExec(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnFileLaunch(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
if ( !AskUserForFileName() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( !wxLaunchDefaultApplication(gs_lastFile) )
|
||||||
|
{
|
||||||
|
wxLogError("Opening \"%s\" in default application failed.", gs_lastFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MyFrame::OnOpenURL(wxCommandEvent& WXUNUSED(event))
|
void MyFrame::OnOpenURL(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
static wxString s_filename(_T("http://www.wxwidgets.org/"));
|
static wxString s_url(_T("http://www.wxwidgets.org/"));
|
||||||
|
|
||||||
wxString filename = wxGetTextFromUser
|
wxString filename = wxGetTextFromUser
|
||||||
(
|
(
|
||||||
_T("Enter the URL"),
|
_T("Enter the URL"),
|
||||||
_T("exec sample"),
|
_T("exec sample"),
|
||||||
s_filename,
|
s_url,
|
||||||
this
|
this
|
||||||
);
|
);
|
||||||
|
|
||||||
if ( filename.empty() )
|
if ( filename.empty() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
s_filename = filename;
|
s_url = filename;
|
||||||
|
|
||||||
if ( !wxLaunchDefaultBrowser(s_filename) )
|
if ( !wxLaunchDefaultBrowser(s_url) )
|
||||||
wxLogError(_T("Failed to open URL \"%s\""), s_filename.c_str());
|
wxLogError(_T("Failed to open URL \"%s\""), s_url.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -941,7 +941,11 @@ bool wxLaunchDefaultApplication(const wxString& document, int flags)
|
|||||||
{
|
{
|
||||||
wxUnusedVar(flags);
|
wxUnusedVar(flags);
|
||||||
|
|
||||||
#if defined(__UNIX__)
|
#ifdef __WXMAC__
|
||||||
|
static const char * const OPEN_CMD = "/usr/bin/open";
|
||||||
|
if ( wxFileExists(OPEN_CMD) && wxExecute(OPEN_CMD + " " + document) )
|
||||||
|
return true;
|
||||||
|
#elif defined(__UNIX__)
|
||||||
// Our best best is to use xdg-open from freedesktop.org cross-desktop
|
// Our best best is to use xdg-open from freedesktop.org cross-desktop
|
||||||
// compatibility suite xdg-utils
|
// compatibility suite xdg-utils
|
||||||
// (see http://portland.freedesktop.org/wiki/) -- this is installed on
|
// (see http://portland.freedesktop.org/wiki/) -- this is installed on
|
||||||
|
Reference in New Issue
Block a user