Subversion Repositories Kolibri OS

Rev

Rev 629 | Rev 826 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. diff16 'tp-dialog.asm',0,$
  2.  
  3. ;-----------------------------------------------------------------------------
  4. proc define_3d_button ;///////////////////////////////////////////////////////
  5. ;-----------------------------------------------------------------------------
  6. ; ebx = <x,width>
  7. ; ecx = <y,height>
  8. ; esp+4*3 = id
  9. ; esp+4*2 = text
  10. ; esp+4*1 = text length
  11. ;-----------------------------------------------------------------------------
  12.         pushad
  13.         mov     edx,[esp+4*8+4+4*2]
  14.         or      edx,0x40000000
  15.         mcall   8
  16.         mov     eax,[esp+4*8+4*1]
  17.         add     eax,2
  18.         imul    eax,6
  19.         pushad
  20.         shr     ebx,16
  21.         shr     ecx,16
  22.         push    ebx ecx eax 15
  23.         call    draw_3d_panel
  24.         popad
  25.         shr     ecx,16
  26.         mov     bx,cx
  27.         add     ebx,7*65536+4
  28.         mcall   4,,[sc.work_text],[esp+4*8+4*2],[esp+4*8+4*1]
  29.         popad
  30.         ret     4*3
  31. endp
  32.  
  33. finddlg_handler:
  34.         cmp     al,1
  35.         je      .draw
  36.         cmp     al,2
  37.         je      .key
  38.         cmp     al,3
  39.         je      botdlg.button
  40.         ret
  41.  
  42.   .draw:
  43.         mov     ebx,[bot_ofs]
  44.         add     ebx,(1+3)*65536+6
  45.         mcall   4,,[sc.work_text],s_2find,s_2find.size+1
  46.         mov     ecx,[bot_ofs]
  47.         shl     ecx,16
  48.         add     ecx,(3+17)*65536+15
  49.  
  50.         push    ecx
  51.         cmp     [bot_mode2],0
  52.         je      @f
  53.         add     ebx,18
  54.         mcall   4,,[sc.work_text],s_2replace,s_2replace.size+1
  55.         mov     ecx,[esp]
  56.         add     ecx,18*65536
  57.     @@:
  58.  
  59.         mov     ebx,[p_info.client_box.width]
  60.         shl     ebx,16
  61.  
  62.         push    20003
  63.         cmp     [bot_mode2],0
  64.         jne     .draw.lp1
  65.         add     ebx,-(2+6*(s_2find.size+2))*65536+6*(s_2find.size+2)
  66.         push    s_2find s_2find.size
  67.         jmp     @f
  68.  
  69.   .draw.lp1:
  70.         add     ebx,-(2+6*(s_2replace.size+2))*65536+6*(s_2replace.size+2)
  71.         push    s_2replace s_2replace.size
  72.  
  73.     @@: call    define_3d_button
  74.         sub     ebx,(6*(s_2cancel.size+2)+3)*65536
  75.         mov     bx,6*(s_2cancel.size+2)
  76.         push    20001 s_2cancel s_2cancel.size
  77.         call    define_3d_button
  78.  
  79.         mov     ecx,[esp]
  80.  
  81.         mov     ebp,tb_find
  82.         mov     eax,[p_info.client_box.width]
  83.         sub     eax,6*(s_2find.size+2)+1
  84.         add     eax,6*(s_2find.size+2)*65536
  85.         mov     dword[tbox.width],eax
  86.         add     ecx,-18*65536+1
  87.         mov     dword[tbox.height],ecx
  88.         call    textbox.draw
  89.  
  90.         pop     ecx
  91.  
  92.         cmp     [bot_mode2],0
  93.         je      @f
  94.         mov     ebp,tb_replace
  95.         mov     eax,[p_info.client_box.width]
  96.         sub     eax,6*(s_2replace.size+2)+1
  97.         add     eax,6*(s_2replace.size+2)*65536
  98.         mov     dword[tbox.width],eax
  99.         inc     ecx
  100.         mov     dword[tbox.height],ecx
  101.         call    textbox.draw
  102.     @@:
  103.  
  104.         ret
  105.  
  106.   .key:
  107.         cmp     ebx,KEY_ESCAPE
  108.         je      btn.bot.cancel
  109.         cmp     ebx,KEY_RETURN
  110.         je      btn.bot.find
  111.         cmp     ebx,KEY_NUMRETURN
  112.         je      btn.bot.find
  113.         cmp     ebx,KEY_TAB
  114.         je      ..tab
  115.         call    textbox.key
  116.         ret
  117.  
  118.   ..tab:
  119.         cmp     [bot_mode2],0
  120.         je      @f
  121.         mov     eax,tb_replace
  122.         cmp     eax,[focused_tb]
  123.         jne     .key.lp1
  124.         mov     eax,tb_find
  125.   .key.lp1:
  126.         mov     [focused_tb],eax
  127.         call    .draw
  128.     @@: ret
  129.  
  130. osdlg_handler:
  131.         cmp     al,1
  132.         je      .draw
  133.         cmp     al,2
  134.         je      .key
  135.         cmp     al,3
  136.         je      botdlg.button
  137.         ret
  138.  
  139.   .draw:
  140.         mov     ebx,[bot_ofs]
  141.         add     ebx,(1+3)*65536+6
  142.         mcall   4,,[sc.work_text],s_2filename,s_2filename.size
  143.         mov     ebx,[p_info.client_box.width]
  144.         shl     ebx,16
  145.         mov     ecx,[bot_ofs]
  146.         shl     ecx,16
  147.         add     ecx,(2+18)*65536+15
  148.  
  149.         push    20002
  150.         cmp     [bot_mode2],0
  151.         jne     .draw.lp1
  152.         add     ebx,-(2+6*(s_2open.size+2))*65536+6*(s_2open.size+2)
  153.         push    s_2open s_2open.size
  154.         jmp     @f
  155.   .draw.lp1:
  156.         add     ebx,-(2+6*(s_2save.size+2))*65536+6*(s_2save.size+2)
  157.         push    s_2save s_2save.size
  158.  
  159.     @@: call    define_3d_button
  160.         sub     ebx,(6*(s_2cancel.size+2)+3)*65536
  161.         mov     bx,6*(s_2cancel.size+2)
  162.         push    20001 s_2cancel s_2cancel.size
  163.         call    define_3d_button
  164.  
  165.         cmp     [bot_mode2], 2      ; exit-save dialog
  166.         jne     @f
  167.  
  168.         sub     ebx,(6*(s_2save_no.size+2)+3)*65536
  169.         mov     bx,6*(s_2save_no.size+2)
  170.         push    20007 s_2save_no s_2save_no.size
  171.         call    define_3d_button
  172.  
  173.     @@: mov     ebp,tb_opensave
  174.         mov     eax,[p_info.client_box.width]
  175.         sub     eax,6*(s_2filename.size+1)+1
  176.         add     eax,6*(s_2filename.size+1)*65536
  177.         mov     dword[tbox.width],eax
  178.         add     ecx,-18*65536+1
  179.         mov     dword[tbox.height],ecx
  180.         call    textbox.draw
  181.  
  182.         ret
  183.  
  184.   .key:
  185.         cmp     ebx,KEY_ESCAPE
  186.         je      btn.bot.cancel
  187.         cmp     ebx,KEY_RETURN
  188.         je      btn.bot.opensave
  189.         cmp     ebx,KEY_NUMRETURN
  190.         je      btn.bot.opensave
  191.         call    textbox.key
  192.         ret
  193.  
  194. gotodlg_handler:
  195.         cmp     al,1
  196.         je      .draw
  197.         cmp     al,2
  198.         je      .key
  199.         cmp     al,3
  200.         je      botdlg.button
  201.         ret
  202.  
  203.   .draw:
  204.         mov     ebx,[bot_ofs]
  205.         add     ebx,(1+3)*65536+6
  206.         mcall   4,,[sc.work_text],s_2filename,s_2filename.size
  207.         mov     ebx,[p_info.box.width]
  208.         shl     ebx,16
  209.         mov     ecx,[bot_ofs]
  210.         shl     ecx,16
  211.         add     ecx,(2+18)*65536+15
  212.  
  213.         push    20002
  214.         cmp     [bot_mode2],0
  215.         jne     .draw.lp1
  216.         add     ebx,-(2+6*(s_2open.size+2))*65536+6*(s_2open.size+2)
  217.         push    s_2open s_2open.size
  218.         jmp     @f
  219.   .draw.lp1:
  220.         add     ebx,-(2+6*(s_2save.size+2))*65536+6*(s_2save.size+2)
  221.         push    s_2save s_2save.size
  222.  
  223.     @@: call    define_3d_button
  224.         sub     ebx,(6*(s_2cancel.size+2)+3)*65536
  225.         mov     bx,6*(s_2cancel.size+2)
  226.         push    20001 s_2cancel s_2cancel.size
  227.         call    define_3d_button
  228.  
  229.         mov     ebp,tb_opensave
  230.         mov     eax,[p_info.box.width]
  231.         sub     eax,6*(s_2filename.size+3)
  232.         add     eax,6*(s_2filename.size+2)*65536
  233.         mov     dword[tbox.width],eax
  234.         add     ecx,-18*65536+1
  235.         mov     dword[tbox.height],ecx
  236.         call    textbox.draw
  237.  
  238.         sub     ebx,(6*(s_2cancel.size+2)+3)*65536
  239.         mov     bx,6*(s_2cancel.size+2)
  240.         push    20010 s_2cancel s_2cancel.size
  241.         call    define_3d_button
  242.  
  243.         ret
  244.  
  245.   .key:
  246.         cmp     ebx,KEY_ESCAPE
  247.         je      btn.bot.cancel
  248.         cmp     ebx,KEY_RETURN
  249.         je      btn.bot.opensave
  250.         cmp     ebx,KEY_NUMRETURN
  251.         je      btn.bot.opensave
  252.         call    textbox.key
  253.         ret
  254.  
  255. cur_part   dd ?
  256. cur_color  dd ?
  257. cur_colors rd 10
  258.  
  259. optsdlg_handler:
  260.         cmp     al,1
  261.         je      .draw
  262.         cmp     al,2
  263.         je      .key
  264.         cmp     al,3
  265.         je      botdlg.button
  266.         cmp     al,4
  267.         je      .mouse
  268.         ret
  269.  
  270.   .xchg_colors:
  271.         mov     ecx,10
  272.         mov     esi,color_tbl
  273.         mov     edi,cur_colors
  274.     @@: lodsd
  275.         xchg    eax,[edi]
  276.         mov     [esi-4],eax
  277.         add     edi,4
  278.         loop    @b
  279.         ret
  280.  
  281.   .draw:
  282.         call    .draw_editor
  283.  
  284.         mov     ecx,[bot_ofs-2]
  285.         mov     cx,word[bot_ofs]
  286.         push    ecx
  287.         add     ecx,128
  288.         mcall   38,<2+3+165,2+3+165>,,[cl_3d_inset]
  289.         mov     bx,word[p_info.client_box.width]
  290.         pop     ecx
  291.         add     ecx,35*65536+35
  292.         mcall
  293.         add     ecx,0x00240024
  294.         mcall
  295.  
  296.         shr     ecx,16
  297.         mov     bx,cx
  298.         add     ebx,38*65536-21
  299.         mcall   4,,[sc.work_text],s_tabpos,s_tabpos.size
  300.  
  301.         call    .draw_tabpos
  302.  
  303.         mov     ebx,[bot_ofs]
  304.         add     ebx,(2+6+165+35)*65536+5+16
  305.         mcall   4,,[sc.work_text],s_color,s_color.size
  306.  
  307.         mov     dword[tb_color.width],(2+6+6*s_color.size+165+35)*65536+(6*6+8)
  308.         mov     eax,ebx
  309.         add     ax,-3
  310.         shl     eax,16
  311.         mov     ax,14
  312.         mov     dword[tb_color.height],eax
  313.  
  314.         call    .draw_color
  315.  
  316.         mov     ebx,[p_info.client_box.width]
  317.         shl     ebx,16
  318.         mov     ecx,[p_info.client_box.height]
  319.         shl     ecx,16
  320.         add     ecx,(-34)*65536+15
  321.  
  322.         add     ebx,-(2+6*(s_2save.size+2))*65536+6*(s_2save.size+2)
  323.         push    20004 s_2save s_2save.size
  324.         call    define_3d_button
  325.         sub     ebx,(6*(s_2cancel.size+2)+3)*65536
  326.         mov     bx,6*(s_2cancel.size+2)
  327.         push    20001 s_2cancel s_2cancel.size
  328.         call    define_3d_button
  329.  
  330.         ret
  331.  
  332.   .get_color:
  333.         movzx   ecx,[tb_color.length]
  334.         mov     esi,tb_color.text
  335.         xor     eax,eax
  336.         xor     ebx,ebx
  337.         jecxz   .lp2
  338.   .lp1: lodsb
  339.         cmp     al,'9'
  340.         mov     dl,-'0'
  341.         jbe     @f
  342.         mov     dl,-'A'+10
  343.     @@: add     al,dl
  344.         shl     ebx,4
  345.         add     bl,al
  346.         loop    .lp1
  347.   .lp2: mov     eax,[cur_part]
  348.         mov     [cur_colors+eax*4],ebx
  349.         mov     [cur_color],ebx
  350.         jmp     .draw_color.2
  351.  
  352.   .draw_editor:
  353.         push    dword[options] [tab_bar.Current.Ptr]
  354.         mov     [options],0
  355.         mov     ebp,optsdlg_editor
  356.         call    set_cur_tab
  357.  
  358.         call    .xchg_colors
  359.         mov     [cur_editor.Bounds.Left],2
  360.         mov     [cur_editor.Bounds.Right],2+165
  361.         mov     eax,[p_info.client_box.height]
  362.         add     eax,-125-STATH
  363.         mov     [cur_editor.Bounds.Top],eax
  364.         add     eax,122
  365.         mov     [cur_editor.Bounds.Bottom],eax
  366.         call    draw_editor
  367.         call    .xchg_colors
  368.  
  369.         pop     ebp eax
  370.         mov     [options],al
  371.         call    set_cur_tab
  372.         ret
  373.  
  374.   .draw_tabpos:
  375.         mov     ecx,[bot_ofs-2]
  376.         xor     cx,cx
  377.         mov     ebx,(2+3+165+3)*65536+31
  378.         add     ecx,38*65536+31
  379.         mov     edx,[cl_3d_inset]
  380.         mov     esi,[sc.work]
  381.         call    draw_fillrect
  382.         dec     ebx
  383.         dec     ecx
  384.         mcall   8,,,0x40000000+21001
  385.         mov     esi,[cl_3d_normal]
  386.         mov     al,[tab_pos]
  387.  
  388. TPOSH = 6
  389. TPOSW = 10
  390.  
  391.         dec     al
  392.         jnz     @f
  393.         ;// top
  394.         inc     ebx
  395.         mov     cx,TPOSH
  396.         call    draw_fillrect
  397.         add     ecx,2*65536-2
  398.         jmp     .lp3
  399.     @@: dec     al
  400.         jnz     @f
  401.         ;// bottom
  402.         inc     ebx
  403.         mov     cx,TPOSH
  404.         add     ecx,(31-TPOSH)*65536
  405.         call    draw_fillrect
  406.         add     ecx,-2
  407.         jmp     .lp3
  408.     @@: dec     al
  409.         jnz     @f
  410.         ;// left
  411.         inc     ecx
  412.         mov     bx,TPOSW
  413.         call    draw_fillrect
  414.         add     ebx,2*65536-2
  415.         jmp     .lp4
  416.     @@: dec     al
  417.         jnz     @f
  418.         ;// right
  419.         inc     ecx
  420.         mov     bx,TPOSW
  421.         add     ebx,(31-TPOSW)*65536
  422.         call    draw_fillrect
  423.         add     ebx,-2
  424.         jmp     .lp4
  425.  
  426.   .lp3:
  427.         add     ebx,(2+TPOSW-2+1)*65536-31+TPOSW-2
  428.         call    draw_fillrect
  429.         add     ebx,-(TPOSW-2+1)*65536
  430.         mov     esi,[sc.work]
  431.         call    draw_fillrect
  432.         ret
  433.   .lp4:
  434.         add     ecx,7*65536-31+4
  435.         call    draw_fillrect
  436.         add     ecx,-5*65536
  437.         mov     esi,[sc.work]
  438.         call    draw_fillrect
  439.         ret
  440.  
  441.   .draw_color:
  442.         mov     ecx,[cur_part]
  443.         mov     edx,s_appearance+1
  444.     @@: dec     ecx
  445.         js      @f
  446.         movzx   eax,byte[edx-1]
  447.         lea     edx,[edx+eax+1]
  448.         jmp     @b
  449.     @@:
  450.         movzx   esi,byte[edx-1]
  451.         mov     ebx,[bot_ofs]
  452.         add     ebx,(2+6+165+35)*65536+8
  453.         push    ebx ecx edx
  454.         mov     ecx,ebx
  455.         shl     ecx,16
  456.         mov     bx,s_appearance.maxl*6
  457.         mov     cx,10
  458.         mcall   13,,,[cl_3d_normal]
  459.         pop     edx ecx ebx
  460.         mcall   4,,[sc.work_text]
  461.  
  462.         mov     eax,[cur_color]
  463.         mov     edi,tb_color.text
  464.         mov     ebx,6
  465.         mov     ecx,16
  466.         call    uint2strz
  467.         mov     [tb_color.length],6
  468.         mov     [tb_color.sel.x],0
  469.         mov     [tb_color.pos.x],6
  470.  
  471.         mov     ebp,tb_color
  472.         call    textbox.draw
  473.  
  474.   .draw_color.2:
  475.         mov     ecx,[p_info.client_box.height]
  476.         sub     ecx,[bot_dlg_height]
  477.         add     ecx,-STATH
  478.         shl     ecx,16
  479.         add     ecx,3*65536+31
  480.         mov     ebx,(2+6+165)*65536+31
  481.         mov     edx,[cl_3d_inset]
  482.         mov     esi,[cur_color]
  483.         call    draw_fillrect
  484.  
  485.         ret
  486.  
  487.   .key:
  488.         cmp     ebx,KEY_ESCAPE
  489.         je      btn.bot.cancel
  490.         cmp     ebx,KEY_RETURN
  491.         je      btn.bot.appearance
  492.         cmp     ebx,KEY_NUMRETURN
  493.         je      btn.bot.appearance
  494.  
  495.         cmp     ebx,KEY_BACKSPACE
  496.         je      .key.tb.2
  497.         cmp     ebx,KEY_TAB
  498.         je      .key.tb.2
  499.         cmp     bx,0x00FF
  500.         ja      .key.tb.2
  501.         ;cmp     ebx,KEY_LSHIFT
  502.         ;je      .key.tb.2
  503.         ;cmp     ebx,KEY_RSHIFT
  504.         ;je      .key.tb.2
  505.         ;cmp     ebx,0x00000147
  506.         ;jb      .key.exit
  507.         ;cmp     ebx,0x00000153
  508.         ;jbe     .key.tb.2
  509.  
  510.         test    dword[shi],KM_CTRLALT
  511.         jnz     .key.exit
  512.         movzx   eax,[chr]
  513.         movzx   eax,[eax+key0]
  514.         or      al,al
  515.         jz      .key.exit
  516.         movzx   eax,[eax+key1]
  517.  
  518.         cmp     al,'0'
  519.         jb      @f
  520.         cmp     al,'9'
  521.         jbe     .key.tb
  522.     @@: cmp     al,'A'
  523.         jb      @f
  524.         cmp     al,'F'
  525.         jbe     .key.tb
  526.     @@: cmp     al,'a'
  527.         jb      @f
  528.         cmp     al,'f'
  529.         jbe     .key.tb
  530.     @@: ret
  531.   .key.tb:
  532.         cmp     [tb_color.length],6
  533.         jb      @f
  534.         mov     al,[tb_color.sel.x]
  535.         cmp     al,[tb_color.pos.x]
  536.         jne     @f
  537.         ret
  538.   .key.tb.2:
  539.     @@: call    textbox.key
  540.         call    .get_color
  541.         call    .draw_editor
  542.   .key.exit:
  543.         ret
  544.  
  545.   .mouse:
  546.         cmp     ah,MEV_LDOWN
  547.         jne     .mouse.exit
  548.         mcall   37,1
  549.         movsx   ebx,ax
  550.         sar     eax,16
  551.         cmp     eax,[optsdlg_editor+EDITOR.Bounds.Right]
  552.         jg      .mouse.exit
  553.         cmp     ebx,[optsdlg_editor+EDITOR.Bounds.Bottom]
  554.         jg      .mouse.exit
  555.         sub     eax,[optsdlg_editor+EDITOR.Bounds.Left]
  556.         js      .mouse.exit
  557.         sub     ebx,[optsdlg_editor+EDITOR.Bounds.Top]
  558.         js      .mouse.exit
  559.         mov     esi,optsdlg_editor_parts-5
  560.     @@: add     esi,5
  561.         cmp     byte[esi+0],-1
  562.         je      .mouse.exit
  563.         cmp     al,byte[esi+1]
  564.         jb      @b
  565.         cmp     bl,byte[esi+2]
  566.         jb      @b
  567.         cmp     al,byte[esi+3]
  568.         ja      @b
  569.         cmp     bl,byte[esi+4]
  570.         ja      @b
  571.         movzx   ebp,byte[esi+0]
  572.         mov     [cur_part],ebp
  573.         m2m     [cur_color],[cur_colors+ebp*4]
  574.         ;mcall   13,<200,30>,<250,30>,[color_tbl+ebp*4]
  575.         ;call    .draw_color
  576.         call    .draw
  577.  
  578.   .mouse.exit:
  579.         ret
  580.  
  581. botdlg.button:
  582.         mov     esi,accel_table2_botdlg
  583.   .acc: cmp     ebx,[esi]
  584.         jne     @f
  585.         call    dword[esi+4]
  586.         ret
  587.     @@: add     esi,8
  588.         cmp     byte[esi],0
  589.         jne     .acc
  590.         ret
  591.  
  592.   btn.bot.cancel:
  593.         xor     eax,eax
  594.         mov     [bot_mode],al
  595.         mov     [main_closing],al
  596.         mov     [bot_dlg_height],eax
  597.         mov     [s_status],eax
  598.         call    drawwindow
  599.         ret
  600.  
  601.   btn.bot.opensave:
  602.         cmp     [bot_mode2],0
  603.         je      .lp1
  604.         call    save_file
  605.         jnc     @f
  606.         jmp     .lp2
  607.   .lp1: call    load_file
  608.         jnc     @f
  609.   .lp2:
  610.         ret
  611.     @@: ;call    update_caption
  612.         xor     eax,eax
  613.         mov     [bot_mode],al
  614.         mov     [bot_dlg_height],eax
  615.         call    drawwindow
  616.         ret
  617.  
  618.   btn.bot.no:
  619.         xor     eax,eax
  620.         mov     [bot_mode],al
  621.         mov     [bot_dlg_height],eax
  622.         mov     [s_status],eax
  623.         call    drawwindow
  624.         cmp     [main_closing],0
  625.         je      @f
  626.         add     [exit_tab_item],sizeof.TABITEM
  627.         jmp     key.alt_x.direct
  628.         ret
  629.     @@: call    key.ctrl_f4.close
  630.         ret
  631.  
  632.   btn.bot.find:
  633.         movzx   ecx,[tb_find.length]
  634.         mov     [s_search.size],ecx
  635.         mov     esi,tb_find.text
  636.         mov     edi,s_search
  637.         cld
  638.         rep     movsb
  639.  
  640.         cmp     [bot_mode2],0
  641.         je      @f
  642.         call    search
  643.         jnc     .found
  644.         call    editor_check_for_changes
  645.         ret
  646.  
  647.   .found:
  648.         push    [copy_size] [copy_count] [copy_buf]
  649.  
  650.         movzx   eax,[tb_replace.length]
  651.         add     eax,10
  652.         stdcall mem.Alloc,eax
  653.         mov     [copy_buf],eax
  654.  
  655.         movzx   eax,[tb_replace.length]
  656.         mov     esi,tb_replace.text
  657.         mov     edi,[copy_buf]
  658.         stosd
  659.         mov     ecx,eax
  660.         jecxz   .lp1
  661.         rep     movsb
  662.   .lp1: add     eax,4
  663.         mov     [copy_size],eax
  664.         mov     [copy_count],1
  665.  
  666.         push    [cur_editor.SelStart.X]
  667.         mov     ebp,cur_editor
  668.         call    init_sel_vars
  669.         call    key.ctrl_v
  670.         pop     [cur_editor.SelStart.X]
  671.  
  672.         stdcall mem.Free,[copy_buf]
  673.  
  674.         pop     [copy_buf] [copy_count] [copy_size]
  675.  
  676.         call    editor_check_for_changes
  677.         ret
  678.     @@: xor     eax,eax
  679.         mov     [bot_mode],al
  680.         mov     [bot_dlg_height],eax
  681.         call    key.f3
  682.         call    drawwindow
  683.         ret
  684.  
  685.   btn.bot.appearance:
  686.     @@: xor     eax,eax
  687.         mov     [bot_mode],al
  688.         mov     [bot_dlg_height],eax
  689.         call    optsdlg_handler.xchg_colors
  690.         mov     al,[tab_pos]
  691.         mov     [tab_bar.Style],al
  692.         call    drawwindow
  693.         ret
  694.  
  695. tabpos_round db 4,3,1,2
  696.  
  697.   btn.bot.tabpos:
  698.         movzx   eax,[tab_pos]
  699.         mov     al,[tabpos_round+eax-1]
  700.         mov     [tab_pos],al
  701.     @@: call    optsdlg_handler.draw_tabpos
  702.         ret
  703.