?login_element?

Subversion Repositories NedoOS

Rev

Rev 447 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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