home *** CD-ROM | disk | FTP | other *** search
/ Inside Multimedia 1995 July / IMM0795.ISO / share / tools / freeman / disk1 / ictrller.h_ / ictrller
Text File  |  1995-02-07  |  8KB  |  291 lines

  1. #define __ICTRLLER_H
  2.  
  3.  
  4. #ifndef __SAINT_H
  5. #include "saint.h"
  6. #endif
  7. #ifndef __OPRDR_H
  8. #include "oprdr.h"
  9. #endif
  10. #ifndef __ICONOBJ_H
  11. #include "iconobj.h"
  12. #endif
  13. #ifndef __USERWND_H
  14. #include "userwnd.h"
  15. #endif
  16. #ifndef __INSTALLR_H
  17. #include "installr.h"
  18. #endif
  19.  
  20. class fimd;
  21.  
  22. class iinfo;
  23.  
  24. class dcontext;
  25.  
  26. class cthelpobj;
  27.  
  28.  
  29. class ictrller;
  30.  
  31. class bkwndobj:public userwnd
  32. {
  33.    ictrller *ic;
  34.  
  35.    public:
  36.  
  37.    enum
  38.    {
  39.       idexit = 101, idhelp = 102, idminz = 103
  40.    };
  41.  
  42.    void setic(ictrller *icx)
  43.    {
  44.       ic = icx;
  45.    }
  46.  
  47.    LRESULT onmsg(UINT msg, WPARAM wp, LPARAM lp);
  48. };
  49.  
  50. class icwndobj:public userwnd
  51. {
  52.    ictrller *ic;
  53.  
  54.    public:
  55.  
  56.    void setic(ictrller *icx)
  57.    {
  58.       ic = icx;
  59.    }
  60.  
  61.    LRESULT onmsg(UINT msg, WPARAM wp, LPARAM lp);
  62. };
  63.  
  64. class bkbtn;
  65.  
  66. class bkgauge;
  67.  
  68. class linelist;
  69.  
  70. class fioptnode;
  71.  
  72. class ictrller
  73. {
  74.    friend icwndobj;
  75.    friend bkwndobj;
  76.  
  77.    typedef int (ictrller::*mergefunc)(linelist &dstls, char srcl[], char addl[], int i);
  78.  
  79.    int createicwnd();
  80.    int createbkwnd();
  81.    int copysubtree(fioptnode *i2nmap[], int k);
  82.    void paint();
  83.    void drawbktxts(dcontext &dc);
  84.    void drawgradient(dcontext &dc, RECT &r);
  85.  
  86.    public:
  87.  
  88.  
  89.    class ffr01                                                 /* file frame01 */
  90.    {
  91.       public:
  92.  
  93.       int prep;                       /* 0 -- compress   1 -- copy   2 -- none */
  94.       int xfer;                                 /* 0 -- decompress   1 -- copy */
  95.       int uninst;                                /* 0 -- uninstall   1 -- none */
  96.       int create;                                 /* 0 -- create   1 -- append */
  97.       int isff;                             /* is a font file to be installed? */
  98.       int cond;/* 0 -- none  1 -- ver info  2 -- INI ver  3 -- time  4 -- size */
  99.       LONG size;
  100.       char desc[128];
  101.       char disk[128];
  102.       stcpath srcpath;
  103.       stcpath dstpath;
  104.    };
  105.  
  106.    class ffr02                                                 /* file frame02 */
  107.    {
  108.       public:
  109.  
  110.       int ismustexist;
  111.       char desc[128];
  112.       stcpath srcpath;
  113.       stcpath dstpath;
  114.    };
  115.  
  116.    class ffr03                                                 /* file frame03 */
  117.    {
  118.       public:
  119.  
  120.       char desc[128];
  121.  
  122.       stcpath path;
  123.    };
  124.  
  125.    class ffr04                                                 /* file frame04 */
  126.    {
  127.       public:
  128.  
  129.       int amode;        /* 0 -- quietly  1 -- advise before  2 -- advise after */
  130.       char desc[128];
  131.       stcpath path;
  132.    };
  133.  
  134.    class cfr00                                               /* component info */
  135.    {
  136.       public:
  137.  
  138.       int isleaf;
  139.       int isxcl;                                     /* exclusive to siblings? */
  140.       int isinichk;                                     /* initial check state */
  141.       int isenable;                                               /* enability */
  142.       int isinisks;                               /* is it expanded initially? */
  143.       char name[80];                                         /* component name */
  144.       char desc[256];                                 /* component description */
  145.    };                                        
  146.  
  147.    class ifr00                                                 /* PM item info */
  148.    {
  149.       public:
  150.  
  151.       int iidx;
  152.       char name[80];
  153.       char grup[80];
  154.       char cmdl[512];
  155.       stcpath icon;
  156.       stcpath dirw;
  157.    };
  158.  
  159.    class efr00                                               /* INI entry info */
  160.    {
  161.       public:
  162.  
  163.       int dmode;/* duplicate mode. 0 -- set  1 -- add if diff  2 -- always add */
  164.       char sect[128];
  165.       char entry[128];
  166.       char value[512];
  167.       stcpath file;
  168.    };
  169.  
  170.    class rfr00                                                 /* reg key info */
  171.    {
  172.       public:
  173.  
  174.       char kpath[256];
  175.       char value[256];
  176.    };
  177.  
  178.    class tfr00                                         /* background text info */
  179.    {
  180.       public:
  181.  
  182.       int x;                          /* x, y, width, height in 0.1% of screen */
  183.       int y;
  184.       int h;
  185.       int w;
  186.       int effect;                           /* 0 -- none  1 -- 3D  2 -- shadow */
  187.       int isbold;
  188.       int isitalic;
  189.       char txt[128];
  190.       char fnt[128];
  191.       COLORREF c;
  192.    };
  193.  
  194.    class welstruct                                    /* welcome dlg structure */
  195.    {
  196.       public:
  197.  
  198.       char line1[256];
  199.       char line2[256];
  200.       char line3[256];
  201.       char line4[256];
  202.       char line5[256];
  203.    };
  204.  
  205.    class psstruct                                   /* prompt string structure */
  206.    {
  207.       public:
  208.  
  209.       int ctid;
  210.       int isdir;
  211.       int ischkspace;
  212.       int minspace;
  213.       char s[256];
  214.       char def[256];
  215.       char line1[256];
  216.       char line2[256];
  217.       char line3[256];
  218.       char line4[256];
  219.    };
  220.  
  221.    public:
  222.  
  223.    ictrller();                  /* we must call init() after it is constructed */
  224.  
  225.    virtual ~ictrller();     
  226.  
  227.    int doneret;                                         /* the ret fron done() */
  228.    int oldemode;                                        /* original error mode */
  229.    int isdossyschged;               /* was autoexec.bat or config.sys changed? */
  230.    int iswinsyschged;                               /* was system.ini changed? */
  231.    char appname[60];                                        /* cached app name */
  232.    saint ics;                                    /* is the component selected? */
  233.    saint ifs;                                         /* is the file selected? */
  234.    saint iis;                                         /* is the item selected? */
  235.    saint ies;                                        /* is the entry selected? */
  236.    saint irs;                                      /* is the reg key selected? */
  237.    iinfo *ii;                                       /* custom install info obj */
  238.    bkbtn *btns[3];                                                /* 3 buttons */
  239.    double spaceneeded;                               /* hard disk space needed */
  240.    stcpath dirs;                                   /* install source directory */
  241.    iconobj icon;                                   /* icon used by icon window */
  242.    bkgauge *g;                                                    /* gauge dlg */
  243.    oprdrini rdr;                                     /* INI operation recorder */
  244.    icwndobj icwnd;                                              /* icon window */
  245.    bkwndobj bkwnd;                                        /* background window */
  246.    installer ir;                                                  /* installer */
  247.  
  248.    /* return: 0 --- ok. stay in Windows           1 --- error           */
  249.    /*         2 --- ok. restart Windows           3 --- ok. quit to dos */
  250.    /*         4 --- ok. restart DOS                                     */
  251.    virtual int run()              = 0;
  252.  
  253.    int init(abspath &dirs);                  /* must be called to init the obj */
  254.    int done();
  255.    int askquit();
  256.    int welcome(welstruct &b);
  257.    int dofiles();
  258.    int askuser(int issaveexe, int issaveini);
  259.    int modconfig();
  260.    int setregkeys();
  261.    int modautoexec();
  262.    int promptyn(char line1[], char line2[], char line3[], int ctid);
  263.    int promptstr(psstruct &b);
  264.    int searchfile(abspath &startdir, abspath &filespec, int isinclsub, varpath *path = 0);
  265.    int searchfile(abspath &startdir, abspath &filespec, int isinclsub, varpath *path, fimd *md);
  266.    int getdoneret();
  267.    int createitems();
  268.    int selectcomps();
  269.    int setinientries();
  270.    int setinientriessimple();
  271.    int getspaceneeded();
  272.    int chkcompselected(int cidx);
  273.    int forceexist(char disk[], abspath &path);
  274.    int askinsertdisk(char disk[]);
  275.    int moddos(int iscfig);
  276.    int mergecfig(char dstl[], char srcl[], char addl[]);
  277.    int mergeauto(char dstl[], char srcl[], char addl[]);
  278.    int chkminz();
  279.    int chkpathst(char s[], char paths[]);
  280.    int initgadget(int i, int x, int y);
  281.    void free();                              /* must be called to free the obj */
  282.    void error(char fmt[], ...);
  283.    void errormem();
  284.    void movelog();
  285.    void cleanup();
  286.    void getdirsrc(varpath *d);
  287.    void maxzbkwnd();
  288.    void minzbkwnd();
  289. };
  290.  
  291.