?login_element?

Subversion Repositories NedoOS

Rev

Rev 1641 | Blame | Compare with Previous | Last modification | View Log | Download

  1. prwindow_edit
  2. ;hl=window DE=texteditaddr c=texteditsize
  3. ;out: CY=OK, de=filename
  4.         push de
  5.         push bc
  6.         call prwindow_text ;de=YX of last line
  7.         pop bc
  8.         pop hl
  9.         push hl
  10.         ld a,c ;a=maxsz
  11.         call editline
  12.         pop de ;de=filename
  13.         cp key_esc
  14.         ret z ;cancel
  15.         scf
  16.         ret
  17.  
  18. prwindow_waitkey
  19. ;hl=window
  20. ;out: CY=OK
  21. ;        ld (prwindow_waitkey_addr),hl; commented by demige 190511
  22.         call prwindow_text; insert by demige 190511
  23. ; comment by demige 190511: for why reprinting window after each keypress? On second print getmarkedfiles returns wrong value.
  24. prwindow_waitkey0
  25. ;prwindow_waitkey_addr=$+1 ; comment by demige 190511
  26. ;        ld hl,0 ; comment by demige 190511
  27. ;        call prwindow_text ; comment by demige 190511
  28.        if PRSTDIO
  29.         call yieldgetkeyloop
  30.        else
  31.         YIELDGETKEYLOOP
  32.        endif
  33.         ld a,c
  34.         cp key_esc
  35.         ret z
  36.         cp 'n'
  37.         ret z
  38.         ;cp 'N'
  39.         ;ret z
  40.         cp key_redraw
  41.         ret z
  42.         cp 'y'
  43.         jr z, prwindow_waitkey_keyyes
  44.         ;cp 'Y'
  45.         ;jr z, prwindow_waitkey_keyyes
  46.         cp key_enter
  47.         jr nz,prwindow_waitkey0
  48. prwindow_waitkey_keyyes
  49.         scf
  50.         ret
  51.  
  52. prwindow_waitkey_any
  53. ;Функция возвращает код нажатой любой клавиши, также дополнительно обрабатывает  как ОК все кнопке кроме N/Esc
  54. ;hl=window
  55. ;out: CY=OK A=key
  56.         call prwindow_text
  57.        if PRSTDIO
  58.         call yieldgetkeyloop
  59.        else
  60.         YIELDGETKEYLOOP
  61.        endif
  62.         ld a,c
  63.         cp key_esc
  64.         ret z
  65.         cp 'n'
  66.         ret z
  67.         cp 'N'
  68.         ret z
  69.         cp key_redraw
  70.         ret z
  71. prwindow_waitkey_any_keyyes
  72.         scf
  73.         ret
  74.  
  75. upwindow_text
  76.         ld a,0
  77.         call prwindow_text0
  78.         YIELDKEEP
  79.         YIELDKEEP
  80.         ret
  81.  
  82. prwindow_text
  83.         ld a,1
  84. prwindow_text0
  85. ;hl = window text
  86. ;out: ;de=YX of last line
  87.         ld e,(hl) ;x
  88.         inc hl
  89.         ld d,(hl) ;y
  90.         inc hl
  91.         ld c,(hl) ;wid
  92.         inc hl
  93.         ld b,(hl) ;hgt
  94.         inc hl
  95.  
  96.         push hl ;text
  97.  
  98.         push de
  99.         or a
  100.         call nz,prwin
  101.         pop de
  102.         inc d
  103.         inc e
  104.         inc e
  105.         call nv_setxy ;keeps de,hl,ix
  106.        
  107.         pop hl ;text
  108. prwindow_waitkey_text0
  109.         ld a,(hl)
  110.         or a
  111.         ret z
  112.         dec a;cp 1
  113.         jr z,prwindow_waitkey_textnfiles
  114.         dec a;cp 2
  115.         jr z,prwindow_waitkey_textoutertext
  116.         dec a;cp 3
  117.         jr z,prwindow_waitkey_textnextline
  118.         push de
  119.          ld c,0
  120.         call prtext
  121.         pop de
  122.         jr prwindow_waitkey_text0
  123. prwindow_waitkey_textnfiles
  124.         inc hl
  125.         push de
  126.         push hl
  127.         call getmarkedfiles;countmarkedfiles
  128.         call prdword_dehl
  129.         pop hl
  130.         pop de
  131.         jr prwindow_waitkey_text0
  132. prwindow_waitkey_textoutertext
  133.         inc hl
  134.         push de
  135.         ld e,(hl)
  136.         inc hl
  137.         ld d,(hl)
  138.         inc hl
  139.         push hl
  140.         ex de,hl
  141.          ld c,0
  142.         call prtext
  143.         pop hl
  144.         pop de
  145.         jr prwindow_waitkey_text0
  146. prwindow_waitkey_textnextline
  147.         inc hl
  148.         inc d
  149.         call nv_setxy ;keeps de,hl,ix
  150.         jr prwindow_waitkey_text0
  151.  
  152. prwin
  153. ;de=yx
  154. ;bc=hgt,wid
  155.         call setdrawtablesneeded
  156.         ld a,c
  157.         sub 2
  158.         ld (winbeginstroka_wid),a
  159.         ld (winmidstroka_wid),a
  160.         ld (winendstroka_wid),a
  161.         ld hl,winbeginstroka
  162.         call prtableline
  163.         dec b
  164.         dec b
  165. winlineN_0
  166.         inc d
  167.         ld hl,winmidstroka
  168.         call prtableline
  169.         djnz winlineN_0
  170.         inc d
  171.         ld hl,winendstroka
  172.         ;jr prtableline
  173.  
  174. prtableline
  175. ;hl=tableline data
  176. ;de=yx
  177. ;b=hgt
  178. ;keeps bc,de,ix
  179.         push bc
  180.         call nv_setxy ;keeps de,hl
  181. prtableline0
  182.         ld a,(hl)
  183.         or a
  184.         jr z,prtablelineq
  185.         inc hl
  186.         ld b,(hl)
  187.         inc hl
  188.         call prNsymbol
  189.         jr prtableline0
  190. prtablelineq
  191.         pop bc
  192.         ret
  193.  
  194. prNsymbol
  195. ;a=symbol
  196. ;b=count
  197.         push de
  198.         push hl
  199.         push ix
  200.         ld c,a
  201. prNsymbol0
  202.         push bc
  203.         ld a,c
  204.        if PRSTDIO
  205.         PRCHAR_
  206.        else
  207.         PRCHAR
  208.        endif
  209.         pop bc
  210.         djnz prNsymbol0
  211.         pop ix
  212.         pop hl
  213.         pop de
  214.         ret
  215.  
  216. winbeginstroka
  217.         db 0xc9;'г'
  218.         db 1
  219.         db 0xcd;'='
  220. winbeginstroka_wid=$
  221.         db 12;wdtcolumn1
  222.         db 0xbb;'┐'
  223.         db 1
  224.         db 0
  225.  
  226. winmidstroka
  227.         db 0xba;'│'
  228.         db 1
  229.         db ' '
  230. winmidstroka_wid=$
  231.         db 12;wdtcolumn1
  232.         db 0xba;'│'
  233.         db 1
  234.         db 0
  235.  
  236. winendstroka
  237.         db 0xc8;'L'
  238.         db 1
  239.         db 0xcd;'='
  240. winendstroka_wid=$
  241.         db 12;wdtcolumn1
  242.         db 0xbc;'-'
  243.         db 1
  244.         db 0
  245.