mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-14 02:26:12 +02:00
* updated to use tab pages
This commit is contained in:
parent
47045ce6d3
commit
fa0138d67d
@ -28,8 +28,13 @@ NEEDUNITDIR=../../api ../../fv
|
|||||||
#####################################################################
|
#####################################################################
|
||||||
|
|
||||||
UNITOBJECTS=ziptypes unzip
|
UNITOBJECTS=ziptypes unzip
|
||||||
EXEOBJECTS=install
|
|
||||||
|
|
||||||
|
# this hack is needed to solve dup install target
|
||||||
|
ifdef linux
|
||||||
|
EXEOBJECTS=installer
|
||||||
|
else
|
||||||
|
EXEOBJECTS=install
|
||||||
|
endif
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
# Common targets
|
# Common targets
|
||||||
@ -102,9 +107,17 @@ endif
|
|||||||
# Dependencies
|
# Dependencies
|
||||||
#####################################################################
|
#####################################################################
|
||||||
|
|
||||||
|
ifdef linux
|
||||||
|
installer: install.pas
|
||||||
|
$(COMPILER) install.pas
|
||||||
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# $Log$
|
# $Log$
|
||||||
# Revision 1.4 1999-05-30 11:34:34 peter
|
# Revision 1.5 1999-06-29 22:20:18 peter
|
||||||
|
# * updated to use tab pages
|
||||||
|
#
|
||||||
|
# Revision 1.4 1999/05/30 11:34:34 peter
|
||||||
# * updates to generate the installer
|
# * updates to generate the installer
|
||||||
#
|
#
|
||||||
# Revision 1.3 1999/05/02 14:27:39 peter
|
# Revision 1.3 1999/05/02 14:27:39 peter
|
||||||
|
@ -74,11 +74,12 @@ program install;
|
|||||||
{$IFDEF DLL}
|
{$IFDEF DLL}
|
||||||
unzipdll,
|
unzipdll,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
app,dialogs,views,menus,msgbox;
|
app,dialogs,views,menus,msgbox,tabs;
|
||||||
|
|
||||||
|
|
||||||
const
|
const
|
||||||
maxpackages=20;
|
maxpackages=20;
|
||||||
|
maxsources=20;
|
||||||
maxdefcfgs=1024;
|
maxdefcfgs=1024;
|
||||||
|
|
||||||
CfgExt = '.dat';
|
CfgExt = '.dat';
|
||||||
@ -103,6 +104,8 @@ program install;
|
|||||||
ppc386 : string[12];
|
ppc386 : string[12];
|
||||||
packages : longint;
|
packages : longint;
|
||||||
package : array[1..maxpackages] of tpackage;
|
package : array[1..maxpackages] of tpackage;
|
||||||
|
sources : longint;
|
||||||
|
source : array[1..maxsources] of tpackage;
|
||||||
defcfgfile : string[12];
|
defcfgfile : string[12];
|
||||||
defcfgs : longint;
|
defcfgs : longint;
|
||||||
defcfg : array[1..maxdefcfgs] of pstring;
|
defcfg : array[1..maxdefcfgs] of pstring;
|
||||||
@ -110,7 +113,8 @@ program install;
|
|||||||
|
|
||||||
datarec=packed record
|
datarec=packed record
|
||||||
basepath : DirStr;
|
basepath : DirStr;
|
||||||
mask : word;
|
packmask : word;
|
||||||
|
srcmask : word;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
punzipdialog=^tunzipdialog;
|
punzipdialog=^tunzipdialog;
|
||||||
@ -504,13 +508,6 @@ program install;
|
|||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
|
|
||||||
constructor tinstalldialog.init;
|
constructor tinstalldialog.init;
|
||||||
var
|
|
||||||
r : trect;
|
|
||||||
mask_components : longint;
|
|
||||||
i,line : integer;
|
|
||||||
items : psitem;
|
|
||||||
p,f : pview;
|
|
||||||
|
|
||||||
const
|
const
|
||||||
width = 76;
|
width = 76;
|
||||||
height = 20;
|
height = 20;
|
||||||
@ -518,20 +515,19 @@ program install;
|
|||||||
y1 = (23-height) div 2;
|
y1 = (23-height) div 2;
|
||||||
x2 = x1+width;
|
x2 = x1+width;
|
||||||
y2 = y1+height;
|
y2 = y1+height;
|
||||||
|
var
|
||||||
|
tabr,tabir,r : trect;
|
||||||
|
srcmask,
|
||||||
|
mask_components : longint;
|
||||||
|
i,line : integer;
|
||||||
|
srcitems,items : psitem;
|
||||||
|
f : pview;
|
||||||
|
okbut,cancelbut : pbutton;
|
||||||
|
packcbs,sourcecbs : pcheckboxes;
|
||||||
|
labpath : plabel;
|
||||||
|
ilpath : pinputline;
|
||||||
|
tab : ptab;
|
||||||
begin
|
begin
|
||||||
r.assign(x1,y1,x2,y2);
|
|
||||||
inherited init(r,cfg.title+' Installation');
|
|
||||||
|
|
||||||
line:=1;
|
|
||||||
r.assign(3,line+1,28,line+2);
|
|
||||||
|
|
||||||
f:=new(pinputline,init(r,high(DirStr)));
|
|
||||||
insert(f);
|
|
||||||
|
|
||||||
r.assign(3,line,8,line+1);
|
|
||||||
insert(new(plabel,init(r,'~P~ath',f)));
|
|
||||||
|
|
||||||
{ walk packages reverse and insert a newsitem for each, and set the mask }
|
{ walk packages reverse and insert a newsitem for each, and set the mask }
|
||||||
items:=nil;
|
items:=nil;
|
||||||
mask_components:=0;
|
mask_components:=0;
|
||||||
@ -543,33 +539,88 @@ program install;
|
|||||||
mask_components:=mask_components or packagemask(i);
|
mask_components:=mask_components or packagemask(i);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
items:=newsitem(cfg.package[i].name,items);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ walk source packages reverse and insert a newsitem for each, and set the mask }
|
||||||
|
srcitems:=nil;
|
||||||
|
srcmask:=0;
|
||||||
|
for i:=cfg.sources downto 1 do
|
||||||
|
begin
|
||||||
|
if file_exists(cfg.source[i].zip,startpath) then
|
||||||
begin
|
begin
|
||||||
items:=newsitem(cfg.package[i].name,items);
|
srcitems:=newsitem(cfg.source[i].name+diskspace(startpath+DirSep+cfg.source[i].zip),srcitems);
|
||||||
end;
|
mask_components:=mask_components or packagemask(i);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
srcitems:=newsitem(cfg.source[i].name,srcitems);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ If no component found abort }
|
{ If no component found abort }
|
||||||
if mask_components=0 then
|
if (mask_components=0) and (srcmask=0) then
|
||||||
begin
|
begin
|
||||||
messagebox('No components found to install, aborting.',nil,mferror+mfokbutton);
|
messagebox('No components found to install, aborting.',nil,mferror+mfokbutton);
|
||||||
errorhalt;
|
errorhalt;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
inc(line,3);
|
r.assign(x1,y1,x2,y2);
|
||||||
r.assign(3,line+1,width-3,line+cfg.packages+1);
|
inherited init(r,cfg.title+' Installation');
|
||||||
p:=new(pcheckboxes,init(r,items));
|
GetExtent(R);
|
||||||
r.assign(3,line,14,line+1);
|
R.Grow(-2,-1);
|
||||||
insert(new(plabel,init(r,'~C~omponents',p)));
|
Dec(R.B.Y,2);
|
||||||
pcluster(p)^.enablemask:=mask_components;
|
TabR.Copy(R);
|
||||||
insert(p);
|
TabIR.Copy(R);
|
||||||
|
TabIR.Grow(-2,-2);
|
||||||
|
TabIR.Move(-2,0);
|
||||||
|
|
||||||
inc(line,cfg.packages+2);
|
{-------- Sheet 1 ----------}
|
||||||
|
R.Copy(TabIR);
|
||||||
|
r.b.x:=r.a.x+6;
|
||||||
|
r.b.y:=r.a.y+1;
|
||||||
|
new(labpath,init(r,'~P~ath',f));
|
||||||
|
|
||||||
|
r.move(0,1);
|
||||||
|
r.b.x:=r.a.x+40;
|
||||||
|
new(ilpath,init(r,high(DirStr)));
|
||||||
|
|
||||||
|
{-------- Sheet 2 ----------}
|
||||||
|
R.Copy(TabIR);
|
||||||
|
new(packcbs,init(r,items));
|
||||||
|
data.packmask:=mask_components;
|
||||||
|
pcluster(packcbs)^.enablemask:=mask_components;
|
||||||
|
|
||||||
|
{-------- Sheet 3 ----------}
|
||||||
|
R.Copy(TabIR);
|
||||||
|
new(sourcecbs,init(r,srcitems));
|
||||||
|
data.srcmask:=srcmask;
|
||||||
|
pcluster(sourcecbs)^.enablemask:=srcmask;
|
||||||
|
|
||||||
|
{--------- Main ---------}
|
||||||
|
New(Tab, Init(TabR,
|
||||||
|
NewTabDef('~G~eneral',IlPath,
|
||||||
|
NewTabItem(LabPath,
|
||||||
|
NewTabItem(ILPath,
|
||||||
|
nil)),
|
||||||
|
NewTabDef('~P~ackages',PackCbs,
|
||||||
|
NewTabItem(PackCbs,
|
||||||
|
nil),
|
||||||
|
NewTabDef('~S~ources',SourceCbs,
|
||||||
|
NewTabItem(SourceCbs,
|
||||||
|
nil),
|
||||||
|
nil)))));
|
||||||
|
Tab^.GrowMode:=0;
|
||||||
|
Insert(Tab);
|
||||||
|
|
||||||
|
line:=tabr.b.y;
|
||||||
r.assign((width div 2)-14,line,(width div 2)-4,line+2);
|
r.assign((width div 2)-14,line,(width div 2)-4,line+2);
|
||||||
insert(new(pbutton,init(r,'~O~k',cmok,bfdefault)));
|
new(okbut,init(r,'~O~k',cmok,bfdefault));
|
||||||
r.assign((width div 2)+4,line,(width div 2)+14,line+2);
|
Insert(OkBut);
|
||||||
insert(new(pbutton,init(r,'~C~ancel',cmcancel,bfnormal)));
|
|
||||||
|
|
||||||
f^.select;
|
r.assign((width div 2)+4,line,(width div 2)+14,line+2);
|
||||||
|
new(cancelbut,init(r,'~C~ancel',cmcancel,bfnormal));
|
||||||
|
Insert(CancelBut);
|
||||||
|
|
||||||
|
Tab^.Select;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -588,11 +639,15 @@ program install;
|
|||||||
r : trect;
|
r : trect;
|
||||||
result,
|
result,
|
||||||
c : word;
|
c : word;
|
||||||
i, DSize, Space : longint;
|
i : longint;
|
||||||
|
{$ifndef linux}
|
||||||
|
DSize,Space : longint;
|
||||||
S: DirStr;
|
S: DirStr;
|
||||||
|
{$endif}
|
||||||
begin
|
begin
|
||||||
data.basepath:=cfg.basepath;
|
data.basepath:=cfg.basepath;
|
||||||
data.mask:=0;
|
data.srcmask:=0;
|
||||||
|
data.packmask:=0;
|
||||||
|
|
||||||
repeat
|
repeat
|
||||||
{ select components }
|
{ select components }
|
||||||
@ -604,13 +659,21 @@ program install;
|
|||||||
messagebox('Please, choose the directory for installation first.',nil,
|
messagebox('Please, choose the directory for installation first.',nil,
|
||||||
mferror+mfokbutton) else
|
mferror+mfokbutton) else
|
||||||
begin
|
begin
|
||||||
if (data.mask>0) then
|
if (data.srcmask>0) or (data.packmask>0) then
|
||||||
begin
|
begin
|
||||||
(* TH - check the available disk space here *)
|
(* TH - check the available disk space here *)
|
||||||
{$IFNDEF LINUX}
|
{$IFNDEF LINUX}
|
||||||
DSize := 0;
|
DSize := 0;
|
||||||
for i:=1 to cfg.packages do
|
for i:=1 to cfg.packages do
|
||||||
begin
|
begin
|
||||||
|
if data.packmask and packagemask(i)<>0 then
|
||||||
|
Inc (DSize, DiskSpaceN(cfg.package[i].zip));
|
||||||
|
end;
|
||||||
|
for i:=1 to cfg.sources do
|
||||||
|
begin
|
||||||
|
if data.srcmask and packagemask(i)<>0 then
|
||||||
|
Inc (DSize, DiskSpaceN(cfg.source[i].zip));
|
||||||
|
end;
|
||||||
if data.mask and packagemask(i)<>0 then
|
if data.mask and packagemask(i)<>0 then
|
||||||
Inc (DSize, DiskSpaceN(cfg.package[i].zip));
|
Inc (DSize, DiskSpaceN(cfg.package[i].zip));
|
||||||
end;
|
end;
|
||||||
@ -642,18 +705,30 @@ program install;
|
|||||||
exit;
|
exit;
|
||||||
until false;
|
until false;
|
||||||
|
|
||||||
{ extract }
|
{ extract packages }
|
||||||
r.assign(20,7,60,16);
|
r.assign(20,7,60,16);
|
||||||
p2:=new(punzipdialog,init(r,'Extracting files'));
|
p2:=new(punzipdialog,init(r,'Extracting Packages'));
|
||||||
desktop^.insert(p2);
|
desktop^.insert(p2);
|
||||||
for i:=1 to cfg.packages do
|
for i:=1 to cfg.packages do
|
||||||
begin
|
begin
|
||||||
if data.mask and packagemask(i)<>0 then
|
if data.packmask and packagemask(i)<>0 then
|
||||||
p2^.do_unzip(cfg.package[i].zip,data.basepath);
|
p2^.do_unzip(cfg.package[i].zip,data.basepath);
|
||||||
end;
|
end;
|
||||||
desktop^.delete(p2);
|
desktop^.delete(p2);
|
||||||
dispose(p2,done);
|
dispose(p2,done);
|
||||||
|
|
||||||
|
{ extract sources }
|
||||||
|
r.assign(20,7,60,16);
|
||||||
|
p2:=new(punzipdialog,init(r,'Extracting Sources'));
|
||||||
|
desktop^.insert(p2);
|
||||||
|
for i:=1 to cfg.sources do
|
||||||
|
begin
|
||||||
|
if data.srcmask and packagemask(i)<>0 then
|
||||||
|
p2^.do_unzip(cfg.source[i].zip,data.basepath);
|
||||||
|
end;
|
||||||
|
desktop^.delete(p2);
|
||||||
|
dispose(p2,done);
|
||||||
|
|
||||||
{ write config }
|
{ write config }
|
||||||
writedefcfg(data.basepath+cfg.binsub+DirSep+cfg.defcfgfile);
|
writedefcfg(data.basepath+cfg.binsub+DirSep+cfg.defcfgfile);
|
||||||
|
|
||||||
@ -767,6 +842,17 @@ program install;
|
|||||||
cfg.package[cfg.packages].zip:=copy(s,1,j-1);
|
cfg.package[cfg.packages].zip:=copy(s,1,j-1);
|
||||||
cfg.package[cfg.packages].name:=copy(s,j+1,255);
|
cfg.package[cfg.packages].name:=copy(s,j+1,255);
|
||||||
end;
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if item='SOURCE' then
|
||||||
|
begin
|
||||||
|
j:=pos(',',s);
|
||||||
|
if (j>0) and (cfg.sources<maxsources) then
|
||||||
|
begin
|
||||||
|
inc(cfg.sources);
|
||||||
|
cfg.source[cfg.sources].zip:=copy(s,1,j-1);
|
||||||
|
cfg.source[cfg.sources].name:=copy(s,j+1,255);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -913,7 +999,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.5 1999-06-25 07:06:30 hajny
|
Revision 1.6 1999-06-29 22:20:19 peter
|
||||||
|
* updated to use tab pages
|
||||||
|
|
||||||
|
Revision 1.5 1999/06/25 07:06:30 hajny
|
||||||
+ searching for installation script updated
|
+ searching for installation script updated
|
||||||
|
|
||||||
Revision 1.4 1999/06/10 20:01:23 peter
|
Revision 1.4 1999/06/10 20:01:23 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user