Subversion Repositories Kolibri OS

Rev

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

  1. ;---------------------------------------------------------------------
  2. k_option:
  3.         test    dword [status],64
  4.         jnz     still
  5.         or      dword [status],64
  6.  
  7.         call    get_memory_for_thread_stack
  8.         mov     [thread_stack_7],eax
  9.         mcall   51,1,thread7    ; thread_stack_7
  10.         jmp     still
  11. ;---------------------------------------------------------------------
  12. get_memory_for_thread_stack:
  13.         mcall   68,12,4096
  14.         mov     edx,eax
  15.         add     edx,4096
  16.         ret
  17. ;---------------------------------------------------------------------
  18. thread7:                                ; start of bgrd thread
  19.         mcall   9, procinfo_threads, -1
  20.         mov     eax,[ebx+30]
  21.         mov     [PID7],eax
  22.         mcall   40,0x27
  23.         mov     eax,[slide_show_delay]
  24.         mov     [slide_show_delay_old],eax
  25.         mov     eax,[arrows_offset]
  26.         mov     [arrows_offset_old],eax
  27.         mov     eax,[check1+32]
  28.         mov     [show_file_name_old],eax
  29.         mov     eax,[check2+32]
  30.         mov     [filtering_flag_old],eax
  31.         xor     eax,eax
  32.         mov     [option_pointer],eax
  33.         call    .set_pointers
  34. ;-----------------------------------------
  35. .red:
  36.         call    .draw_window
  37. ;-----------------------------------------
  38. .still:
  39.         mcall   10              ; wait here for event
  40.  
  41.         cmp     eax,1                   ; redraw request ?
  42.         je      .red
  43.        
  44.         cmp     eax,2                   ; key in buffer ?
  45.         je      .key
  46.        
  47.         cmp     eax,3                   ; button in buffer ?
  48.         je      .button
  49.        
  50.         cmp     eax,6   ; mouse in buffer ?
  51.         je      .mouse
  52.        
  53.         jmp     .still
  54. ;---------------------------------------------------------------------
  55. .mouse:
  56.         mov     ebx,[check1+32]
  57.         and     ebx,10b
  58.         push    dword check1
  59.         call    [check_box_mouse]
  60.         mov     eax,[check1+32]
  61.         and     eax,10b
  62.         cmp     ebx,eax
  63.         je      @f      ;.still
  64.        
  65.         mov     [option_pointer],2
  66.         call    .set_pointers
  67.         call    .draw_all_options_values
  68.         jmp     .still
  69. ;---------------------------------------------------------------------
  70. @@:
  71.         mov     ebx,[check2+32]
  72.         and     ebx,10b
  73.         push    dword check2
  74.         call    [check_box_mouse]
  75.         mov     eax,[check2+32]
  76.         and     eax,10b
  77.         cmp     ebx,eax
  78.         je      .still
  79.        
  80.         mov     [option_pointer],3
  81.         call    .set_pointers
  82.         call    .draw_all_options_values
  83.         jmp     .still
  84. ;---------------------------------------------------------------------
  85. .key:
  86.         mcall
  87.         cmp     ah,27
  88.         je      .close
  89.        
  90.         cmp     ah,13
  91.         je      .kok
  92.        
  93.         cmp     ah,32
  94.         je      .select_space
  95.        
  96.         cmp     ah,56 ;plus
  97.         je      .select_plus    ;.plus_slide_show_delay
  98.        
  99.         cmp     ah,43 ;plus
  100.         je      .select_plus    ;.plus_slide_show_delay
  101.        
  102.         cmp     ah,61 ;plus
  103.         je      .select_plus ;.plus_slide_show_delay
  104.        
  105.         cmp     ah,54 ;minus
  106.         je      .select_minus ;.minus_slide_show_delay
  107.        
  108.         cmp     ah,45 ;minus
  109.         je      .select_minus   ;.minus_slide_show_delay
  110.        
  111.         cmp     ah,95 ;minus
  112.         je      .select_minus ;.minus_slide_show_delay
  113.        
  114.         cmp     ah,178 ;up arrow
  115.         je      .up_arrow
  116.        
  117.         cmp     ah,177 ;down arrow
  118.         je      .down_arrow
  119.        
  120.         jmp     .still
  121. ;---------------------------------------------------------------------
  122. .button:                         ; button
  123.         mov     eax,17          ; get id
  124.         mcall
  125.        
  126.         cmp     ah,5
  127.         je      .minus_arrows_offset
  128.        
  129.         cmp     ah,4
  130.         je      .plus_arrows_offset
  131.        
  132.         cmp     ah,3
  133.         je      .minus_slide_show_delay
  134.        
  135.         cmp     ah,2
  136.         je      .plus_slide_show_delay
  137.  
  138.         cmp     ah,1                    ; button id=1 ?
  139.         jne     .noclose
  140. ;-----------------------------------
  141. .close:
  142.         mov     eax,[slide_show_delay_old]
  143.         mov     [slide_show_delay],eax
  144.         mov     eax,[arrows_offset_old]
  145.         mov     [arrows_offset],eax
  146.         mov     eax,[show_file_name_old]
  147.         mov     [check1+32],eax
  148.         mov     eax,[filtering_flag_old]
  149.         mov     [check2+32],eax
  150.         jmp     .close_all
  151. ;---------------------------------------------------------------------
  152. .close_1:
  153.         mov     eax,[check2+32]
  154.         test    eax,10b
  155.         jz      @f
  156.        
  157.         mov     [filtering_flag],1
  158.         jmp     .redraw_flag
  159. ;---------------------------------------------------------------------
  160. @@:
  161.         mov     [filtering_flag],0
  162. .redraw_flag:
  163.         mov     [redraw_flag],byte 1
  164. .close_all:
  165.         xor     dword [status],64
  166.         xor     eax,eax
  167.         mov     [PID7],eax
  168.         mcall   68,13,[thread_stack_7]
  169.         mcall   -1              ; close this program
  170. ;---------------------------------------------------------------------
  171. .noclose:
  172. .kok:
  173.         jmp     .close_1
  174. ;---------------------------------------------------------------------
  175. .select_plus:
  176.         jmp     [plus_pointer]
  177. ;---------------------------------------------------------------------
  178. .select_minus:
  179.         jmp     [minus_pointer]
  180. ;---------------------------------------------------------------------
  181. .select_space:
  182.         jmp     [space_pointer]
  183. ;---------------------------------------------------------------------
  184. .plus_slide_show_delay:
  185.         cmp     [option_pointer],0
  186.         je      @f
  187.        
  188.         mov     [option_pointer],0
  189.         call    .draw_all_options_values
  190. @@:
  191.         cmp     [slide_show_delay],99990
  192.         je      .still
  193.        
  194.         add     [slide_show_delay],10
  195.         call    .draw_slide_show_delay
  196.         jmp     .still
  197. ;---------------------------------------------------------------------
  198. .minus_slide_show_delay:
  199.         cmp     [option_pointer],0
  200.         je      @f
  201.        
  202.         mov     [option_pointer],0
  203.         call    .draw_all_options_values
  204. @@:
  205.         cmp     [slide_show_delay],0
  206.         je      .still
  207.        
  208.         sub     [slide_show_delay],10
  209.         call    .draw_slide_show_delay
  210.         jmp     .still
  211. ;---------------------------------------------------------------------
  212. .plus_arrows_offset:
  213.         cmp     [option_pointer],1
  214.         je      @f
  215.        
  216.         mov     [option_pointer],1
  217.         call    .draw_all_options_values
  218. @@:
  219.         cmp     [arrows_offset],100
  220.         je      .still
  221.        
  222.         inc     [arrows_offset]
  223.         call    .draw_arrows_offset
  224.         call    calculate_arrows_offset
  225.         jmp     .still
  226. ;--------------------------------------------------------------------- 
  227. .minus_arrows_offset:
  228.         cmp     [option_pointer],1
  229.         je      @f
  230.        
  231.         mov     [option_pointer],1
  232.         call    .draw_all_options_values
  233. @@:
  234.         cmp     [arrows_offset],1
  235.         je      .still
  236.        
  237.         dec     [arrows_offset]
  238.         call    .draw_arrows_offset
  239.         call    calculate_arrows_offset
  240.         jmp     .still
  241. ;---------------------------------------------------------------------
  242. .space_check1:
  243.         test    [check1+32],dword 10b
  244.         jnz     @f
  245.        
  246.         or      [check1+32],dword 10b
  247.         jmp     .space_check1_1
  248. ;---------------------------------------------------------------------
  249. @@:
  250.         xor     [check1+32],dword 10b
  251. .space_check1_1:
  252.         call    .draw_all_options_values
  253.         jmp     .still
  254. ;---------------------------------------------------------------------
  255. .space_check2:
  256.         test    [check2+32],dword 10b
  257.         jnz     @f
  258.        
  259.         or      [check2+32],dword 10b
  260.         jmp     .space_check2_1
  261. ;---------------------------------------------------------------------
  262. @@:
  263.         xor     [check2+32],dword 10b
  264. .space_check2_1:
  265.         call    .draw_all_options_values
  266.         jmp     .still
  267. ;---------------------------------------------------------------------
  268. .down_arrow:
  269.         cmp     [option_pointer],3
  270.         je      .still
  271.        
  272.         inc     [option_pointer]
  273. .draw_all_points:
  274.         call    .set_pointers
  275.         call    .draw_all_options_values
  276.         jmp     .still
  277. ;--------------------------------------------------------------------- 
  278. .up_arrow:
  279.         cmp     [option_pointer],0
  280.         je      .still
  281.        
  282.         dec     [option_pointer]
  283.         jmp     .draw_all_points
  284. ;--------------------------------------------------------------------- 
  285. .set_pointers:
  286.         cmp     [option_pointer],0
  287.         jne     @f
  288.        
  289.         mov     [plus_pointer],thread7.plus_slide_show_delay
  290.         mov     [minus_pointer],thread7.minus_slide_show_delay
  291.         mov     [space_pointer],thread7.still
  292.         ret
  293. @@:
  294.         cmp     [option_pointer],1
  295.         jne     @f
  296.        
  297.         mov     [plus_pointer],thread7.plus_arrows_offset
  298.         mov     [minus_pointer],thread7.minus_arrows_offset
  299.         mov     [space_pointer],thread7.still
  300.         ret
  301. @@:
  302.         cmp     [option_pointer],2
  303.         jne     @f
  304.        
  305.         mov     [plus_pointer],thread7.still
  306.         mov     [minus_pointer],thread7.still
  307.         mov     [space_pointer],thread7.space_check1
  308.         ret
  309. @@:
  310.         mov     [plus_pointer],thread7.still
  311.         mov     [minus_pointer],thread7.still
  312.         mov     [space_pointer],thread7.space_check2
  313.         ret
  314. ;---------------------------------------------------------------------
  315. .draw_all_options_values:
  316.         call    .draw_slide_show_delay
  317.         call    .draw_arrows_offset
  318.         call    .draw_check1
  319.         call    .draw_check2
  320.         ret
  321. ;---------------------------------------------------------------------
  322. ;       *********************************************
  323. ;       ******* WINDOW DEFINITIONS AND DRAW ********
  324. ;       *********************************************
  325. .draw_window:
  326.         mcall   12,1
  327.         xor     eax,eax                 ; function 0 : define and draw window
  328.         xor     esi,esi
  329.         mcall   ,<100,300>,<100,120>,0x13909090,,optiontext
  330.         mcall   8,<15,10>,<50,11>,2,0xdddddd
  331.         inc     edx
  332.         mcall   ,<77,10>
  333. ;---------------------------------
  334.         inc     edx
  335.         mcall   ,<15,10>,<90,11>
  336.         inc     edx
  337.         mcall   ,<77,10>
  338. ;---------------------------------
  339.         inc     edx
  340.         mcall   ,<250,40>,<50,20>
  341. ;---------------------------------
  342.         mcall   4,<10,35>,0x80ffffff,slide_show_delay_title
  343.         mcall   ,<17,53>,0x90000000,slide_show_delay_text
  344.         mcall   ,<10,75>,0x80ffffff,arrows_offset_title
  345.         mcall   ,<17,93>,0x90000000,slide_show_delay_text
  346.         mcall   ,<265,57>, ,ok_btn
  347.         call    .draw_all_options_values
  348. ;       mcall   47,0x80000,[PID5],<200, 5>,0xffffff
  349.         mcall   12,2
  350.         ret
  351. ;---------------------------------------------------------------------
  352. .draw_slide_show_delay:
  353.         mov     edx,0xffffff
  354.         cmp     [option_pointer],0
  355.         jne     @f
  356.        
  357.         mov     edx,0xffff80
  358. @@:
  359.         mcall   13,<29,45>,<50,12>,
  360.         mcall   47,0x800a0000,[slide_show_delay],<32,52>,0x10000000;    0x40000000,0xffffff
  361.         ret
  362. ;---------------------------------------------------------------------
  363. .draw_arrows_offset:
  364.         mov     edx,0xffffff
  365.         cmp     [option_pointer],1
  366.         jne     @f
  367.        
  368.         mov     edx,0xffff80
  369. @@:
  370.         mcall   13,<29,45>,<90,12>,
  371.         mcall   47,0x800a0000,[arrows_offset],<32,92>,0x10000000;       0x40000000,0xffffff
  372.         ret
  373. ;---------------------------------------------------------------------
  374. .draw_check1:
  375.         mov     [check1+12],dword 0xffffff
  376.         cmp     [option_pointer],2
  377.         jne     @f
  378.        
  379.         mov     [check1+12],dword 0xffff80
  380. @@:
  381.         push    dword check1
  382.         call    [check_box_draw]
  383.         ret
  384. ;---------------------------------------------------------------------
  385. .draw_check2:
  386.         mov     [check2+12],dword 0xffffff
  387.         cmp     [option_pointer],3
  388.         jne     @f
  389.        
  390.         mov     [check2+12],dword 0xffff80
  391. @@:
  392.         push    dword check2
  393.         call    [check_box_draw]
  394.         ret
  395. ;---------------------------------------------------------------------