home *** CD-ROM | disk | FTP | other *** search
/ ANews 1 / AnewsCD01.iso / ANews < prev    next >
Text File  |  1999-08-15  |  31KB  |  960 lines

  1. /**********************************************************\
  2. **
  3. **      Interface du CD ANews
  4. **      ©1999 Frédéric RIGNAULT
  5. **
  6. \**********************************************************/
  7. VERSION = "$VER:v0.81 (13.08.1999)"
  8. VERSION = SUBSTR(VERSION,6)
  9.  
  10. ROOT="ANewsCD:"
  11.  
  12. DEBUG=0
  13. REDIR=">NIL:"
  14.  
  15. /* Déclarations Globale */
  16.  
  17. FALSE=0
  18. TRUE=1
  19. NOSELECT=4.2949673E+9
  20. TXTCOL="\0339" /* \0339 */
  21. TXTCOL2="\0339"
  22. LASTCAT=0
  23. LASTREP=0
  24. LASTLIST=0
  25. typl.0=11       ;icone.0=ROOT||"Icônes/Auto"     ;aide.0="Boutton Action par défaut:\nNE DOIT PAS ETRE LA!"
  26. typl.1="+run"   ;icone.1=ROOT||"Icônes/Run"      ;aide.1="Lancer le programme."
  27. typl.2="+manuel";icone.2=ROOT||"Icônes/Run"      ;aide.2="Execute une action."
  28. typl.3="+voir"  ;icone.3=ROOT||"Icônes/View"     ;aide.3="Visualiser l'image."
  29. typl.4="+son"   ;icone.4=ROOT||"Icônes/Musique"  ;aide.4="Ecouter le son."
  30. typl.5="+ecoute";icone.5=ROOT||"Icônes/Musique"  ;aide.5="Ecouter le son."
  31. typl.6="+jouer" ;icone.6=ROOT||"Icônes/Musique"  ;aide.6="Jouer le module."
  32. typl.7="+html"  ;icone.7=ROOT||"Icônes/HTML"     ;aide.7="Afficher la page Html."
  33. typl.8="+anim"  ;icone.8=ROOT||"Icônes/Video"    ;aide.8="Voir l'animation"
  34. typl.9="+copie" ;icone.9=ROOT||"Icônes/Disk"     ;aide.9="Copier le(s) fichier."
  35. typl.10="+extract";icone.10=ROOT||"Icônes/Archive" ;aide.10="Extraire l'archive et lance l'installation si disponible."
  36. typl.11="+install";icone.11=ROOT||"Icônes/Disk"    ;aide.11="Lancement de l'installation."
  37. PrefsLoad=FALSE
  38. IconShow=1
  39. IconGuide=1
  40.  
  41. /* Open libs needed */
  42. options results
  43. IF EXISTS("libs:rexxsupport.library") THEN DO
  44.  IF ~SHOW("L","rexxsupport.library") THEN
  45.   IF ~ADDLIB("rexxsupport.library",0,-30,0) THEN EXIT
  46.  END
  47. ELSE EXIT
  48. IF EXISTS("libs:rexxreqtools.library") THEN DO
  49.  IF ~SHOW("L","rexxreqtools.library") THEN
  50.   IF ~ADDLIB("rexxreqtools.library",0,-30) THEN EXIT
  51.  END
  52. ELSE EXIT
  53. if DEBUG=1 then Say "Libs:OK"
  54.  
  55. if (show('p','ANEWS')) & (show('p','ASERV')) then do
  56.   address ANEWS SHOW
  57.   exit
  58. end
  59.  
  60. /* Open message Port Of Script */
  61. address rexx
  62. OPENPORT("ASERV")
  63.  
  64. /* Open Muirexx */
  65.  
  66. call StartMUI
  67. call LoadPrefs
  68. call OpenGUI
  69. call InitAll
  70. call GestEvent
  71. address ANEWS QUIT
  72. exit
  73.  
  74. GestEvent:
  75. Do forever
  76.  address ANEWS
  77.  window ID ANEWS ATTRS MUIA_Window_Sleep FALSE
  78.  address REXX
  79.  gotit=0
  80.  do until gotit
  81.   call waitpkt(ASERV);packet=getpkt(ASERV)
  82.   gotit=(packet ~= null())
  83.  end
  84.  address ANEWS
  85.  window ID ANEWS ATTRS MUIA_Window_Sleep TRUE
  86.  address REXX;class=getarg(packet);reply(packet,0)
  87.  if debug=1 then say class","LASTCAT","LASTREP","LASTLIST
  88.  address ANEWS
  89.  select
  90.    when class='ABOUT' then do
  91.      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 )
  92.    end
  93.    when class='QUIT' then break
  94.    when class='PREFS' then call OpenPrefs
  95.    when class='CANCELPREFS' then do
  96.      window ID APREF ATTRS MUIA_Window_Open FALSE
  97.    end
  98.    when class='USEPREFS' then do
  99.      call readprefs
  100.      window ID APREF ATTRS MUIA_Window_Open FALSE
  101.      call saveprefs("USE")
  102.    end
  103.    when class='SAVEPREFS' then do
  104.      call readprefs
  105.      window ID APREF ATTRS MUIA_Window_Open FALSE
  106.      call saveprefs("SAVE")
  107.    end
  108.    when class='CATUPD' then call UpdateReps
  109.    when class='REPUPD' then call UpdateList
  110.    when class='LSTUPD' then call UpdateInfos
  111.    when class='AUTO' then call StartAuto
  112.    when class='GUIDE' then call ShowGuide
  113.    when class='HELP' then call ShowHelp
  114.    otherwise do
  115.      if debug=1 then say class||"?"
  116.    end
  117.  end
  118. end
  119. return
  120.  
  121. InitAll:
  122. If open('f1',ROOT||"Arbre.ani",'r') then Do
  123.  i=0
  124.  j=0
  125.  Arbre.0=0
  126.  do forever
  127.    a=readln('f1')
  128.    if a="END" then break
  129.    if left(a,1)="+" then do
  130.      j=j+1
  131.      parse var a "+" b "," c
  132.      Arbre.i.0=j
  133.      Arbre.i.j.Titre=b
  134.      Arbre.i.j.Rep=c
  135.    end
  136.    else do
  137.      i=i+1
  138.      Arbre.0=i
  139.      Arbre.i.Titre=a
  140.      j=0
  141.      Arbre.i.0=j
  142.    end
  143.  end
  144.  a=close('f1')
  145.  End
  146.  
  147. address ANEWS
  148.  
  149. list ID CATS ATTRS MUIA_List_Quiet TRUE
  150. do i=1 to Arbre.0
  151.   list ID CATS INSERT POS MUIA_List_Insert_Bottom STRING TXTCOL||Arbre.i.Titre
  152. end
  153. list ID CATS ATTRS MUIA_List_Quiet FALSE MUIA_List_Active 0
  154. return
  155.  
  156. UpdateReps:
  157. list ID CATS ATTRS MUIA_List_Active
  158. i=result+1
  159. if LASTCAT=i then return
  160. LASTCAT=i
  161. list ID REPS STRING
  162. list ID REPS ATTRS MUIA_List_Quiet TRUE
  163. DO j=1 to Arbre.i.0
  164.   LIST ID REPS INSERT POS MUIA_List_Insert_Bottom STRING TXTCOL||Arbre.i.j.Titre
  165. end
  166. list ID REPS ATTRS MUIA_List_Quiet FALSE MUIA_List_Active 0
  167. LASTREP=0
  168. return
  169.  
  170. UpdateList:
  171. parse arg nouv
  172.  
  173. if nouv="" then nouv=0
  174.  
  175. list ID CATS ATTRS MUIA_List_Active
  176. i=result+1
  177. list ID REPS ATTRS MUIA_List_Active
  178. j=result+1
  179.  
  180. if (LASTREP=j) & (nouv=0) then return
  181. LASTREP=j
  182.  
  183. list ID LIST STRING
  184. list ID LIST ATTRS MUIA_List_Quiet TRUE
  185.  
  186. repertoire=ROOT||Arbre.i.j.Rep
  187.  
  188. i=0
  189. if exists(repertoire||'contenu.ani') then do
  190.   If open('f1',repertoire||"contenu.ani",'r') then Do
  191.     do forever
  192.       a=readln('f1')
  193.       if eof('f1') then break
  194.       parse var a b '=' c
  195.       select
  196.         when b="nom" then do
  197.           i=i+1
  198.           contenu.0=i
  199.           contenu.i.nom=c
  200.           contenu.i.finfo=""
  201.           contenu.i.rep=""
  202.           contenu.i.guide=""
  203.           contenu.i.action.0=0
  204.           contenu.i.infos.0=0
  205.           list ID LIST INSERT POS MUIA_List_Insert_Bottom STRING TXTCOL||c
  206.         end
  207.         when b="+rep" then contenu.i.rep=c
  208.         when b="+guide" then contenu.i.guide=c
  209.         when b="+infos" then do
  210.           k=contenu.i.infos.0+1
  211.           contenu.i.infos.0=k
  212.           contenu.i.infos.k=a
  213.         end
  214.         when b="+finfo" then contenu.i.finfo=c
  215.         otherwise do
  216.           j=contenu.i.action.0+1
  217.           contenu.i.action.0=j
  218.           contenu.i.action.j=a
  219.         end
  220.       end
  221.     end
  222.   a=close('f1')
  223.   end
  224. end
  225. list ID LIST ATTRS MUIA_List_Quiet FALSE
  226. if i>0 then do
  227.   if nouv=0 then nouv=1
  228.   if nouv>=0 then list ID LIST ATTRS MUIA_List_Active nouv-1
  229. end
  230. else do
  231.   call UpdGuide(0)
  232.   call UpdIcon(0)
  233. end
  234. LASTLIST=0
  235. return
  236.  
  237. UpdateInfos:
  238. list ID CATS ATTRS MUIA_List_Active
  239. i=result+1
  240. list ID REPS ATTRS MUIA_List_Active
  241. j=result+1
  242. list ID LIST ATTRS MUIA_List_Active
  243. k=result+1
  244. if LASTLIST=k then return
  245. LASTLIST=k
  246. repertoire=ROOT||Arbre.i.j.Rep
  247. repbase=repertoire
  248. etat=0
  249. listeaction.0=0
  250. listeinfos.0=0
  251. if k=NOSELECT then return
  252. b="nom="||contenu.k.nom
  253. if contenu.k.infos.0>0 then do
  254.  if open('f2',"T:infos.txt",'w') then do
  255.    do l=1 to contenu.k.infos.0
  256.      parse var contenu.k.infos.l a '=' b
  257.      x=listeinfos.0+1
  258.      listeinfos.0=x
  259.      listeinfos.x=b
  260.      call writeln('f2',b)
  261.    end
  262.    call close('f2')
  263.    VIEW ID INFOS FILE "T:infos.txt"
  264.  end
  265. end
  266. else do
  267.    fichier=repbase||contenu.k.rep||contenu.k.finfo
  268.    if exists(fichier) then do
  269.      VIEW ID INFOS FILE fichier
  270.    end
  271. end
  272. repbase=repertoire
  273. if contenu.k.action.0>0 then do
  274.   parse var contenu.k.action.1 a '=' b
  275.   m=0
  276.   do l=1 to typl.0
  277.     if typl.l=a then do
  278.       m=l
  279.       break
  280.     end
  281.   end
  282.   if debug=1 then say "Image:"||m
  283.   call UpdIcon(m)
  284.   do l=1 to contenu.k.action.0
  285.     parse var contenu.k.action.l a '=' b
  286.     x=listeaction.0+1
  287.     listeaction.0=x
  288.     listeaction.x=b
  289.   end
  290. end
  291. else do
  292.   call UpdIcon(0)
  293. end
  294. if (Contenu.k.guide~=lastfile) & (Contenu.k.guide~="") then do
  295.   a=upper(Contenu.k.guide)
  296.   select
  297.    when right(a,6)=".GUIDE" then call UpdGuide(1)
  298.    when (right(a,5)=".HTML") | (right(a,4)=".HTM") then call UpdGuide(2)
  299.    otherwise call UpdGuide(3)
  300.   end
  301. end
  302. else do
  303.   call UpdGuide(0)
  304. end
  305. return
  306.  
  307. UpdIcon:
  308. if IconShow~=0 then do
  309.   image ID 'AUT'||IconShow ATTRS MUIA_ShowMe FALSE
  310.   IconShow=0
  311. end
  312. if arg(1)~=IconShow then do
  313.   IconShow=arg(1)
  314.   image ID 'AUT'||IconShow ATTRS MUIA_ShowMe TRUE
  315. end
  316. return
  317.  
  318. UpdGuide:
  319. if IconGuide~=0 then do
  320.   image ID 'GUID'||IconGuide ATTRS MUIA_ShowMe FALSE
  321.   IconGuide=0
  322. end
  323. if arg(1)~=IconGuide then do
  324.   IconGuide=arg(1)
  325.   image ID 'GUID'||IconGuide ATTRS MUIA_ShowMe TRUE
  326. end
  327. return
  328.  
  329. View:
  330. if exists(arg(1)) then do
  331.  if open('f1',arg(1),'r') then do
  332.    if open('f2',"T:info.txt","w") then do
  333.      etat=FALSE
  334.      do forever
  335.        a=readln('f1')
  336.        if eof('f1') then break
  337.        if etat=FALSE then do
  338.          if a=";infos" then etat=TRUE
  339.        end
  340.        else do
  341.          call writeln('f2',a)
  342.        end
  343.      end
  344.      call close('f2')
  345.    end
  346.    call close('f1')
  347.    view ID INFOS FILE "T:info.txt"
  348.  end
  349. end
  350. else do
  351.   etat=FALSE
  352.   view ID INFOS STRING ""
  353. end
  354. return(etat)
  355.  
  356. ShowGuide:
  357. list ID LIST ATTRS MUIA_List_Active
  358. k=result+1
  359. if k=NOSELECT then return
  360. fichier=repbase||contenu.k.rep||Contenu.k.guide
  361. if exists(fichier) then do
  362.  select
  363.   when (upper(right(fichier,4))=".HTM") | (upper(right(fichier,5))=".HTML") then do
  364.     address command "run "||REDIR||" rx "||ROOT||"script/html.rexx "||prefs.html.type||" "||prefs.html.exe||' "'fichier'"'
  365.   end
  366.   when upper(right(fichier,6))=".GUIDE" then do
  367.     address COMMAND 'run '||REDIR||' '||prefs.guide||' "'||fichier||'"'
  368.   end
  369.   otherwise do
  370.     address COMMAND 'run '||REDIR||' '||prefs.texte||' "'||fichier||'"'
  371.   end
  372.  end
  373. end
  374. return
  375.  
  376. ShowHelp:
  377. address command "run "||REDIR||" rx "||ROOT||"script/html.rexx "||prefs.html.type||" "||prefs.html.exe||' "'||ROOT||'Aide/aide.html"'
  378. return
  379.  
  380. StartAuto:
  381. repcopy="#"
  382. list ID LIST ATTRS MUIA_List_Active
  383. k=result+1
  384. if k=NOSELECT then return
  385. if contenu.k.action.0>0 then do
  386.  if left(contenu.k.action.1,8)="+manuel=" then do
  387.    if open('f1',"T:script.run","w") then do
  388.      do l=1 to contenu.k.action.0
  389.        parse var contenu.k.action.l b '=' a
  390.        call writeln('f2',a)
  391.      end
  392.      call close('f1')
  393.      address command "run "||REDIR||" execute <>NIL: T:script.run"
  394.    end
  395.  end
  396.  else do
  397.    do l=1 to contenu.k.action.0
  398.     parse var contenu.k.action.l b '=' a
  399.     fichier=repbase||contenu.k.rep||a
  400.     if debug=1 then say fichier
  401.     select
  402.       when b="+run" then do
  403.         if exists(fichier) then do
  404.           address command "cd "||repbase||contenu.k.rep||'0a'x||"run "||REDIR||' "'||a||'"'
  405.         end
  406.       end
  407.       when b="+voir" then do
  408.         if exists(fichier) then do
  409.           address command prefs.visu||" "||REDIR||' "'||fichier||'"'
  410.         end
  411.       end
  412.       when b="+son" then do
  413.         if exists(fichier) then do
  414.           address command prefs.son||" "||REDIR||' "'||fichier||'"'
  415.         end
  416.       end
  417.       when b="+ecoute" then do
  418.         if exists(fichier) then do
  419.           address command "run "||REDIR||" rx "||ROOT||"script/ecoute.rexx "||prefs.mus.type||" "||prefs.mus.exe||' "'||fichier||'"'
  420.         end
  421.       end
  422.       when b="+jouer" then do
  423.         if exists(fichier) then do
  424.           address command "run "||REDIR||" rx "||ROOT||"script/jouer.rexx "||prefs.mod.type||" "||prefs.mod.exe||' "'||fichier||'"'
  425.         end
  426.       end
  427.       when b="+html" then do
  428.         if exists(fichier) then do
  429.           address command "run "||REDIR||" rx "||ROOT||"script/html.rexx "||prefs.html.type||" "||prefs.html.exe||' "'||fichier||'"'
  430.         end
  431.       end
  432.       when b="+anim" then do
  433.         if exists(fichier) then do
  434.           f5=right(upper(fichier),5)
  435.           f4=right(upper(fichier),4)
  436.           f3=right(upper(fichier),3)
  437.           if f5=".ANIM" then do
  438.             address command "run "||REDIR||" "||prefs.anim.iff||' "'||fichier||'"'
  439.           end
  440.           if f4=".AVI" then do
  441.             address command "run "||REDIR||" "||prefs.anim.avi||' "'||fichier||'"'
  442.           end
  443.           if (f4=".FLI") | (f4=".FLC") then do
  444.             address command "run "||REDIR||" "||prefs.anim.fli||' "'||fichier||'"'
  445.           end
  446.           if (f5=".MPEG") | (f4=".MPG") then do
  447.             address command "run "||REDIR||" "||prefs.anim.mpeg||' "'||fichier||'"'
  448.           end
  449.           if (f3=".QT") | (f4=".MOV") then do
  450.             address command "run "||REDIR||" "||prefs.anim.qt||' "'||fichier||'"'
  451.           end
  452.         end
  453.       end
  454.       when b="+copie" then do
  455.         if repcopy="#" then do
  456.           aslrequest ID ANEWS ATTRS ASLFR_DrawersOnly TRUE ASLFR_InitialDrawer '"'prefs.repdef'"' TITLE """Endroit où copier les fichiers..."""
  457.           if debug=1 then say "Request="result
  458.           repcopy=result
  459.           if repcopy~="0" then do
  460.             if ~exists(repcopy) then do
  461.               repcopy=""
  462.               request ID ANEWS TITLE """Erreur""" GADGETS "OK" STRING "Le répertoire que vous avez selectionné\nn'est pas valide.\nRecommancez l'opération en donnant un\nchemain valide."
  463.             end
  464.             if ~exists(repcopy||contenu.k.rep) then do
  465.                address command "makedir "||repcopy||left(contenu.k.rep,length(contenu.k.rep)-1)
  466.             end
  467.           end
  468.         end
  469.         if repcopy~="" then do
  470.           address command "copy NOREQ CLONE "||fichier||" TO "||repcopy||contenu.k.rep
  471.         end
  472.       end
  473.       when b="+extract" then do
  474.         if repcopy="#" then do
  475.           aslrequest ID ANEWS ATTRS ASLFR_DrawersOnly TRUE ASLFR_InitialDrawer '"'prefs.repdef'"' TITLE """Endroit où extraire l'archive..."""
  476.           repcopy=result
  477.           if ~exists(repcopy) then do
  478.             repcopy=""
  479.             request ID ANEWS TITLE """Erreur""" GADGETS "OK" STRING "Le répertoire que vous avez selectionné\nn'est pas valide.\nRecommancez l'opération en donnant un\nchemain valide."
  480.           end
  481.         end
  482.         if (repcopy~="#") & (repcopy~="")  then do
  483.           select
  484.             when right(upper(fichier),4)=".LHA" then do
  485.               address command "lha x -a -e -r -q "||fichier||" "||repcopy
  486.             end
  487.             when right(upper(fichier),4)=".LZX" then do
  488.               address command "lzx x -a -e -r "||fichier||" "||repcopy
  489.             end
  490.             otherwise do
  491.               if exists(repcopy||a) then do
  492.                 say pathstr(repcopy||a)
  493.                 say exestr(repcopy||a)
  494.                 address command "cd "||pathstr(repcopy||a)||'0a'x||"installer "||exestr(repcopy||a)
  495.               end
  496.             end
  497.           end
  498.         end
  499.       end
  500.       when b="+install" then do
  501.         if exists(fichier) then do
  502.           address command "cd "||pathstr(fichier)||'0a'x||"installer "||exestr(fichier)
  503.         end
  504.       end
  505.       otherwise do
  506.         if debug=1 then say "Commande inconnue:"||b||'='||a
  507.       end
  508.     end
  509.    end
  510.  end
  511. end
  512. return
  513.  
  514. StartMUI:
  515. if (~(exists("ENVARC:mui/ANEWS.prefs"))) & (~(exists("ENV:mui/ANEWS.prefs"))) then do
  516.   if debug=1 then say "Copy Prefs"
  517.   address command "copy "||ROOT||"Configs/1/ANEWS.prefs env:mui/ANEWS.prefs"
  518. end
  519. address command "path "||REDIR||" ADD "||ROOT||"c"
  520. address command "assign "||REDIR||" ADD Libs: "||ROOT||"Libs"
  521. address command "assign "||REDIR||" ADD Fonts: "||ROOT||"Fonts"
  522. address command "assign "||REDIR||" ADD S: "||ROOT||"S"
  523. address command "assign "||REDIR||" ADD Locale: "||ROOT||"Locale"
  524. address command "assign "||REDIR||" ADD Help: "||ROOT||"Help"
  525. address command "assign "||REDIR||" ADD L: "||ROOT||"L"
  526. address command "assign "||REDIR||" ADD Devs: "||ROOT||"Devs"
  527. address command "assign "||REDIR||" ADD vgp_data: "||ROOT||"Jeux/Demos/AF1"
  528. if ~show("P","deficons") then do
  529.   address command "RUN "||REDIR||" "||ROOT||"c/NewIcons"
  530. end
  531. if ~(exists("MUI:")) then do
  532.   address command "assign "||REDIR||" MUI: "||ROOT||"MUI"
  533.   address command "assign "||REDIR||" ADD Libs: "||ROOT||"MUI/Libs"
  534.   address command "assign "||REDIR||" ADD Locale: "||ROOT||"MUI/Locale"
  535. end
  536. address rexx
  537. muirexx= ROOT||'C/MUIRexx'
  538. if ~(Exists(muirexx)) then do; CALL rtezrequest "Ce n'est pas un CD ANews...",, "Navigateur";exit 20;end
  539. foo=open('OUT','T:mmp.runscript','W');foo=writeln('OUT',"FailAt >NIL: 21");foo=writeln('OUT',"Stack >NIL: 40000");foo=writeln('OUT',"run "||REDIR||" "||muirexx||" PORT ANEWS");foo=writeln('OUT',"waitforport >NIL: ANEWS");foo=close('OUT')
  540. address Command 'execute '||REDIR||' T:mmp.runscript'
  541. delete('T:mmp.runscript')
  542. address command 'run '||REDIR||' rx '||ROOT||'script/autoclose.rexx'
  543. return
  544.  
  545. LoadPrefs:
  546. prefs.texte="Multiview"
  547. prefs.guide="Multiview"
  548. prefs.visu=ROOT||"c/Visage"
  549. prefs.son=ROOT||"c/Play16"
  550. prefs.mus.type="SongPlayer"
  551. prefs.mus.exe=ROOT||"c/Songplayer/SongPlayer"
  552. prefs.mod.type="Hippoplayer"
  553. prefs.mod.exe=ROOT||"c/Hippoplayer/HiP"
  554. prefs.html.type="IBrowse"
  555. prefs.html.exe=ROOT||"Internet/Navigateur/IBrowseDemo/IBrowse"
  556. prefs.repdef="Ram:"
  557. prefs.anim.iff=ROOT||"c/BigAnim"
  558. prefs.anim.fli=ROOT||"c/flick"
  559. prefs.anim.avi=ROOT||"c/MooVId-Demo"
  560. prefs.anim.qt=ROOT||"c/MooVId-Demo"
  561. prefs.anim.mpeg=ROOT||"c/mp"
  562.  
  563. if open('f1',"env:ANewsCDPrefs",'r') then do
  564.   if debug=1 then say "Lecture Prefs"
  565.   do forever
  566.     a=readln('f1')
  567.     if eof('f1') then break
  568.     parse var a b "=" c
  569.     select
  570.       when b="texte" then do
  571.         parse var c d " " e
  572.         if exists(d) then prefs.texte=c
  573.       end
  574.       when b="guide" then do
  575.         parse var c d " " e
  576.         if exists(d) then prefs.guide=c
  577.       end
  578.       when b="visu" then do
  579.         parse var c d " " e
  580.         if exists(d) then prefs.visu=c
  581.       end
  582.       when b="son" then do
  583.         parse var c d " " e
  584.         if exists(d) then prefs.son=c
  585.       end
  586.       when b="music" then do
  587.         parse var c d "," e
  588.         if exists(e) then do
  589.           prefs.mus.type=d
  590.           prefs.mus.exe=e
  591.         end
  592.       end
  593.       when b="module" then do
  594.         parse var c d "," e
  595.         if exists(e) then do
  596.           prefs.mod.type=d
  597.           prefs.mod.exe=e
  598.         end
  599.       end
  600.       when b="html" then do
  601.         parse var c d "," e
  602.         if exists(e) then do
  603.           prefs.html.type=d
  604.           prefs.html.exe=e
  605.         end
  606.       end
  607.       when b="repdef" then do
  608.         parse var c d " " e
  609.         if exists(d) then prefs.repdef=c
  610.       end
  611.       when b="animiff" then do
  612.         parse var c d " " e
  613.         if exists(d) then prefs.anim.iff=c
  614.       end
  615.       when b="animavi" then do
  616.         parse var c d " " e
  617.         if exists(d) then prefs.anim.avi=c
  618.       end
  619.       when b="animmpeg" then do
  620.         parse var c d " " e
  621.         if exists(d) then prefs.anim.mpeg=c
  622.       end
  623.       when b="animfli" then do
  624.         parse var c d " " e
  625.         if exists(d) then prefs.anim.fli=c
  626.       end
  627.       when b="animqt" then do
  628.         parse var c d " " e
  629.         if exists(d) then prefs.anim.qt=c
  630.       end
  631.       otherwise do
  632.        if debug=1 then say a
  633.       end
  634.     end
  635.   end
  636.   call close('f1')
  637. end
  638. return
  639.  
  640. SavePrefs:
  641. call SavePrefs2("env:ANewsCDPrefs")
  642. if arg(1)="SAVE" then call SavePrefs2("envarc:ANewsCDPrefs")
  643. return
  644. SavePrefs2:
  645. if open('f1',arg(1),'w') then do
  646.   if debug=1 then say "Ecriture prefs:"||arg(1)
  647.   call writeln('f1',"texte="||prefs.texte)
  648.   call writeln('f1',"guide="||prefs.guide)
  649.   call writeln('f1',"visu="||prefs.visu)
  650.   call writeln('f1',"son="||prefs.son)
  651.   call writeln('f1',"music="||prefs.mus.type||','||prefs.mus.exe)
  652.   call writeln('f1',"module="||prefs.mod.type||','||prefs.mod.exe)
  653.   call writeln('f1',"html="||prefs.html.type||','||prefs.html.exe)
  654.   call writeln('f1',"repdef="||prefs.repdef)
  655.   call writeln('f1',"animiff="||prefs.anim.iff)
  656.   call writeln('f1',"animfli="||prefs.anim.fli)
  657.   call writeln('f1',"animavi="||prefs.anim.avi)
  658.   call writeln('f1',"animmpeg="||prefs.anim.mpeg)
  659.   call writeln('f1',"animqt="||prefs.anim.qt)
  660.   call close('f1')
  661. end
  662. return
  663.  
  664. OpenGUI:
  665. address ANEWS
  666. ASLFR_DrawersOnly = 0x8008002F
  667. ASLFR_InitialDrawer = 0x80080009
  668. ASLFR_RejectIcons = 0x8008003C
  669. MUIA_Application_Active=0x804260ab
  670. MUIA_Application_Iconified = 0x8042a07f
  671. MUIA_ApplicationObject=0x8042d3ee
  672. MUIA_CycleChain = 0x80421ce7
  673. MUIA_ControlChar = 0x8042120b
  674. MUIA_Cycle_Active=0x80421788
  675. MUIA_Disabled=0x80423661
  676. MUIA_Font=0x8042be50
  677. MUIA_Gauge_Current=0x8042f0dd
  678. MUIA_Gauge_Divide=0x8042d8df
  679. MUIA_Gauge_Horiz=0x804232dd
  680. MUIA_Gauge_InfoText=0x8042bf15
  681. MUIA_Gauge_Max=0x8042bcdb
  682. MUIA_Group_ActivePage=0x80424199
  683. MUIA_Group_Columns=0x8042f416
  684. MUIA_Group_PageMode=0x80421a5f
  685. MUIA_Group_SameSize=0x80420860
  686. MUIA_HorizWeight = 0x80426db9
  687. MUIA_InnerRight=0x804297ff
  688. MUIA_InnerRight=0x804297ff
  689. MUIA_List_Active=0x8042391c
  690. MUIA_List_Format=0x80423c0a
  691. MUIA_List_MinLineHeight=0x8042d1c3
  692. MUIA_List_Quiet = 0x8042d8c7
  693. MUIA_Listview_DoubleClick=0x80424635
  694. MUIA_Dropable = 0x8042fbce
  695. MUIA_List_DragSortable = 0x80426099
  696. MUIA_List_ShowDropMarks = 0x8042c6f3
  697. MUIA_Listview_DragType = 0x80425cd3
  698. MUIA_Listview_MultiSelect = 0x80427e08
  699. MUIA_Menu_Enabled = 0x8042ed48
  700. MUIA_Menuitem_Checked = 0x8042562a
  701. MUIA_Menuitem_Checkit = 0x80425ace
  702. MUIA_Menuitem_Enabled = 0x8042ae0f
  703. MUIA_Menuitem_Exclude = 0x80420bc6
  704. MUIA_Menuitem_Shortcut = 0x80422030
  705. MUIA_Menuitem_Title=0x804218be
  706. MUIA_Menuitem_Toggle = 0x80424d5c
  707. MUIA_Numeric_Format=0x804263e9
  708. MUIA_Numeric_Value = 0x8042ae3a
  709. MUIA_Pressed=0x80423535
  710. MUIA_Selected=0x8042654b
  711. MUIA_ShowMe=0x80429ba8
  712. MUIA_Slider_Horiz=0x8042fad1
  713. MUIA_Slider_Level=0x8042ae3a
  714. MUIA_Slider_Max=0x8042d78a
  715. MUIA_Slider_Min=0x8042e404
  716. MUIA_Slider_Quiet=0x80420b26
  717. MUIA_String_Accept=0x8042e3e1
  718. MUIA_String_Contents=0x80428ffd
  719. MUIA_String_DisplayPos=0x8042ccbf
  720. MUIA_String_EditHook=0x80424c33
  721. MUIA_String_Format=0x80427484
  722. MUIA_String_Integer=0x80426e8a
  723. MUIA_String_MaxLen=0x80424984
  724. MUIA_String_Reject=0x8042179c
  725. MUIA_Width=0x8042b59c
  726. MUIA_Width=0x8042b59c
  727. MUIA_Window_Activate=0x80428d2f
  728. MUIA_Window_DefaultObject = 0x804294d7
  729. MUIA_Window_Open=0x80428aa0
  730. MUIA_Window_SizeRight = 0x80424780
  731. MUIA_Window_Sleep=0x8042e7db
  732. MUIA_Window_InputEvent = 0x804247d8
  733. MUIA_Window_ID = 0x804201bd
  734. MUIM_Application_AboutMUI = 0x8042d21d
  735. MUIM_Application_OpenConfigWindow = 0x804299ba
  736. MUIV_EveryTime = 0x49893131
  737. MUIV_Font_Tiny=-3
  738. MUIV_Font_Big = -6
  739. MUIV_List_Insert_Bottom=-3
  740. MUIV_Listview_DragType_Immediate = 1
  741. MUIV_String_Format_Center=1
  742. MUIA_Text_HiChar = 0x804218ff
  743. MUIA_InputMode = 0x8042fb04
  744. MUIV_InputMode_RelVerify = 1
  745. MUIA_Text_PreParse = 0x8042566d
  746. MUIA_Listview_SelectChange = 0x8042178f
  747.  
  748. window ID ANEWS COMMAND """QUIT""" PORT ASERV TITLE """Navigateur du CD Anews"""
  749.   menu LABEL "Projet"
  750.     item COMMAND '"method 'MUIM_Application_AboutMUI' 0"' PORT ANEWS LABEL "A propos de MUI..."
  751.     item COMMAND '"'ABOUT'"' PORT ASERV label "A propos du Navigateur de CD ANews"
  752.     item ATTRS MUIA_Menuitem_Title '-1'
  753.     menu LABEL "Préférences..."
  754.      item COMMAND '"PREFS"' PORT ASERV ATTRS MUIA_Menuitem_Shortcut 'P' LABEL "Navigateur..."
  755.      item COMMAND '"method 'MUIM_Application_OpenConfigWindow'"' PORT ANEWS LABEL "MUI..."
  756.     endmenu
  757.     item ATTRS MUIA_Menuitem_Title '-1'
  758.     item COMMAND '"QUIT"' PORT ASERV ATTRS MUIA_Menuitem_Shortcut 'Q' LABEL "Quitter"
  759.   endmenu
  760.   group HORIZ
  761.     group
  762.       group HORIZ
  763.         group ATTRS MUIA_HorizWeight 80  LABELS 'Catégories'
  764.           list ID CATS HELP """Liste des thèmes abordés\ndans le CD ANews.""" ATTRS MUIA_Font MUIV_Font_Big
  765.         endgroup
  766.         group LABELS 'Répertoires'
  767.           list ID REPS HELP """Liste des répertoires\nde la cétogie choisie.""" ATTRS MUIA_Font MUIV_Font_Big
  768.         endgroup
  769.         group
  770.           image COMMAND 'HELP' PORT ASERV HELP """Boutton d'Aide:\nAffiche le guide d'aide pour\nl'utilisation du CD Anews.""" ICON ROOT||"Icônes/help"
  771.           image ID GUID1 COMMAND 'GUIDE' PORT ASERV HELP """Boutton Documentation:\nAffiche la documentation\ndu contenu choisis.""" ICON ROOT||"Icônes/guide"
  772.           image ID GUID2 COMMAND 'GUIDE' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP """Boutton Documentation:\nAffiche la documentation\ndu contenu choisis.""" ICON ROOT||"Icônes/html"
  773.           image ID GUID3 COMMAND 'GUIDE' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP """Boutton Documentation:\nAffiche la documentation\ndu contenu choisis.""" ICON ROOT||"Icônes/ReadMe"
  774.           space
  775.           image ID AUT1 COMMAND 'AUTO' PORT ASERV ATTRS MUIA_ShowMe TRUE HELP '"'Aide.1'"' ICON icone.1
  776.           image ID AUT2 COMMAND 'AUTO' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP '"'Aide.2'"' ICON icone.2
  777.           image ID AUT3 COMMAND 'AUTO' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP '"'Aide.3'"' ICON icone.3
  778.           image ID AUT4 COMMAND 'AUTO' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP '"'Aide.4'"' ICON icone.4
  779.           image ID AUT5 COMMAND 'AUTO' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP '"'Aide.5'"' ICON icone.5
  780.           image ID AUT6 COMMAND 'AUTO' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP '"'Aide.6'"' ICON icone.6
  781.           image ID AUT7 COMMAND 'AUTO' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP '"'Aide.7'"' ICON icone.7
  782.           image ID AUT8 COMMAND 'AUTO' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP '"'Aide.8'"' ICON icone.8
  783.           image ID AUT9 COMMAND 'AUTO' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP '"'Aide.9'"' ICON icone.9
  784.           image ID AUT10 COMMAND 'AUTO' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP '"'Aide.10'"' ICON icone.10
  785.           image ID AUT11 COMMAND 'AUTO' PORT ASERV ATTRS MUIA_ShowMe FALSE HELP '"'Aide.11'"' ICON icone.11
  786.         endgroup
  787.       endgroup
  788.       group LABELS 'Informations'
  789.         view ID INFOS HELP """Affiche les informations courtes\nrelatives au contenu selectionné.\nLe Boutton Guide permet d'accéder\nà une documentation plus complète."""
  790.       endgroup
  791.     endgroup
  792.     group ATTRS MUIA_HorizWeight 55 LABELS 'Contenu du répertoire'
  793.      list ID LIST COMMAND 'AUTO' PORT ASERV HELP """Contenu du répertoire déjà configuré""" ATTRS MUIA_Font MUIV_Font_Big
  794.     endgroup
  795.   endgroup
  796. endwindow
  797. callhook ID CATS COMMAND "CATUPD" PORT 'ASERV' ATTRS MUIA_List_Active MUIV_EveryTime
  798. callhook ID REPS COMMAND "REPUPD" PORT 'ASERV' ATTRS MUIA_List_Active MUIV_EveryTime
  799. callhook ID LIST COMMAND "LSTUPD" PORT 'ASERV' ATTRS MUIA_List_Active MUIV_EveryTime
  800. return
  801.  
  802. OpenPrefs:
  803. if PrefsLoad=FALSE then do
  804.   if debug=1 then Say "Initialisation Prefs"
  805.   PrefsLoad=TRUE
  806.   address ANEWS
  807.   window ID APREF COMMAND """CANCELPREFS""" PORT ASERV TITLE """Préférences"""
  808.   group REGISTER HORIZ LABELS "Général,Animation"
  809.    group HORIZ
  810.     group
  811.      label DOUBLE "Texte"
  812.      label DOUBLE "Guides"
  813.      label DOUBLE "Images"
  814.      label DOUBLE "Sons (Court)"
  815.      label DOUBLE "Musiques"
  816.      label DOUBLE "Modules"
  817.      label DOUBLE "Html"
  818.      label DOUBLE "Copie Auto"
  819.     endgroup
  820.     group
  821.      popasl ID FTXT HELP """Programme utilisé pour visualiser\nles \033btextes\033n.""" ATTRS ASLFR_RejectIcons TRUE CONTENT prefs.texte
  822.      popasl ID FGUID HELP """Programme utilisé pour visualiser\nles \033bGuides\033n et les fichiers texte.""" ATTRS ASLFR_RejectIcons TRUE CONTENT prefs.guide
  823.      popasl ID FIMG HELP """Programme utilisé pour visualiser les \033bImages\033n.""" ATTRS ASLFR_RejectIcons TRUE CONTENT prefs.visu
  824.      popasl ID FSON HELP """Programme utilisé pour écouter les \033bSons\033n.""" ATTRS ASLFR_RejectIcons TRUE CONTENT prefs.son
  825.      group HORIZ
  826.       cycle ID TMUS ATTRS MUIA_HorizWeight 50 MUIA_Cycle_Active list2num(prefs.mus.type,"SongPlayer","AMPlifier"),
  827.             HELP """Type de programme utilisé pour écouter\nles \033bMusiques\033n sous forme de sample.""" LABELS "SongPlayer,AMPlifier"
  828.       popasl ID FMUS ATTRS ASLFR_RejectIcons TRUE HELP """Emplacement de l'executable utilisé pour écouter\nles \033bMusiques\033n sous forme de sample.""" CONTENT prefs.mus.exe
  829.      endgroup
  830.      group HORIZ
  831.       cycle ID TMOD ATTRS MUIA_HorizWeight 50 MUIA_Cycle_Active list2num(prefs.mod.type,"Hippoplayer","EaglePlayer" ),
  832.             HELP """Type de programme utilisé pour écouter\nles \033bModules\033n.""" LABELS "Hippoplayer,EaglePlayer"
  833.       popasl ID FMOD ATTRS ASLFR_RejectIcons TRUE HELP """Emplacement de l'executable utilisé pour écouter\nles \033bModules\033n.""" CONTENT prefs.mod.exe
  834.      endgroup
  835.      group HORIZ
  836.       cycle ID THTML ATTRS MUIA_HorizWeight 50 MUIA_Cycle_Active list2num(prefs.html.type,"IBrowse","AWeb","Voyager"),
  837.             HELP """Type de programme utilisé pour visualiser\nles \033bPages Html\033n.""" LABELS "IBrowse,AWeb,Voyager"
  838. /*      cycle ID THTML ATTRS MUIA_Cycle_Active list2num(prefs.html.type,"IBrowse","AWeb","Voyager")*/
  839.       popasl ID FHTML ATTRS ASLFR_RejectIcons TRUE HELP """Emplacement de l'executable utilisé pour visualiser\nles \033bPages Html\033n.""" CONTENT prefs.html.exe
  840.      endgroup
  841.      popasl ID FCOPY ATTRS ASLFR_RejectIcons TRUE ASLFR_DrawersOnly TRUE HELP """Emplacement par défaut où seront copier les fichiers.""" CONTENT prefs.repdef
  842.     endgroup
  843.    endgroup
  844.    group HORIZ
  845.     group
  846.      label DOUBLE "Anim IFF"
  847.      label DOUBLE "FLI/FLC"
  848.      label DOUBLE "AVI"
  849.      label DOUBLE "MPEG"
  850.      label DOUBLE "QT"
  851.     endgroup
  852.     group
  853.      popasl ID AIFF HELP """Programme utilisé pour visualiser\nles \033bAnimations IFF\033n.""" ATTRS ASLFR_RejectIcons TRUE CONTENT prefs.anim.iff
  854.      popasl ID AFLI HELP """Programme utilisé pour visualiser les \033bAnimations FLI/FLC\033n.""" ATTRS ASLFR_RejectIcons TRUE CONTENT prefs.anim.fli
  855.      popasl ID AAVI HELP """Programme utilisé pour visualiser les \033bAnimations AVI\033n.""" ATTRS ASLFR_RejectIcons TRUE CONTENT prefs.anim.avi
  856.      popasl ID AMPEG HELP """Programme utilisé pour visualiser les \033bAnimations MPEG\033n."""  ATTRS ASLFR_RejectIcons TRUE CONTENT prefs.anim.mpeg
  857.      popasl ID AQT HELP """Programme utilisé pour visualiser les \033bAnimations QuickTime\033n.""" ATTRS ASLFR_RejectIcons TRUE CONTENT prefs.anim.qt
  858.     endgroup
  859.    endgroup
  860.   endgroup
  861.   group HORIZ
  862.    button COMMAND "SAVEPREFS" PORT ASERV LABEL "Sauver"
  863.    button COMMAND "USEPREFS" PORT ASERV LABEL "Utiliser"
  864.    button COMMAND "CANCELPREFS" PORT ASERV LABEL "Annuler"
  865.   endgroup
  866.   endwindow
  867. end
  868. else do
  869.   popasl ID FTXT CONTENT prefs.texte
  870.   popasl ID FGUID CONTENT prefs.guide
  871.   popasl ID FIMG CONTENT prefs.visu
  872.   popasl ID FSON CONTENT prefs.son
  873.   cycle ID TMUS ATTRS MUIA_Cycle_Active list2num(prefs.mus.type,"SongPlayer","AMPlifier")
  874.   popasl ID FMUS CONTENT prefs.mus.exe
  875.   cycle ID TMOD ATTRS MUIA_Cycle_Active list2num(prefs.mod.type,"Hippoplayer","EaglePlayer" )
  876.   popasl ID FMOD CONTENT prefs.mod.exe
  877.   cycle ID THTML ATTRS MUIA_Cycle_Active list2num(prefs.html.type,"IBrowse","AWeb","Voyager")
  878.   popasl ID FHTML CONTENT prefs.html.exe
  879.   popasl ID FCOPY CONTENT prefs.repdef
  880.  
  881.   popasl ID AIFF CONTENT prefs.anim.iff
  882.   popasl ID AFLI CONTENT prefs.anim.fli
  883.   popasl ID AAVI CONTENT prefs.anim.avi
  884.   popasl ID AMPEG CONTENT prefs.anim.mpeg
  885.   popasl ID AQT CONTENT prefs.anim.gt
  886.  
  887.   window ID APREF ATTRS MUIA_Window_Open TRUE
  888. end
  889. return
  890.  
  891. ReadPrefs:
  892. popasl ID FTXT
  893. prefs.texte=result
  894. popasl ID FGUID
  895. prefs.guide=result
  896. popasl ID FIMG
  897. prefs.visu=result
  898. popasl ID FSON
  899. prefs.son=result
  900. cycle ID TMUS
  901. prefs.mus.type=result
  902. popasl ID FMUS
  903. prefs.mus.exe=result
  904. cycle ID TMOD
  905. prefs.mod.type=result
  906. popasl ID FMOD
  907. prefs.mod.exe=result
  908. cycle ID THTML
  909. prefs.html.type=result
  910. popasl ID FHTML
  911. prefs.html.exe=result
  912. popasl ID FCOPY
  913. prefs.repdef=result
  914. popasl ID AIFF
  915. prefs.anim.iff=result
  916. popasl ID AFLI
  917. prefs.anim.fli=result
  918. popasl ID AAVI
  919. prefs.anim.avi=result
  920. popasl ID AMPEG
  921. prefs.anim.mepg=result
  922. popasl ID AQT
  923. prefs.anim.gt=result
  924. return
  925.  
  926. list2num: PROCEDURE
  927. if arg()>1 then do
  928.   do i=2 to arg()
  929.     if UPPER(arg(1))=UPPER(arg(i)) then return(i-2)
  930.   end
  931. end
  932. return 0
  933.  
  934. replacepat: PROCEDURE
  935. str=arg(1);pat=arg(2);replc=arg(3)
  936. p=Pos(pat,str)
  937. if p=1 then str=replc||SubStr(str,p+Length(pat))
  938. if p>1 then str=Left(str,p-1)||replc||SubStr(str,p+Length(pat))
  939. RETURN str
  940.  
  941. pathstr: PROCEDURE
  942. str=arg(1)
  943. do i=length(str) to 1 by -1
  944.   a=substr(str,i,1)
  945.   if (a='/') | (a=':') then do
  946.     return substr(str,1,i)
  947.   end
  948. end
  949. return ""
  950.  
  951. exestr: PROCEDURE
  952. str=arg(1)
  953. do i=length(str) to 1 by -1
  954.   a=substr(str,i,1)
  955.   if (a='/') | (a=':') then do
  956.     return substr(str,i+1,length(str)-i)
  957.   end
  958. end
  959. return ""
  960.