home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 20 / AACD20.BIN / AACD / Utilities / MultiRen / Developers / Test-Plugin.mrp.e < prev   
Text File  |  2000-07-03  |  4KB  |  118 lines

  1. /* Test-plugin v1.1 rev.#2 by Deniil 715! for MultiRen
  2.    Made 2000-07-04
  3.  
  4.    E-mail to me, Daniel Westerberg: deniil@algonet.se
  5. */
  6.  
  7. CONST NUMSTRINGS_FOR_THIS_PLUGIN=2, FILE_NAME_LENGTH=512,
  8.       COM_ASK=1, COM_EXTRACT=2, COM_CONFIGURE=3, COM_ABOUT=4, COM_QUIT=5,
  9.       ERR_OK=0,
  10.       ERR_NOMEM=1,
  11.       ERR_NOFILE=2,
  12.       ERR_NOSIG=3,
  13.       ERR_NOTIMPL=4,
  14.       ERR_UNKNOWN=5,
  15.       ERR_OTHER=6,
  16.       ERR_WRONGFORMAT=7,
  17.       ERR_NOINFO=8,
  18.       ERR_FATAL=20
  19.  
  20. OBJECT multiren_plugin
  21.  id:LONG
  22.  task:LONG
  23.  sig:LONG
  24.  return:INT
  25.  command:CHAR
  26.  numstrings:CHAR               /* You will */
  27.  stringlist[256]:ARRAY OF LONG /* only use */
  28.  name:PTR TO CHAR              /* these 4 */
  29.  newname:CHAR                  /* elements */
  30. ENDOBJECT
  31.  
  32. DEF mrp:PTR TO multiren_plugin, hex[8]:STRING, ascii[4]:STRING
  33.  
  34. PROC main()
  35.  DEF sel, sigbit, sig, mtask, msig
  36.  '$VER: TestPlugin v1.1 rev.#2 by Deniil 715! (2000-07-04)'
  37.  IF arg
  38.   IF mrp:=Val(arg)
  39.    IF mrp.id="MRPO"
  40.     IF (sigbit:=AllocSignal(-1))>=0
  41.      sig:=Shl(1,sigbit)
  42.      LOOP
  43.       sel:=mrp.command
  44.       SELECT sel
  45.       CASE COM_ASK
  46.        mtask:=mrp.task
  47.        msig:=mrp.sig
  48.        mrp.return:=ask()
  49.        SetProgramName(mrp.name)
  50.        mrp.task:=FindTask(NIL)
  51.        mrp.sig:=sig
  52.       CASE COM_EXTRACT   ; mrp.return:=extract()
  53.       CASE COM_CONFIGURE ; mrp.return:=config()
  54.       CASE COM_ABOUT     ; mrp.return:=about()
  55.       CASE COM_QUIT
  56.        FreeSignal(sigbit)
  57.        mrp.return:=cleanup()
  58.        Signal(mtask,msig)
  59.        RETURN
  60.       DEFAULT ; mrp.return:=ERR_UNKNOWN
  61.       ENDSELECT
  62.       Signal(mtask,msig)
  63.       Wait(sig)
  64.      ENDLOOP
  65.     ELSE
  66.      Signal(mrp.task,mrp.sig)
  67.      mrp.return:=ERR_NOSIG
  68.      RETURN
  69.     ENDIF
  70.    ENDIF
  71.   ENDIF
  72.  ENDIF
  73.  WriteF('This is a plugin for MultiRen!\n' +
  74.         'It is not supposed to be executed manually!\n' +
  75.         'Use it through the Renplacer tool in MultiRen instead!\n')
  76. ENDPROC ERR_FATAL
  77.  
  78. PROC ask()
  79.  mrp.numstrings:=NUMSTRINGS_FOR_THIS_PLUGIN  -> I will return 2 strings
  80.  mrp.stringlist[0]:='First 4 bytes as hex'   -> Setting information-strings
  81.  mrp.stringlist[1]:='First 4 bytes as ASCII'
  82.  mrp.name:='Test Plugin' -> This plugins name
  83.  mrp.newname:=FALSE      -> This plugin reads info from the file and it is
  84.                          -> therefor unwise to request newname as it changes
  85.                          -> and the file will not be found.
  86. ENDPROC ERR_OK
  87.  
  88. PROC extract() -> Do my stuff..
  89.  DEF fh, len
  90.  IF FileLength(mrp.name)<4 THEN RETURN ERR_NOINFO
  91.  IF fh:=Open(mrp.name,OLDFILE) -> Open the file that later is going to be renamed.
  92.   len:=Read(fh,ascii,4)
  93.   Close(fh)
  94.   IF len<>4 THEN RETURN ERR_OTHER
  95.   SetStr(ascii,4)
  96.   StringF(hex,'\r\z\h\z\h\z\h\z\h',ascii[0],ascii[1],ascii[2],ascii[3])
  97.   mrp.stringlist[0]:=hex   -> Set the pointers so that MultiRen
  98.   mrp.stringlist[1]:=ascii -> can get my strings.
  99.   RETURN ERR_OK -> My stuff went ok
  100.  ENDIF
  101. ENDPROC ERR_NOFILE -> The file didn't open
  102.  
  103. PROC config() IS ERR_NOTIMPL -> There is no config for this plugin
  104.  
  105. PROC about()
  106.  IF req('Test Plugin v1.1 rev.#2 by Deniil 715! for MultiRen\n\n' +
  107.         'It was made 2000-07-04 in Amiga-E\n\n' +
  108.         'E-mail: deniil@algonet.se','More|OK')
  109.   req('This plugin will return the first 4 bytes\n' +
  110.       'of the file to rename in two ways. The first\n' +
  111.       'string will be the 4 bytes in hexadecimal,\n' +
  112.       'the other one just as a plain string.','OK')
  113.  ENDIF
  114. ENDPROC ERR_OK
  115.  
  116. PROC cleanup() IS ERR_OK
  117.  
  118. PROC req(body,gads) IS EasyRequestArgs(NIL,[20,0,'Test Plugin',body,gads],NIL,NIL)