git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54933
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
void OnPOpen(wxCommandEvent& event);
void OnFileExec(wxCommandEvent& event);
void OnPOpen(wxCommandEvent& event);
void OnFileExec(wxCommandEvent& event);
+ void OnFileLaunch(wxCommandEvent& event);
void OnOpenURL(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
void OnOpenURL(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
Exec_Shell,
Exec_POpen,
Exec_OpenFile,
Exec_Shell,
Exec_POpen,
Exec_OpenFile,
Exec_OpenURL,
Exec_DDEExec,
Exec_DDERequest,
Exec_OpenURL,
Exec_DDEExec,
Exec_DDERequest,
EVT_MENU(Exec_POpen, MyFrame::OnPOpen)
EVT_MENU(Exec_OpenFile, MyFrame::OnFileExec)
EVT_MENU(Exec_POpen, MyFrame::OnPOpen)
EVT_MENU(Exec_OpenFile, MyFrame::OnFileExec)
+ EVT_MENU(Exec_LaunchFile, MyFrame::OnFileLaunch)
EVT_MENU(Exec_OpenURL, MyFrame::OnOpenURL)
#ifdef __WINDOWS__
EVT_MENU(Exec_OpenURL, MyFrame::OnOpenURL)
#ifdef __WINDOWS__
execMenu->AppendSeparator();
execMenu->Append(Exec_OpenFile, _T("Open &file...\tCtrl-F"),
_T("Launch the command to open this kind of files"));
execMenu->AppendSeparator();
execMenu->Append(Exec_OpenFile, _T("Open &file...\tCtrl-F"),
_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"),
_T("Launch the default browser with the given URL"));
#ifdef __WINDOWS__
execMenu->Append(Exec_OpenURL, _T("Open &URL...\tCtrl-U"),
_T("Launch the default browser with the given URL"));
#ifdef __WINDOWS__
new MyPipeFrame(this, cmd, process);
}
new MyPipeFrame(this, cmd, process);
}
-void MyFrame::OnFileExec(wxCommandEvent& WXUNUSED(event))
-{
- static wxString s_filename;
+static wxString gs_lastFile;
+static bool AskUserForFileName()
+{
wxString filename;
#if wxUSE_FILEDLG
wxString filename;
#if wxUSE_FILEDLG
- filename = wxLoadFileSelector(_T("any file"), wxEmptyString, s_filename, this);
+ filename = wxLoadFileSelector(_T("any file"), wxEmptyString, gs_lastFile);
#else // !wxUSE_FILEDLG
filename = wxGetTextFromUser(_T("Enter the file name"), _T("exec sample"),
#else // !wxUSE_FILEDLG
filename = wxGetTextFromUser(_T("Enter the file name"), _T("exec sample"),
#endif // wxUSE_FILEDLG/!wxUSE_FILEDLG
if ( filename.empty() )
#endif // wxUSE_FILEDLG/!wxUSE_FILEDLG
if ( filename.empty() )
+ gs_lastFile = filename;
- wxString ext = filename.AfterLast(_T('.'));
+ return true;
+}
+
+void MyFrame::OnFileExec(wxCommandEvent& WXUNUSED(event))
+{
+ if ( !AskUserForFileName() )
+ return;
+
+ wxString ext = gs_lastFile.AfterLast(_T('.'));
wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(ext);
if ( !ft )
{
wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(ext);
if ( !ft )
{
wxString cmd;
bool ok = ft->GetOpenCommand(&cmd,
wxString cmd;
bool ok = ft->GetOpenCommand(&cmd,
- wxFileType::MessageParameters(filename));
+ wxFileType::MessageParameters(gs_lastFile));
+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
(
_T("Enter the URL"),
_T("exec sample"),
wxString filename = wxGetTextFromUser
(
_T("Enter the URL"),
_T("exec sample"),
this
);
if ( filename.empty() )
return;
this
);
if ( filename.empty() )
return;
- if ( !wxLaunchDefaultBrowser(s_filename) )
- wxLogError(_T("Failed to open URL \"%s\""), s_filename.c_str());
+ if ( !wxLaunchDefaultBrowser(s_url) )
+ wxLogError(_T("Failed to open URL \"%s\""), s_url.c_str());
}
// ----------------------------------------------------------------------------
}
// ----------------------------------------------------------------------------
+#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
// compatibility suite xdg-utils
// (see http://portland.freedesktop.org/wiki/) -- this is installed on
// Our best best is to use xdg-open from freedesktop.org cross-desktop
// compatibility suite xdg-utils
// (see http://portland.freedesktop.org/wiki/) -- this is installed on