merged 2.2 branch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7748 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -513,8 +513,8 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label)
|
||||
else
|
||||
#endif // 0
|
||||
{
|
||||
wxLogDebug(wxT("Unrecognized accel key '%s', accel "
|
||||
"string ignored."), current.c_str());
|
||||
wxLogDebug(wxT("Unrecognized accel key '%s', accel string ignored."),
|
||||
current.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1025,7 +1025,7 @@ wxWindowDisabler::~wxWindowDisabler()
|
||||
{
|
||||
if ( !::SetForegroundWindow(GetHwndOf(m_winTop)) )
|
||||
{
|
||||
wxLogLastError("SetForegroundWindow");
|
||||
wxLogLastError(wxT("SetForegroundWindow"));
|
||||
}
|
||||
}
|
||||
#else
|
||||
@@ -1208,31 +1208,89 @@ wxString wxGetCurrentDir()
|
||||
// wxExecute
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
long wxExecute(const wxString& command, wxArrayString& output)
|
||||
// this is a private function because it hasn't a clean interface: the first
|
||||
// array is passed by reference, the second by pointer - instead we have 2
|
||||
// public versions of wxExecute() below
|
||||
static long wxDoExecuteWithCapture(const wxString& command,
|
||||
wxArrayString& output,
|
||||
wxArrayString* error)
|
||||
{
|
||||
#ifdef __WIN16__
|
||||
wxFAIL_MSG("Sorry, this version of wxExecute not implemented on WIN16.");
|
||||
|
||||
return 0;
|
||||
#else
|
||||
#else // !Win16
|
||||
// create a wxProcess which will capture the output
|
||||
wxProcess *process = new wxProcess;
|
||||
process->Redirect();
|
||||
|
||||
long rc = wxExecute(command, TRUE /* sync */, process);
|
||||
|
||||
#if wxUSE_STREAMS
|
||||
if ( rc != -1 )
|
||||
{
|
||||
wxInputStream& is = *process->GetInputStream();
|
||||
wxTextInputStream tis(is);
|
||||
while ( !is.Eof() && is.IsOk() )
|
||||
{
|
||||
wxString line = tis.ReadLine();
|
||||
if ( is.LastError() )
|
||||
break;
|
||||
wxInputStream* is = process->GetInputStream();
|
||||
wxCHECK_MSG( is, -1, _T("if wxExecute() succeded, stream can't be NULL") );
|
||||
wxTextInputStream tis(*is);
|
||||
|
||||
output.Add(line);
|
||||
wxTextInputStream *tes = NULL;
|
||||
wxInputStream *es = NULL;
|
||||
if ( error )
|
||||
{
|
||||
es = process->GetErrorStream();
|
||||
|
||||
wxCHECK_MSG( es, -1, _T("stderr can't be NULL") );
|
||||
|
||||
tes = new wxTextInputStream(*es);
|
||||
}
|
||||
|
||||
bool cont;
|
||||
do
|
||||
{
|
||||
cont = FALSE;
|
||||
|
||||
if ( !is->Eof() && is->IsOk() )
|
||||
{
|
||||
wxString line = tis.ReadLine();
|
||||
if ( is->LastError() )
|
||||
break;
|
||||
|
||||
cont = TRUE;
|
||||
|
||||
output.Add(line);
|
||||
}
|
||||
|
||||
if ( error && !es->Eof() && es->IsOk() )
|
||||
{
|
||||
wxString line = tes->ReadLine();
|
||||
if ( es->LastError() )
|
||||
break;
|
||||
|
||||
cont = TRUE;
|
||||
|
||||
error->Add(line);
|
||||
}
|
||||
}
|
||||
while ( cont );
|
||||
|
||||
delete tes;
|
||||
}
|
||||
#endif // wxUSE_STREAMS
|
||||
|
||||
delete process;
|
||||
|
||||
return rc;
|
||||
#endif
|
||||
#endif // IO redirection supoprted
|
||||
}
|
||||
|
||||
long wxExecute(const wxString& command, wxArrayString& output)
|
||||
{
|
||||
return wxDoExecuteWithCapture(command, output, NULL);
|
||||
}
|
||||
|
||||
long wxExecute(const wxString& command,
|
||||
wxArrayString& output,
|
||||
wxArrayString& error)
|
||||
{
|
||||
return wxDoExecuteWithCapture(command, output, &error);
|
||||
}
|
||||
|
Reference in New Issue
Block a user