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");
}