Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;Hello world example
  2.  
  3. use32
  4.         db      'MENUET01'
  5.         dd      1
  6.         dd      start
  7.         dd      i_end
  8.         dd      0x10000
  9.         dd      0x10000
  10.         dd      0
  11.         dd      0
  12.  
  13. TRUE    =     1
  14. FALSE   =     0
  15.  
  16. include 'libGUI.inc'
  17.  
  18. start:
  19.         ;load libGUI labrari
  20.         push NULL  ;use default system path to library
  21.         call LoadLibGUI
  22.         ;create main window
  23.         CreateWindow
  24.         mov [window],eax
  25.         ;change size of main window
  26.         SetWindowSizeRequest [window],270,282
  27.         ;set callback function for button close window
  28.         SetCallbackFunction [window],DELETE_EVENT,callback_func_delete_window,NULL
  29.  
  30.         ;create control HorizontalScrollBar
  31.         mov [swdata.x],5
  32.         mov [swdata.y],5
  33.         mov [swdata.wight],250
  34.         mov [swdata.height],250
  35.         CreateScrolledWindow swdata
  36.         mov [scrolled_window],eax
  37.  
  38.         ;create buttons
  39.         mov ecx,10
  40.         next_j:
  41.                 mov edx,10
  42.                 next_i:
  43.                         mov esi,edx ;i
  44.                         mov edi,ecx ;j
  45.                         dec esi     ;i-1
  46.                         dec edi     ;j-1
  47.                         imul esi,75 ;(i-1)*75
  48.                         imul edi,25 ;(j-1)*25
  49.                         add esi,10  ;10+(i-1)*75
  50.                         add edi,10  ;10+(j-1)*25
  51.  
  52.                         mov [bdata.x],esi
  53.                         mov [bdata.y],edi
  54.                         mov [bdata.wight],70
  55.                         mov [bdata.height],20
  56.  
  57.                         push ecx edx esi edi;save registers befor call
  58.  
  59.                         CreateButtonWithText bdata,btxt
  60.                         mov [button],eax
  61.  
  62.                         ;set callback functions for scroll bars
  63.                         SetCallbackFunction [button],BUTTON_PRESSED_EVENT,callback_func,NULL
  64.                         ;pack control Button in ScrolledWindow
  65.                         ScrolledWindowPackControls [scrolled_window],[button]
  66.  
  67.                         pop edi esi edx ecx
  68.                 dec edx
  69.                 jnz next_i
  70.         dec ecx
  71.         jnz next_j
  72.  
  73.         ;pack scrolled window in window
  74.         PackControls [window],[scrolled_window]
  75.  
  76.         ;start libGUI main loop
  77.         LibGUImain [window]
  78.  
  79.  
  80. ;void callback_func(header_t *control,void *data)
  81. callback_func:
  82.  
  83.         mov eax,[esp+4];pointer to control
  84.  
  85.         push esi;save befor use
  86.         mov esi,message
  87.         call gui_ksys_debug_out_str
  88.         pop esi
  89.  
  90.         ret
  91.  
  92. ;void callback_func_delete_window(header_t *control,void *data)
  93. callback_func_delete_window:
  94.  
  95.         mov eax,[esp+4] ;control
  96.  
  97.         QuitLibGUI eax
  98.  
  99.         ret
  100. align 4
  101. ;----------------data-----------------
  102. btxt            db 'button',0
  103. message         db 13,10,'pressed button',0
  104. bdata           gui_button_data_t
  105. swdata          gui_scrolled_window_data_t
  106.  
  107. window          rd 1
  108. scrolled_window rd 1
  109. button          rd 1
  110.  
  111. i_end: