Linux desktop: update the desktop screenshot
[scilab.git] / scilab / tools / innosetup / code_offline_installation.iss
1 //
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) DIGITEO - 2010-2011 - Allan CORNET
4 //
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at
9 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10 //
11 //------------------------------------------------------------------------------
12 // Inno Setup Script (5.3 and more) for Scilab (UNICODE version required)
13 //
14 //------------------------------------------------------------------------------
15
16 var
17   OfflineInstallCheckBox: TNewCheckBox;
18
19 //------------------------------------------------------------------------------
20 // Sets the state of a component given by its english name
21 function SetComponentState(ComponentEnglishName: String;
22   Checked: Boolean; Enabled: Boolean): Boolean;
23 var
24   ComponentLocalizedName: String;
25   Index: Integer;
26 begin
27   ComponentLocalizedName := CustomMessage(ComponentEnglishName);
28   Index := WizardForm.ComponentsList.Items.IndexOf(ComponentLocalizedName);
29   if Index <> -1 then
30   begin
31     WizardForm.ComponentsList.Checked[Index] := Checked;
32     WizardForm.ComponentsList.ItemEnabled[Index] := Enabled;
33     Result := True;
34   end else
35   begin
36     Log('SetComponentState: cannot find component ' + ComponentEnglishName);
37     Result := False;
38   end;
39 end;
40 //------------------------------------------------------------------------------
41 // Offline installation option is checked : disable the components needing
42 // to be downloaded (MKL, FFTW)
43 procedure OnOfflineInstallCheckBoxClick(Sender: TObject);
44 var
45   IsOnline: Boolean;
46   Res: Boolean;
47 begin
48   // Bug: IsOnline := not ((Sender as TNewCheckBox).Checked) provokes errors
49   If (Sender as TNewCheckBox).Checked then
50     IsOnline := False
51   else
52     IsOnline := True;
53
54   // CPU Optimization
55   Res := SetComponentState('DescriptionMKLLibrary', IsOnline, IsOnline);
56   if not IsOnline then
57   begin
58 #ifndef SCILAB_X64
59     Res := Res and SetComponentState('DescriptionATLASLibrary', True, True);
60 #else
61     Res := Res and SetComponentState('DescriptionRefBlasLibrary', True, True);
62 #endif
63   end;
64
65   // FFTW
66   Res := Res and SetComponentState('DescriptionFftwMKLDownload', IsOnline,
67     IsOnline);
68   if not IsOnline then
69   begin
70     Res := Res and SetComponentState('DescriptionRefFftwLibrary', True, True);
71   end;
72
73   if not Res then
74   begin
75     Log('OfflineInstallCheckBoxOnClick: ' +
76       'Error while changing components intallation.');
77   end;
78
79   // Refresh installation type (Online => Full, Offline => Custom)
80   if IsOnline then
81     WizardForm.TypesCombo.ItemIndex := 0
82   else
83     WizardForm.TypesCombo.ItemIndex := 2;
84
85   // Bug: need to trigger manually the TypesCombo.OnChange event
86   WizardForm.TypesCombo.OnChange(WizardForm);
87 end;
88 //------------------------------------------------------------------------------
89 // Adds an "Offline installation" option (check box)in the Select Location panel
90 procedure CreateOfflineInstallationCheckBox;
91 var
92   LastControl: TWinControl;
93 begin
94   LastControl := WizardForm.DirEdit;
95
96   OfflineInstallCheckBox := TNewCheckBox.Create(WizardForm);
97   OfflineInstallCheckBox.Parent := WizardForm.SelectDirPage;
98   OfflineInstallCheckBox.Top := LastControl.Top +
99     LastControl.Height + ScaleY(8);
100   OfflineInstallCheckBox.Width := WizardForm.SelectDirPage.Width;
101   OfflineInstallCheckBox.Caption :=
102     'Installation without an Internet connection';
103   OfflineInstallCheckBox.OnClick := @OnOfflineInstallCheckBoxClick;
104 end;
105