ADD: Execute operation for MultiArchiveFileSource

This commit is contained in:
Alexander Koblov 2010-02-19 14:34:33 +00:00
commit cccbd0402c
4 changed files with 88 additions and 12 deletions

View file

@ -29,7 +29,7 @@ interface
uses
SysUtils, Classes, LResources, Forms, StdCtrls, ExtCtrls, Controls,
uWcxArchiveFile, uWcxArchiveFileSource, uFileSourceExecuteOperation;
uArchiveFile, uArchiveFileSource, uFileSourceExecuteOperation;
type
@ -64,17 +64,17 @@ type
private
{ private declarations }
public
constructor Create(TheOwner: TComponent; aFileSource: IWcxArchiveFileSource; aFile: TWcxArchiveFile); reintroduce;
constructor Create(TheOwner: TComponent; aFileSource: IArchiveFileSource; aFile: TArchiveFile); reintroduce;
end;
function ShowPackInfoDlg(aFileSource: IWcxArchiveFileSource; aFile: TWcxArchiveFile): TFileSourceExecuteOperationResult;
function ShowPackInfoDlg(aFileSource: IArchiveFileSource; aFile: TArchiveFile): TFileSourceExecuteOperationResult;
implementation
uses
LCLType, uTypes, uFileProperty;
function ShowPackInfoDlg(aFileSource: IWcxArchiveFileSource; aFile: TWcxArchiveFile): TFileSourceExecuteOperationResult;
function ShowPackInfoDlg(aFileSource: IArchiveFileSource; aFile: TArchiveFile): TFileSourceExecuteOperationResult;
begin
Result:= fseorSuccess;
with TfrmPackInfoDlg.Create(Application, aFileSource, aFile) do
@ -94,7 +94,7 @@ end;
{ TfrmPackInfoDlg }
constructor TfrmPackInfoDlg.Create(TheOwner: TComponent;
aFileSource: IWcxArchiveFileSource; aFile: TWcxArchiveFile);
aFileSource: IArchiveFileSource; aFile: TArchiveFile);
var
sArcType: String;
begin

View file

@ -0,0 +1,74 @@
unit uMultiArchiveExecuteOperation;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
uFile,
uFileSource,
uFileSourceExecuteOperation,
uMultiArchiveFileSource,
uMultiArchiveFile;
type
{ TMultiArchiveExecuteOperation }
TMultiArchiveExecuteOperation = class(TFileSourceExecuteOperation)
private
FMultiArchiveFileSource: IMultiArchiveFileSource;
FMultiArchiveFile: TMultiArchiveFile;
public
{en
@param(aTargetFileSource
File source where the file should be executed.)
@param(aExecutableFile
File that should be executed.)
@param(aCurrentPath
Path of the file source where the execution should take place.)
}
constructor Create(aTargetFileSource: IFileSource;
aExecutableFile: TFile;
aCurrentPath,
aVerb: UTF8String); override;
procedure Initialize; override;
procedure MainExecute; override;
procedure Finalize; override;
end;
implementation
uses
fPackInfoDlg;
constructor TMultiArchiveExecuteOperation.Create(
aTargetFileSource: IFileSource;
aExecutableFile: TFile;
aCurrentPath,
aVerb: UTF8String);
begin
FMultiArchiveFileSource := aTargetFileSource as IMultiArchiveFileSource;
FMultiArchiveFile:= aExecutableFile as TMultiArchiveFile;
inherited Create(aTargetFileSource, aExecutableFile, aCurrentPath, aVerb);
end;
procedure TMultiArchiveExecuteOperation.Initialize;
begin
end;
procedure TMultiArchiveExecuteOperation.MainExecute;
begin
FExecuteOperationResult:= ShowPackInfoDlg(FMultiArchiveFileSource, FMultiArchiveFile);
end;
procedure TMultiArchiveExecuteOperation.Finalize;
begin
end;
end.

View file

@ -90,9 +90,9 @@ type
function CreateDeleteOperation(var FilesToDelete: TFiles): TFileSourceOperation; override;
{
function CreateExecuteOperation(const ExecutableFile: TFile;
BasePath, Verb: String): TFileSourceOperation; override;
{
function CreateTestArchiveOperation(var theSourceFiles: TFiles): TFileSourceOperation; override;
}
@ -111,9 +111,9 @@ uses
uMultiArchiveListOperation,
uMultiArchiveCopyInOperation,
uMultiArchiveCopyOutOperation,
uMultiArchiveDeleteOperation
uMultiArchiveDeleteOperation,
uMultiArchiveExecuteOperation
{
uMultiArchiveExecuteOperation,
uMultiArchiveTestArchiveOperation
}
;
@ -135,7 +135,7 @@ begin
begin
aMultiArcItem:= gMultiArcList.Items[I];
if SameText(sExtension, aMultiArcItem.FExtension) {and (aMultiArcItem.FEnabled)} then
if SameText(sExtension, aMultiArcItem.FExtension) and (aMultiArcItem.FEnabled) then
begin
Result := TMultiArchiveFileSource.Create(anArchiveFileName,
aMultiArcItem);
@ -170,7 +170,7 @@ end;
function TMultiArchiveFileSource.GetOperationsTypes: TFileSourceOperationTypes;
begin
Result := [];
Result := [fsoExecute];
if FMultiArcItem.FList <> EmptyStr then
Result := Result + [fsoList];
if FMultiArcItem.FAdd <> EmptyStr then
@ -285,16 +285,16 @@ begin
FilesToDelete);
end;
{
function TMultiArchiveFileSource.CreateExecuteOperation(const ExecutableFile: TFile;
BasePath, Verb: String): TFileSourceOperation;
var
TargetFileSource: IFileSource;
begin
TargetFileSource := Self;
Result:= TWcxArchiveExecuteOperation.Create(TargetFileSource, ExecutableFile, BasePath, Verb);
Result:= TMultiArchiveExecuteOperation.Create(TargetFileSource, ExecutableFile, BasePath, Verb);
end;
{
function TMultiArchiveFileSource.CreateTestArchiveOperation(var theSourceFiles: TFiles): TFileSourceOperation;
var
SourceFileSource: IFileSource;

View file

@ -150,6 +150,7 @@ begin
FAdd:= TrimQuotes(IniFile.ReadString(Section, 'Add', EmptyStr));
FMove:= TrimQuotes(IniFile.ReadString(Section, 'Move', EmptyStr));
// optional
FEnabled:= IniFile.ReadBool(Section, 'Enabled', True);
FConsoleOutput:= IniFile.ReadBool(Section, 'ConsoleOutput', False);
end;
FList.AddObject(Section, MultiArcItem);
@ -188,6 +189,7 @@ begin
IniFile.WriteString(Section, 'Add', FAdd);
IniFile.WriteString(Section, 'Move', FMove);
// optional
IniFile.WriteBool(Section, 'Enabled', FEnabled);
IniFile.WriteBool(Section, 'ConsoleOutput', FConsoleOutput);
end;
end;