mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-23 18:03:04 +01:00
349 lines
10 KiB
PHP
349 lines
10 KiB
PHP
(* Initial Developer's Public License.
|
|
The contents of this file are subject to the Initial Developer's Public
|
|
License Version 1.0 (the "License"). You may not use this file except
|
|
in compliance with the License. You may obtain a copy of the License at
|
|
http://www.ibphoenix.com?a=ibphoenix&page=ibp_idpl
|
|
Software distributed under the License is distributed on an "AS IS" basis,
|
|
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
for the specific language governing rights and limitations under the
|
|
License.
|
|
|
|
The Original Code is copyright 2007 Paul Reeves.
|
|
|
|
The Initial Developer of the Original Code is Paul Reeves.
|
|
|
|
All Rights Reserved.
|
|
|
|
GUI related functions for the Firebird Installer.
|
|
|
|
o ResizeWizardFormHeight
|
|
- Change height of Wizard Form
|
|
- Adjust the position of each control to work in new height.
|
|
|
|
o ResizeWizardFormWidth
|
|
- Make form wider
|
|
|
|
o MoveOuterNoteBook
|
|
- Move OuterNotebook and Bevel.
|
|
Value moved should match value passed to ResizeWizardFormWidth.
|
|
|
|
o EnumerateObjectList;
|
|
- Simple demonstration of object enumeration.
|
|
|
|
o Show Help
|
|
- CreateHelpDlg;
|
|
- ShowHelpDlg: Integer;
|
|
- CloseHelpDlg;
|
|
|
|
o Show some debug info for debugging inno setup script
|
|
- CreateDebugDlg
|
|
- CloseDebugDlg;
|
|
- ShowDebugDlg
|
|
|
|
*)
|
|
|
|
var
|
|
CompGroup1Array: array of string;
|
|
CompGroup2Array: array of string;
|
|
CompGroup3Array: array of string;
|
|
CompGroupButtonsArray: array of string;
|
|
CompGroup1, CompGroup2, CompGroup3, CompGroupButtons: TStringList;
|
|
|
|
// This is a non-exhaustive list of components that need to be repositioned
|
|
// and/or resized if the form size is changed. Use EnumerateObjectList to
|
|
// get a full list of components.
|
|
procedure SetupWizardFormComponentsArrays;
|
|
var
|
|
i: integer;
|
|
begin
|
|
|
|
SetArrayLength(CompGroup1Array,24);
|
|
|
|
CompGroup1Array[0]:='WelcomePage';
|
|
CompGroup1Array[1]:='WelcomeLabel2';
|
|
CompGroup1Array[2]:='InnerPage';
|
|
CompGroup1Array[3]:='InnerNotebook';
|
|
CompGroup1Array[4]:='LicensePage';
|
|
CompGroup1Array[5]:='LicenseMemo';
|
|
CompGroup1Array[6]:='PasswordPage';
|
|
CompGroup1Array[7]:='InfoBeforePage';
|
|
CompGroup1Array[8]:='InfoBeforeMemo';
|
|
CompGroup1Array[9]:='UserInfoPage';
|
|
CompGroup1Array[10]:='SelectDirPage';
|
|
CompGroup1Array[11]:='SelectComponentsPage';
|
|
CompGroup1Array[12]:='ComponentsList';
|
|
CompGroup1Array[13]:='SelectProgramGroupPage';
|
|
CompGroup1Array[14]:='SelectTasksPage';
|
|
CompGroup1Array[15]:='TasksList';
|
|
CompGroup1Array[16]:='ReadyPage';
|
|
CompGroup1Array[17]:='ReadyMemo';
|
|
CompGroup1Array[18]:='PreparingPage';
|
|
CompGroup1Array[19]:='InstallingPage';
|
|
CompGroup1Array[20]:='InfoAfterPage';
|
|
CompGroup1Array[21]:='InfoAfterMemo';
|
|
CompGroup1Array[22]:='FinishedPage';
|
|
CompGroup1Array[23]:='OuterNotebook';
|
|
|
|
CompGroup1 := TStringList.create;
|
|
|
|
for i := 0 to GetArrayLength( CompGroup1Array )-1 do begin
|
|
CompGroup1.add( CompGroup1Array[i] );
|
|
CompGroup1.objects[i] := (WizardForm.FindComponent(CompGroup1Array[i]));
|
|
end;
|
|
|
|
SetArrayLength(CompGroup2Array,8);
|
|
CompGroup2Array[0] := 'Bevel';
|
|
CompGroup2Array[1] := 'BeveledLabel';
|
|
CompGroup2Array[2] := 'LicenseAcceptedRadio';
|
|
CompGroup2Array[3] := 'LicenseNotAcceptedRadio';
|
|
CompGroup2Array[4] := 'DiskSpaceLabel';
|
|
CompGroup2Array[5] := 'ComponentsDiskSpaceLabel';
|
|
CompGroup2Array[6] := 'NoIconsCheck';
|
|
CompGroup2Array[7] := 'RunList';
|
|
|
|
CompGroup2 := TStringList.create;
|
|
for i := 0 to GetArrayLength( CompGroup2Array )-1 do begin
|
|
CompGroup2.add(CompGroup2Array[i]);
|
|
CompGroup2.objects[i] := (WizardForm.FindComponent(CompGroup2Array[i]));
|
|
end;
|
|
|
|
SetArrayLength(CompGroup3Array,1);
|
|
CompGroup3Array[0] := 'WizardBitmapImage';
|
|
CompGroup3 := TStringList.create;
|
|
for i:=0 to GetArrayLength(CompGroup3Array)-1 do begin
|
|
CompGroup3.add(CompGroup3Array[i]);
|
|
CompGroup3.objects[i] := (WizardForm.FindComponent(CompGroup3Array[i]));
|
|
end;
|
|
|
|
SetArrayLength(CompGroupButtonsArray,3);
|
|
CompGroupButtonsArray[0] := 'BackButton';
|
|
CompGroupButtonsArray[1] := 'NextButton';
|
|
CompGroupButtonsArray[2] := 'CancelButton';
|
|
CompGroupButtons := TStringList.create;
|
|
for i:=0 to GetArrayLength(CompGroupButtonsArray)-1 do begin
|
|
CompGroupButtons.add(CompGroupButtonsArray[i]);
|
|
CompGroupButtons.objects[i] := (WizardForm.FindComponent(CompGroupButtonsArray[i]));
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure ResizeWizardFormHeight(AValue: Integer);
|
|
var
|
|
i: integer;
|
|
begin
|
|
wizardform.height := wizardform.height+AValue;
|
|
wizardform.top := wizardform.top - (AValue div 2);
|
|
|
|
// Group 1 - reset height of components
|
|
for i:=0 to GetArrayLength(CompGroup1Array)-1 do
|
|
TControl(CompGroup1.objects[i]).height := TControl(CompGroup1.objects[i]).height + Avalue;
|
|
|
|
// Group 2 - reset top of components
|
|
for i:=0 to GetArrayLength(CompGroup2Array)-1 do
|
|
TControl(CompGroup2.objects[i]).top := TControl(CompGroup2.objects[i]).top + AValue;
|
|
|
|
// Group 3 - reset top of components but keep 'centered' vertically.
|
|
for i:=0 to GetArrayLength(CompGroup3Array)-1 do
|
|
TControl( CompGroup3.objects[i]).top := TControl(CompGroup3.objects[i]).top + (AValue div 2);
|
|
|
|
// Group Buttons - reset top of components
|
|
for i:=0 to GetArrayLength(CompGroupButtonsArray)-1 do
|
|
TControl(CompGroupButtons.objects[i]).top := TControl(CompGroupButtons.objects[i]).top + AValue;
|
|
|
|
end;
|
|
|
|
|
|
// This needs more work. for now it is not used by the installer.
|
|
procedure ResizeWizardFormWidth(AValue: Integer);
|
|
var
|
|
i: integer;
|
|
begin
|
|
wizardform.width := wizardform.width + AValue;
|
|
wizardform.left := wizardform.left - (AValue div 2);
|
|
|
|
// Group 1 - reset width of components
|
|
for i:=0 to GetArrayLength(CompGroup1Array)-1 do begin
|
|
TControl(CompGroup1.objects[i]).width := TControl(CompGroup1.objects[i]).width + Avalue;
|
|
// TControl(CompGroup1.objects[i]).left := TControl(CompGroup1.objects[i]).left + (Avalue div 2);
|
|
end;
|
|
|
|
// Group 2 - reset left of components
|
|
for i:=0 to GetArrayLength(CompGroup2Array)-1 do begin
|
|
TControl(CompGroup2.objects[i]).left := TControl(CompGroup2.objects[i]).left + AValue;
|
|
TControl(CompGroup2.objects[i]).width := TControl(CompGroup2.objects[i]).width + (AValue div 2);
|
|
end;
|
|
|
|
// Group 3 - reset left of components but keep 'centered' horizontally.
|
|
// for i:=0 to GetArrayLength(CompGroup3Array)-1 do
|
|
// TControl( CompGroup3.objects[i]).left := TControl(CompGroup3.objects[i]).left - (AValue div 2);
|
|
|
|
// Group 4 - reset left of buttons
|
|
for i:=0 to GetArrayLength(CompGroupButtonsArray)-1 do begin
|
|
TControl(CompGroupButtons.objects[i]).left := TControl(CompGroupButtons.objects[i]).left + AValue;
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure MoveOuterNoteBookRight(AValue: Integer);
|
|
begin
|
|
with wizardform do begin
|
|
OuterNotebook.left := wizardform.OuterNotebook.left + AValue;
|
|
Bevel.left := Bevel.left + AValue;
|
|
end;
|
|
end;
|
|
|
|
procedure MoveOuterNoteBookLeft(AValue: Integer);
|
|
begin
|
|
with wizardform do begin
|
|
OuterNotebook.left := wizardform.OuterNotebook.left - AValue;
|
|
Bevel.left := Bevel.left - AValue;
|
|
end;
|
|
end;
|
|
|
|
const
|
|
group1 = ' group one';
|
|
group2 = ' group two';
|
|
group3 = ' group three';
|
|
group4 = ' group not allocated.';
|
|
|
|
procedure EnumerateObjectList;
|
|
//Walk through the components on the InnoSetup install wizard
|
|
var
|
|
Alist: TStringList;
|
|
i: integer;
|
|
aComponent: string;
|
|
|
|
begin
|
|
Alist := TStringList.create;
|
|
for i := 0 to WizardForm.ComponentCount -1 do begin
|
|
aComponent := WizardForm.Components[i].name;
|
|
if CompGroup1.IndexOf( aComponent ) > -1 then
|
|
aComponent := aComponent + group1
|
|
else if CompGroup2.IndexOf( aComponent ) > -1 then
|
|
aComponent := aComponent + group2
|
|
else if CompGroup3.IndexOf( aComponent ) > -1 then
|
|
aComponent := aComponent + group3
|
|
else
|
|
aComponent := aComponent + group4;
|
|
|
|
|
|
AList.add( aComponent );
|
|
end;
|
|
WizardForm.INFOBEFOREMEMO.lines.assign(Alist);
|
|
end;
|
|
|
|
|
|
var
|
|
HelpDlg: TForm;
|
|
|
|
procedure CreateHelpDlg;
|
|
var
|
|
HelpFileName: String;
|
|
HelpMemo: TMemo;
|
|
OKButton: TButton;
|
|
begin
|
|
ExtractTemporaryFile ('installation_scripted.txt');
|
|
HelpFileName := ExpandConstant ('{tmp}\installation_scripted.txt');
|
|
HelpDlg := TForm.create(nil);
|
|
with HelpDlg do begin
|
|
BorderStyle := bsDialog;
|
|
Position := poScreenCenter;
|
|
ClientWidth := 450;
|
|
ClientHeight := 550;
|
|
Caption := 'Firebird Installation - command-line parameters.';
|
|
end;
|
|
HelpMemo := TMemo.Create(HelpDlg);
|
|
with HelpMemo do begin
|
|
Parent := HelpDlg;
|
|
ScrollBars := ssVertical;
|
|
Lines.LoadFromFile(HelpFileName);
|
|
Align := alTop;
|
|
Height := 500;
|
|
ReadOnly := True;
|
|
end;
|
|
OKButton := TButton.create(HelpDlg);
|
|
with OKButton do begin
|
|
Parent := HelpDlg;
|
|
Left := (Parent.width div 2) - width div 2;
|
|
top := Parent.ClientHeight - 40;
|
|
Caption := 'OK';
|
|
ModalResult := mrOK;
|
|
end;
|
|
HelpDlg.ActiveControl := OKButton;
|
|
end;
|
|
|
|
|
|
procedure CloseHelpDlg;
|
|
begin
|
|
with HelpDlg do begin
|
|
Close;
|
|
Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
function ShowHelpDlg: Integer;
|
|
begin
|
|
CreateHelpDlg;
|
|
result := HelpDlg.ShowModal;
|
|
CloseHelpDlg;
|
|
end;
|
|
|
|
|
|
// Add a simple debug dialogue
|
|
var
|
|
DebugDlg: TForm;
|
|
|
|
procedure CreateDebugDlg(aString: String; ADescription: String);
|
|
var
|
|
DebugText: TMemo;
|
|
// DebugDescription: TLabel;
|
|
OKButton: TButton;
|
|
begin
|
|
DebugDlg := TForm.create(nil);
|
|
with DebugDlg do begin
|
|
BorderStyle := bsSizeable;
|
|
Position := poScreenCenter;
|
|
ClientWidth := 450;
|
|
ClientHeight := 350;
|
|
Caption := 'Firebird Installation - command-line parameters.';
|
|
end;
|
|
DebugText := TMemo.Create(DebugDlg);
|
|
with DebugText do begin
|
|
Parent := DebugDlg;
|
|
ScrollBars := ssVertical;
|
|
Lines.Text :=aString;
|
|
Align := alTop;
|
|
Height := 200;
|
|
ReadOnly := True;
|
|
end;
|
|
OKButton := TButton.create(DebugDlg);
|
|
with OKButton do begin
|
|
Parent := DebugDlg;
|
|
Left := (Parent.width div 2) - width div 2;
|
|
top := Parent.ClientHeight - 40;
|
|
Caption := 'OK';
|
|
ModalResult := mrOK;
|
|
end;
|
|
DebugDlg.ActiveControl := OKButton;
|
|
|
|
end;
|
|
|
|
|
|
procedure CloseDebugDlg;
|
|
begin
|
|
with DebugDlg do begin
|
|
Close;
|
|
Free;
|
|
end;
|
|
end;
|
|
|
|
|
|
function ShowDebugDlg(aString: String; aDescription: String): Integer;
|
|
begin
|
|
CreateDebugDlg(aString,aDescription);
|
|
result := DebugDlg.ShowModal;
|
|
CloseDebugDlg;
|
|
end;
|
|
|