home *** CD-ROM | disk | FTP | other *** search
/ ANews 2 / AnewsCD2.iso / Script / ANewsEdit.rexx < prev    next >
OS/2 REXX Batch file  |  1999-10-06  |  42KB  |  1,462 lines

  1. /**********************************************************\
  2. **
  3. **      Interface d'édition du CD ANews
  4. **      ©1999 Frédéric RIGNAULT
  5. **
  6. \**********************************************************/
  7. VERSION = "$VER:v0.40 (24.06.1999)"
  8. VERSION = SUBSTR(VERSION,6)
  9.  
  10. ROOT="ANewsCD:"
  11.  
  12. /* Déclarations Globle */
  13.  
  14. FALSE=0
  15. TRUE=1
  16. NOSELECT=4.2949673E+9
  17. TXTCOL="\0339"
  18. LASTCAT=0
  19. LASTREP=0
  20. LASTLIST=0
  21. typl.0=9        ;icone.0=ROOT||"Icônes/Auto"     ;aide.0="Boutton Action par défaut:\nNE DOIT PAS ETRE LA!"
  22. typl.1="+run"   ;icone.1=ROOT||"Icônes/Run"      ;aide.1="Lancer le programme."
  23. typl.2="+manuel";icone.2=ROOT||"Icônes/Run"      ;aide.2="Execute une action."
  24. typl.3="+voir"  ;icone.3=ROOT||"Icônes/View"     ;aide.3="Visualiser l'image."
  25. typl.4="+son"   ;icone.4=ROOT||"Icônes/Musique"  ;aide.4="Ecouter le son."
  26. typl.5="+ecoute";icone.5=ROOT||"Icônes/Musique"  ;aide.5="Ecouter le son."
  27. typl.6="+jouer" ;icone.6=ROOT||"Icônes/Musique"  ;aide.6="Jouer le module."
  28. typl.7="+html"  ;icone.7=ROOT||"Icônes/Auto"     ;aide.7="Afficher la page Html."
  29. typl.8="+anim"  ;icone.8=ROOT||"Icônes/QuickTime";aide.8="Voir l'annimation"
  30. typl.9="+copie" ;icone.9=ROOT||"Icônes/Archive"  ;aide.9="Copier le(s) fichier."
  31. PrefsLoad=FALSE
  32. IconShow=1
  33.  
  34. /* Déclarations Edition */
  35.  
  36. currinf=NOSELECT
  37. currop=NOSELECT
  38.  
  39. /* Open libs needed */
  40. options results
  41. IF EXISTS("libs:rexxsupport.library") THEN DO
  42.  IF ~SHOW("L","rexxsupport.library") THEN
  43.   IF ~ADDLIB("rexxsupport.library",0,-30,0) THEN EXIT
  44.  END
  45. ELSE EXIT
  46. IF EXISTS("libs:rexxreqtools.library") THEN DO
  47.  IF ~SHOW("L","rexxreqtools.library") THEN
  48.   IF ~ADDLIB("rexxreqtools.library",0,-30) THEN EXIT
  49.  END
  50. ELSE EXIT
  51. Say "Libs:OK"
  52.  
  53. if (show('p','ANEWS')) & (show('p','ASERV')) then do
  54.   address ANEWS SHOW
  55.   exit
  56. end
  57.  
  58. /* Open message Port Of Script */
  59. address rexx
  60. OPENPORT("ASERV")
  61.  
  62. /* Open Muirexx */
  63.  
  64. call StartMUI
  65. call LoadPrefs
  66. call OpenGUI
  67. call InitAll
  68. call GestEvent
  69. address ANEWS QUIT
  70. exit
  71.  
  72. GestEvent:
  73. Do forever
  74.  address ANEWS
  75.  window ID ANEWS ATTRS MUIA_Window_Sleep FALSE
  76.  address REXX
  77.  gotit=0
  78.  do until gotit
  79.   call waitpkt(ASERV);packet=getpkt(ASERV)
  80.   gotit=(packet ~= null())
  81.  end
  82.  address ANEWS
  83.  window ID ANEWS ATTRS MUIA_Window_Sleep TRUE
  84.  address REXX;class=getarg(packet);reply(packet,0)
  85.  say class","LASTCAT","LASTREP","LASTLIST
  86.  address ANEWS
  87.  select
  88.    when class='ABOUT' then do
  89.      request ID ANEWS Title '"A propos du Navigateur ANews"' GADGETS "D'accord" STRING replacepat("Navigateur de CD ANews\nVersion %s\n©1999 Frédéric Rignault", "%s", VERSION )
  90.    end
  91.    when class='QUIT' then break
  92.    when class='PREFS' then call OpenPrefs
  93.    when class='CANCELPREFS' then do
  94.      window ID APREF ATTRS MUIA_Window_Open FALSE
  95.    end
  96.    when class='USEPREFS' then do
  97.      call readprefs
  98.      window ID APREF ATTRS MUIA_Window_Open FALSE
  99.      call saveprefs("USE")
  100.    end
  101.    when class='SAVEPREFS' then do
  102.      call readprefs
  103.      window ID APREF ATTRS MUIA_Window_Open FALSE
  104.      call saveprefs("SAVE")
  105.    end
  106.    when class='CATUPD' then call UpdateReps
  107.    when class='REPUPD' then call UpdateList
  108.    when class='LSTUPD' then call UpdateInfos
  109.    when class='AUTO' then call StartAuto
  110.    when class='GUIDE' then call ShowGuide
  111.  
  112.    when class='SAVE' then call SauverAction
  113.    when class='ADDF' then call CreerAction
  114.    when class='DELC' then call EffacerAction
  115.    when class='NOUV' then do
  116.      call updateList(-1)
  117.    end
  118.    when class='UPC' then Call DeplacerAction("HAUT")
  119.    when class='DOWNC' then Call DeplacerAction("BAS")
  120.    when class='ADDR' then do
  121.      list ID FICH ATTRS MUIA_List_Active
  122.      l=result+1
  123.      if l~=NOSELECT then do
  124.        if fiche.l.dir=FALSE then do
  125.          x=listeaction.0+1
  126.          listeaction.0=x
  127.          listeaction.x=repactuel||fiche.l.nom
  128.          list ID OP INSERT POS MUIA_List_Insert_Bottom STRING repactuel||fiche.l.nom
  129.        end
  130.      end
  131.    end
  132.    when class='ADDD' then do
  133.      list ID FICH ATTRS MUIA_List_Active
  134.      l=result+1
  135.      if l~=NOSELECT then do
  136.        if fiche.l.dir=FALSE then do
  137.          string ID GUID CONTENT repactuel||fiche.l.nom
  138.        end
  139.      end
  140.    end
  141.    when class='ADDI' then do
  142.      list ID FICH ATTRS MUIA_List_Active
  143.      l=result+1
  144.      if l~=NOSELECT then do
  145.        if fiche.l.dir=FALSE then do
  146.          cycle ID IMODE ATTRS MUIA_Cycle_Active
  147.          if result=1 then do
  148.            string ID IFILE CONTENT repactuel||fiche.l.nom
  149.            list ID INF STRING
  150.          end
  151.          else do
  152.            string ID IFILE CONTENT
  153.            string ID REP
  154.            b=repbase||result||repactuel||fiche.l.nom
  155.            say b
  156.            if exists(b) then do
  157.              if open('f1',b,'r') then do
  158.                do forever
  159.                  a=readln('f1')
  160.                  if eof('f1') then break
  161.                  x=listeinfos.0+1
  162.                  listeinfos.0=x
  163.                  listeinfos.x=a
  164.                  list ID INF INSERT POS MUIA_List_Insert_Bottom STRING a
  165.                end
  166.                call close('f1')
  167.              end
  168.            end
  169.          end
  170.        end
  171.      end
  172.    end
  173.    when class='FICH' then do
  174.      list ID FICH ATTRS MUIA_List_Active
  175.      l=result+1
  176.      if l~=NOSELECT then do
  177.        if fiche.l.dir=TRUE then do
  178.          string ID REP2 CONTENT repactuel||fiche.l.nom||'/'
  179.          call UpdateDir
  180.        end
  181.      end
  182.    end
  183.    when class="PARENT" then do
  184.      if length(repactuel)>1 then do
  185.        j=length(repactuel)-1
  186.        do i=j to 1 by -1
  187.           if substr(repactuel,i,1)="/" then break
  188.        end
  189.        say i
  190.        repactuel=left(repactuel,i)
  191.        string ID REP2 CONTENT repactuel
  192.        call UpdateDir
  193.      end
  194.    end
  195.    when class='UPDDIR' then call UpdateDir
  196.  
  197.    /* Gestion liste edition informations */
  198.  
  199.    when class='INFUPD' then do /* Suivis Liste INF */
  200.      list ID INF ATTRS MUIA_List_Active
  201.      a=result+1
  202.      if a~=currinf then do
  203.        currinf=a
  204.        if a~=NOSELECT then string ID EDINF CONTENT listeinfos.a
  205.        else string ID EDINF CONTENT
  206.      end
  207.    end
  208.  
  209.    when class='EDINF' then do /* MàJ texte INFO */
  210.      cycle ID IMODE ATTRS MUIA_Cycle_Active 0
  211.      string ID IFILE CONTENT
  212.      a=currinf
  213.      if a~=NOSELECT then do
  214.         string ID EDINF
  215.         listeinfos.a=result
  216.         currinf=a
  217.         if listeinfos.a="" then do
  218.           list ID INF POS a-1 STRING "(Vide)"
  219.         end
  220.         else do
  221.           list ID INF POS a-1 STRING listeinfos.a
  222.         end
  223.      end
  224.    end
  225.  
  226.    when class='ADDINF' then do /* Ajoute texte INFO */
  227.      cycle ID IMODE ATTRS MUIA_Cycle_Active 0
  228.      string ID IFILE CONTENT
  229.      b=currinf
  230.      a=listeinfos.0+1
  231.      listeinfos.0=a
  232.      listeinfos.a=""
  233.      t="(Nouveau)"
  234.      if b=NOSELECT then do
  235.        string ID EDINF
  236.        if result~="" then do
  237.          t=result
  238.          listeinfos.a=t
  239.        end
  240.      end
  241.      string ID EDINF CONTENT listeinfos.a
  242.      list ID INF POS MUIA_List_Insert_Bottom INSERT STRING t
  243.      list ID INF ATTRS MUIA_List_Active a-1
  244.      currinf=a
  245.    end
  246.  
  247.    when class='INSINF' then do  /* Insert INF */
  248.      cycle ID IMODE ATTRS MUIA_Cycle_Active 0
  249.      string ID IFILE CONTENT
  250.      a=currinf
  251.      if a~=NOSELECT then do
  252.        string ID EDINF CONTENT
  253.        b=listeinfos.0+1
  254.        listeinfos.0=b
  255.        do i=b to a by -1
  256.          j=i+1
  257.          listeinfos.j=listeinfos.i
  258.        end
  259.        listeinfos.a=""
  260.        list ID INF POS a-1 INSERT STRING "(Nouveau)"
  261.        list ID INF ATTRS MUIA_List_Active a-1
  262.        currinf=a
  263.      end
  264.    end
  265.  
  266.    when class='DELINF' then do
  267.      if currinf~=NOSELECT then do
  268.        b=listeinfos.0-1
  269.        listeinfos.0=b
  270.        if b>=currinf then do
  271.          do i=currinf to b
  272.            j=i+1
  273.            listeinfos.i=listeinfos.j
  274.          end
  275.        end
  276.        list ID INF POS currinf-1 STRING
  277.        currinf=min(currinf,b)
  278.        list ID INF ATTRS MUIA_List_Active currinf-1
  279.        currinf=NOSELECT
  280.      end
  281.    end
  282.  
  283.    /* Gestion Liste OP */
  284.  
  285.    when class='OPUPD' then do /* Suivis Liste OP */
  286.      list ID OP ATTRS MUIA_List_Active
  287.      a=result+1
  288.      if a~=currop then do
  289.        currop=a
  290.        if a~=NOSELECT then do
  291.           string ID RFILE CONTENT listeaction.a
  292.        end
  293.        else do
  294.           string ID RFILE CONTENT
  295.        end
  296.      end
  297.    end
  298.  
  299.    when class='RFILE' then do /* MàJ OP */
  300.      /*l