home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 8 / amigaformatcd08.iso / screenplay / shareware / pnp098 / modules / testmod0.e < prev    next >
Text File  |  1996-09-18  |  5KB  |  168 lines

  1. /* E Source generated by SRCGEN v0.1 */
  2.  
  3. /* Simple example of a PNP-module by A.Koch */
  4.  
  5. OPT OSVERSION=37
  6.  
  7. MODULE 'gadtools','libraries/gadtools','intuition/intuition',
  8.        'intuition/screens', 'intuition/gadgetclass', 'graphics/text'
  9.  
  10. ENUM NONE,NOCONTEXT,NOGADGET,NOSCREEN,NOVISUAL,OPENGT,NOWINDOW,NOMENUS
  11.  
  12. DEF     testmodwnd:PTR TO window,
  13.         testmodglist,
  14.         infos:PTR TO gadget,
  15.         scr:PTR TO screen,
  16.         visual=NIL,
  17.         offx,offy,tattr:PTR TO textattr,
  18.         insclicked,dataptr,closed,strgad:PTR TO gadget
  19.  
  20. PROC setupscreen()
  21.     IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN RETURN OPENGT
  22.     IF (scr:=LockPubScreen('PNP'))=NIL THEN RETURN NOSCREEN
  23.     IF (visual:=GetVisualInfoA(scr,NIL))=NIL THEN RETURN NOVISUAL
  24.     offy:=scr.wbortop+Int(scr.rastport+58)-10
  25. ENDPROC
  26.  
  27. PROC closedownscreen()
  28.   IF visual THEN FreeVisualInfo(visual)
  29.   IF scr THEN UnlockPubScreen(NIL,scr)
  30.   IF gadtoolsbase THEN CloseLibrary(gadtoolsbase)
  31. ENDPROC
  32.  
  33. PROC opentestmodwindow()
  34.   DEF g:PTR TO gadget
  35.   IF (g:=CreateContext({testmodglist}))=NIL THEN RETURN NOCONTEXT
  36.   IF (g:=CreateGadgetA(STRING_KIND,g,
  37.     [offx+75,offy+26,284,20,'Text',tattr,0,1,visual,0]:newgadget,
  38.     [GTST_MAXCHARS,256,
  39.      NIL]))=NIL THEN RETURN NOGADGET
  40.      strgad:=g
  41.   IF (g:=CreateGadgetA(BUTTON_KIND,g,
  42.     [offx+38,offy+65,105,17,'Insert',tattr,1,16,visual,0]:newgadget,
  43.     [NIL]))=NIL THEN RETURN NOGADGET
  44.   IF (g:=CreateGadgetA(BUTTON_KIND,g,
  45.     [offx+255,offy+65,105,17,'Close',tattr,2,16,visual,0]:newgadget,
  46.     [NIL]))=NIL THEN RETURN NOGADGET
  47.   IF (testmodwnd:=OpenWindowTagList(NIL,
  48.     [WA_LEFT,98,
  49.      WA_TOP,132,
  50.      WA_WIDTH,offx+382,
  51.      WA_HEIGHT,offy+99,
  52.      WA_IDCMP,$24C077E,
  53.      WA_FLAGS,$100E,
  54.      WA_TITLE,'TestMod',
  55.      WA_PUBSCREEN,scr,
  56.      WA_MINWIDTH,67,
  57.      WA_MINHEIGHT,21,
  58.      WA_MAXWIDTH,$280,
  59.      WA_MAXHEIGHT,480,
  60.      WA_AUTOADJUST,1,
  61.      WA_AUTOADJUST,1,
  62.      WA_GADGETS,testmodglist,
  63.      NIL]))=NIL THEN RETURN NOWINDOW
  64.   Gt_RefreshWindow(testmodwnd,NIL)
  65. ENDPROC
  66.  
  67. PROC closetestmodwindow()
  68.   IF testmodwnd THEN CloseWindow(testmodwnd)
  69.   IF testmodglist THEN FreeGadgets(testmodglist)
  70. ENDPROC
  71.  
  72. PROC wait4message(win:PTR TO window)
  73.   DEF mes:PTR TO intuimessage,type,g:LONG,txt[255]:STRING
  74.   REPEAT
  75.     type:=0
  76.     IF mes:=Gt_GetIMsg(win.userport)
  77.       type:=mes.class
  78.       IF type=IDCMP_MENUPICK
  79.         infos:=mes.code
  80.         type:=0
  81.       ELSEIF (type=IDCMP_GADGETDOWN) OR (type=IDCMP_GADGETUP)
  82.         infos:=mes.iaddress
  83.         g:=infos.gadgetid
  84.         stdrast:=testmodwnd.rport
  85.         SELECT g
  86.             CASE 0     /* Stringgadget */
  87.                 type:=0
  88.             CASE 1      /* Insert */
  89.                 type:=0
  90.                 txt:=gt_GetString(strgad)
  91.                 StrCopy(^dataptr,txt,ALL)       /* The content of dataptr can be used by PNP */
  92.                 ^insclicked:=1                  /* Tell PNP that the insertgadget has been   */
  93.                                                 /* clicked. PNP will insert the content of   */
  94.                                                 /* in the texteditor now.                    */
  95.             CASE 2      /*  Close */
  96.                 type:=1
  97.             
  98.         ENDSELECT
  99.       ELSEIF type=IDCMP_REFRESHWINDOW
  100.         Gt_BeginRefresh(win)
  101.         Gt_EndRefresh(win,TRUE)
  102.         type:=0
  103.       ELSEIF type<>IDCMP_CLOSEWINDOW  /* remove these if you like */
  104.         type:=0
  105.       ENDIF
  106.       Gt_ReplyIMsg(mes)
  107.     ELSE
  108.       WaitPort(win.userport)
  109.     ENDIF
  110.   UNTIL type
  111. ENDPROC type
  112.  
  113. PROC reporterr(er)
  114.   DEF erlist:PTR TO LONG
  115.   IF er
  116.     erlist:=['get context','create gadget','lock scr','get visual infos',
  117.       'open "gadtools.library" v37+','open window','create menus']
  118.     EasyRequestArgs(0,[20,0,0,'Could not \s!','ok'],0,[erlist[er-1]])
  119.   ENDIF
  120. ENDPROC er
  121.  
  122. PROC getargs()
  123. DEF myargs:PTR TO LONG,rdargs,buf[255]:STRING
  124.  
  125.     myargs:=[0,0,0,0,0,0]
  126.   IF rdargs:=ReadArgs('SCREEN/A, WINDOW/A, A/A, B/A, C/A, D/A',myargs,NIL)
  127.     
  128.     /* Args 0,1,2 are not used yet */
  129.  
  130.  
  131.     StringF(buf,'\s',myargs[1])
  132.     tattr:=Val(buf,NIL)
  133.  
  134.     StringF(buf,'\s',myargs[3])
  135.     insclicked:=Val(buf,NIL)
  136.     StringF(buf,'\s',myargs[4])
  137.     dataptr:=Val(buf,NIL)
  138.     StringF(buf,'\s',myargs[5])
  139.     closed:=Val(buf,NIL)
  140.     FreeArgs(rdargs)
  141.  
  142.   ENDIF
  143. ENDPROC
  144.  
  145. PROC main()
  146.  
  147.   getargs()
  148.  
  149.   IF reporterr(setupscreen())=0
  150.     reporterr(opentestmodwindow())
  151.     wait4message(testmodwnd)
  152.     closetestmodwindow()
  153.     ^closed:=1      /* Tell PNP that this Module has been closed now */
  154.     IF CtrlC() THEN BRA x
  155.   ENDIF
  156.  
  157.   x: closedownscreen()
  158. ENDPROC
  159.  
  160.  
  161. PROC gt_GetString( gad:PTR TO gadget )
  162.  
  163. DEF si:PTR TO stringinfo
  164.  
  165.         si := gad.specialinfo
  166.  
  167. ENDPROC si.buffer
  168.