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

  1. /* Swapname-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=1, 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
  27.  stringlist[256]:ARRAY OF LONG
  28.  name:PTR TO CHAR
  29.  newname:CHAR
  30. ENDOBJECT
  31.  
  32. DEF mrp:PTR TO multiren_plugin, -> The communication object
  33.     s[FILE_NAME_LENGTH]:STRING, -> The string we will use and return to MultiRen
  34.     fh, inclext=1               -> The configuration..
  35.  
  36. PROC main()
  37.  DEF sel, sigbit, sig, mtask, msig
  38.  '$VER: SwapName v1.1 rev.#2 by Deniil 715! (2000-07-04)'
  39.  IF arg
  40.   IF mrp:=Val(arg)
  41.    IF mrp.id="MRPO"
  42.     IF (sigbit:=AllocSignal(-1))>=0
  43.      sig:=Shl(1,sigbit)
  44.      LOOP
  45.       sel:=mrp.command
  46.       SELECT sel
  47.       CASE COM_ASK
  48.        mtask:=mrp.task
  49.        msig:=mrp.sig
  50.        mrp.return:=ask()
  51.        SetProgramName(mrp.name)
  52.        mrp.task:=FindTask(NIL)
  53.        mrp.sig:=sig
  54.       CASE COM_EXTRACT   ; mrp.return:=extract()
  55.       CASE COM_CONFIGURE ; mrp.return:=config()
  56.       CASE COM_ABOUT     ; mrp.return:=about()
  57.       CASE COM_QUIT
  58.        FreeSignal(sigbit)
  59.        mrp.return:=cleanup()
  60.        Signal(mtask,msig)
  61.        RETURN
  62.       DEFAULT ; mrp.return:=ERR_UNKNOWN
  63.       ENDSELECT
  64.       Signal(mtask,msig)
  65.       Wait(sig)
  66.      ENDLOOP
  67.     ELSE
  68.      Signal(mrp.task,mrp.sig)
  69.      mrp.return:=ERR_NOSIG
  70.      RETURN
  71.     ENDIF
  72.    ENDIF
  73.   ENDIF
  74.  ENDIF
  75.  WriteF('This is a plugin for MultiRen!\n' +
  76.         'It is not supposed to be executed manually!\n' +
  77.         'Use it through the Renplacer tool in MultiRen instead!\n')
  78. ENDPROC ERR_FATAL
  79.  
  80. PROC ask()
  81.  mrp.numstrings:=NUMSTRINGS_FOR_THIS_PLUGIN   -> I will return one string
  82.  mrp.stringlist[0]:='Filename turn backwards' -> Setting information-strings
  83.  mrp.name:='SwapName'                         -> This plugins name
  84.  mrp.newname:=1       -> As this plugin is doing stuff with the filename
  85.                       -> and not the file it is wise to request New name.
  86.                       -> NOTE: Do NOT enter TRUE here as that is -1!
  87.  IF fh:=Open('PROGDIR:Plugins/SwapName-plugin.cfg',OLDFILE) -> Open configfile
  88.   inclext:=Inp(fh) -> The prefs telling if we should include extension
  89.                    -> in the swap or not..
  90.   Close(fh)
  91.  ENDIF
  92. ENDPROC
  93.  
  94. PROC extract() -> Do my stuff..
  95.  DEF x, y, z, st
  96.  st:=FilePart(mrp.name) -> Note that we get the complete path in name
  97.                         -> and must separate it to get the filename.
  98.  x:=StrLen(st)-1
  99.  IF x<FILE_NAME_LENGTH
  100.   IF inclext
  101.    FOR y:=0 TO x DO s[y]:=st[x-y]
  102.    SetStr(s,x+1)
  103.   ELSE
  104.    FOR z:=x TO 0 STEP -1 DO EXIT st[z]="."
  105.    IF z>0 THEN DEC z ELSE z:=x
  106.    FOR y:=0 TO z DO s[y]:=st[z-y]
  107.    SetStr(s,z+1)
  108.    IF z<x THEN StrAdd(s,st+z+1)
  109.   ENDIF
  110.   mrp.stringlist[0]:=s -> Setting the string-list position 0 to point to our string
  111.   RETURN ERR_OK
  112.  ELSE
  113.   RETURN ERR_OTHER -> Filename was longer than the set max-length for MultiRen v1.3
  114.  ENDIF
  115. ENDPROC
  116.  
  117. PROC config()
  118.  inclext:=req('Do you want the extension to be\n' +
  119.               'part of the filename swapping??',
  120.               'Yes|No|Cancel')
  121.  IF inclext
  122.   IF fh:=Open('PROGDIR:Plugins/SwapName-plugin.cfg',NEWFILE)
  123.    Out(fh,inclext AND 1)
  124.    Close(fh)
  125.   ELSE
  126.    req('Could not save the settings!','OK')
  127.   ENDIF
  128.  ENDIF
  129. ENDPROC ERR_OK -> Will always return ERR_OK here so that MultiRen will not
  130.                -> put up another requester telling this operation failed.
  131.  
  132. PROC about()
  133.  IF req('SwapName Plugin v1.1 rev.#2 by Deniil 715! for MultiRen\n\n' +
  134.         'It was made 2000-07-04 in Amiga-E\n\n' +
  135.         'E-mail: deniil@algonet.se','More|OK')
  136.   req('This plugin will swap the filename backwards.\n' +
  137.       'It features a setting to include the file-\n' +
  138.       'extension in the swapping or not.','OK')
  139.  ENDIF
  140. ENDPROC ERR_OK
  141.  
  142. PROC cleanup() IS ERR_OK
  143.  
  144. PROC req(body,gads) IS EasyRequestArgs(NIL,[20,0,'SwapName Plugin',body,gads],NIL,NIL)