Subversion Repositories Kolibri OS

Rev

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