Subversion Repositories Kolibri OS

Rev

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

  1. ;
  2. ;    UNIFORM WINDOW COLOURS & SKIN
  3. ;
  4. ;    Compile with FASM for Menuet
  5. ;
  6. ;    < russian edition by Ivan Poddubny >
  7. ;    < skin selection by Mike Semenyako >
  8. ;
  9. ; last update:  10/09/2010
  10. ; written by:   Marat Zakiyanov aka Mario79, aka Mario
  11. ; changes:      select path with OpenDialog
  12. ;******************************************************************************
  13.    use32
  14.    org     0
  15.    db      'MENUET01'  ; identifier
  16.    dd      1           ; header version
  17.    dd      START       ; start address
  18.    dd      I_END       ; file size
  19.    dd      i_end ;28000h      ; memory
  20.    dd      stacktop    ; stack pointer
  21.    dd      skin_info       ; parameters
  22.    dd      cur_dir_path ; path to file
  23.    
  24. include 'lang.inc'
  25. include '../../../config.inc'           ;for nightbuild
  26. include '../../../macros.inc'
  27. include 'kglobals.inc'
  28. include 'unpacker.inc'
  29. include '../../../develop/libraries/box_lib/load_lib.mac'
  30.         @use_library
  31. ;******************************************************************************
  32.  
  33.  
  34. struct SKIN_HEADER
  35.   ident   dd ?
  36.   version dd ?
  37.   params  dd ?
  38.   buttons dd ?
  39.   bitmaps dd ?
  40. ends
  41.  
  42. struct SKIN_PARAMS
  43.   skin_height    dd ?
  44.   margin.right   dw ?
  45.   margin.left    dw ?
  46.   margin.bottom  dw ?
  47.   margin.top     dw ?
  48.   colors.inner   dd ?
  49.   colors.outer   dd ?
  50.   colors.frame   dd ?
  51.   colors_1.inner dd ?
  52.   colors_1.outer dd ?
  53.   colors_1.frame dd ?
  54.   dtp.size       dd ?
  55.   dtp.data       db 40 dup (?)
  56. ends
  57.  
  58. struct SKIN_BUTTONS
  59.   type     dd ?
  60.   pos:
  61.     left   dw ?
  62.     top    dw ?
  63.   size:
  64.     width  dw ?
  65.     height dw ?
  66. ends
  67.  
  68. struct SKIN_BITMAPS
  69.   kind  dw ?
  70.   type  dw ?
  71.   _data  dd ?
  72. ends
  73.  
  74.  
  75. START:                          ; start of execution
  76. ;---------------------------------------------------------------------
  77.         mcall   68,11
  78.        
  79.         test    eax,eax
  80.         jz      close  
  81.  
  82. load_libraries l_libs_start,end_l_libs
  83.  
  84. ;if return code =-1 then exit, else nornary work
  85. ;        cmp     eax,-1
  86.         inc     eax
  87.         test    eax,eax
  88.         jz      close
  89.  
  90. ;---------------------------------------------------------------------
  91.         mov     edi,filename_area
  92.         mov     esi,start_temp_file_name
  93.         xor     eax,eax
  94.         cld
  95. @@:
  96.         lodsb
  97.         stosb
  98.         test    eax,eax
  99.         jnz     @b
  100.  
  101.  
  102.         mov     edi,fname
  103.         mov     esi,default_dtp
  104.         xor     eax,eax
  105.         cld
  106. @@:
  107.         lodsb
  108.         stosb
  109.         test    eax,eax
  110.         jnz     @b
  111.  
  112. ;---------------------------------------------------------------------
  113. ;        mov     esi, param
  114. ;        cmp     byte [esi], 0
  115. ;               je      @f
  116. ;        jnz     has_param
  117. ;    mov  esi,default_skn
  118. ;    mov  edi,fname
  119. ;    mov  ecx,default_skn.size
  120. ;    rep  movsb
  121. ;    jmp  skin_path_ready
  122. ;has_param:
  123. ;        mov     ecx, 256/4
  124. ;        mov     edi, fname
  125. ;        rep     movsd
  126. ;               skin_path_ready
  127. ;---------------------------------------------------------------------
  128.         mov     edi,skin_info
  129.         cmp     byte [edi], 0
  130.         jne     skin_path_ready
  131.         mov     esi,default_skin
  132.         xor     eax,eax
  133.         cld
  134. @@:
  135.         lodsb
  136.         stosb
  137.         test    eax,eax
  138.         jnz     @b
  139. skin_path_ready:       
  140. ;---------------------------------------------------------------------
  141. ;OpenDialog     initialisation
  142.         push    dword OpenDialog_data
  143.         call    [OpenDialog_Init]
  144.  
  145.         push    dword OpenDialog_data2
  146.         call    [OpenDialog_Init]
  147.        
  148. ; prepare for PathShow
  149.         push    dword PathShow_data_1
  150.         call    [PathShow_prepare]
  151.        
  152.         push    dword PathShow_data_2
  153.         call    [PathShow_prepare]
  154. ;--------------------------------------------------------------------- 
  155.     mov  eax,48                 ; get current colors
  156.     mov  ebx,3
  157.     mov  ecx,color_table
  158.     mov  edx,4*10
  159.     mcall
  160.  
  161.     call load_skin_file.2
  162.  
  163. ;    mov  esi, default_dtp
  164. ;    mov  edi, fname
  165. ;    mov  ecx, default_dtp.size
  166. ;    rep  movsb
  167.  
  168. red:
  169.     call draw_window            ; at first, draw the window
  170.  
  171. still:
  172.  
  173.     mov  eax,23                 ; wait here for event
  174.     mov  ebx,5
  175.     mcall
  176.  
  177.     dec  eax                    ; redraw request ?
  178.     jz   red
  179.     dec  eax                    ; key in buffer ?
  180.     jz   key
  181.     dec  eax                    ; button in buffer ?
  182.     jz   button
  183.  
  184.     call draw_cursor
  185.  
  186.     jmp  still
  187.  
  188.  
  189.   key:                          ; key
  190.     mov  al,2                   ; just read it and ignore
  191.     mcall
  192.     jmp  still
  193.  
  194.   button:                       ; button
  195.     mov  al,17                  ; get id
  196.     mcall
  197.  
  198. ;    cmp  ah,11                  ; read string
  199. ;    jne  no_string
  200. ;    call read_string
  201. ;    jmp  still
  202. ;  no_string:
  203.  
  204.     cmp  ah,12                  ; load file
  205.     jne  no_load
  206.     call load_file
  207.     call draw_window
  208.     jmp  still
  209.   no_load:
  210.  
  211.     cmp  ah,13                  ; save file
  212.     jne  no_save
  213.     call save_file
  214.     jmp  still
  215.   no_save:
  216.  
  217.     cmp  ah,14                  ; set 3d buttons
  218.     jne  no_3d
  219.     mov  eax,48
  220.     mov  ebx,1
  221.     mov  ecx,1
  222.     mcall
  223.     jmp  doapply
  224.    no_3d:
  225.  
  226.     cmp  ah,15                  ; set flat buttons
  227.     jne  no_flat
  228.     mcall 48, 1, 0
  229. doapply:
  230.     mcall 48, 0, 0
  231.     jmp  still
  232.   no_flat:
  233.  
  234.     cmp  ah,16                  ; apply
  235.     jne  no_apply
  236.   apply_direct:
  237.     mov  eax,48
  238.     mov  ebx,2
  239.     mov  ecx,color_table
  240.     mov  edx,10*4
  241.     mcall
  242.     jmp  doapply
  243.   no_apply:
  244.  
  245.     cmp  ah,17                  ; load skin file
  246.     jne  no_load_skin
  247.     call load_skin_file
  248.     call draw_window
  249.     jmp  still
  250.   no_load_skin:
  251.  
  252.     cmp   ah,18                 ; apply skin
  253.     jne   no_apply_skin
  254.     cmp   [skin_info],0
  255.     je    no_apply_skin
  256.     mcall 48,8,skin_info
  257.     call  draw_window
  258.     jmp   still
  259.   no_apply_skin:
  260.  
  261.     cmp  ah,31
  262.     jb   no_new_colour
  263.     cmp  ah,41
  264.     jg   no_new_colour
  265.     shr  eax,8
  266.     sub  eax,31
  267.     shl  eax,2
  268.     mov  ebx,[color]
  269.     mov  [eax+color_table],ebx
  270.     cmp  dword[not_packed_area+SKIN_HEADER.ident],'SKIN'
  271.     jne  @f
  272.     mov  edi,[not_packed_area+SKIN_HEADER.params]
  273.     mov  dword[edi+not_packed_area+SKIN_PARAMS.dtp.data+eax],ebx
  274.     call draw_skin
  275. @@: call draw_colours
  276.     jmp  still
  277.   no_new_colour:
  278.  
  279.     cmp  ah,1                   ; terminate
  280.     jnz  noid1
  281. close:
  282.     or   eax,-1
  283.     mcall
  284.   noid1:
  285.  
  286.     jmp  still
  287.  
  288.  
  289. draw_cursor:
  290.  
  291.     pusha
  292.     mov  eax,37
  293.     mov  ebx,2
  294.     mcall
  295.  
  296.     cmp  eax,0
  297.     jne  dc1
  298.     popa
  299.     ret
  300.  
  301.  dc1:
  302.  
  303.     mov  eax,37
  304.     mov  ebx,1
  305.     mcall
  306.  
  307.     mov  ebx,eax
  308.     shr  ebx,16
  309.     mov  ecx,eax
  310.     and  ecx,0xffff
  311.  
  312.     cmp  ecx,32
  313.     jbe  no_color
  314.     cmp  ebx,32
  315.     jbe  no_color
  316.  
  317.     cmp  ebx,266           ; CHANGE COLOR
  318.     jb   no_color
  319.     cmp  ebx,266+20*3
  320.     jg   no_color
  321.  
  322.     cmp  ecx,30+128
  323.     jge  no_color
  324.     cmp  ecx,30
  325.     jb   no_color
  326.  
  327.     sub  ebx,266
  328.     mov  eax,ebx
  329.     cdq
  330.     mov  ebx,20
  331.     div  ebx
  332.     mov  ebx,2
  333.     sub  ebx,eax
  334.  
  335.     add  ecx,-30
  336.     not  ecx
  337.     shl  ecx,1
  338.  
  339.     mov  byte [ebx+color],cl
  340.     call draw_color
  341.  
  342.     popa
  343.     ret
  344.  
  345.   no_color:
  346.  
  347.     popa
  348.     ret
  349.  
  350. ;---------------------------------------------------------------------
  351. load_file:
  352. ;---------------------------------------------------------------------
  353. ; invoke OpenDialog
  354.         mov     [OpenDialog_data.type],dword 0
  355.         push    dword OpenDialog_data
  356.         call    [OpenDialog_Start]
  357.         cmp     [OpenDialog_data.status],1
  358.         je      .1
  359.         ret
  360. .1:
  361. ; prepare for PathShow
  362.         push    dword PathShow_data_1
  363.         call    [PathShow_prepare]
  364.  
  365.         call    draw_PathShow
  366. ;---------------------------------------------------------------------
  367.         xor     eax, eax
  368.         mov     ebx, read_info
  369.         mov     dword [ebx], eax       ; subfunction: read
  370.         mov     dword [ebx+4], eax     ; offset (low dword)
  371.         mov     dword [ebx+8], eax     ; offset (high dword)
  372.         mov     dword [ebx+12], 40     ; read colors file: 4*10 bytes
  373.         mov     dword [ebx+16], color_table ; address
  374.         mcall   70
  375.         ret
  376. ;---------------------------------------------------------------------
  377. load_skin_file:
  378. ;---------------------------------------------------------------------
  379. ; invoke OpenDialog
  380.         push    dword OpenDialog_data2
  381.         call    [OpenDialog_Start]
  382.         cmp     [OpenDialog_data2.status],1
  383.         je      .1
  384.         ret
  385. .1:
  386. ; prepare for PathShow
  387.         push    dword PathShow_data_2
  388.         call    [PathShow_prepare]
  389.  
  390.         call    draw_PathShow
  391. ;---------------------------------------------------------------------
  392. .2:
  393.         xor     eax, eax
  394.         mov     ebx, read_info2
  395.         mov     dword [ebx], eax       ; subfunction: read
  396.         mov     dword [ebx+4], eax     ; offset (low dword)
  397.         mov     dword [ebx+8], eax     ; offset (high dword)
  398.         mov     dword [ebx+12], 32*1024 ; read: max 32 KBytes
  399.         mov     dword [ebx+16], file_load_area ; address
  400.         mcall   70
  401.  
  402.         mov     esi, file_load_area
  403.  
  404.         cmp     dword [esi], 'KPCK'
  405.         jnz     notpacked
  406.         cmp     dword [esi+4], 32*1024 ; max 32 KBytes
  407.         ja      doret
  408.         push    unpack_area
  409.         push    esi
  410.         call    unpack
  411.         mov     esi, unpack_area
  412. notpacked:
  413.  
  414.     cmp   dword[esi+SKIN_HEADER.ident],'SKIN'
  415.     jne   doret
  416.  
  417.     mov   edi,not_packed_area
  418.     mov   ecx,0x8000/4
  419.     rep   movsd
  420.  
  421. ;    mov   esi,fname
  422. ;    mov   edi,skin_info.fname
  423. ;    mov   ecx,257
  424. ;    rep   movsb
  425.  
  426.     mov   ebp,not_packed_area
  427.     mov   esi,[ebp+SKIN_HEADER.params]
  428.     add   esi,ebp
  429.     lea   esi,[esi+SKIN_PARAMS.dtp.data]
  430.     mov   edi,color_table
  431.     mov   ecx,10
  432.     rep   movsd
  433.   doret:
  434.  
  435. ret
  436.  
  437. ;---------------------------------------------------------------------
  438. save_file:
  439. ;---------------------------------------------------------------------
  440. ; invoke OpenDialog
  441.         mov     [OpenDialog_data.type],dword 1
  442.         push    dword OpenDialog_data
  443.         call    [OpenDialog_Start]
  444.         cmp     [OpenDialog_data.status],1
  445.         je      .1
  446.         ret
  447. .1:
  448. ; prepare for PathShow
  449.         push    dword PathShow_data_1
  450.         call    [PathShow_prepare]
  451.  
  452.         call    draw_PathShow
  453. ;---------------------------------------------------------------------
  454.         mov     ebx, write_info
  455.         mov     dword [ebx], 2         ; subfunction: write
  456.         and     dword [ebx+4], 0       ; (reserved)
  457.         and     dword [ebx+8], 0       ; (reserved)
  458.         mov     dword [ebx+12], 10*4   ; bytes to write
  459.         mov     dword [ebx+16], color_table ; address
  460.         mcall   70
  461.         ret
  462. ;---------------------------------------------------------------------
  463. ;read_string:
  464. ;
  465. ;    pusha
  466. ;
  467. ;    mov  edi,fname
  468. ;    mov  al,'_'
  469. ;    mov  ecx,87
  470. ;    cld
  471. ;    rep  stosb
  472. ;
  473. ;    call print_text
  474. ;
  475. ;    mov  edi,fname
  476. ;
  477. ;  f11:
  478. ;    mov  eax,10
  479. ;    mcall
  480. ;    cmp  eax,2
  481. ;    jne  read_done
  482. ;;    mov  eax,2
  483. ;    mcall
  484. ;    shr  eax,8
  485. ;    cmp  eax,13
  486. ;    je   read_done
  487. ;    cmp  eax,8
  488. ;    jne  nobsl
  489. ;    cmp  edi,fname
  490. ;    je   f11
  491. ;    dec  edi
  492. ;    mov  [edi],byte '_'
  493. ;    call print_text
  494. ;    jmp  f11
  495. ;   nobsl:
  496. ;    mov  [edi],al
  497. ;
  498. ;    call print_text
  499. ;
  500. ;    inc  edi
  501. ;    cmp  edi, fname+87
  502. ;    jne  f11
  503. ;
  504. ;  read_done:
  505. ;
  506. ;    mov  ecx, fname+88
  507. ;    sub  ecx, edi
  508. ;    mov  eax, 0
  509. ;    cld
  510. ;    rep  stosb
  511. ;
  512. ;    call print_text
  513. ;
  514. ;    popa
  515. ;
  516. ;    ret
  517.  
  518.  
  519. ;print_text:
  520. ;    pushad
  521. ;
  522. ;    mpack ebx,15,6*87+4
  523. ;    mpack ecx,(30+18*10+2),11
  524. ;    mcall 13,,,[w_work]
  525. ;
  526. ;    mpack ebx,17,(30+18*10+4)
  527. ;    mcall 4,,[w_work_text],fname,87
  528. ;
  529. ;    popad
  530. ;ret
  531.  
  532.  
  533. draw_color:
  534.  
  535.     pusha
  536.  
  537.     mov  eax,13
  538.     mov  ebx,266*65536+60
  539.     mov  ecx,170*65536+30
  540.     mov  edx,[color]
  541.     mcall
  542.  
  543. ;   mov  eax,13
  544.     mov  ebx,266*65536+60
  545.     mov  ecx,200*65536+10
  546.     mov  edx,[w_work]
  547.     mcall
  548.  
  549.     mov  eax,47
  550.     mov  ebx,0+1*256+8*65536
  551.     mov  ecx,[color]
  552.     mov  edx,272*65536+201
  553.     mov  esi,[w_work_text]
  554.     mcall
  555.  
  556.     popa
  557.  
  558.     ret
  559.  
  560.  
  561. draw_colours:
  562.  
  563.     pusha
  564.  
  565.     mov  esi,color_table
  566.  
  567.     mov  ebx,225*65536+32
  568.     mov  ecx,32*65536+12
  569.   newcol:
  570.     mov  eax,13
  571.     mov  edx,[esi]
  572.     mcall
  573.     add  ecx,18*65536
  574.     add  esi,4
  575.     cmp  esi,color_table+4*9
  576.     jbe  newcol
  577.  
  578.     popa
  579.  
  580.     ret
  581.  
  582.  
  583. draw_framerect: ; ebx,ecx
  584.         push    ebx ecx
  585.         add     bx,[esp+6]
  586.         mov     cx,[esp+2]
  587.         dec     ebx
  588.         mcall   38
  589.         add     cx,[esp]
  590.         rol     ecx,16
  591.         add     cx,[esp]
  592.         sub     ecx,0x00010001
  593.         mcall
  594.         mov     ebx,[esp+4]
  595.         mov     ecx,[esp]
  596.         mov     bx,[esp+6]
  597.         add     cx,[esp+2]
  598.         dec     ecx
  599.         mcall
  600.         add     bx,[esp+4]
  601.         rol     ebx,16
  602.         add     bx,[esp+4]
  603.         sub     ebx,0x00010001
  604.         mcall
  605.         add     esp,8
  606.         ret
  607.  
  608. find_bitmap:
  609.         mov     edi,[ebp+SKIN_HEADER.bitmaps]
  610.         add     edi,ebp
  611.         xor     ebx,ebx
  612.   .lp1: cmp     dword[edi],0
  613.         je      .lp2
  614.         cmp     dword[edi+0],eax
  615.         jne     @f
  616.         mov     ebx,[edi+SKIN_BITMAPS._data]
  617.         add     ebx,ebp
  618.         mov     ecx,[ebx-2]
  619.         mov     cx,[ebx+4]
  620.         add     ebx,8
  621.   .lp2: ret
  622.     @@: add     edi,8
  623.         jmp     .lp1
  624.  
  625. dec_edx:
  626.         sub     dl,4
  627.         jnc     @f
  628.         xor     dl,dl
  629.     @@: sub     dh,4
  630.         jnc     @f
  631.         xor     dh,dh
  632.     @@: rol     edx,16
  633.         sub     dl,4
  634.         jnc     @f
  635.         xor     dl,dl
  636.     @@: rol     edx,16
  637.         ret
  638.  
  639. area:
  640.   .x      = 345
  641.   .y      = 20
  642.   .width  = 206
  643.   .height = 191
  644.  
  645. wnd1:
  646.   .x      = area.x+49
  647.   .y      = area.y+5
  648.   .width  = 150
  649.   .height = 90
  650. wnd2:
  651.   .x      = area.x+35
  652.   .y      = area.y+35
  653.   .width  = 150
  654.   .height = 90
  655. wnd3:
  656.   .x      = area.x+21
  657.   .y      = area.y+65
  658.   .width  = 150
  659.   .height = 90
  660. wnd4:
  661.   .x      = area.x+7
  662.   .y      = area.y+95
  663.   .width  = 150
  664.   .height = 90
  665.  
  666. virtual at edi+SKIN_PARAMS.dtp.data
  667.   dtp system_colors
  668. end virtual
  669.  
  670. draw_skin:
  671.         mcall   13,<area.x,area.width>,<area.y+2,area.height-2>,0x00FFFFFF
  672.  
  673.         mov     ebp,not_packed_area
  674.         mov     edi,[ebp+SKIN_HEADER.params]
  675.         add     edi,ebp
  676.         mpack   ebx,wnd1.x,wnd1.width
  677.         mpack   ecx,wnd1.y,wnd1.height
  678.         mov     edx,[dtp.frame]
  679.         call    draw_framerect
  680.         mcall   13,<wnd1.x+1,wnd1.width-2>,<wnd1.y+1,wnd1.height-2>,dword[dtp.work]
  681.  
  682.         mov     eax,38
  683.         mpack   ebx,wnd1.x+1,wnd1.x+wnd1.width-2
  684.         mpack   ecx,wnd1.y+1,wnd1.y+1
  685.         mov     edx,[dtp.grab]
  686.         mov     esi,20
  687.     @@: mcall
  688.         call    dec_edx
  689.         add     ecx,0x00010001
  690.         dec     esi
  691.         jnz     @b
  692.  
  693.         mov     edi,[ebp+SKIN_HEADER.params]
  694.         add     edi,ebp
  695.         mcall   4,<wnd1.x+6,wnd1.y+7>,dword[dtp.grab_text],caption_text,caption_text.size
  696.  
  697.         mcall   8,<wnd1.x+wnd1.width-18,12>,<wnd1.y+4,12>,0,[dtp.grab_button]
  698.         mcall   4,<wnd1.x+wnd1.width-18+4,wnd1.y+4+2>,dword[dtp.grab_button_text],close_text,close_text.size
  699.  
  700. ;----------------------------------------------------------------------
  701.  
  702.         mov     edi,[ebp+SKIN_HEADER.params]
  703.         add     edi,ebp
  704.         mpack   ebx,wnd2.x,wnd2.width
  705.         mpack   ecx,wnd2.y,wnd2.height
  706.         mov     edx,[dtp.frame]
  707.         shr     edx,1
  708.         and     edx,0x007F7F7F
  709.         call    draw_framerect
  710.         mpack   ebx,wnd2.x+4,wnd2.width-8
  711.         mpack   ecx,wnd2.y+4,wnd2.height-8
  712.         call    draw_framerect
  713.         mcall   13,<wnd2.x+1,wnd2.width-2>,<wnd2.y+1,3>,[dtp.frame]
  714.         add     ecx,(wnd2.height-5)*65536
  715.         mcall
  716.         mcall   ,<wnd2.x+1,3>,<wnd2.y+1,wnd2.height-2>
  717.         add     ebx,(wnd2.width-5)*65536
  718.         mcall
  719.         mcall   ,<wnd2.x+5,wnd2.width-10>,<wnd2.y+5,wnd2.height-10>,dword[dtp.work]
  720.  
  721.         mov     eax,38
  722.         mpack   ebx,wnd2.x+4,wnd2.x+wnd2.width-5
  723.         mpack   ecx,wnd2.y+4,wnd2.y+4
  724.         mov     edx,[dtp.grab]
  725.         mov     esi,16
  726.     @@: mcall
  727.         call    dec_edx
  728.         add     ecx,0x00010001
  729.         dec     esi
  730.         jnz     @b
  731.  
  732.         mov     edi,[ebp+SKIN_HEADER.params]
  733.         add     edi,ebp
  734.         mcall   4,<wnd2.x+8,wnd2.y+7>,dword[dtp.grab_text],caption_text,caption_text.size
  735.  
  736.         mcall   8,<wnd2.x+wnd2.width-20,12>,<wnd2.y+4,12>,0,[dtp.grab_button]
  737.         mcall   4,<wnd2.x+wnd2.width-20+4,wnd2.y+4+2>,dword[dtp.grab_button_text],close_text,close_text.size
  738.  
  739. ;----------------------------------------------------------------------
  740.  
  741.         mov     edi,[ebp+SKIN_HEADER.params]
  742.         add     edi,ebp
  743.         mpack   ebx,wnd3.x,wnd3.width
  744.         mpack   ecx,wnd3.y,wnd3.height
  745.         mov     edx,[edi+SKIN_PARAMS.colors_1.outer]
  746.         call    draw_framerect
  747.         mpack   ebx,wnd3.x+4,wnd3.width-8
  748.         mpack   ecx,wnd3.y+4,wnd3.height-8
  749.         mov     edx,[edi+SKIN_PARAMS.colors_1.inner]
  750.         call    draw_framerect
  751.         mcall   13,<wnd3.x+1,wnd3.width-2>,<wnd3.y+1,3>,[edi+SKIN_PARAMS.colors_1.frame]
  752.         add     ecx,(wnd3.height-5)*65536
  753.         mcall
  754.         mcall   ,<wnd3.x+1,3>,<wnd3.y+1,wnd3.height-2>
  755.         add     ebx,(wnd3.width-5)*65536
  756.         mcall
  757.         mcall   ,<wnd3.x+5,wnd3.width-10>,<wnd3.y+5,wnd3.height-10>,dword[dtp.work]
  758.  
  759.         mov     eax,0x00000001 ; left, inactive
  760.         call    find_bitmap
  761.         mcall   7,,,<wnd3.x,wnd3.y>
  762.  
  763.         pushd   [ebx-8]
  764.         mov     eax,0x00000003 ; base, inactive
  765.         call    find_bitmap
  766.         pop     edx
  767.         mov     esi,wnd3.x+wnd3.width-1
  768.         sub     esi,edx
  769.         shl     edx,16
  770.         add     edx,wnd3.x*65536+wnd3.y
  771.         mcall   7
  772.     @@: rol     edx,16
  773.         add     dx,[ebx-8]
  774.         cmp     dx,si
  775.         ja      @f
  776.         rol     edx,16
  777.         mcall   7
  778.         jmp     @b
  779.     @@:
  780.  
  781.         mov     eax,0x00000002 ; oper, inactive
  782.         call    find_bitmap
  783.         mov     edx,ecx
  784.         shr     edx,16
  785.         neg     edx
  786.         shl     edx,16
  787.         add     edx,(wnd3.x+wnd3.width)*65536+wnd3.y
  788.         mcall   7
  789.  
  790.         mov     ebp,not_packed_area
  791.         mov     edi,[ebp+SKIN_HEADER.params]
  792.         add     edi,ebp
  793.         mov     eax,dword[edi+SKIN_PARAMS.margin.left-2]
  794.         mov     ax,word[edi+SKIN_PARAMS.skin_height]
  795.         sub     ax,[edi+SKIN_PARAMS.margin.bottom]
  796.         shr     ax,1
  797.         add     ax,[edi+SKIN_PARAMS.margin.top]
  798.         add     ax,-4
  799.         push    eax
  800.         lea     ebx,[eax+wnd3.x*65536+wnd3.y]
  801.         mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
  802.  
  803. ;---------------------------------------------------------
  804.  
  805.         mov     edi,[ebp+SKIN_HEADER.params]
  806.         add     edi,ebp
  807.         mpack   ebx,wnd4.x,wnd4.width
  808.         mpack   ecx,wnd4.y,wnd4.height
  809.         mov     edx,[edi+SKIN_PARAMS.colors.outer]
  810.         call    draw_framerect
  811.         mpack   ebx,wnd4.x+4,wnd4.width-8
  812.         mpack   ecx,wnd4.y+4,wnd4.height-8
  813.         mov     edx,[edi+SKIN_PARAMS.colors.inner]
  814.         call    draw_framerect
  815.         mcall   13,<wnd4.x+1,wnd4.width-2>,<wnd4.y+1,3>,[edi+SKIN_PARAMS.colors.frame]
  816.         add     ecx,(wnd4.height-5)*65536
  817.         mcall
  818.         mcall   ,<wnd4.x+1,3>,<wnd4.y+1,wnd4.height-2>
  819.         add     ebx,(wnd4.width-5)*65536
  820.         mcall
  821.         mcall   ,<wnd4.x+5,wnd4.width-10>,<wnd4.y+5,wnd4.height-10>,dword[dtp.work]
  822.  
  823.         mov     eax,0x00010001 ; left, inactive
  824.         call    find_bitmap
  825.         mcall   7,,,<wnd4.x,wnd4.y>
  826.  
  827.         pushd   [ebx-8]
  828.         mov     eax,0x00010003 ; base, inactive
  829.         call    find_bitmap
  830.         pop     edx
  831.         mov     esi,wnd4.x+wnd4.width-1
  832.         sub     esi,edx
  833.         shl     edx,16
  834.         add     edx,wnd4.x*65536+wnd4.y
  835.         mcall   7
  836.     @@: rol     edx,16
  837.         add     dx,[ebx-8]
  838.         cmp     dx,si
  839.         ja      @f
  840.         rol     edx,16
  841.         mcall   7
  842.         jmp     @b
  843.     @@:
  844.  
  845.         mov     eax,0x00010002 ; oper, inactive
  846.         call    find_bitmap
  847.         mov     edx,ecx
  848.         shr     edx,16
  849.         neg     edx
  850.         shl     edx,16
  851.         add     edx,(wnd4.x+wnd4.width)*65536+wnd4.y
  852.         mcall   7
  853.  
  854.         mov     ebp,not_packed_area
  855.         mov     edi,[ebp+SKIN_HEADER.params]
  856.         add     edi,ebp
  857.         pop     eax
  858.         lea     ebx,[eax+wnd4.x*65536+wnd4.y]
  859.         mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
  860.  
  861. ;----------------------------------------------------------------------
  862.  
  863.         mov     edi,[ebp+SKIN_HEADER.buttons]
  864.         add     edi,ebp
  865.   .lp1: cmp     dword[edi],0
  866.         je      .lp2
  867.         mov     ebx,dword[edi+SKIN_BUTTONS.left-2]
  868.         mov     bx,[edi+SKIN_BUTTONS.width]
  869.         mov     ecx,dword[edi+SKIN_BUTTONS.top-2]
  870.         mov     cx,[edi+SKIN_BUTTONS.height]
  871.         add     ebx,(wnd4.x+wnd4.width)*65536
  872.         add     ecx,wnd4.y*65536
  873.         dec     ebx
  874.         dec     ecx
  875.         mcall   8,,,0x40000000
  876.         add     edi,12
  877.         jmp     .lp1
  878.   .lp2:
  879.  
  880.         mov     edi,[ebp+SKIN_HEADER.params]
  881.         add     edi,ebp
  882.         mpack   ebx,wnd4.x+10,wnd4.y+10
  883.         add     bx,word[edi+SKIN_PARAMS.skin_height]
  884.         mcall   4,,[dtp.work_text],window_text,window_text.size
  885.  
  886.         mov     ecx,[edi+SKIN_PARAMS.skin_height]
  887.         shl     ecx,16
  888.         add     ecx,(wnd4.y+8)*65536+10
  889.         mcall   13,<wnd4.x+window_text.size*6+20,wnd4.x+wnd4.width-10-\
  890.                    (wnd4.x+window_text.size*6+20)>,,[dtp.work_graph]
  891.  
  892.         add     ecx,25*65536+8
  893.         mcall   8,<wnd4.x+wnd4.width/2-button_text.size*3-6,\
  894.                   button_text.size*6+11>,,0,[dtp.work_button]
  895.  
  896.         shr     ecx,16
  897.         mov     bx,cx
  898.         add     ebx,0x00060006
  899.         mcall   4,,[dtp.work_button_text],button_text,button_text.size
  900.  
  901.         ret
  902. ;---------------------------------------------------------------------
  903. draw_PathShow:
  904.         pusha
  905.         mcall   13,<10,534>,<214,15>,0xffffff
  906.         mcall   13,<10,534>,<232,15>,0xffffff
  907. ; draw for PathShow
  908.         push    dword PathShow_data_1
  909.         call    [PathShow_draw]
  910.        
  911.         push    dword PathShow_data_2
  912.         call    [PathShow_draw]
  913.         popa
  914.         ret
  915. ;---------------------------------------------------------------------
  916. ;   *********************************************
  917. ;   *******  WINDOW DEFINITIONS AND DRAW ********
  918. ;   *********************************************
  919.  
  920.  
  921. draw_window:
  922.  
  923.     mov  eax,12                    ; function 12:tell os about windowdraw
  924.     mov  ebx,1                     ; 1, start of draw
  925.     mcall
  926.  
  927.     mov  eax,48
  928.     mov  ebx,3
  929.     mov  ecx,app_colours
  930.     mov  edx,10*4
  931.     mcall
  932.  
  933.     mov  eax,14
  934.     mcall
  935.  
  936.                                       ; DRAW WINDOW
  937.     mov  eax,0                     ; function 0 : define and draw window
  938.     mov  ebx,110*65536+555         ; [x start] *65536 + [x size]
  939.     mov  ecx,50*65536+275          ; [y start] *65536 + [y size]
  940.     mov  edx,[w_work]              ; color of work area RRGGBB,8->color
  941.     or   edx,0x14000000
  942.     mov  edi,title                ; WINDOW LABEL
  943.     mcall
  944.  
  945. if lang eq ru
  946.   load_w  = (5*2+6*9)
  947.   save_w  = (5*2+6*9)
  948.   flat_w  = (5*2+6*7)
  949.   apply_w = (5*2+6*9)
  950. else
  951.   load_w  = (5*2+6*6)
  952.   save_w  = (5*2+6*8)
  953.   flat_w  = (5*2+6*4)
  954.   apply_w = (5*2+6*7)
  955. end if
  956.  
  957. ;    mov  eax,8                    ; FILENAME BUTTON
  958. ;    mov  ebx,5*65536+545
  959. ;    mov  ecx,212*65536+10
  960. ;    mov  edx,0x4000000B
  961. ;    mov  esi,[w_grab_button]       ; button color RRGGBB
  962. ;    mcall
  963.  
  964.     mov  eax,8                    ; LOAD BUTTON
  965.     mov  ebx,15*65536+load_w
  966.     mov  ecx,(35+18*12)*65536+14
  967.     mov  edx,12
  968.     mov  esi,[w_work_button]
  969.     mcall
  970.  
  971. ;   mov  eax,8                    ; SAVE BUTTON
  972.     add  ebx,(load_w+2)*65536-load_w+save_w
  973.     inc  edx
  974.     mcall
  975.  
  976. ;   mov  eax,8                    ; 3D
  977. ;   mov  ebx,15*65536+35
  978. ;   mov  ecx,(30+18*12)*65536+14
  979.     mov  ebx,(340-t1.size*6-13)*65536+(5*2+6*4)
  980.     inc  edx
  981.     mcall
  982.  
  983. ;   mov  eax,8                    ; FLAT
  984.     add  ebx,(5*2+6*4+2)*65536-(5*2+6*4)+flat_w
  985.     inc  edx
  986.     mcall
  987.  
  988. ;   mov  eax,8                    ; APPLY BUTTON
  989.     add  ebx,(flat_w+6+2)*65536-flat_w+apply_w
  990.     inc  edx
  991.     mcall
  992.  
  993. ;   mov  eax,8                    ; LOAD SKIN BUTTON
  994.     mov  ebx,(336+(555-335)/2-t2.size*6/2)*65536+load_w
  995.     inc  edx
  996.     mcall
  997.  
  998. ;   mov  eax,8                    ; APPLY SKIN BUTTON
  999.     add  ebx,(load_w+6+2)*65536-load_w+apply_w
  1000.     inc  edx
  1001.     mcall
  1002.  
  1003.     mov  eax, 4
  1004.     mov  ebx, (339-t1.size*6-12)*65536+(35+18*12+4)
  1005.     mov  ecx, [w_work_button_text]
  1006.     mov  edx, t1
  1007.     mov  esi, t1.size
  1008.     mcall
  1009.  
  1010.     mov  ebx,(336+(555-335)/2-t2.size*6/2)*65536+(35+18*12+4)
  1011.     mov  edx,t2
  1012.     mov  esi,t2.size
  1013.     mcall
  1014.  
  1015.     mov  ebx,(15+(load_w+save_w+2-t3.size*6)/2)*65536+(35+18*12+4)
  1016.     mov  edx,t3
  1017.     mov  esi,t3.size
  1018.     mcall
  1019.  
  1020. ;   mov  eax, 4
  1021. ;    mov  ebx, 277*65536+(30+18*12+4)
  1022. ;    mov  edx, t2
  1023. ;    mov  esi, t2.size
  1024. ;    mcall
  1025.  
  1026.     mov  eax,38                    ; R G B COLOR GLIDES
  1027.     mov  ebx,266*65536+285
  1028.     mov  ecx,30*65536+30
  1029.     mov  edx,0xff0000
  1030.   .newl:
  1031.     mcall
  1032.     pusha
  1033.     add  ebx,20*65536+20
  1034.     shr  edx,8
  1035.     mcall
  1036.     add  ebx,20*65536+20
  1037.     shr  edx,8
  1038.     mcall
  1039.     popa
  1040.     sub  edx,0x020000
  1041.     add  ecx,0x00010001
  1042.     cmp  ecx,158*65536+158
  1043.     jnz  .newl
  1044.  
  1045.     call draw_color
  1046.  
  1047.     mov  edx,31                    ; BUTTON ROW
  1048.     mov  ebx,15*65536+200
  1049.     mov  ecx,30*65536+14
  1050.     mov  esi,[w_work_button]
  1051.   newb:
  1052.     mov  eax,8
  1053.     mcall
  1054.     add  ecx,18*65536
  1055.     inc  edx
  1056.     cmp  edx,40
  1057.     jbe  newb
  1058.  
  1059.     mov  ebx,15*65536+34           ; ROW OF TEXTS
  1060.     mov  ecx,[w_work_button_text]
  1061.     mov  edx,text
  1062.     mov  esi,32
  1063.   newline:
  1064.     mov  eax,4
  1065.     mcall
  1066.     add  ebx,18
  1067.     add  edx,32
  1068.     cmp  [edx],byte 'x'
  1069.     jne  newline
  1070.  
  1071.     call draw_colours
  1072.  
  1073.         call    draw_PathShow  
  1074.        
  1075. ;    mcall 13,<5,546>,<212,11>,[w_work]
  1076. ;    mcall 13,<337,7>,<2,250>,[w_frame]
  1077. ;    shr   edx,1
  1078. ;    and   edx,0x007F7F7F
  1079. ;    mcall 38,<336,336>,<20,250>
  1080. ;    add   ebx,0x00080008
  1081. ;    mcall
  1082. ;    sub   ebx,0x00040004
  1083. ;    mcall ,,<0,255>
  1084. ;    mcall ,<5,550>,<211,211>
  1085. ;    add   ecx,0x000C000C
  1086. ;    mcall
  1087.  
  1088. ;    call print_text
  1089.  
  1090.     cmp  dword[not_packed_area+SKIN_HEADER.ident],'SKIN'
  1091.     jne  @f
  1092.     call draw_skin
  1093.   @@:
  1094.  
  1095.     mov  eax,12                    ; function 12:tell os about windowdraw
  1096.     mov  ebx,2                     ; 2, end of draw
  1097.     mcall
  1098.  
  1099.     ret
  1100.  
  1101.  
  1102. ; DATA AREA
  1103.  
  1104. lsz text,\
  1105.     ru,  ' РАМКА ОКНА                     ',\
  1106.     ru,  ' ПОЛОСА ЗАГОЛОВКА               ',\
  1107.     ru,  ' КНОПКА НА ПОЛОСЕ ЗАГОЛОВКА     ',\
  1108.     ru,  ' ТЕКСТ НА КНОПКЕ НА ЗАГОЛОВКЕ   ',\
  1109.     ru,  ' ТЕКСТ ЗАГОЛОВОКА               ',\
  1110.     ru,  ' РАБОЧАЯ ОБЛАСТЬ                ',\
  1111.     ru,  ' КНОПКА В РАБОЧЕЙ ОБЛАСТИ       ',\
  1112.     ru,  ' ТЕКСТ НА КНОПКЕ                ',\
  1113.     ru,  ' ТЕКСТ В РАБОЧЕЙ ОБЛАСТИ        ',\
  1114.     ru,  ' ГРАФИКА В РАБОЧЕЙ ОБЛАСТИ      ',\
  1115.     ru,  'x',\
  1116.     en,  ' WINDOW FRAME                   ',\
  1117.     en,  ' WINDOW GRAB BAR                ',\
  1118.     en,  ' WINDOW GRAB BUTTON             ',\
  1119.     en,  ' WINDOW GRAB BUTTON TEXT        ',\
  1120.     en,  ' WINDOW GRAB TITLE              ',\
  1121.     en,  ' WINDOW WORK AREA               ',\
  1122.     en,  ' WINDOW WORK AREA BUTTON        ',\
  1123.     en,  ' WINDOW WORK AREA BUTTON TEXT   ',\
  1124.     en,  ' WINDOW WORK AREA TEXT          ',\
  1125.     en,  ' WINDOW WORK AREA GRAPH         ',\
  1126.     en,  'x',\
  1127.     et,  ' AKNA RAAM                      ',\
  1128.     et,  ' AKNA HAARAMISE RIBA            ',\
  1129.     et,  ' AKNA HAARAMISE NUPP            ',\
  1130.     et,  ' AKNA HAARAMISE NUPU TEKST      ',\
  1131.     et,  ' AKNA HAARAMISE PEALKIRI        ',\
  1132.     et,  ' AKNA T╓╓PIIRKOND               ',\
  1133.     et,  ' AKNA T╓╓PIIRKONNA NUPP         ',\
  1134.     et,  ' AKNA T╓╓PIIRKONNA NUPPU TEKST  ',\
  1135.     et,  ' AKNA T╓╓PIIRKONNA TEKST        ',\
  1136.     et,  ' AKNA T╓╓PIIRKONNA GRAAFIKA     ',\
  1137.     et,  'x'
  1138.  
  1139. lsz t1,\
  1140.     ru, '  3D   ПЛОСКИЕ   ПРИМЕНИТЬ ',\
  1141.     en, '  3D   FLAT    APPLY  ',\
  1142.     et, '  3D   LAME   KINNITA '
  1143.  
  1144. lsz t2,\
  1145.     ru,  ' ЗАГРУЗИТЬ   ПРИМЕНИТЬ ',\
  1146.     en,  '  LOAD     APPLY  ',\
  1147.     et,  '  LAADI   KINNITA '
  1148.  
  1149. lsz t3,\
  1150.     ru,  ' ЗАГРУЗИТЬ  СОХРАНИТЬ ',\
  1151.     en,  '  LOAD     SAVE  ',\
  1152.     et,  ' LAADI  SALVESTA',\
  1153.  
  1154. lsz caption_text,\
  1155.     ru, 'Заголовок',\
  1156.     en, 'Caption',\
  1157.     et, 'Pealkiri'
  1158.  
  1159. sz  close_text,'x'
  1160.  
  1161. lsz window_text,\
  1162.     ru, 'Текст в окне',\
  1163.     en, 'Window text',\
  1164.     et, 'Akna tekst'
  1165.  
  1166. lsz button_text,\
  1167.     ru, 'Текст на кнопке',\
  1168.     en, 'Button text',\
  1169.     et, 'Nupu tekst'
  1170.  
  1171. ;sz  default_skn, '/sys/DEFAULT.SKN',0
  1172.  
  1173. if lang eq ru
  1174.   title db 'НАСТРОЙКА ОКОН',0
  1175. else if lang eq et
  1176.   title db 'AKNA SEADED - VALI V─RV JA VAJUTA OBJEKTILE',0
  1177. else
  1178.   title db 'WINDOWS SETTINGS - DEFINE COLOR AND CLICK ON TARGET',0
  1179. end if
  1180.  
  1181.  
  1182. color dd  0
  1183.  
  1184. ;---------------------------------------------------------------------
  1185. l_libs_start:
  1186.  
  1187. library01  l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
  1188. err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
  1189.  
  1190. library02  l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
  1191. err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
  1192.  
  1193. end_l_libs:
  1194. ;---------------------------------------------------------------------
  1195. system_dir_Boxlib       db '/sys/lib/box_lib.obj',0
  1196. system_dir_ProcLib      db '/sys/lib/proc_lib.obj',0
  1197.  
  1198. head_f_i:
  1199. head_f_l        db 'System error',0
  1200.  
  1201. err_message_found_lib1  db 'box_lib.obj - Not found!',0
  1202. err_message_found_lib2  db 'proc_lib.obj - Not found!',0
  1203.  
  1204. err_message_import1     db 'box_lib.obj - Wrong import!',0
  1205. err_message_import2     db 'proc_lib.obj - Wrong import!',0
  1206.  
  1207. ;---------------------------------------------------------------------
  1208. align 4
  1209. ProcLib_import:
  1210. OpenDialog_Init         dd aOpenDialog_Init
  1211. OpenDialog_Start        dd aOpenDialog_Start
  1212. ;OpenDialog__Version    dd aOpenDialog_Version
  1213.         dd      0
  1214.         dd      0
  1215. aOpenDialog_Init        db 'OpenDialog_init',0
  1216. aOpenDialog_Start       db 'OpenDialog_start',0
  1217. ;aOpenDialog_Version    db 'Version_OpenDialog',0
  1218. ;---------------------------------------------------------------------
  1219. align 4
  1220. Box_lib_import:
  1221. ;init_lib               dd a_init
  1222. ;version_lib            dd a_version
  1223.  
  1224.  
  1225. ;edit_box_draw          dd aEdit_box_draw
  1226. ;edit_box_key           dd aEdit_box_key
  1227. ;edit_box_mouse         dd aEdit_box_mouse
  1228. ;version_ed             dd aVersion_ed
  1229.  
  1230. ;check_box_draw         dd aCheck_box_draw
  1231. ;check_box_mouse        dd aCheck_box_mouse
  1232. ;version_ch             dd aVersion_ch
  1233.  
  1234. ;option_box_draw        dd aOption_box_draw
  1235. ;option_box_mouse       dd aOption_box_mouse
  1236. ;version_op             dd aVersion_op
  1237.  
  1238. ;scrollbar_ver_draw     dd aScrollbar_ver_draw
  1239. ;scrollbar_ver_mouse    dd aScrollbar_ver_mouse
  1240. ;scrollbar_hor_draw     dd aScrollbar_hor_draw
  1241. ;scrollbar_hor_mouse    dd aScrollbar_hor_mouse
  1242. ;version_scrollbar      dd aVersion_scrollbar
  1243.  
  1244. ;dinamic_button_draw    dd aDbutton_draw
  1245. ;dinamic_button_mouse   dd aDbutton_mouse
  1246. ;version_dbutton        dd aVersion_dbutton
  1247.  
  1248. ;menu_bar_draw          dd aMenu_bar_draw
  1249. ;menu_bar_mouse         dd aMenu_bar_mouse
  1250. ;menu_bar_activate      dd aMenu_bar_activate
  1251. ;version_menu_bar       dd aVersion_menu_bar
  1252.  
  1253. ;FileBrowser_draw       dd aFileBrowser_draw
  1254. ;FileBrowser_mouse      dd aFileBrowser_mouse
  1255. ;FileBrowser_key        dd aFileBrowser_key
  1256. ;Version_FileBrowser    dd aVersion_FileBrowser
  1257.  
  1258. PathShow_prepare        dd sz_PathShow_prepare
  1259. PathShow_draw           dd sz_PathShow_draw
  1260. ;Version_path_show      dd szVersion_path_show
  1261.                         dd 0
  1262.                         dd 0
  1263.  
  1264. ;a_init                 db 'lib_init',0
  1265. ;a_version              db 'version',0
  1266.  
  1267. ;aEdit_box_draw         db 'edit_box',0
  1268. ;aEdit_box_key          db 'edit_box_key',0
  1269. ;aEdit_box_mouse        db 'edit_box_mouse',0
  1270. ;aVersion_ed            db 'version_ed',0
  1271.  
  1272. ;aCheck_box_draw        db 'check_box_draw',0
  1273. ;aCheck_box_mouse       db 'check_box_mouse',0
  1274. ;aVersion_ch            db 'version_ch',0
  1275.  
  1276. ;aOption_box_draw       db 'option_box_draw',0
  1277. ;aOption_box_mouse      db 'option_box_mouse',0
  1278. ;aVersion_op            db 'version_op',0
  1279.  
  1280. ;aScrollbar_ver_draw    db 'scrollbar_v_draw',0
  1281. ;aScrollbar_ver_mouse   db 'scrollbar_v_mouse',0
  1282. ;aScrollbar_hor_draw    db 'scrollbar_h_draw',0
  1283. ;aScrollbar_hor_mouse   db 'scrollbar_h_mouse',0
  1284. ;aVersion_scrollbar     db 'version_scrollbar',0
  1285.  
  1286. ;aDbutton_draw          db 'dbutton_draw',0
  1287. ;aDbutton_mouse         db 'dbutton_mouse',0
  1288. ;aVersion_dbutton       db 'version_dbutton',0
  1289.  
  1290. ;aMenu_bar_draw         db 'menu_bar_draw',0
  1291. ;aMenu_bar_mouse                db 'menu_bar_mouse',0
  1292. ;aMenu_bar_activate     db 'menu_bar_activate',0
  1293. ;aVersion_menu_bar      db 'version_menu_bar',0
  1294.  
  1295. ;aFileBrowser_draw      db 'FileBrowser_draw',0
  1296. ;aFileBrowser_mouse     db 'FileBrowser_mouse',0
  1297. ;aFileBrowser_key       db 'FileBrowser_key',0
  1298. ;aVersion_FileBrowser   db 'version_FileBrowser',0
  1299.  
  1300. sz_PathShow_prepare     db 'PathShow_prepare',0
  1301. sz_PathShow_draw        db 'PathShow_draw',0
  1302. ;szVersion_path_show    db 'version_PathShow',0
  1303. ;---------------------------------------------------------------------
  1304. PathShow_data_1:
  1305. .type                   dd 0    ;+0
  1306. .start_y                dw 217  ;+4
  1307. .start_x                dw 12   ;+6
  1308. .font_size_x            dw 6    ;+8     ; 6 - for font 0, 8 - for font 1
  1309. .area_size_x            dw 530  ;+10
  1310. .font_number            dd 0    ;+12    ; 0 - monospace, 1 - variable
  1311. .background_flag        dd 0    ;+16
  1312. .font_color             dd 0x0  ;+20
  1313. .background_color       dd 0x0  ;+24
  1314. .text_pointer           dd fname        ;+28
  1315. .work_area_pointer      dd text_work_area       ;+32
  1316. .temp_text_length       dd 0    ;+36
  1317. ;---------------------------------------------------------------------
  1318. PathShow_data_2:
  1319. .type                   dd 0    ;+0
  1320. .start_y                dw 235  ;+4
  1321. .start_x                dw 12   ;+6
  1322. .font_size_x            dw 6    ;+8     ; 6 - for font 0, 8 - for font 1
  1323. .area_size_x            dw 530  ;+10
  1324. .font_number            dd 0    ;+12    ; 0 - monospace, 1 - variable
  1325. .background_flag        dd 0    ;+16
  1326. .font_color             dd 0x0  ;+20
  1327. .background_color       dd 0x0  ;+24
  1328. .text_pointer           dd skin_info    ;+28
  1329. .work_area_pointer      dd text_work_area2      ;+32
  1330. .temp_text_length       dd 0    ;+36
  1331. ;---------------------------------------------------------------------
  1332. OpenDialog_data:
  1333. .type                   dd 0
  1334. .procinfo               dd procinfo     ;+4
  1335. .com_area_name          dd communication_area_name      ;+8
  1336. .com_area               dd 0    ;+12
  1337. .opendir_pach           dd temp_dir_pach        ;+16
  1338. .dir_default_pach       dd communication_area_default_pach      ;+20
  1339. .start_path             dd open_dialog_path     ;+24
  1340. .draw_window            dd draw_window  ;+28
  1341. .status                 dd 0    ;+32
  1342. .openfile_pach          dd fname        ;+36
  1343. .filename_area          dd filename_area        ;+40
  1344. .filter_area            dd Filter
  1345. .x:
  1346. .x_size                 dw 420 ;+48 ; Window X size
  1347. .x_start                dw 10 ;+50 ; Window X position
  1348. .y:
  1349. .y_size                 dw 320 ;+52 ; Window y size
  1350. .y_start                dw 10 ;+54 ; Window Y position
  1351.  
  1352. OpenDialog_data2:
  1353. .type                   dd 0
  1354. .procinfo               dd procinfo     ;+4
  1355. .com_area_name          dd communication_area_name2     ;+8
  1356. .com_area               dd 0    ;+12
  1357. .opendir_pach           dd temp_dir_pach2       ;+16
  1358. .dir_default_pach       dd communication_area_default_pach      ;+20
  1359. .start_path             dd open_dialog_path     ;+24
  1360. .draw_window            dd draw_window  ;+28
  1361. .status                 dd 0    ;+32
  1362. .openfile_pach          dd skin_info    ;+36
  1363. .filename_area          dd filename_area2       ;+40
  1364. .filter_area            dd Filter2
  1365. .x:
  1366. .x_size                 dw 420 ;+48 ; Window X size
  1367. .x_start                dw 10 ;+50 ; Window X position
  1368. .y:
  1369. .y_size                 dw 320 ;+52 ; Window y size
  1370. .y_start                dw 10 ;+54 ; Window Y position
  1371.  
  1372. communication_area_name2:
  1373.         db 'FFFFFFFF_open_dialog',0
  1374.  
  1375. communication_area_name:
  1376.         db 'FFFFFFFF_open_dialog2',0
  1377. open_dialog_path:
  1378. if __nightbuild eq yes
  1379.     db '/sys/MANAGERS/opendial',0
  1380. else
  1381.     db '/sys/File Managers/opendial',0
  1382. end if
  1383. communication_area_default_pach:
  1384.         db '/sys',0
  1385.  
  1386. Filter:
  1387. dd      Filter.end - Filter
  1388. .1:
  1389. db      'DTP',0
  1390. .end:
  1391. db      0
  1392.  
  1393. Filter2:
  1394. dd      Filter.end - Filter
  1395. .1:
  1396. db      'SKN',0
  1397. .end:
  1398. db      0
  1399.  
  1400. start_temp_file_name:   db 'default.dtp',0
  1401.  
  1402. default_skin:
  1403.         db '/sys/default.skn',0
  1404. default_dtp:
  1405.         db '/sys/default.dtp',0
  1406. ;---------------------------------------------------------------------
  1407. IncludeIGlobals
  1408.  
  1409. I_END:
  1410.  
  1411. IncludeUGlobals
  1412.  
  1413. read_info:
  1414.   .mode         dd ?            ; read
  1415.   .start_block  dd ?            ; first block
  1416.   .blocks       dd ?            ; 512 bytes
  1417.   .address      dd ?
  1418.   .workarea     dd ?
  1419. fname rb 4096            ; filename
  1420.  
  1421. virtual at read_info
  1422.  write_info:
  1423.   .mode         dd ?
  1424.   rd 1
  1425.   .bytes2write  dd ?
  1426.   .address      dd ?
  1427.   .workarea     dd ?
  1428. end virtual
  1429.  
  1430. read_info2:
  1431.   .mode         dd ?            ; read
  1432.   .start_block  dd ?            ; first block
  1433.   .blocks       dd ?            ; 512 bytes
  1434.   .address      dd ?
  1435.   .workarea     dd ?
  1436. skin_info rb 4096
  1437.  
  1438. ;param   rb      257
  1439.  
  1440. align 4
  1441. app_colours:
  1442.  
  1443. w_frame              dd ?
  1444. w_grab               dd ?
  1445. w_grab_button        dd ?
  1446. w_grab_button_text   dd ?
  1447. w_grab_text          dd ?
  1448. w_work               dd ?
  1449. w_work_button        dd ?
  1450. w_work_button_text   dd ?
  1451. w_work_text          dd ?
  1452. w_work_graph         dd ?
  1453.  
  1454. color_table:
  1455.   times 10 dd ?
  1456. ;---------------------------------------------------------------------
  1457. align 4
  1458. cur_dir_path:
  1459.         rb 4096
  1460. ;---------------------------------------------------------------------
  1461. library_path:
  1462.         rb 4096
  1463. ;---------------------------------------------------------------------
  1464. ;fname_buf:
  1465. ;       rb 4096
  1466. ;---------------------------------------------------------------------
  1467. temp_dir_pach:
  1468.         rb 4096
  1469. ;---------------------------------------------------------------------
  1470. temp_dir_pach2:
  1471.         rb 4096
  1472. ;---------------------------------------------------------------------
  1473. text_work_area:
  1474.         rb 1024
  1475. ;---------------------------------------------------------------------
  1476. text_work_area2:
  1477.         rb 1024
  1478. ;---------------------------------------------------------------------
  1479. procinfo:
  1480.         rb 1024
  1481. ;---------------------------------------------------------------------
  1482. filename_area:
  1483.         rb 256
  1484. ;---------------------------------------------------------------------
  1485. filename_area2:
  1486.         rb 256
  1487. ;---------------------------------------------------------------------
  1488.         rb 4096
  1489. stacktop:
  1490. ;---------------------------------------------------------------------
  1491. file_load_area: ; old 0x10000
  1492.         rb 32*1024
  1493. ;---------------------------------------------------------------------
  1494. not_packed_area:        ; old 0x18000
  1495.         rb 32*1024
  1496. ;---------------------------------------------------------------------
  1497. unpack_area:    ; old 0x20000
  1498.         rb 32*1024
  1499. ;---------------------------------------------------------------------
  1500. i_end: