Explorar el Código

Fix remaining duplicate code.

Martijn Laan hace 1 año
padre
commit
1e936731b5

+ 0 - 5
Projects/CompFileListWin.dfm

@@ -60,7 +60,6 @@ object CFLWForm: TCFLWForm
     Anchors = [akTop, akRight]
     Caption = '&Edit...'
     TabOrder = 1
-    OnClick = AppFilesEditButtonClick
   end
   object AppFilesRemoveButton: TButton
     Left = 514
@@ -70,7 +69,6 @@ object CFLWForm: TCFLWForm
     Anchors = [akTop, akRight]
     Caption = 'Remo&ve'
     TabOrder = 2
-    OnClick = AppFilesRemoveButtonClick
   end
   object AppFilesAddDirButton: TButton
     Left = 514
@@ -98,9 +96,6 @@ object CFLWForm: TCFLWForm
     Anchors = [akLeft, akTop, akRight, akBottom]
     ItemHeight = 15
     TabOrder = 5
-    OnClick = AppFilesListBoxClick
-    OnDblClick = AppFilesListBoxDblClick
-    OnDropFile = AppFilesListBoxDropFile
   end
   object AppFilesLabel: TNewStaticText
     Left = 20

+ 7 - 145
Projects/CompFileListWin.pas

@@ -3,9 +3,8 @@ unit CompFileListWin;
 interface
 
 uses
-  Windows, Messages, SysUtils, Variants, Classes, Graphics,
-  Controls, Forms, Dialogs,ExtCtrls, StdCtrls,
-  NewStaticText, DropListBox, CompWizard, CompWizardFilesHelper;
+  Classes, Controls, Forms, Dialogs, ExtCtrls, StdCtrls,
+  NewStaticText, DropListBox, CompWizardFilesHelper;
 
 type
   TCFLWForm = class(TForm)
@@ -19,134 +18,24 @@ type
     AppFilesListBox: TDropListBox;
     AppFilesLabel: TNewStaticText;
     NotCreateAppDirCheck: TCheckBox;
-    procedure AppFilesEditButtonClick(Sender: TObject);
-    procedure AppFilesRemoveButtonClick(Sender: TObject);
     procedure FormCreate(Sender: TObject);
-    procedure AppFilesListBoxClick(Sender: TObject);
-    procedure AppFilesListBoxDblClick(Sender: TObject);
-    procedure AppFilesListBoxDropFile(Sender: TDropListBox;
-      const FileName: string);
     procedure FormDestroy(Sender: TObject);
   private
-    FWizardFiles: TList; //todo: remove?
     FFilesHelper: TWizardFormFilesHelper;
     function GetText: String;
-    //todo remove!!!
-    procedure AddWizardFile(const Source: String;
-      const RecurseSubDirs, CreateAllSubDirs: Boolean);
-    procedure UpdateWizardFilesButtons;
-    procedure UpdateWizardFiles;
   public
     property Text: string read GetText;
   end;
 
-
-var
-  CFLWForm: TCFLWForm;
-
 implementation
 
-uses
-  CompMsgs, BrowseFunc, CmnFunc, CmnFunc2, CompWizardFile, PathFunc;
-
 {$R *.dfm}
 
-procedure TCFLWForm.AddWizardFile(const Source: String;
-  const RecurseSubDirs, CreateAllSubDirs: Boolean);
-var
-  WizardFile: PWizardFile;
-begin
-  New(WizardFile);
-  WizardFile.Source := Source;
-  WizardFile.RecurseSubDirs := RecurseSubDirs;
-  WizardFile.CreateAllSubDirs := CreateAllSubDirs;
-  WizardFile.DestRootDirIsConstant := True;
-  if not NotCreateAppDirCheck.Checked then
-    WizardFile.DestRootDir := '{app}'
-  else
-    WizardFile.DestRootDir := '{win}';
-  WizardFile.DestSubDir := '';
-  FWizardFiles.Add(WizardFile);
-end;
-
-procedure TCFLWForm.UpdateWizardFiles;
-var
-  WizardFile: PWizardFile;
-  I: Integer;
-begin
-  AppFilesListBox.Items.BeginUpdate;
-  AppFilesListBox.Items.Clear;
-  for I := 0 to FWizardFiles.Count - 1 do
-  begin
-    WizardFile := FWizardFiles[I];
-    AppFilesListBox.Items.Add(WizardFile.Source);
-  end;
-  AppFilesListBox.Items.EndUpdate;
-  UpdateHorizontalExtent(AppFilesListBox);
-end;
-
-procedure TCFLWForm.AppFilesEditButtonClick(Sender: TObject);
-var
-  WizardFileForm: TWizardFileForm;
-  Index: Integer;
-begin
-  WizardFileForm := TWizardFileForm.Create(Application);
-  try
-    Index := AppFilesListBox.ItemIndex;
-    WizardFileForm.AllowAppDestRootDir := not NotCreateAppDirCheck.Checked;
-    WizardFileForm.WizardFile := FWizardFiles[Index];
-    if WizardFileForm.ShowModal = mrOk then
-    begin
-      UpdateWizardFiles;
-      AppFilesListBox.ItemIndex := Index;
-      AppFilesListBox.TopIndex := Index;
-      UpdateWizardFilesButtons;
-    end;
-  finally
-    WizardFileForm.Free;
-  end;
-
-end;
-
-procedure TCFLWForm.AppFilesListBoxClick(Sender: TObject);
-begin
-  UpdateWizardFilesButtons;
-end;
-
-procedure TCFLWForm.AppFilesListBoxDblClick(Sender: TObject);
-begin
-  if AppFilesEditButton.Enabled then
-    AppFilesEditButton.Click;
-end;
-
-procedure TCFLWForm.AppFilesListBoxDropFile(Sender: TDropListBox;
-  const FileName: string);
-begin
-  if DirExists(FileName) then
-    AddWizardFile(AddBackslash(FileName) + '*', True, True)
-  else
-    AddWizardFile(FileName, False, False);
-  UpdateWizardFiles;
-  UpdateWizardFilesButtons;
-end;
-
-procedure TCFLWForm.AppFilesRemoveButtonClick(Sender: TObject);
-var
-  I: Integer;
-begin
-  I := AppFilesListBox.ItemIndex;
-  Dispose(FWizardFiles[I]);
-  FWizardFiles.Delete(I);
-  UpdateWizardFiles;
-  UpdateWizardFilesButtons;
-end;
-
 procedure TCFLWForm.FormCreate(Sender: TObject);
 begin
-  FFilesHelper := TWizardFormFilesHelper.Create(Handle, FWizardFiles,
-    NotCreateAppDirCheck, AppFilesAddButton, AppFilesAddDirButton, AppFilesListBox);
-
-  FWizardFiles := FFilesHelper.WizardFiles;
+  FFilesHelper := TWizardFormFilesHelper.Create(Handle,
+    NotCreateAppDirCheck, AppFilesListBox, AppFilesAddButton, AppFilesAddDirButton,
+    AppFilesEditButton, AppFilesRemoveButton);;
 end;
 
 procedure TCFLWForm.FormDestroy(Sender: TObject);
@@ -154,37 +43,10 @@ begin
   FFilesHelper.Free;
 end;
 
-procedure TCFLWForm.UpdateWizardFilesButtons;
-var
-  Enabled: Boolean;
-begin
-  Enabled := AppFilesListBox.ItemIndex >= 0;
-  AppFilesEditButton.Enabled := Enabled;
-  AppFilesRemoveButton.Enabled := Enabled;
-end;
-
 function TCFLWForm.GetText: String;
-var
-  Files: String;
-  WizardFile: PWizardFile;
-  I: Integer;
 begin
-  for I := 0 to FWizardFiles.Count - 1 do
-    begin
-      WizardFile := FWizardFiles[I];
-      Files := Files + 'Source: "' + WizardFile.Source + '"; DestDir: "' +
-        RemoveBackslashUnlessRoot(AddBackslash(WizardFile.DestRootDir) +
-        WizardFile.DestSubDir) + '"; Flags: ignoreversion';
-      if WizardFile.RecurseSubDirs then
-        Files := Files + ' recursesubdirs';
-      if WizardFile.CreateAllSubDirs then
-        Files := Files + ' createallsubdirs';
-      Files := Files + SNewLine;
-    end;
-    Files := Files +
-        '; NOTE: Don''t use "Flags: ignoreversion" on any shared system files' +
-        SNewLine2;
-    Result := Files;
+  Result := '';
+  FFilesHelper.AddScript(Result);
 end;
 
 end.

+ 0 - 5
Projects/CompWizard.dfm

@@ -521,9 +521,6 @@ object WizardForm: TWizardForm
             Anchors = [akLeft, akTop, akRight, akBottom]
             ItemHeight = 13
             TabOrder = 6
-            OnClick = AppFilesListBoxClick
-            OnDblClick = AppFilesListBoxDblClick
-            OnDropFile = AppFilesListBoxDropFile
           end
           object AppFilesAddButton: TButton
             Left = 360
@@ -542,7 +539,6 @@ object WizardForm: TWizardForm
             Anchors = [akTop, akRight]
             Caption = '&Edit...'
             TabOrder = 9
-            OnClick = AppFilesEditButtonClick
           end
           object AppFilesRemoveButton: TButton
             Left = 360
@@ -552,7 +548,6 @@ object WizardForm: TWizardForm
             Anchors = [akTop, akRight]
             Caption = 'Remo&ve'
             TabOrder = 10
-            OnClick = AppFilesRemoveButtonClick
           end
           object AppExeEdit: TEdit
             Left = 36

+ 4 - 121
Projects/CompWizard.pas

@@ -141,13 +141,7 @@ type
     procedure AppRootDirComboBoxChange(Sender: TObject);
     procedure NotCreateAppDirCheckClick(Sender: TObject);
     procedure AppExeButtonClick(Sender: TObject);
-    procedure AppFilesListBoxClick(Sender: TObject);
-    procedure AppFilesListBoxDblClick(Sender: TObject);
     procedure NotDisableProgramGroupPageCheckClick(Sender: TObject);
-    procedure AppFilesEditButtonClick(Sender: TObject);
-    procedure AppFilesRemoveButtonClick(Sender: TObject);
-    procedure AppFilesListBoxDropFile(Sender: TDropListBox;
-      const FileName: String);
     procedure PasswordEditChange(Sender: TObject);
     procedure OutputDirButtonClick(Sender: TObject);
     procedure AllLanguagesButtonClick(Sender: TObject);
@@ -159,7 +153,6 @@ type
   private
     CurPage: TWizardPage;
     FWizardName: String;
-    FWizardFiles: TList; //todo: remove?
     FLanguages: TStringList;
     FFilesHelper: TWizardFormFilesHelper;
     FResult: TWizardFormResult;
@@ -168,10 +161,6 @@ type
     procedure SetWizardName(const WizardName: String);
     procedure CurPageChanged;
     function SkipCurPage: Boolean;
-    //todo remove!!!
-    procedure AddWizardFile(const Source: String; const RecurseSubDirs, CreateAllSubDirs: Boolean);
-    procedure UpdateWizardFiles;
-    procedure UpdateWizardFilesButtons;
     procedure UpdateAppExeControls;
     procedure UpdateAppAssocControls;
     procedure UpdateAppIconsControls;
@@ -294,10 +283,9 @@ begin
   FLanguages.Sorted := False;
   FLanguages.Insert(0, LanguagesDefaultIsl);
 
-  FFilesHelper := TWizardFormFilesHelper.Create(Handle, FWizardFiles,
-    NotCreateAppDirCheck, AppFilesAddButton, AppFilesAddDirButton, AppFilesListBox);
-
-  FWizardFiles := FFilesHelper.WizardFiles;
+  FFilesHelper := TWizardFormFilesHelper.Create(Handle,
+    NotCreateAppDirCheck, AppFilesListBox, AppFilesAddButton, AppFilesAddDirButton,
+    AppFilesEditButton, AppFilesRemoveButton);
 
   InitFormFont(Self);
   if Font.Name = 'Segoe UI' then begin
@@ -349,7 +337,6 @@ begin
   { AppFiles }
   AppExeEdit.Text := PathExtractPath(NewParamStr(0)) + 'Examples\MyProg.exe';
   AppExeRunCheck.Checked := True;
-  UpdateWizardFilesButtons;
 
   { AppAssoc }
   CreateAssocCheck.Checked := True;
@@ -595,47 +582,6 @@ end;
 
 {---}
 
-procedure TWizardForm.AddWizardFile(const Source: String; const RecurseSubDirs, CreateAllSubDirs: Boolean);
-var
-  WizardFile: PWizardFile;
-begin
-  New(WizardFile);
-  WizardFile.Source := Source;
-  WizardFile.RecurseSubDirs := RecurseSubDirs;
-  WizardFile.CreateAllSubDirs := CreateAllSubDirs;
-  WizardFile.DestRootDirIsConstant := True;
-  if not NotCreateAppDirCheck.Checked then
-    WizardFile.DestRootDir := '{app}'
-  else
-    WizardFile.DestRootDir := '{win}';
-  WizardFile.DestSubDir := '';
-  FWizardFiles.Add(WizardFile);
-end;
-
-procedure TWizardForm.UpdateWizardFiles;
-var
-  WizardFile: PWizardFile;
-  I: Integer;
-begin
-  AppFilesListBox.Items.BeginUpdate;
-  AppFilesListBox.Items.Clear;
-  for I := 0 to FWizardFiles.Count-1 do begin
-    WizardFile := FWizardFiles[i];
-    AppFilesListBox.Items.Add(WizardFile.Source);
-  end;
-  AppFilesListBox.Items.EndUpdate;
-  UpdateHorizontalExtent(AppFilesListBox);
-end;
-
-procedure TWizardForm.UpdateWizardFilesButtons;
-var
-  Enabled: Boolean;
-begin
-  Enabled := AppFilesListBox.ItemIndex >= 0;
-  AppFilesEditButton.Enabled := Enabled;
-  AppFilesRemoveButton.Enabled := Enabled;
-end;
-
 procedure TWizardForm.UpdateAppExeControls;
 var
   Enabled: Boolean;
@@ -762,60 +708,6 @@ begin
   UpdateAppIconsControls;
 end;
 
-procedure TWizardForm.AppFilesListBoxClick(Sender: TObject);
-begin
-  UpdateWizardFilesButtons;
-end;
-
-procedure TWizardForm.AppFilesListBoxDblClick(Sender: TObject);
-begin
-  if AppFilesEditButton.Enabled then
-    AppFilesEditButton.Click;
-end;
-
-procedure TWizardForm.AppFilesListBoxDropFile(Sender: TDropListBox;
-  const FileName: String);
-begin
-  if DirExists(FileName) then
-    AddWizardFile(AddBackslash(FileName) + '*', True, True)
-  else
-    AddWizardFile(FileName, False, False);
-  UpdateWizardFiles;
-  UpdateWizardFilesButtons;
-end;
-
-procedure TWizardForm.AppFilesEditButtonClick(Sender: TObject);
-var
-  WizardFileForm: TWizardFileForm;
-  Index: Integer;
-begin
-  WizardFileForm := TWizardFileForm.Create(Application);
-  try
-    Index := AppFilesListBox.ItemIndex;
-    WizardFileForm.AllowAppDestRootDir := not NotCreateAppDirCheck.Checked;
-    WizardFileForm.WizardFile := FWizardFiles[Index];
-    if WizardFileForm.ShowModal = mrOK then begin
-      UpdateWizardFiles;
-      AppFilesListBox.ItemIndex := Index;
-      AppFilesListBox.TopIndex := Index;
-      UpdateWizardFilesButtons;
-    end;
-  finally
-    WizardFileForm.Free;
-  end;
-end;
-
-procedure TWizardForm.AppFilesRemoveButtonClick(Sender: TObject);
-var
-  I: Integer;
-begin
-  I := AppFilesListBox.ItemIndex;
-  Dispose(FWizardFiles[I]);
-  FWizardFiles.Delete(I);
-  UpdateWizardFiles;
-  UpdateWizardFilesButtons;
-end;
-
 procedure TWizardForm.CreateAssocCheckClick(Sender: TObject);
 begin
   UpdateAppAssocControls;
@@ -904,7 +796,6 @@ end;
 procedure TWizardForm.GenerateScript;
 var
   Script, ISPP, Setup, Languages, Tasks, Files, Registry, INI, Icons, Run, UninstallDelete: String;
-  WizardFile: PWizardFile;
   I: Integer;
   AppExeName, AppName, AppAmpEscapedName, AppAssocKey, LanguageName, LanguageMessagesFile: String;
 begin
@@ -1019,15 +910,7 @@ begin
       Registry := Registry + 'Root: HKA; Subkey: "Software\Classes\Applications\' + AppExeName + '\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: ""' + SNewLine;
     end;
 
-    for I := 0 to FWizardFiles.Count-1 do begin
-      WizardFile := FWizardFiles[I];
-      Files := Files + 'Source: "' + WizardFile.Source + '"; DestDir: "' + RemoveBackslashUnlessRoot(AddBackslash(WizardFile.DestRootDir) + WizardFile.DestSubDir) + '"; Flags: ignoreversion';
-      if WizardFile.RecurseSubDirs then
-        Files := Files + ' recursesubdirs';
-      if WizardFile.CreateAllSubDirs then
-        Files := Files + ' createallsubdirs';
-      Files := Files + SNewLine;
-    end;
+    FFilesHelper.AddScript(Files);
 
     { AppGroup }
     if not NotCreateAppDirCheck.Checked then begin

+ 105 - 9
Projects/CompWizardFilesHelper.pas

@@ -13,28 +13,36 @@ type
       FHandle: HWND;
       FNotCreateAppDirCheck: TCheckBox;
       FFilesListBox: TDropListBox;
+      FEditButton: TButton;
+      FRemoveButton: TButton;
       procedure AddWizardFile(const Source: String; const RecurseSubDirs, CreateAllSubDirs: Boolean);
       procedure UpdateWizardFiles;
+      procedure UpdateWizardFilesButtons;
+      procedure FilesListBoxClick(Sender: TObject);
+      procedure FilesListBoxDblClick(Sender: TObject);
+      procedure FilesListBoxDropFile(Sender: TDropListBox; const FileName: String);
       procedure AddButtonClick(Sender: TObject);
       procedure AddDirButtonClick(Sender: TObject);
+      procedure EditButtonClick(Sender: TObject);
+      procedure RemoveButtonClick(Sender: TObject);
     public
-      property WizardFiles: TList read FWizardFiles;
-      constructor Create(const Handle: HWND; const WizardFiles: TList;
-        const NotCreateAppDirCheck: TCheckBox; const AddButton, AddDirButton: TButton;
-        const FilesListBox: TDropListBox);
+      constructor Create(const Handle: HWND;
+        const NotCreateAppDirCheck: TCheckBox; const FilesListBox: TDropListBox;
+        const AddButton, AddDirButton, EditButton, RemoveButton: TButton);
       destructor Destroy; override;
+      procedure AddScript(var Files: String);
   end;
 
 implementation
 
 uses
-  SysUtils,
-  CmnFunc, BrowseFunc, PathFunc,
+  SysUtils, Forms, UITypes,
+  CmnFunc, CmnFunc2, BrowseFunc, PathFunc,
   CompMsgs, CompWizardFile;
 
 constructor TWizardFormFilesHelper.Create(const Handle: HWND;
-  const WizardFiles: TList; const NotCreateAppDirCheck: TCheckBox;
-  const AddButton, AddDirButton: TButton; const FilesListBox: TDropListBox);
+  const NotCreateAppDirCheck: TCheckBox; const FilesListBox: TDropListBox;
+  const AddButton, AddDirButton, EditButton, RemoveButton: TButton);
 begin
   inherited Create;
 
@@ -42,10 +50,19 @@ begin
 
   FHandle := Handle;
   FNotCreateAppDirCheck := NotCreateAppDirCheck;
-  FFilesListBox :=FilesListBox;
+  FFilesListBox := FilesListBox;
+  FEditButton := EditButton;
+  FRemoveButton := RemoveButton;
 
+  FilesListBox.OnClick := FilesListBoxClick;
+  FilesListBox.OnDblClick := FilesListBoxDblClick;
+  FilesListBox.OnDropFile :=   FilesListBoxDropFile;
   AddButton.OnClick := AddButtonClick;
   AddDirButton.OnClick := AddDirButtonClick;
+  EditButton.OnClick := EditButtonClick;
+  RemoveButton.OnClick := RemoveButtonClick;
+
+  UpdateWizardFilesButtons;
 end;
 
 destructor TWizardFormFilesHelper.Destroy;
@@ -87,6 +104,37 @@ begin
   UpdateHorizontalExtent(FFilesListBox);
 end;
 
+procedure TWizardFormFilesHelper.UpdateWizardFilesButtons;
+var
+  Enabled: Boolean;
+begin
+  Enabled := FFilesListBox.ItemIndex >= 0;
+  FEditButton.Enabled := Enabled;
+  FRemoveButton.Enabled := Enabled;
+end;
+
+procedure TWizardFormFilesHelper.FilesListBoxClick(Sender: TObject);
+begin
+  UpdateWizardFilesButtons;
+end;
+
+procedure TWizardFormFilesHelper.FilesListBoxDblClick(Sender: TObject);
+begin
+  if FEditButton.Enabled then
+    FEditButton.Click;
+end;
+
+procedure TWizardFormFilesHelper.FilesListBoxDropFile(Sender: TDropListBox;
+  const FileName: String);
+begin
+  if DirExists(FileName) then
+    AddWizardFile(AddBackslash(FileName) + '*', True, True)
+  else
+    AddWizardFile(FileName, False, False);
+  UpdateWizardFiles;
+  UpdateWizardFilesButtons;
+end;
+
 procedure TWizardFormFilesHelper.AddButtonClick(Sender: TObject);
 var
   FileList: TStringList;
@@ -123,4 +171,52 @@ begin
   end;
 end;
 
+procedure TWizardFormFilesHelper.EditButtonClick(Sender: TObject);
+var
+  WizardFileForm: TWizardFileForm;
+  Index: Integer;
+begin
+  WizardFileForm := TWizardFileForm.Create(Application);
+  try
+    Index := FFilesListBox.ItemIndex;
+    WizardFileForm.AllowAppDestRootDir := not FNotCreateAppDirCheck.Checked;
+    WizardFileForm.WizardFile := FWizardFiles[Index];
+    if WizardFileForm.ShowModal = mrOk then begin
+      UpdateWizardFiles;
+      FFilesListBox.ItemIndex := Index;
+      FFilesListBox.TopIndex := Index;
+      UpdateWizardFilesButtons;
+    end;
+  finally
+    WizardFileForm.Free;
+  end;
+end;
+
+procedure TWizardFormFilesHelper.RemoveButtonClick(Sender: TObject);
+var
+  I: Integer;
+begin
+  I := FFilesListBox.ItemIndex;
+    Dispose(FWizardFiles[I]);
+  FWizardFiles.Delete(I);
+  UpdateWizardFiles;
+  UpdateWizardFilesButtons;
+end;
+
+procedure TWizardFormFilesHelper.AddScript(var Files: String);
+var
+  WizardFile: PWizardFile;
+  I: Integer;
+begin
+  for I := 0 to FWizardFiles.Count-1 do begin
+    WizardFile := FWizardFiles[I];
+    Files := Files + 'Source: "' + WizardFile.Source + '"; DestDir: "' + RemoveBackslashUnlessRoot(AddBackslash(WizardFile.DestRootDir) + WizardFile.DestSubDir) + '"; Flags: ignoreversion';
+    if WizardFile.RecurseSubDirs then
+      Files := Files + ' recursesubdirs';
+    if WizardFile.CreateAllSubDirs then
+      Files := Files + ' createallsubdirs';
+    Files := Files + SNewLine;
+  end;
+end;
+
 end.

+ 0 - 1
Projects/Compil32.dpr

@@ -192,6 +192,5 @@ begin
   end;
 
   Application.CreateForm(TCompileForm, CompileForm);
-  Application.CreateForm(TCFLWForm, CFLWForm);
   Application.Run;
 end.