www.pudn.com > TurboPadSource.tar.gz > exec.cpp


/** 
*    \file Execute Implementation 
* 
*    Implementation of Execute functions. 
*/ 
 
#include "exec.h" 
 
Execute::Execute(const wxString &fName, const wxString &cmd = "") 
{ 
    fileName = fName; 
    command = cmd; 
} 
 
void Execute::Clear() 
{ 
    fileName = ""; 
    command = ""; 
} 
 
wxString Execute::ExpandVariables(wxString cmd) 
{ 
    wxFileName fName(fileName); 
 
    if (cmd.Contains("$(FilePath)")) 
        cmd.Replace("$(FilePath)", fName.GetFullPath()); 
 
    if (cmd.Contains("$(FileDir)")) 
        cmd.Replace("$(FileDir)", fName.GetPath(wxPATH_GET_VOLUME)); 
 
    if (cmd.Contains("$(FileName)")) 
        cmd.Replace("$(FileName)", fName.GetName()); 
 
    if (cmd.Contains("$(FileExt)")) 
        cmd.Replace("$(FileExt)", fName.GetExt()); 
 
    if (cmd.Contains("$(FileNameExt)")) // $(FileName).$(FileExt) 
        cmd.Replace("$(FileNameExt)", fName.GetFullName()); 
 
    return cmd; 
} 
 
bool Execute::Exec() 
{ 
    wxString execCommand = ExpandVariables(command); 
    wxExecute(execCommand); 
    return true; 
} 
 
bool Execute::ReadCommand(const wxString &filePath, const wxString &fileExt, int execNum) 
{ 
    wxTextFile execFile(filePath); 
    wxString line; 
 
    if (!execFile.Exists() || !execFile.Open()) 
        return false; 
 
    for (unsigned int i = 0; i < execFile.GetLineCount(); i++)   // \todo Make sure the command 
    {                                                            // is actually from the right section 
        line = execFile.GetLine(i); 
        if (line.Contains('[') && line.Contains(']') && line.Contains(fileExt) 
                && (execFile.GetCurrentLine()+execNum) < execFile.GetLineCount()) 
        { 
            command = execFile.GetLine(i+execNum); 
            if (command.Contains('[')) command = "";  // Went past the end of the section 
            break;                                    // so the command should not be executed 
        } 
    } 
 
    execFile.Close(); 
 
    return (command != "") && (command != " ") && (command != "\n"); 
}