?login_element?

Subversion Repositories NedoOS

Rev

Rev 344 | Go to most recent revision | 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 0x20
  63.         ret c ;прочие системные кнопки не нужны
  64.         ld lx,a
  65.         ld hl,curfulllink
  66.         call strlen ;hl=length
  67.         ld bc,MAXLINKSZ
  68.         or a
  69.         sbc hl,bc
  70.         ret nc ;некуда вводить
  71.         call cmdcalctextaddr_xde ;hl=addr, de=curcmdx
  72.         inc de
  73.         ld (curcmdx),de
  74.         jp strinsch_lx ;lx=ch
  75.  
  76. browser_editline_backspace
  77.         call cmdcalctextaddr_xde ;hl=addr, de=curcmdx
  78.         ld a,d
  79.         or e
  80.         ret z ;jr z,editcmdok ;нечего удалять
  81.         dec de
  82.         ld (curcmdx),de
  83.         jp strdelch ;удаляет предыдущий символ
  84.      
  85. browser_editline_left
  86.         ld de,(curcmdx)
  87.         ld a,d
  88.         or e
  89.         ret z ;jr z,editcmdok ;некуда влево
  90.         dec de
  91.         ld (curcmdx),de
  92.         ret
  93.      
  94. browser_editline_right
  95.         call cmdcalctextaddr_xde ;hl=addr, de=curcmdx
  96.         inc (hl)
  97.         dec (hl)
  98.         ret z ;jr z,editcmdok ;некуда право, стоим на терминаторе
  99.         inc de
  100.         ld (curcmdx),de
  101.         ret
  102.  
  103. strdelch
  104. ;delete char at (hl-1), shift string left
  105. ;keeps ix
  106. editcmd_bs0
  107.         ld a,(hl)
  108.         dec hl
  109.         ld (hl),a
  110.         inc hl
  111.         inc hl
  112.         or a
  113.         jr nz,editcmd_bs0
  114.         ret
  115.  
  116. strinsch_lx
  117. ;insert char lx at (hl), shift string right
  118.         ld e,lx
  119. editcmd_ins0
  120.         ld a,(hl)
  121.         ld (hl),e
  122.         ld e,a
  123.         inc hl
  124.         or a
  125.         jr nz,editcmd_ins0
  126.         ld (hl),a
  127.         ret
  128.  
  129. curcmdx ;не на экране, а внутри команды
  130.         dw 0
  131.        
  132. browser_editline_print
  133.         call setpgs_scr
  134.         call setpgcode4000
  135.         ld de,EDITLINEY*256
  136.         call setxymc
  137.         ld de,curfulllink
  138.         ex de,hl
  139. browser_editline_scroll=$+1 ;сдвиг команды относительно экрана
  140.         ld bc,0
  141.         add hl,bc
  142.         ex de,hl
  143.         ld b,EDITLINEMAXVISIBLEX
  144. browser_editline_print0
  145.         ld a,(de)
  146.         or a
  147.         jr z,browser_editline_print0q
  148.         push bc
  149.         push de
  150.         call prcharmc
  151.         pop de
  152.         pop bc
  153.         inc de
  154.         djnz browser_editline_print0
  155.         ret;jr browser_editline_print0qq
  156. browser_editline_print0q
  157.         ld a,' '
  158.         jp prcharmc
  159. ;browser_editline_print0qq
  160. ;        jp setpgtemp8000
  161.  
  162. browser_editline_cursor
  163. ;a=attr
  164.         ;jr $
  165.         push af
  166.         ;ld de,(curcmdx)
  167.         ;ld d,EDITLINEY
  168.         call cmdcalccurxy
  169.          ld d,EDITLINEY
  170.         call setxymc
  171.         res 6,h
  172.         pop af
  173. ;hl=screen addr
  174.         jp html_prattr
  175.        
  176. strlen
  177. ;hl=str
  178. ;out: hl=length
  179.         ld bc,0 ;чтобы точно найти терминатор
  180.         xor a
  181.         cpir ;найдём обязательно, если длина=0, то bc=-1 и т.д.
  182.         ld hl,-1
  183.         or a
  184.         sbc hl,bc
  185.         ret
  186.  
  187. cmdcalctextaddr_xde
  188. ;out: hl=addr, de=curcmdx
  189. ;keeps ix
  190.         ld de,(curcmdx)
  191.         ld hl,cmdbuf
  192.         add hl,de
  193.         ret
  194.  
  195. cmdcalccurxy
  196. ;out: de=x
  197. ;x=curcmdx-curcmdscroll
  198.         ld hl,(curcmdx) ;не на экране, а внутри команды
  199.         ld de,(browser_editline_scroll);curcmdscroll ;сдвиг команды относительно экрана
  200.         or a
  201.         sbc hl,de
  202.         ex de,hl
  203.         ret
  204.