home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / programs / comms_networking / irclient / !IRClient / Scripts / Internal / Input (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1997-03-21  |  5.1 KB  |  273 lines

  1.  >Internal.Input
  2.  1997 Matthew Godbolt
  3.  This file deals with character input into the text box.
  4.  02 Mar 1997 - JF : Changed to use new DLList            v1.01
  5.  05 Mar 1997 - MG : Key bindings added                   v1.02
  6.  09 Mar 1997 - JF : Changed to use new DLList (again)    v1.03
  7.  22 Mar 1997 - MG : More bugfixes, now works!            v1.04
  8.  String$,CurPos,prevString$
  9.  StringList,ListPtr
  10.  Keys
  11.  Display$
  12. Input_Initialise
  13. String$=""
  14. prevString$=""
  15. CurPos=0
  16. StringList=
  17. newDLList
  18. Keys=
  19. newList
  20. ListPtr=0
  21. /Class_BoundKey = 
  22. RegisterClass("BoundKey")
  23. AddField(Class_BoundKey,"key")
  24. AddField(Class_BoundKey,"functionlist")
  25. InputChanged
  26. SetInputText(String$)
  27. SetCursorPos(CurPos)
  28. RedrawInputBox
  29. InputDelete
  30.  CurPos>0 
  31. #6 String$ = 
  32. String$,CurPos-1) + 
  33. String$,CurPos+1)
  34.  CurPos-=1
  35. InputChanged
  36. InputInsert(char)
  37. *<String$ = 
  38. String$,CurPos) + 
  39.  char + 
  40. String$,CurPos+1)
  41. CurPos+=1
  42. InputChanged
  43. InputInsertStr(char$)
  44. 0;String$ = 
  45. String$,CurPos) + char$ + 
  46. String$,CurPos+1)
  47. CurPos+=
  48.  char$
  49. InputChanged
  50. CursorMove(n)
  51. len = 
  52. (String$)
  53. CurPos+=n
  54.  CurPos<0 
  55.  CurPos=0
  56.  CurPos > len 
  57.  CurPos = len
  58. SetCursorPos(CurPos)
  59. RedrawInputBox
  60. CharEntered(display$,char)
  61.  HandledByBinding
  62. Display$=display$
  63. E.HandledByBinding= 
  64. ProcessKeyBinding(char)
  65.  HandledByBinding=0 
  66.  char < 32 
  67.  char = 127 
  68.  char 
  69.  8,127
  70. InputDelete
  71.  2,22,31
  72. L>    
  73.  Control codes - avoid inserting unnessary duplicates
  74.  CurPos>0 
  75. N)     
  76. String$,CurPos,1))=char) 
  77.       
  78. InputDelete
  79.      
  80.       
  81. InputInsert(char)
  82.      
  83. S        
  84.      
  85. InputInsert(char)
  86. U        
  87.  7,15
  88. InputInsert(char)
  89.  ListPtr=0 
  90. Z-     
  91. StringList.Add(
  92. newString(String$))
  93. [        
  94. \]     
  95.  (ListPtr.data.data$<>String$) 
  96.  String$<>"" 
  97. StringList.Add(
  98. newString(String$))
  99. ]        
  100. UserLine(String$)
  101.     ListPtr=0
  102.     String$=""
  103.     prevString$=""
  104.     CurPos=0
  105. InputChanged
  106.     CurPos = 0
  107.     String$ = ""
  108. InputChanged
  109. ProcessKey(char)
  110.  char < 256 
  111. InputInsert(char)
  112.  char 
  113.  &18C
  114.      
  115. CursorMove(-1)
  116.  &18D
  117.      
  118. CursorMove(1)
  119.  &18E
  120.      
  121.  ListPtr 
  122.       ListPtr=ListPtr.prev
  123.       
  124.  ListPtr 
  125. x%       String$=ListPtr.data.data$
  126.        
  127.       String$=prevString$
  128.       
  129.      
  130.      CurPos=
  131. (String$)
  132.      
  133. InputChanged
  134.  &18F
  135.      
  136.  ListPtr=0 
  137.       ListPtr=StringList
  138.      
  139. /      
  140.  ListPtr.next 
  141.  ListPtr=ListPtr.next
  142.      
  143.      
  144.  ListPtr 
  145. 4      
  146.  ListPtr=StringList 
  147.  prevString$=String$
  148. $      String$=ListPtr.data.data$
  149.       CurPos=
  150. (String$)
  151.       
  152. InputChanged
  153.      
  154.  &1AC
  155.      
  156. CursorMove(-512)
  157.  &1AD
  158.      
  159. CursorMove(512)
  160.         
  161.      
  162. ProcessKey(char)
  163. BindKey(key$,command$)
  164.  key,binding,com$,space
  165. key$,1) 
  166. key$,2,1)="
  167. )   key = 
  168. keyNumberFromName(
  169. key$,3))
  170.  key >= &100 
  171.     key+=&30
  172.     key= (key 
  173.  31) + &200
  174. )   key = 
  175. keyNumberFromName(
  176. key$,2))
  177.  key >= &100 
  178.     key+=&20
  179.     key=key 
  180. (  key = 
  181. keyNumberFromName(
  182. key$,2))
  183.  key >= &100 
  184.  key+=&10
  185. $  key = 
  186. keyNumberFromName(key$)
  187. "binding = 
  188. new(Class_BoundKey)
  189. binding.key = key
  190. !binding.functionlist=
  191. newList
  192.  command$<>""
  193.  space = 
  194. command$," :: ")
  195.  space = 0 
  196.  space = 
  197. (command$)+1
  198. $ com$=
  199. Strip(
  200. command$,space-1))
  201. ( command$=
  202. Strip(
  203. command$,space+4))
  204. binding.functionlist.AddAtEnd(
  205. newString(com$))
  206. Keys.Add(binding)
  207. keyNumberFromName(name$)
  208. Capitalise(name$) 
  209.  "RETURN"
  210.    key = 13
  211.  "DELETE"
  212.    key = 127
  213.  "BACKSPACE"
  214.    key = 8
  215.  "UP"
  216.    key = &18f
  217.  "DOWN"
  218.    key = &18e
  219.  "F1"
  220.    key = &181
  221.    key = 
  222. (name$)
  223. BoundKey_Compare(value)
  224.  retval
  225.  @.key = value 
  226.  retval = 1
  227. =retval
  228. ProcessKeyBinding(key)
  229.  binding
  230. binding = 
  231. Keys.Find(key)
  232.  binding 
  233. binding.data.functionlist.Iterate("runBinding")
  234. runBinding(function)
  235.  fun,fun$,parm,function$,parm$
  236. parm=
  237. newList
  238. function$=function.data$
  239. fun = 
  240. function$,"(")
  241.  fun 
  242.  fun$=
  243. function$,fun-1)
  244. ( function$=
  245. Strip(
  246. function$,fun+1))
  247.  function$<>")" 
  248.  function$<>""
  249.   fun = 
  250. function$,",")
  251.  fun = 0 
  252.  fun = 
  253. function$,")")
  254.  fun = 0 
  255.  fun = 
  256. (function$)+1
  257.   parm$=
  258. function$,fun-1)
  259. )  function$=
  260. Strip(
  261. function$,fun+1))
  262. parm$,1) 
  263.  """"
  264. ,    
  265. parm.AddAtEnd(
  266. newString(
  267. (parm$)))
  268.      
  269. parm.AddAtEnd(
  270. (parm$))
  271. (fun$)(parm)
  272. (function$)
  273.