| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 
 | #include "clConsoleCMD.h"
#include "dirsaver.h"
#include <wx/filename.h>
#include <wx/utils.h>
clConsoleCMD::clConsoleCMD() {}
clConsoleCMD::~clConsoleCMD() {}
bool clConsoleCMD::Start()
{
    DirSaver ds; // restore the directory upon exiting this function
    wxFileName fn(GetWorkingDirectory(), "");
    if(fn.DirExists()) { ::wxSetWorkingDirectory(fn.GetPath()); }
    return StartProcess(PrepareCommand());
}
bool clConsoleCMD::StartForDebugger() { return false; }
wxString clConsoleCMD::PrepareCommand()
{
    // Build the command to execute
    wxString commandToExecute;
    if(IsTerminalNeeded()) { commandToExecute << "cmd"; }
    // For testing purposes
    wxArrayString args = SplitArguments(GetCommandArgs());
    wxUnusedVar(args);
    wxString command = WrapWithQuotesIfNeeded(GetCommand());
    if(!command.IsEmpty()) {
        if(IsTerminalNeeded()) {
            commandToExecute << " /C ";
            // We prepend 'call' to the execution to make sure that the execution is always returning 0
            if(IsWaitWhenDone()) { commandToExecute << " call "; }
        }
        commandToExecute << command;
        if(!GetCommandArgs().IsEmpty()) { commandToExecute << " " << GetCommandArgs(); }
        if(IsTerminalNeeded() && IsWaitWhenDone()) { commandToExecute << " && pause"; }
    }
    return commandToExecute;
}
 |