Linux install wizard progress.
This commit is contained in:
sgehani%netscape.com 2000-02-11 00:57:43 +00:00
Родитель cc54866f08
Коммит 31ef92c2e8
22 изменённых файлов: 805 добавлений и 62 удалений

Просмотреть файл

@ -40,8 +40,15 @@ CPPSRCS = \
nsSetupTypeDlg.cpp \
nsComponentsDlg.cpp \
nsInstallDlg.cpp \
nsXIContext.cpp \
nsXInstaller.cpp \
nsINIParser.cpp \
$(NULL)
LIBS = \
$(TK_LIBS) \
$(NULL)
include $(topsrcdir)/config/rules.mk
CXXFLAGS += $(MOZ_TOOLKIT_REGISTRY_CFLAGS)

Просмотреть файл

@ -0,0 +1,98 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (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.mozilla.org/NPL/
*
* 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 Mozilla Communicator client code,
* released March 31, 1998.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Samir Gehani <sgehani@netscape.com>
*/
#ifndef _XIDEFINES_H_
#define _XIDEFINES_H_
#include "XIErrors.h"
/*--------------------------------------------------------------------*
* Limits
*--------------------------------------------------------------------*/
#define MAX_COMPONENTS 64
#define MAX_SETUP_TYPES 32
/*--------------------------------------------------------------------*
* Widget Dims
*--------------------------------------------------------------------*/
#define XI_WIN_HEIGHT 320
#define XI_WIN_WIDTH 550
/*--------------------------------------------------------------------*
* Macros
*--------------------------------------------------------------------*/
#define XI_IF_DELETE(_object) \
do { \
if (_object) \
delete _object; \
} while(0);
#define XI_IF_FREE(_ptr) \
do { \
if (_ptr) \
free(_ptr); \
} while(0);
#define XI_ERR_BAIL(_function) \
do { \
err = _function; \
if (err != OK) \
{ \
ErrorHandler(err); \
goto BAIL; \
} \
} while (0);
#define XI_ERR_BAIL_EXCEPT(_function, _errexpected) \
do { \
err = _function; \
if (err != OK && err != _errexpected) \
{ \
ErrorHandler(err); \
goto BAIL; \
} \
} while(0);
#define XI_VERIFY(_ptr) \
do { \
if (!_ptr) \
return ErrorHandler(E_INVALID_PTR); \
} while (0);
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#define NULL 0
#endif
#endif /* _XIDEFINES_H_ */

Просмотреть файл

@ -25,6 +25,8 @@
#ifndef _XI_ERRORS_H_
#define _XI_ERRORS_H_
#include <stdio.h>
/*------------------------------------------------------------------*
* X Installer Errors
*------------------------------------------------------------------*/
@ -33,19 +35,34 @@
OK = 0,
E_MEM = -601, /* out of memory */
E_PARAM = -602, /* invalid param */
E_NO_MEMBER = -603 /* invalid member variable */
E_NO_MEMBER = -603, /* invalid member variable */
E_INVALID_PTR = -604 /* invalid pointer */
};
#ifndef TRUE
#define TRUE 1
#endif
#define FATAL_ERR_THRESHOLD -500 /* errs below this cause app quit */
#define GENERAL_ERR_THRESHOLD -1 /* errs below this cause dlg to come up*/
#ifndef FALSE
#define FALSE 0
#endif
/*------------------------------------------------------------------*
* Default Error Handler
*------------------------------------------------------------------*/
static int ErrorHandler(int aErr)
{
// XXX 1. fix this to get a string associated with the error code
// XXX from a resourced string bundle
// XXX
// XXX 2. fix this to throw up a dialog rather than writing to stdout
#ifndef NULL
#define NULL 0
#endif
if (aErr < FATAL_ERR_THRESHOLD)
{
printf("Fatal error[%d]: Doom and darkness has struck!\n", aErr);
exit(aErr);
}
else if (aErr < GENERAL_ERR_THRESHOLD)
printf("Error[%d]: Regular error so moving right along.\n", aErr);
else
printf("Warning[%d]: We spit crap to stdout cos we can!\n", aErr);
return aErr;
}
#endif /* _XI_ERRORS_H_ */

Просмотреть файл

@ -0,0 +1,323 @@
/* XPM */
static char * logo_star_xpm[] = {
"98 100 220 2",
" c None",
". c #000000",
"+ c #8A5E04",
"@ c #0A0604",
"# c #DE9604",
"$ c #2A1A04",
"% c #422E04",
"& c #EEA204",
"* c #6E4A04",
"= c #926204",
"- c #AE7604",
"; c #CE8E04",
"> c #F2A204",
", c #E69A04",
"' c #362204",
") c #3A2604",
"! c #825A04",
"~ c #BE8204",
"{ c #C28204",
"] c #221604",
"^ c #664604",
"/ c #4A3204",
"( c #120A04",
"_ c #EA9E04",
": c #5A3A04",
"< c #1A1204",
"[ c #966604",
"} c #E29A04",
"| c #A26E04",
"1 c #4E3604",
"2 c #DA9204",
"3 c #060204",
"4 c #4E3204",
"5 c #2A1E04",
"6 c #D28E04",
"7 c #8E5E04",
"8 c #7A5204",
"9 c #2E2204",
"0 c #020204",
"a c #AA7604",
"b c #B67A04",
"c c #0E0A04",
"d c #A67204",
"e c #322204",
"f c #3E2A04",
"g c #5A3E04",
"h c #5E3E04",
"i c #9A6604",
"j c #C68604",
"k c #5E4204",
"l c #E69E04",
"m c #160E04",
"n c #764E04",
"o c #563A04",
"p c #2E1E04",
"q c #9A6A04",
"r c #CA8A04",
"s c #865A04",
"t c #D69204",
"u c #462E04",
"v c #0A0204",
"w c #624204",
"x c #DA9604",
"y c #AA7204",
"z c #CE8A04",
"A c #765204",
"B c #523604",
"C c #EAA204",
"D c #120204",
"E c #9E6A04",
"F c #7E1204",
"G c #420A04",
"H c #BA7E04",
"I c #BE1E04",
"J c #060604",
"K c #1E1204",
"L c #160204",
"M c #F22604",
"N c #C61E04",
"O c #261A04",
"P c #660E04",
"Q c #FE2604",
"R c #F62604",
"S c #1A0204",
"T c #7E5604",
"U c #AE1A04",
"V c #560E04",
"W c #0E0204",
"X c #921604",
"Y c #4E0E04",
"Z c #E62204",
"` c #9E1A04",
" . c #FE2A04",
".. c #FA2604",
"+. c #260604",
"@. c #E22204",
"#. c #3E0A04",
"$. c #A61A04",
"%. c #362604",
"&. c #821604",
"*. c #724E04",
"=. c #221A04",
"-. c #D22204",
";. c #320604",
">. c #220604",
",. c #7A1204",
"'. c #761204",
"). c #B21A04",
"!. c #B61E04",
"~. c #460A04",
"{. c #661204",
"]. c #8A1604",
"^. c #664204",
"/. c #120E04",
"(. c #CA1E04",
"_. c #161204",
":. c #EE2604",
"<. c #4E0A04",
"[. c #8E6204",
"}. c #9A1A04",
"|. c #AA1A04",
"1. c #422A04",
"2. c #3A0A04",
"3. c #2A0604",
"4. c #7E1604",
"5. c #1E1604",
"6. c #523A04",
"7. c #6E1204",
"8. c #B27A04",
"9. c #CA8604",
"0. c #620E04",
"a. c #A21A04",
"b. c #C28604",
"c. c #DE2204",
"d. c #5E0E04",
"e. c #360A04",
"f. c #A66E04",
"g. c #2E0604",
"h. c #B67E04",
"i. c #6E4E04",
"j. c #721204",
"k. c #6A4604",
"l. c #D62204",
"m. c #861604",
"n. c #9A1604",
"o. c #E62604",
"p. c #CE2204",
"q. c #520E04",
"r. c #9E6E04",
"s. c #7A5604",
"t. c #4A0A04",
"u. c #BA1E04",
"v. c #5A0E04",
"w. c #8E1604",
"x. c #B21E04",
"y. c #825604",
"z. c #DA2204",
"A. c #3A2A04",
"B. c #0E0E0C",
"C. c #FEFEFC",
"D. c #222224",
"E. c #961604",
"F. c #1A0604",
"G. c #C21E04",
"H. c #6A1204",
"I. c #EA2604",
"J. c #1E0604",
"K. c #D68E04",
"L. c #0A0A04",
"M. c #6A4A04",
"N. c #0A0A0C",
"O. c #1E1E1C",
"P. c #320A04",
"Q. c #565654",
"R. c #6E6E6C",
"S. c #4A4A4C",
"T. c #262624",
"U. c #868684",
"V. c #3A3A3C",
"W. c #5A5A5C",
"X. c #363634",
"Y. c #6A6A6C",
"Z. c #828284",
"`. c #7A7A7C",
" + c #2A2A2C",
".+ c #463204",
"++ c #FE3E04",
"@+ c #F66604",
"#+ c #FA5A04",
"$+ c #FA4604",
"%+ c #FA4E04",
"&+ c #F28604",
"*+ c #F67E04",
"=+ c #F67604",
"-+ c #FE2E04",
";+ c #FE3204",
">+ c #F28204",
",+ c #FE3A04",
"'+ c #F67A04",
")+ c #F68204",
"!+ c #FA5E04",
"~+ c #FA5604",
"{+ c #F66A04",
"]+ c #FA5204",
"^+ c #F67204",
"/+ c #FA4A04",
"(+ c #F66E04",
"_+ c #F29204",
":+ c #F66204",
"<+ c #F29E04",
"[+ c #FE3604",
"}+ c #F29604",
"|+ c #F28E04",
"1+ c #F29A04",
"2+ c #FE4204",
"3+ c #F28A04",
"4+ c #DE9A04",
"5+ c #B27604",
"6+ c #865E04",
"7+ c #926604",
" # ",
" & ",
" ' & ) ",
" ~ > { ",
" & & & ",
" ( > > & ",
" [ & & & : ",
" & > ~ > 2 ",
" & & @ & > ",
" * > } 0 & > c ",
" > & g 0 6 & + ",
" > & 0 0 k & l ",
" o & & 0 0 0 > & ",
" # & ! 0 0 0 & & ] ",
" & & 0 0 0 0 b & y ",
" $ & > 0 0 0 0 f & & ",
" ~ & E 0 0 G 0 0 & & ",
" > > K 0 L N 0 0 _ & B ",
" ( & & 0 0 U Q 0 0 [ & r ",
" [ > j 0 0 Q Q 0 0 m & & ",
" > & f 0 0 Q Q P 0 0 > & ",
" > & 0 0 &.Q .R 0 0 # & *. ",
" * & } 0 0 Q Q Q Q 0 0 A & # ",
" > & ^ 0 0 Q . . .3 0 3 & > ",
" & & 0 0 {.Q Q Q Q ].0 0 & > /. ",
" u & & 0 0 :. . . . .Q 0 0 r > [ ",
" x & = 0 0 Q Q Q Q .Q 0 0 1.& & ",
" & & 0 0 2. . . . .Q Q 3.0 0 & > ",
" 5.& > 0 0 (.Q Q Q .Q .I 0 0 > & %. ",
" { & H 0 0 . . . .Q Q .Q 0 0 y & 8. ",
" & > < 0 L Q Q Q .Q .Q Q 0 0 O & & ",
" & & 0 0 a. . . .Q Q .Q Q <.0 0 & & ",
" q > t 0 0 .Q Q .Q .Q Q Q c.0 0 _ > h ",
" & & f 0 0 . . .Q Q .Q Q Q Q 0 0 + > 6 ",
" > > 0 0 ,.Q Q .Q .Q Q Q .Q 0 0 ( > > ",
" i.& & 0 0 Q . .Q Q .Q Q Q Q Q j.0 0 > & J ",
" _ > ^.0 0 Q Q ...Y 0 0 0 D ].>.0 0 0 2 & T ",
" & & 3 0 V . .Q 3 0 0 0 0 0 0 0 0 0 0 g & , ",
"/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 8 > > 0 0 :.Q .G 0 ].:.:.Q R P 0 0 3 0 0 & & / / / / / / / / / / / / / / / / / / / 4 / / / / / / / / / / / / / / / / / / ",
" 6 > & > > > & > > > & > > > & > & & & & & & & & & & & & & & & & & & & & & & 7 0 0 Q .Q 0 0 0 0 0 0 G Q Q Q d.0 0 > & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & @ ",
" * > & > > > & > > > & > > > & & & & > & & & > & & & > & & & > > & & > > > c 0 3.Q .Q 0 0 0 0 n.d.0 0 3 ].M 0 0 { & & & & & & & & & & & & & & & & & & & > & & & & & & & & & & & & & & & & z ",
" < & & & w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 p. .Q ].0 0 0 0 0 F Q 0 0 0 3.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _ & & y. ",
" # > > ~ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Q .v.0 0 ~.0 0 C.0 Q 0 :.Q ..W 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 O & & & e ",
" q & & _ 0 0 0 0 Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q |.0 0 0 E.d.C.0 0 l. .t.Q c.0 0.Q Q Q 0 $.Q Q Q Q Z 0 0 0 0 0 0 0 3 Q Q Q Q Q Q Q Q Q P 0 0 0 ! > & & J ",
" e & > > p 0 0 0 (.Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q .Q Q Q Q Q H.0 0 0 ;. .n.0 L ].:.0 I.Q Q ).2.0 0 j.Q ).Q Q Q Q Q .v.0 0 0 0 0 0 0 0 Q Q Q Q Q Q Q D 0 0 0 x > & j ",
" _ & > [ 0 0 0 7.Q Q Q .Q Q Q .Q Q Q .Q Q Q .Q Q Q I W 0 0 0 <.Q Q Q Q Z 2.0 0 Z Q o.&.Q W 0 0 0 m.Q Q Q Q Q Q Q R 0 0 0 0 $.P 0 0 0 Q Q Q Q ..3 0 0 0 & & > ! ",
" H > & } 0 0 0 F.Q .Q .Q .Q .Q .Q .Q . . .-.0 0 0 3 ).Q Q Q .Q Q Q Q Q Q Q g.L Q :.3 ~.<.<.<.D ..Q Q Q . . .0 0 0 0 0 <.Q Q N +.Q Q N 0 0 0 p > & > p ",
" g & & > m 0 0 0 .Q Q . .Q Q . .Q Q . .Q P 0 0 #.Q Q Q Q Q Q Q Q Q Q Q Q Q v 0 Q Q Q Q . . . . .Q d.Q Q Q .Q 0 0 0 0 0 0 S Q Q .Q <.0 0 0 + > > _ ",
" L.& > & k.0 0 0 |. .Q . . .Q . . .Q . .0 0 F Q Q Q Q Q Q .Q Q Q Q Q c.0 0 R .R Q Q Q Q Q Q Q Q 0 .. . . . .0 '.0 0 0 0 0 0 .Q W 0 0 0 z & > ~ ",
" } & & r 0 0 0 ~. .Q . . .Q . . .Q Q 0 0 0 Q Q Q Q Q Q Q Q Q Q Q 7.0 0 0 Q Q E.Q . . . . .Q Q 3 n.Q .Q .'.c.L 0 0 ;.0 0 0 0 0 0 3 & & & * ",
" [ & > & @ 0 0 v Q .Q .Q .Q Q Q Q 0 0 0 ,.Q Q Q Q .Q Q Q ..3 0 0 0 0 ].#.7.Q Q Q Q Q Q Q Q 0 d. . . .Q .Q L 0 0 0 M V 0 0 0 f & & & 5. ",
" ' & & > % 0 0 0 l. . . . . .Q Q Q 0 F ;.Q Q Q Q Q Q Q Q m.0 0 0 0 0 0 0 0 X . . . . .Q Q n.0 0. .Q .Q .Q 0 0 0 0 0 0 0 0 E > > l ",
" 3 & & > d 0 0 0 H.Q .Q Q Q Q -.0 c.U Q Q Q Q .Q @.0 0 0 0 0 0 0 0 0 0 .Q Q Q Q Q Q ..0 0 q. . .Q .Q .0 0 0 0 0 0 0 2 & & { ",
" H & & l 0 0 0 L . .Q Q .F 0 !.Q Q Q Q Q w.0 0 0 O.D.0 0 0 (.0 0 g.Q . . . .Q Q 0 0 0 D Q .Q .Q V 0 0 0 0 0 @ & > > * ",
" g & & > m 0 0 0 Z Q Q Q Q 0 ~.n.3.0 0 0 0 C.0 C.0 0 0 0 @.7.0 2.Q Q Q Q Q Q ..P ,.R 3 ;. .Q .Q Q 0 0 0 0 0 / & & & m ",
" L.> & & M.0 0 0 E. .Q .S 0 0 0 T.U.0 C.0 0 0 0 0 u. .p.,.@.Q Q . . . .Q ~. . .(.0 Q .Q .Q +.0 0 0 0 E & & } ",
" t > > 9.0 0 0 +.Q Q @.0 Z.0 +0 0 0 0 W X Q .o.Q Q Q Q Q Q Q Q Q (.0 Q .Q W Q .Q .Q u.0 0 0 0 # & & 8. ",
" T & > & 3 0 0 0 R .0 0 0 0 0 v @. .Q Q .~.0 0 V ).Q Q . .R 3.0 }. . .$.Q Q .Q .Z 0 0 0 /.& & & o ",
" 5.& > > % 0 0 0 (.(.W G 0 0 4.Q Q ).F.0 0 0 0 0 0 0 0 J.0 0 0 >.Q .Q Q Q .Q .}.0 0 0 u & & & c ",
" l & & y 0 0 0 0.Q Q o.0 0 0 0 0 0 0 #.E.G.2.0 0 0 0 0 0 ,.Q . .Q Q Q .Q G 0 0 0 y & & C ",
" 8.> & _ 0 0 0 .Q Q Q w.g.v.). .Q Q Q Q Q ..L 0 0 0 0 c.Q .Q Q Q .Q .0 0 0 } > & - ",
" 1 & > 0 0 V Q . .Q Q Q Q Q .Q . .Q Q .Q u.0 0 0 0 X .Q Q Q .Q Q +.0 0 & & .+ ",
" 5 > & 0 0 o.Q Q Q .Q .Q .Q Q Q Q Q Q Q Q Q E.0 ;.).3 Q Q Q .Q .Q |.0 0 > & O ",
" ~ > - 0 0 Q . .Q Q Q Q Q Q Q . .Q Q .Q .Q Q 0 0 ..Q Z U . .Q Q .Q 0 0 8.& - ",
" & & ] 0 D $+> -+ .> > _+Q Q > . .Q Q Q . . .$+d.0 Z :.D >. .Q .Q Q .0 0 $ & & ",
" > > 0 0 }.Q .> > }+& 2+++Q > [+> .> > & ;+-+ .Z 0 ;.0 0 Q .Q Q .Q Q ~.0 0 & & ",
" A & # 0 0 Q Q -+Q > 1+& Q Q Q > & }+Q > > & . . .Q 0 0 0 R .]. .Q Q . .l.0 0 & & 4 ",
" & & w 0 0 .Q -+Q > }+& <+ .Q > C }+..> > & .-+ .Q 0 0 n. .D R Q .Q Q .Q 0 0 7 & z ",
" & > 0 0 v. .Q .Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q . .Q t.0 0 0 ;. .Q Q . . .Q 0 0 m & & ",
" p > & 0 0 Z .Q Q Q . .Q Q .Q Q Q .Q .Q ..._+ . ...0 0 0 Q Q H.Q Q .Q Q P 0 0 > & ",
" 8.> y 0 0 .Q .Q Q Q Q Q .Q Q Q Q Q Q Q :.d.Q Q Q Q ].0 0 R ..v d. . . .Q .@.0 0 _ & A ",
" & & =.0 W . .Q Q . .Q Q .Q Q Q .Q .w.0 0 W Q .Q S 0 ,.V 0 0 Q Q .Q Q Q Q 0 0 *.& } ",
" 3 & & 0 0 ` Q Q Q Q Q Q Q .Q Q Q Q Q Q ;.0 0 0 0 0 Z Q 0 0 0 0 0 x. . .p.Q .Q Q W 0 0 & & ",
" 8 > C 0 0 .Q .Q . .Q Q .Q Q Q .R 3 0 0 0 8 0 0 0 E.0 0 0 0 3. .R 3 Q Q Q Q Q w.0 0 & > /. ",
" l & * 0 0 .Q .Q Q Q Q .Q Q Q Q I 0 0 0 O & & r 0 0 0 0 0 0 0 >.4.0 U Q .Q Q .R 0 0 j & s ",
" & > 0 0 q.Q .Q . .Q Q .Q Q Q v.0 0 0 y.& > & & > 3 0 0 0 0 0 0 0 0 .Q Q Q Q Q Q 0 0 B & & ",
" e & > 0 0 Z . . .Q Q Q .Q Q Q v 0 0 0 z & & 6 ] & & & % 0 0 0 0 0 0 ..Q .Q Q .Q .>.0 0 > > ",
" H & 8.0 0 Q .Q Q .Q Q .Q :.0 0 0 3 & & & 8 , > & y 0 0 0 0 X H.n.Q Q Q Q ;.Q ).0 0 & & 9 ",
" > > $ 0 S .Q . .Q Q .Q n.0 0 0 u & & & 5. b & & l 0 0 0 0 0 Q Q Q .Q u.p.Q 0 0 f.& y ",
" & > 0 0 $. .Q Q Q Q Q .e.0 0 0 5+> > , o & > & < 0 0 0 M Q Q Q Q Q 0 .0 0 p & & ",
" A > 4+0 0 Q Q .Q .Q .0 0 0 0 _ & & y B.> & & * 0 0 0 n. .Q Q Q 0 2.<.0 0 & & ",
" _ & w 0 0 .Q Q . .(.0 0 0 O > & > / x & & j 0 0 0 g.Q Q Q >.0 (.0 0 & & B ",
" & > 0 0 v.Q Q Q .d.0 0 0 8 > & & @ + > & _ 0 0 0 0 ..Q 0.0 t.0 0 [ & r ",
" 5 & & 0 0 Z Q . .W 0 0 0 K.& & 4+ O & & & ' 0 0 0 N 0.0 0 0 0 c & & ",
" 8.& - 0 0 Q Q Z 0 0 0 0 & & > ! l & & | 0 0 0 S j.0 0 0 0 & & 3 ",
" > & ] 0 D .a.0 0 0 1.& & & $ - > & l 0 0 0 >.Q j.0 0 , & *. ",
" & & 0 0 n.2.0 0 0 f.> & _ 4 & > & K 0 0 0 :.0 0 *.& _ ",
" 8 & l 0 0 0 0 0 0 , & > 8. /.> & & n 0 0 0 0 0 0 & > ",
" _ > h 0 0 0 0 5.> > & B x & & j 0 0 0 0 0 & > @ ",
" & > 0 0 0 0 * > & & L. s & & _ @ 0 0 0 ; & = ",
" e > & 0 0 0 z & > 4+ e & > & p 0 0 .+& & ",
" H & d 0 0 & & & [. > & & [ 0 0 > & ",
" > & K ) & > & 9 H > > } 0 & & 5 ",
" > & E & > C 3 B & > & K.> 8. ",
" i.& & > & H @ & & & & > ",
" l & & & g x > & & ",
" > & > @ 7 > & / ",
" %.& 4+ 9 & K. ",
" ~ 7+ 3 & ",
" ' "};

Просмотреть файл

@ -25,7 +25,7 @@
#ifndef _NS_COMPONENT_H_
#define _NS_COMPONENT_H_
#include "XILimits.h"
#include "XIDefines.h"
#include "XIErrors.h"
#include <malloc.h>

Просмотреть файл

@ -51,6 +51,17 @@ nsComponentsDlg::Next()
return OK;
}
int
nsComponentsDlg::Parse(nsINIParser *aParser)
{
int err = OK;
return err;
BAIL:
return err;
}
int
nsComponentsDlg::SetMsg0(char *aMsg)
{

Просмотреть файл

@ -42,6 +42,8 @@ public:
int Back();
int Next();
int Parse(nsINIParser* aParser);
/*--------------------------------------------------------------------*
* INI Properties
*--------------------------------------------------------------------*/

Просмотреть файл

@ -90,7 +90,6 @@ public:
*/
int GetError();
/*--------------------------------------------------------------------*
* Errors
*--------------------------------------------------------------------*/

Просмотреть файл

@ -47,6 +47,17 @@ nsInstallDlg::Next()
return OK;
}
int
nsInstallDlg::Parse(nsINIParser *aParser)
{
int err = OK;
return err;
BAIL:
return err;
}
int
nsInstallDlg::SetMsg0(char *aMsg)
{

Просмотреть файл

@ -40,6 +40,8 @@ public:
int Back();
int Next();
int Parse(nsINIParser* aParser);
/*------------------------------------------------------------------*
* INI Properties
*------------------------------------------------------------------*/

Просмотреть файл

@ -53,6 +53,17 @@ nsLicenseDlg::Next()
return OK;
}
int
nsLicenseDlg::Parse(nsINIParser *aParser)
{
int err = OK;
return err;
BAIL:
return err;
}
int
nsLicenseDlg::SetLicenseFile(char *aLicenseFile)
{

Просмотреть файл

@ -39,6 +39,8 @@ public:
*-------------------------------------------------------------------*/
int Back();
int Next();
int Parse(nsINIParser *aParser);
/*-------------------------------------------------------------------*
* INI Properties

Просмотреть файл

@ -25,7 +25,7 @@
#ifndef _NS_SETUPTYPE_H_
#define _NS_SETUPTYPE_H_
#include "XILimits.h"
#include "XIDefines.h"
#include "XIErrors.h"
#include "nsComponent.h"

Просмотреть файл

@ -27,6 +27,17 @@ nsSetupTypeDlg::Next()
return OK;
}
int
nsSetupTypeDlg::Parse(nsINIParser *aParser)
{
int err = OK;
return err;
BAIL:
return err;
}
int
nsSetupTypeDlg::SetMsg0(char *aMsg)
{

Просмотреть файл

@ -40,6 +40,8 @@ public:
int Back();
int Next();
int Parse(nsINIParser *aParser);
/*---------------------------------------------------------------------*
* INI Properties
*---------------------------------------------------------------------*/

Просмотреть файл

@ -56,6 +56,17 @@ nsWelcomeDlg::Next()
return OK;
}
int
nsWelcomeDlg::Parse(nsINIParser *aParser)
{
int err = OK;
return err;
BAIL:
return err;
}
int
nsWelcomeDlg::SetReadmeFile(char *aReadmeFile)
{

Просмотреть файл

@ -39,6 +39,8 @@ public:
*--------------------------------------------------------------------*/
int Back();
int Next();
int Parse(nsINIParser *aParser);
/*--------------------------------------------------------------------*
* INI Properties

Просмотреть файл

@ -22,11 +22,36 @@
* Samir Gehani <sgehani@netscape.com>
*/
#ifndef _XILIMITS_H_
#define _XILIMITS_H_
#include "nsXIContext.h"
#define MAX_COMPONENTS 64
#define MAX_SETUP_TYPES 32
nsXIContext::nsXIContext()
{
me = NULL;
ldlg = NULL;
wdlg = NULL;
sdlg = NULL;
cdlg = NULL;
idlg = NULL;
#endif /* _XILIMITS_H_ */
window = NULL;
back = NULL;
next = NULL;
logo = NULL;
}
nsXIContext::~nsXIContext()
{
// NOTE: don't try to delete "me" cause I control thee
XI_IF_DELETE(ldlg);
XI_IF_DELETE(wdlg);
XI_IF_DELETE(sdlg);
XI_IF_DELETE(cdlg);
XI_IF_DELETE(idlg);
XI_IF_FREE(window);
XI_IF_FREE(back);
XI_IF_FREE(next);
XI_IF_FREE(logo);
}

Просмотреть файл

@ -0,0 +1,67 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (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.mozilla.org/NPL/
*
* 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 Mozilla Communicator client code,
* released March 31, 1998.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Samir Gehani <sgehani@netscape.com>
*/
#ifndef _NS_XICONTEXT_H_
#define _NS_XICONTEXT_H_
#include <gtk/gtk.h>
#include "nsLicenseDlg.h"
#include "nsWelcomeDlg.h"
#include "nsSetupTypeDlg.h"
#include "nsComponentsDlg.h"
#include "nsInstallDlg.h"
class nsXInstaller;
class nsXIContext
{
public:
nsXIContext();
~nsXIContext();
nsXInstaller *me;
/*-------------------------------------------------------------------*
* Dialog Contexts
*-------------------------------------------------------------------*/
nsLicenseDlg *ldlg;
nsWelcomeDlg *wdlg;
nsSetupTypeDlg *sdlg;
nsComponentsDlg *cdlg;
nsInstallDlg *idlg;
/*-------------------------------------------------------------------*
* Global Widgets
*-------------------------------------------------------------------*/
GtkWidget *window; /* unique canvas for dialogs */
GtkWidget *back; /* back button */
GtkWidget *next; /* next button */
GtkWidget *logo; /* branding icon: an xpm image */
GtkWidget *mainbox; /* vbox holding all except logo */
GtkWidget *canvas; /* vbox for mutable dlgs (no nav btns) */
};
#endif /* _NS_XICONTEXT_H_ */

Просмотреть файл

@ -24,9 +24,9 @@
#include "nsXInstaller.h"
#include "nsINIParser.h"
#include "logo-star.xpm"
#include "XIErrors.h"
nsXIContext *gCtx = NULL;
nsXInstaller::nsXInstaller()
{
@ -40,11 +40,11 @@ int
nsXInstaller::ParseConfig()
{
int err = OK;
nsINIParser *parser = new nsINIParser( CONFIG_INI );
char *bufalloc = NULL;
char buf[512];
int bufsize = 0;
nsINIParser *parser = NULL;
XI_ERR_BAIL(InitContext());
parser = new nsINIParser( CONFIG_INI );
if (!parser)
return E_MEM;
@ -52,43 +52,170 @@ nsXInstaller::ParseConfig()
if (err != nsINIParser::OK)
return err;
bufsize = 512;
// err = parser->GetString("section2", "key2", buf, &bufsize);
err = parser->GetStringAlloc("section2", "key2", &bufalloc, &bufsize);
if ( (err == nsINIParser::OK) && (bufalloc) && (bufsize > 0) )
{
DUMP("section2 key2 = ");
DUMP(bufalloc);
}
XI_ERR_BAIL(gCtx->ldlg->Parse(parser));
XI_ERR_BAIL(gCtx->wdlg->Parse(parser));
XI_ERR_BAIL(gCtx->sdlg->Parse(parser));
XI_ERR_BAIL(gCtx->cdlg->Parse(parser));
XI_ERR_BAIL(gCtx->idlg->Parse(parser));
return err;
}
return OK;
int
nsXInstaller::Run()
{
int err = OK;
if ( (err = StartWizard()) != OK)
goto au_revoir;
if ( (err = Download()) != OK)
goto au_revoir;
if ( (err = Extract()) != OK)
goto au_revoir;
if ( (err = Install()) != OK)
goto au_revoir;
au_revoir:
BAIL:
return err;
}
int
nsXInstaller::StartWizard()
nsXInstaller::InitContext()
{
int err = OK;
gCtx = new nsXIContext();
if (!gCtx)
return E_MEM;
gCtx->me = this;
gCtx->ldlg = new nsLicenseDlg();
gCtx->wdlg = new nsWelcomeDlg();
gCtx->sdlg = new nsSetupTypeDlg();
gCtx->cdlg = new nsComponentsDlg();
gCtx->idlg = new nsInstallDlg();
if (!gCtx->ldlg || !gCtx->wdlg || !gCtx->sdlg ||
!gCtx->cdlg || !gCtx->idlg )
{
err = E_MEM;
goto BAIL;
}
return OK;
BAIL:
XI_IF_DELETE(gCtx->ldlg);
XI_IF_DELETE(gCtx->wdlg);
XI_IF_DELETE(gCtx->sdlg);
XI_IF_DELETE(gCtx->cdlg);
XI_IF_DELETE(gCtx->idlg);
XI_IF_DELETE(gCtx);
return err;
}
int
nsXInstaller::RunWizard(int argc, char **argv)
{
int err = OK;
XI_VERIFY(gCtx);
// create the dialog window
gtk_init(&argc, &argv);
gdk_rgb_init();
gCtx->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
XI_VERIFY(gCtx->window);
gtk_widget_set_usize(gCtx->window, XI_WIN_WIDTH, XI_WIN_HEIGHT);
gtk_container_set_border_width(GTK_CONTAINER(gCtx->window), 5);
gtk_widget_show(gCtx->window);
// create and display the logo
DrawLogo();
// create and register the nav buttons
XI_ERR_BAIL(DrawNavButtons());
// populate with license dlg
// pop over to main event loop
gtk_main();
return OK;
BAIL:
return err;
}
int
nsXInstaller::DrawLogo()
{
int err = OK;
GdkPixmap *pixmap;
GdkBitmap *mask;
GtkStyle *style;
GtkWidget *mainhbox;
GtkWidget *logovbox;
GtkWidget *canvasvbox;
style = gtk_widget_get_style(gCtx->window);
pixmap = gdk_pixmap_create_from_xpm_d(gCtx->window->window, &mask,
&style->bg[GTK_STATE_NORMAL],
(gchar **)logo_star_xpm);
gCtx->logo = gtk_pixmap_new(pixmap, mask);
XI_VERIFY(gCtx->logo);
gtk_widget_show(gCtx->logo);
mainhbox = gtk_hbox_new(FALSE, 10);
logovbox = gtk_vbox_new(FALSE, 10);
canvasvbox = gtk_vbox_new(FALSE, 10);
gtk_box_pack_start(GTK_BOX(logovbox), gCtx->logo, FALSE, FALSE, 0);
gtk_widget_show(logovbox);
gtk_widget_show(canvasvbox);
gtk_box_pack_start(GTK_BOX(mainhbox), logovbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(mainhbox), canvasvbox, FALSE, FALSE, 0);
gtk_widget_show(mainhbox);
gtk_container_add(GTK_CONTAINER(gCtx->window), mainhbox);
gCtx->mainbox = canvasvbox; /* canvasvbox = canvas - nav btns' box */
return err;
}
int
nsXInstaller::DrawNavButtons()
{
int err = OK;
GtkWidget *navbtnhbox;
GtkWidget *canvasvbox;
GtkWidget *navbtntable;
XI_VERIFY(gCtx->mainbox);
gCtx->next = gtk_button_new_with_label("Accept"); // XXX from license dlg
gCtx->back = gtk_button_new_with_label("Decline"); // XXX parse keys
XI_VERIFY(gCtx->next);
XI_VERIFY(gCtx->back);
gtk_widget_show(gCtx->next);
gtk_widget_show(gCtx->back);
navbtnhbox = gtk_hbutton_box_new();
canvasvbox = gtk_vbox_new(FALSE, 10);
gtk_box_pack_start(GTK_BOX(gCtx->mainbox), canvasvbox, TRUE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(gCtx->mainbox), navbtnhbox, FALSE, FALSE, 0);
// put a table in the nav btn box
navbtntable = gtk_table_new(1, 6, TRUE);
gtk_box_pack_start(GTK_BOX(navbtnhbox), navbtntable, TRUE, TRUE, 0);
gtk_table_attach(GTK_TABLE(navbtntable), gCtx->back, 5, 6, 0, 1,
GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);
gtk_table_attach(GTK_TABLE(navbtntable), gCtx->next, 6, 7, 0, 1,
GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 5);
gtk_widget_show(navbtntable);
gtk_widget_show(navbtnhbox);
gtk_widget_show(canvasvbox);
gtk_widget_show(gCtx->mainbox);
XI_VERIFY(canvasvbox);
gCtx->canvas = canvasvbox;
return err;
}
int
@ -118,9 +245,12 @@ main(int argc, char **argv)
if (installer)
{
if ( (err = installer->ParseConfig()) == OK)
err = installer->Run();
err = installer->RunWizard(argc, argv);
}
else
err = E_MEM;
XI_IF_DELETE(installer);
exit(err);
}

Просмотреть файл

@ -25,9 +25,17 @@
#ifndef _NS_XINSTALLER_H_
#define _NS_XINSTALLER_H_
#include <gtk/gtk.h>
#include <stdio.h>
#include "XIDefines.h"
#include "XIErrors.h"
#include "nsINIParser.h"
#include "nsLicenseDlg.h"
#include "nsXIContext.h"
extern nsXIContext *gCtx;
class nsXInstaller
{
public:
@ -35,13 +43,15 @@ public:
~nsXInstaller();
int ParseConfig();
int Run();
private:
int StartWizard();
int RunWizard(int argc, char **argv);
int Download();
int Extract();
int Install();
int Install();
private:
int InitContext();
int DrawLogo();
int DrawNavButtons();
};
int main(int argc, char **argv);

Просмотреть файл

@ -28,11 +28,13 @@
#include <malloc.h>
#include "XIErrors.h"
#include "nsINIParser.h"
/**
* nsXInstallerDlg
*
* The interface for all installer dialogs. Helps maintain
* uniform navigation mechanism and UI widgets.
* uniform navigation mechanism, startup init, and UI widgets.
*/
class nsXInstallerDlg
{
@ -46,6 +48,8 @@ public:
virtual int Back() = 0;
virtual int Next() = 0;
virtual int Parse(nsINIParser *aParser) = 0;
/*-------------------------------------------------------------------*
* INI Properties
*-------------------------------------------------------------------*/
@ -54,8 +58,6 @@ public:
int SetTitle(char *aTitle);
char *GetTitle();
// TO DO
enum
{
SKIP_DLG = 0,