Subversion Repositories NedoOS

Rev

Rev 60 | Rev 447 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1. cmdbuf=curfulllink
  2.  
  3. browser_editline
  4.         call cleanstatusline
  5.         call keepcurlink
  6.         ld hl,curfulllink
  7.         call strlen
  8.         ld a,l
  9.         ld (curcmdx),a
  10.  
  11. browser_editline0
  12.  
  13. editcmd_scroll0
  14.         call cmdcalccurxy ;e=scrx
  15.         ld hl,browser_editline_scroll;curcmdscroll
  16.         inc e ;scrx
  17.         jr nz,editcmd_noscrollleft ;x>=promptsz (x>(promptsz-1))
  18. ;x<promptsz - ёъЁюыы тыхтю
  19.         dec (hl)
  20.         jr editcmd_scroll0
  21. editcmd_noscrollleft
  22.         dec e
  23.         ld a,e ;scrx
  24.         cp EDITLINEMAXVISIBLEX;txtscrwid
  25.         jr c,editcmd_noscrollright
  26. ;x>=txtscrwid - ёъЁюыы тяЁртю
  27.         inc (hl)
  28.         jr editcmd_scroll0
  29. editcmd_noscrollright
  30.  
  31.         call browser_editline_print
  32.        
  33.         ld a,0x07
  34.         call browser_editline_cursor
  35.        
  36. browser_editlinenokey
  37.         call yieldgetkeynolang ;z=nokey
  38.         jr z,browser_editlinenokey
  39.        
  40.         push af
  41.         ld a,STATUSCOLOR
  42.         call browser_editline_cursor
  43.         pop af
  44.        
  45.         cp key_redraw
  46.         jr z,browser_editline0
  47.         cp key_enter
  48.         jp z,browser_reload ;curfulllink ёюфхЁцшЄ яюыэ√щ url
  49.         ld hl,browser_editline0
  50.         push hl
  51.         cp key_left
  52.         jr z,browser_editline_left
  53.         cp key_right
  54.         jr z,browser_editline_right
  55.         cp key_backspace
  56.         jr z,browser_editline_backspace
  57.         cp 0x20
  58.         ret c ;яЁюўшх ёшёЄхьэ√х ъэюяъш эх эєцэ√
  59.         ld e,a
  60.         ld hl,curfulllink
  61.         call strlen ;hl=length
  62.         ld bc,MAXLINKSZ
  63.         or a
  64.         sbc hl,bc
  65.         ret nc ;эхъєфр ттюфшЄ№
  66.         call cmdcalctextaddr ;hl=addr, a=curcmdx
  67.         inc a
  68.         ld (curcmdx),a
  69.         jp strinsch ;e=ch
  70.  
  71. browser_editline_backspace
  72.         call cmdcalctextaddr ;hl=addr, a=curcmdx
  73.         or a
  74.         ret z ;jr z,editcmdok ;эхўхую єфры Є№
  75.         dec a
  76.         ld (curcmdx),a
  77.         jp strdelch ;єфры хЄ яЁхф√фє∙шщ ёшьтюы
  78.      
  79. browser_editline_left
  80.         ld a,(curcmdx)
  81.         or a
  82.         ret z ;jr z,editcmdok ;эхъєфр тыхтю
  83.         dec a
  84.         ld (curcmdx),a
  85.         ret
  86.      
  87. browser_editline_right
  88.         call cmdcalctextaddr ;hl=addr, a=curcmdx
  89.         inc (hl)
  90.         dec (hl)
  91.         ret z ;jr z,editcmdok ;эхъєфр яЁртю, ёЄюшь эр ЄхЁьшэрЄюЁх
  92.         inc a
  93.         ld (curcmdx),a
  94.         ret
  95.  
  96. strdelch
  97. ;delete char at (hl-1), shift string left
  98. ;keeps ix
  99. editcmd_bs0
  100.         ld a,(hl)
  101.         dec hl
  102.         ld (hl),a
  103.         inc hl
  104.         inc hl
  105.         or a
  106.         jr nz,editcmd_bs0
  107.         ret
  108.  
  109. strinsch
  110. ;insert char E at (hl), shift string right
  111. ;keeps ix
  112. editcmd_ins0
  113.         ld a,(hl)
  114.         ld (hl),e
  115.         ld e,a
  116.         inc hl
  117.         or a
  118.         jr nz,editcmd_ins0
  119.         ld (hl),a
  120.         ret
  121.  
  122. curcmdx ;эх эр ¤ъЁрэх, р тэєЄЁш ъюьрэф√
  123.         db 0
  124.        
  125. browser_editline_print
  126.         call setpgs_scr
  127.         call setpgcode4000
  128.         ld de,EDITLINEY*256
  129.         call setxymc
  130.         ld de,curfulllink
  131.         ex de,hl
  132. browser_editline_scroll=$+1 ;ёфтшу ъюьрэф√ юЄэюёшЄхы№эю ¤ъЁрэр
  133.         ld bc,0
  134.         add hl,bc
  135.         ex de,hl
  136.         ld b,EDITLINEMAXVISIBLEX
  137. browser_editline_print0
  138.         ld a,(de)
  139.         or a
  140.         jr z,browser_editline_print0q
  141.         push bc
  142.         push de
  143.         call prcharmc
  144.         pop de
  145.         pop bc
  146.         inc de
  147.         djnz browser_editline_print0
  148.         ret;jr browser_editline_print0qq
  149. browser_editline_print0q
  150.         ld a,' '
  151.         jp prcharmc
  152. ;browser_editline_print0qq
  153. ;        jp setpgtemp8000
  154.  
  155. browser_editline_cursor
  156. ;a=attr
  157.         ;jr $
  158.         push af
  159.         ;ld de,(curcmdx)
  160.         ;ld d,EDITLINEY
  161.         call cmdcalccurxy
  162.         call setxymc
  163.         res 6,h
  164.         pop af
  165. ;hl=screen addr
  166.         jp html_prattr
  167.        
  168. strlen
  169. ;hl=str
  170. ;out: hl=length
  171.         ld bc,0 ;ўЄюс√ Єюўэю эрщЄш ЄхЁьшэрЄюЁ
  172.         xor a
  173.         cpir ;эрщф╕ь юс чрЄхы№эю, хёыш фышэр=0, Єю bc=-1 ш Є.ф.
  174.         ld hl,-1
  175.         or a
  176.         sbc hl,bc
  177.         ret
  178.  
  179. cmdcalctextaddr
  180. ;out: hl=addr, a=curcmdx
  181. ;keeps ix
  182.         ld a,(curcmdx)
  183.         ld c,a
  184.         ld b,0
  185.         ld hl,cmdbuf
  186.         add hl,bc
  187.         ret
  188.  
  189. cmdcalccurxy
  190. ;out: de=yx
  191. ;x=curcmdx-curcmdscroll
  192.         ld a,(curcmdx) ;эх эр ¤ъЁрэх, р тэєЄЁш ъюьрэф√
  193.         ld hl,browser_editline_scroll;curcmdscroll ;ёфтшу ъюьрэф√ юЄэюёшЄхы№эю ¤ъЁрэр
  194.         sub (hl)
  195.         ld e,a
  196.         ld d,EDITLINEY
  197.         ret
  198.