home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 200-299 / ff285.lzh / 'Liner / Source / fr.h < prev    next >
C/C++ Source or Header  |  1989-11-28  |  6KB  |  217 lines

  1. /********************* Get filename "requestor" **********************/
  2. #define HEIGHTOFGADG 96
  3. #define RRp FileNameWdw->RPort
  4.  
  5. struct NewWindow NewFileNameWdw=
  6.    {0,0,302,60,2,1,GADGETUP,
  7.       SMART_REFRESH|ACTIVATE|WINDOWDRAG,
  8.       NULL,NULL,"Program Request",NULL,NULL,1,1,1,1,CUSTOMSCREEN};
  9.  
  10. struct Window *FileNameWdw;
  11.  
  12. USHORT WaitForName();
  13. char UndoFileNameBuffer[100];
  14. UWORD *OKChip,*CancelChip;
  15. UWORD OKData[] = {
  16.    /* BitPlane 0 */
  17.    0xFFFF,0xFFFF,0xFFFF,0xFFFF,
  18.    0x8000,0x0000,0x0000,0x0001,
  19.    0x8000,0x001C,0x7300,0x0001,
  20.    0x8000,0x0036,0x3300,0x0001,
  21.    0x8000,0x0063,0x3600,0x0001,
  22.    0x8000,0x0063,0x3C00,0x0001,
  23.    0x8000,0x0063,0x3600,0x0001,
  24.    0x8000,0x0036,0x3300,0x0001,
  25.    0x8000,0x001C,0x7300,0x0001,
  26.    0x8000,0x0000,0x0000,0x0001,
  27.    0x8000,0x0000,0x0000,0x0001,
  28.    0xFFFF,0xFFFF,0xFFFF,0xFFFF,
  29.    /* BitPlane 1 */
  30.    0x0000,0x0000,0x0000,0x0000,
  31.    0x0000,0x0000,0x0000,0x0000,
  32.    0x0000,0x0000,0x0000,0x0000,
  33.    0x0000,0x0000,0x0000,0x0000,
  34.    0x0000,0x0000,0x0000,0x0000,
  35.    0x0000,0x0000,0x0000,0x0000,
  36.    0x0000,0x0000,0x0000,0x0000,
  37.    0x0000,0x0000,0x0000,0x0000,
  38.    0x0000,0x0000,0x0000,0x0000,
  39.    0x0000,0x0000,0x0000,0x0000,
  40.    0x0000,0x0000,0x0000,0x0000,
  41.    0x0000,0x0000,0x0000,0x0000
  42. };
  43.  
  44. struct Image OKGadImage = {
  45.    0, 0,      /* LeftEdge, TopEdge */
  46.    64, 12, 2,   /* Width, Height, Depth */
  47.    &OKData[0],   /* ImageData */
  48.    0x0F, 0x00,   /* PlanePick, PlaneOnOff */
  49.    NULL      /* NextImage */
  50. };
  51.  
  52. struct Gadget OKGadg = {
  53.    NULL,      /* NextGadget */
  54.    20, 45,      /* LeftEdge, TopEdge */
  55.    64, 12,      /* Width, Height */
  56.    GADGIMAGE|GADGHCOMP,   /* Flags */
  57.    RELVERIFY,   /* Activation */
  58.    BOOLGADGET,   /* GadgetType */
  59.    (APTR)&OKGadImage,   /* GadgetRender */
  60.    NULL,      /* SelectRender */
  61.    NULL,      /* GadgetText */
  62.    0L,      /* MutualExclude */
  63.    NULL,      /* SpecialInfo */
  64.    TRUE,      /* GadgetID */
  65.    NULL,      /* UserData */
  66. };
  67.  
  68.  
  69. UWORD CancelData[] = {
  70.    0xFFFF,0xFFFF,0xFFFF,0xFFFF,
  71.    0x8000,0x0000,0x0000,0x0001,
  72.    0x801E,0x0000,0x0000,0x1C01,
  73.    0x8033,0x0000,0x0000,0x0C01,
  74.    0x8060,0x1E3E,0x1E1E,0x0C01,
  75.    0x8060,0x0333,0x3333,0x0C01,
  76.    0x8060,0x0F33,0x303F,0x0C01,
  77.    0x8033,0x3333,0x3330,0x0C01,
  78.    0x801E,0x1DB3,0x1E1E,0x1E01,
  79.    0x8000,0x0000,0x0000,0x0001,
  80.    0x8000,0x0000,0x0000,0x0001,
  81.    0xFFFF,0xFFFF,0xFFFF,0xFFFF,
  82.    0x0000,0x0000,0x0000,0x0000,
  83.    0x0000,0x0000,0x0000,0x0000,
  84.    0x0000,0x0000,0x0000,0x0000,
  85.    0x0000,0x0000,0x0000,0x0000,
  86.    0x0000,0x0000,0x0000,0x0000,
  87.    0x0000,0x0000,0x0000,0x0000,
  88.    0x0000,0x0000,0x0000,0x0000,
  89.    0x0000,0x0000,0x0000,0x0000,
  90.    0x0000,0x0000,0x0000,0x0000,
  91.    0x0000,0x0000,0x0000,0x0000,
  92.    0x0000,0x0000,0x0000,0x0000,
  93.    0x0000,0x0000,0x0000,0x0000
  94. };
  95.  
  96. struct Image CancelGadImage = {
  97.    0, 0,      /* LeftEdge, TopEdge */
  98.    64, 12, 4,   /* Width, Height, Depth */
  99.    &CancelData[0],   /* ImageData */
  100.    0x0F, 0x00,   /* PlanePick, PlaneOnOff */
  101.    NULL      /* NextImage */
  102. };
  103.  
  104. struct Gadget CancelGadg = {
  105.    NULL,      /* NextGadget */
  106.    220, 45,      /* LeftEdge, TopEdge */
  107.    64, 12,      /* Width, Height */
  108.    GADGIMAGE|GADGHCOMP,   /* Flags */
  109.    RELVERIFY,   /* Activation */
  110.    BOOLGADGET,   /* GadgetType */
  111.    (APTR)&CancelGadImage,   /* GadgetRender */
  112.    NULL,      /* SelectRender */
  113.    NULL,      /* GadgetText */
  114.    0L,      /* MutualExclude */
  115.    NULL,      /* SpecialInfo */
  116.    FALSE,      /* GadgetID */
  117.    NULL,      /* UserData */
  118. };
  119.  
  120. struct StringInfo FileNameSI=
  121.    {
  122.    NULL,
  123.    UndoFileNameBuffer,
  124.    0,REQUESTERCHARS,0
  125.    };
  126.  
  127. struct Gadget FileNameG=
  128.    {
  129.    NULL,
  130.    24,30,260,9,GADGHCOMP,RELVERIFY,STRGADGET,NULL,NULL,NULL,
  131.    NULL,&FileNameSI,TRUE
  132.    };
  133.  
  134. GetFileName(FN,TopStuff) /*Opens a window 'requestor' to get a */
  135. char *FN,*TopStuff;        /*file name for an open or save*/
  136. {
  137.    int State;
  138.  
  139.    State=Setup(FN,TopStuff);
  140.    CloseWdwNStuff();
  141.    return(State);
  142. }
  143.  
  144. Setup(Buffer,TopString) /*Setup string, OK, and CANCEL gadgets*/
  145. char *Buffer,*TopString;
  146. {
  147.    NewFileNameWdw.FirstGadget=&OKGadg;
  148.    CancelGadg.NextGadget=&FileNameG;
  149.    OKGadg.NextGadget=&CancelGadg;
  150.    FileNameSI.Buffer=Buffer;
  151.    strcpy(UndoFileNameBuffer,Buffer);
  152.  
  153.    Memory();
  154.    OpenWdw();     /*Open the window*/
  155.  
  156.    SetAPen(RRp,1);   /*Draw the lines around the string gadget*/
  157.    Move(RRp,20,29);
  158.    Draw(RRp,20,39);
  159.    Draw(RRp,284,39);
  160.    Draw(RRp,284,29);
  161.    Draw(RRp,20,29);
  162.  
  163.    Move(RRp,20,20);
  164.    Text(RRp,TopString,strlen(TopString));
  165.  
  166.    return(WaitForName());
  167. }
  168.  
  169. USHORT WaitForName()  /*Now wait for user to press RETURN, or select OK or CANCEL*/
  170. {
  171.    struct IntuiMessage *Mesg;
  172.    struct Gadget *address;
  173.  
  174.    Wait(1<<FileNameWdw->UserPort->mp_SigBit);
  175.  
  176.    Mesg=(struct IntuiMessage *)GetMsg(FileNameWdw->UserPort);
  177.    address=(struct Gadget *)Mesg->IAddress;
  178.    ReplyMsg(Mesg);
  179.    return(address->GadgetID);
  180. }
  181.  
  182. OpenWdw()   /*Open the window*/
  183. {
  184.    NewFileNameWdw.Screen=Screen;
  185.  
  186.    if((FileNameWdw=(struct Window *)OpenWindow(&NewFileNameWdw))==NULL)
  187.       exit();
  188. }
  189.  
  190. Memory()    /*Get the chip memory for the OK and CANCEL gadget's images*/
  191. {
  192.    int c;
  193.  
  194.    if((OKChip=(UWORD *)AllocMem(196,MEMF_CHIP|MEMF_CLEAR))==NULL)
  195.       return(FALSE);
  196.  
  197.    if((CancelChip=(UWORD *)AllocMem(196,MEMF_CHIP|MEMF_CLEAR))==NULL)
  198.       return(FALSE);
  199.  
  200.    for(c=0;c<HEIGHTOFGADG;c++)
  201.       {
  202.       OKChip[c]=OKData[c];
  203.       CancelChip[c]=CancelData[c];
  204.       }
  205.  
  206.    OKGadImage.ImageData=OKChip;
  207.    CancelGadImage.ImageData=CancelChip;
  208. }
  209.  
  210. CloseWdwNStuff()  /*Free memory and close the window*/
  211. {
  212.    FreeMem(OKChip,196);
  213.    FreeMem(CancelChip,196);
  214.    CloseWindow(FileNameWdw);
  215. }
  216.  
  217.