home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / disk / misc / dcmp / source / source.lha / cdglue.c next >
C/C++ Source or Header  |  1993-01-17  |  5KB  |  174 lines

  1. /* $Id: cdglue.c,v 1.3 92/08/31 15:42:40 tf Exp $ © Tobias Ferber */
  2.  
  3. #include <exec/types.h>
  4. #include <exec/memory.h>
  5. #include <intuition/intuition.h>
  6. #include <intuition/intuitionbase.h>
  7.  
  8. extern struct IntuitionBase *IntuitionBase;
  9.  
  10. /* stuff for the req.library */
  11.  
  12. #include <libraries/dosextens.h>
  13. #include <libraries/reqbase.h>
  14.  
  15. extern struct ReqLib *ReqBase;
  16. extern struct Process *MyProcess;
  17. extern APTR OldWindowPtr;
  18.  
  19. /* stuff for the reqtools.library */
  20.  
  21. #include <libraries/reqtools.h>
  22. #include <proto/reqtools.h>
  23.  
  24. extern struct ReqToolsBase *ReqToolsBase;
  25.  
  26.  
  27.  
  28. BOOL a_Requester(char *body, char *pos, char *neg)
  29. {    if(IntuitionBase)
  30.     {    char *okay_text=(char *)NULL;
  31.         if(!(pos && *pos))
  32.         {    if(neg && *neg)
  33.                 okay_text = neg;
  34.             else
  35.                 okay_text = "Resume";
  36.         }
  37.         else if(!(neg && *neg))
  38.             okay_text = pos;
  39.     if(ReqToolsBase)
  40.     { if(okay_text)
  41.         return rtEZRequest(body,okay_text,NULL,NULL);
  42.       else
  43.       { char *response[256];
  44.         sprintf(response,"%s|%s",pos,neg);
  45.         return rtEZRequest(body,response,NULL,NULL);
  46.       }
  47.     }
  48.         else if(ReqBase)
  49.         {    if(okay_text)
  50.                 return SimpleRequest(body);
  51.             else
  52.                 return TwoGadRequest(body);
  53.         }
  54.         else
  55.         {    struct IntuiText BodyText, PosText, NegText;
  56.           struct TextAttr TextAttr;
  57.  
  58.           TextAttr.ta_Name   = "topaz.font";
  59.           TextAttr.ta_YSize  = 8;
  60.           TextAttr.ta_Style  = FS_NORMAL;
  61.           TextAttr.ta_Flags  = FPF_ROMFONT;
  62.  
  63.           BodyText.FrontPen  = 0;
  64.           BodyText.BackPen   = 1;
  65.           BodyText.DrawMode  = JAM2;
  66.           BodyText.LeftEdge  = 10;
  67.           BodyText.TopEdge   = 10;
  68.           BodyText.ITextFont = &TextAttr;
  69.           BodyText.IText     = (UBYTE *)body;
  70.           BodyText.NextText  = NULL;
  71.  
  72.           PosText.FrontPen   = 0;
  73.           PosText.BackPen    = 1;
  74.           PosText.DrawMode   = JAM2;
  75.           PosText.LeftEdge   = 6;
  76.           PosText.TopEdge    = 3;
  77.           PosText.ITextFont  = &TextAttr;
  78.           PosText.IText      = (UBYTE *)(okay_text)?(okay_text):(pos);
  79.           PosText.NextText   = NULL;
  80.  
  81.           NegText.FrontPen   = 0;
  82.           NegText.BackPen    = 1;
  83.           NegText.DrawMode   = JAM2;
  84.           NegText.LeftEdge   = 6;
  85.           NegText.TopEdge    = 3;
  86.           NegText.ITextFont  = &TextAttr;
  87.           NegText.IText      = (UBYTE *)(okay_text)?(okay_text):(neg);
  88.           NegText.NextText   = NULL;
  89.  
  90.           return
  91.        AutoRequest(NULL, &BodyText, &PosText, &NegText, 0L, 0L, 320L, 60L);
  92.       }
  93.     }
  94.     return(FALSE); /* => requester was [Cancel]ed */
  95. }
  96.  
  97.  
  98. BOOL a_GetLongRequester(long *value, char *title, long min, long max)
  99. { if(IntuitionBase)
  100.   { if(ReqToolsBase)
  101.     {
  102.       return rtGetLong(value, title, NULL, RTGL_ShowDefault, FALSE, TAG_END);
  103.     }
  104.     else if(ReqBase)
  105.     { struct GetLongStruct req_gls;
  106.       req_gls.titlebar      = title;
  107.       req_gls.defaultval    = *value;
  108.       req_gls.minlimit      = min;
  109.       req_gls.maxlimit      = max;
  110.       req_gls.window        = (struct Window *)NULL;
  111.       req_gls.versionnumber = REQVERSION;
  112.       req_gls.flags         = 0;
  113.       req_gls.rfu2          = 0;
  114.       if(GetLong(&req_gls))
  115.       { *value = req_gls.result;
  116.         return(TRUE);
  117.       }
  118.       return(FALSE);
  119.     }
  120.     else
  121.     {
  122.       a_Requester("No get number requester available","Cancel",NULL);
  123.     }
  124.   }
  125.   return(FALSE);
  126. }
  127.  
  128. void a_FileRequester(char *fname, char *title)
  129. { if(IntuitionBase)
  130.     { static char file[256], dir[256];
  131.         stcgfp(dir,fname);
  132.     stcgfn(file,fname);
  133.     if(ReqToolsBase)
  134.     { struct rtFileRequester *rt_filereq;
  135.       if(rt_filereq = rtAllocRequest(RT_FILEREQ, NULL))
  136.       { rtChangeReqAttr(rt_filereq,RTFI_Dir,dir);
  137.         if(rtFileRequest(
  138.           rt_filereq,
  139.           file,
  140.           title,
  141.           TAG_END))
  142.         { /* glue path + node => make filename /w path */
  143.           strmfp(fname, rt_filereq->Dir, file);
  144.         }
  145.         rtFreeRequest(rt_filereq);
  146.       }
  147.       else rtEZRequest("Out of memory!","Shit",NULL,NULL,NULL);
  148.     }
  149.     else if(ReqBase)
  150.     { struct ReqFileRequester *req_filereq;
  151.       req_filereq = (struct ReqFileRequester *)
  152.         AllocMem(sizeof(struct ReqFileRequester),MEMF_CLEAR);
  153.       if(req_filereq)
  154.       { req_filereq->Title    = title;
  155.         req_filereq->Dir      = dir;
  156.         req_filereq->File     = file;
  157.         req_filereq->PathName = fname;
  158.         req_filereq->Window   = IntuitionBase->ActiveWindow;
  159.         req_filereq->Flags    = FRQCACHINGM|FRQINFOGADGETM;
  160.         req_filereq->dirnamescolor    = 2;
  161.         req_filereq->devicenamescolor = 2;
  162.         req_filereq->VersionNumber    = REQVERSION;
  163.         FileRequester(req_filereq);
  164.         PurgeFiles(req_filereq); /* FRQCACHINGM ! */
  165.         FreeMem(req_filereq, sizeof(struct ReqFileRequester));
  166.       }
  167.     }
  168.     else
  169.     {
  170.       a_Requester("No file requester available","Cancel",NULL);
  171.     }
  172.   }
  173. }
  174.