home *** CD-ROM | disk | FTP | other *** search
/ Micro R&D 1 / MicroRD-CD-ROM-Vol1-1994.iso / os20 / cdity / switchntsc_v3_2.lha / switchntsc / txt / CXLib.mod next >
Text File  |  1992-04-14  |  3KB  |  126 lines

  1. (*----------------------------------------------------------------------------
  2.  :Program.      CXLib.mod
  3.  :Contents.     Imitates som functions from the CX_Lib.
  4.  :Author.       Mario Kemper
  5.  :Address.      GeistStr. 53, D-4780 Lippstadt
  6.  :Phone.        02941/58635
  7.  :E-Mail.       magick@uni-paderborn.de
  8.  :Copyright.    Public Domain
  9.  :Language.     Oberon
  10.  :Translator.   Amiga Oberon Compiler V2.14d
  11.  :History.      V2.4 -unknown- [Mario] First release Version.                        
  12.  :History.      V2.6 01-Jan-92 [Mario] Now reads arguments from CLI. 
  13.  :History.      V2.7 06-Jan-92 [Mario] Cli-Args don't work correctly,removed.
  14.  :History.      V3.0 19-Apr-92 [Mario] Removed a little Bug in ArgString.
  15. ----------------------------------------------------------------------------*)
  16.  
  17. MODULE CXLib;
  18.  
  19. IMPORT e   : Exec,
  20.        ic  : Icon,
  21.        wb  : Workbench,
  22.        s   : SYSTEM,
  23.        ol  : OberonLib,
  24.        arg : Arguments,
  25.        con : Conversions,
  26.        com : Commodities;
  27.              
  28.              
  29. TYPE ToolTypeArray* = e.ADDRESS;       
  30.      String*        = e.STRING;
  31.      StrPtr*        = e.STRPTR;
  32.      
  33. VAR dobj       : wb.DiskObjectPtr;
  34.     
  35. PROCEDURE ArgArrayInit*():ToolTypeArray;
  36. (* Returns the tooltype array *)
  37. VAR name : String;
  38.     i    : INTEGER;
  39. BEGIN 
  40.   i:=0;
  41.   IF ol.wbStarted THEN
  42.      arg.GetArg(0,name);
  43.      dobj := ic.GetDiskObject(name);
  44.      IF dobj # NIL THEN
  45.         RETURN(dobj.toolTypes)
  46.      ELSE   
  47.         RETURN(NIL)
  48.      END   
  49.   ELSE 
  50.      RETURN(NIL);
  51.   END   
  52. END ArgArrayInit;  
  53.  
  54.  
  55. (* $CopyArrays- *)
  56. PROCEDURE ArgString*(tt:ToolTypeArray;string:String;defaultString : StrPtr):StrPtr;
  57. (* Returns the value of tooltype string or default if not found *)
  58. VAR help : StrPtr;
  59.  
  60. BEGIN
  61.   help:=ic.FindToolType(tt,string);  
  62.   IF help#NIL THEN 
  63.     RETURN(help);
  64.   ELSE 
  65.     RETURN(defaultString);
  66.   END  
  67. END ArgString;  
  68.  
  69.  
  70. PROCEDURE ArgInt*(tt:ToolTypeArray;string : String; defVal : LONGINT):LONGINT;
  71. (* Same as above but returns LONGINT *)
  72. VAR help   : StrPtr;
  73.     result : LONGINT;
  74. BEGIN
  75.   help:=ic.FindToolType(tt,string);
  76.   IF help#NIL THEN 
  77.      IF con.StringToInt(help^,result) THEN
  78.         RETURN(result);
  79.      ELSE    
  80.         RETURN(defVal);
  81.      END;   
  82.   ELSE   
  83.      RETURN(defVal);
  84.   END;   
  85. END ArgInt;  
  86.  
  87.  
  88. PROCEDURE HotKey* (descr : StrPtr;port : e.MsgPortPtr;ID : LONGINT):com.CxObjPtr;
  89. (* Installs a filter for receiving HotKey messages in the commodities network *)
  90. VAR filter,
  91.     sender,
  92.     translate : com.CxObjPtr;
  93.     fail : BOOLEAN;
  94.     
  95. BEGIN    
  96.   fail:=FALSE;
  97.   filter := com.CxFilter(descr);
  98.   IF filter # NIL THEN
  99.      sender:= com.CxSender(port,ID);
  100.      IF sender # NIL THEN
  101.         com.AttachCxObj(filter,sender);
  102.         translate := com.CxTranslate(NIL);
  103.         IF translate # NIL THEN
  104.            com.AttachCxObj(sender,translate);
  105.         ELSE fail := TRUE;
  106.            com.DeleteCxObjAll(filter);
  107.         END;
  108.      ELSE 
  109.         fail := TRUE;
  110.         com.DeleteCxObjAll(filter);
  111.      END;   
  112.   ELSE 
  113.      fail := TRUE;
  114.   END;  
  115.   IF NOT fail THEN 
  116.      RETURN(filter)
  117.   ELSE   
  118.      RETURN (NIL);
  119.   END;   
  120. END HotKey;
  121.  
  122. BEGIN
  123. CLOSE
  124.   IF dobj # NIL THEN ic.FreeDiskObject(dobj) END;
  125. END CXLib.
  126.