Subversion Repositories Kolibri OS

Rev

Rev 3693 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1101 Lrz 1
;заголовок приложения
3693 lordok-gr 2
use32                    ; транслятор, использующий 32 разрядных команды
9568 IgorA 3
    org 0                ; базовый адрес кода, всегда 0
3693 lordok-gr 4
    db 'MENUET01'        ; идентификатор исполняемого файла (8 байт)
9568 IgorA 5
    dd 1                 ; версия формата заголовка исполняемого файла
3693 lordok-gr 6
    dd start             ; адрес, на который система передаёт управление
7
    ; после загрузки приложения в память
8
    dd i_end             ; размер приложения
9
    dd mem               ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
10
    dd mem               ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
9568 IgorA 11
    dd 0                 ; указатель на строку с параметрами.
3693 lordok-gr 12
    dd cur_dir_path      ; указатель на адрес, куда помещается строка, содержащая путь до программы в момент запуска.
1101 Lrz 13
 
14
include '../../../../../macros.inc'
1373 IgorA 15
include '../../trunk/box_lib.mac'
9568 IgorA 16
include '../../../../../KOSfuncs.inc'
17
include '../../../../../load_lib.mac'
3693 lordok-gr 18
    @use_library         ;use load lib macros
1101 Lrz 19
start:
20
;universal load library/librarys
9568 IgorA 21
sys_load_library  library_name, library_path, system_path, myimport
1101 Lrz 22
;if return code =-1 then exit, else nornary work
3693 lordok-gr 23
    cmp      eax,-1
24
    jz       exit
9568 IgorA 25
    mcall    SF_SET_EVENTS_MASK,0x80000027 ;установить маску для ожидаемых событий
3693 lordok-gr 26
 
27
    push     dword check1     ;подсчёт дины текста для Checkbox'ов
28
    call     [init_checkbox]
29
 
30
    push     dword check2
31
    call     [init_checkbox]
32
 
1101 Lrz 33
red_win:
3693 lordok-gr 34
    call     draw_window      ;первоначально необходимо нарисовать окно
1101 Lrz 35
align 4
3693 lordok-gr 36
still:                        ;основной обработчик
9568 IgorA 37
    mcall    SF_WAIT_EVENT
3693 lordok-gr 38
    dec      eax
39
    jz       red_win
40
    dec      eax
41
    jz       key
42
    dec      eax
43
    jz       button
1101 Lrz 44
 
3693 lordok-gr 45
    push    dword edit1
46
    call    [edit_box_mouse]
1101 Lrz 47
 
3693 lordok-gr 48
    push    dword edit2
49
    call    [edit_box_mouse]
1101 Lrz 50
 
3693 lordok-gr 51
    push    dword check1
52
    call    [check_box_mouse]
1101 Lrz 53
 
3693 lordok-gr 54
    push    dword check2
55
    call    [check_box_mouse]
1101 Lrz 56
 
3693 lordok-gr 57
    push    dword Option_boxs
58
    call    [option_box_mouse]
1101 Lrz 59
 
3693 lordok-gr 60
    push    dword Option_boxs2
61
    call    [option_box_mouse]
1101 Lrz 62
 
3693 lordok-gr 63
    jmp     still           ;если ничего из перечисленного то снова в цикл
1101 Lrz 64
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
65
button:
9568 IgorA 66
    mcall   SF_GET_BUTTON
3693 lordok-gr 67
    test    ah,ah          ;если в ah 0, то перейти на обработчик событий still
68
    jz      still
69
exit:
9568 IgorA 70
    mcall   SF_TERMINATE_PROCESS
1101 Lrz 71
key:
9568 IgorA 72
    mcall   SF_GET_KEY
1101 Lrz 73
 
3693 lordok-gr 74
    push    dword edit1
75
    call    [edit_box_key]
1101 Lrz 76
 
3693 lordok-gr 77
    push    dword edit2
78
    call    [edit_box_key]
1101 Lrz 79
 
3693 lordok-gr 80
    jmp     still
1101 Lrz 81
 
82
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
83
align 4
3693 lordok-gr 84
draw_window:                ;рисование окна приложения
9568 IgorA 85
    mcall   SF_REDRAW, SSF_BEGIN_DRAW
86
    mcall   SF_CREATE_WINDOW,(50*65536+390),(30*65536+200),0x33AABBCC,0x805080DD,hed
1101 Lrz 87
 
3693 lordok-gr 88
    push    dword edit1
89
    call    [edit_box_draw]
1101 Lrz 90
 
3693 lordok-gr 91
    push    dword edit2
92
    call    [edit_box_draw]
1101 Lrz 93
 
3693 lordok-gr 94
    push    dword check1
95
    call    [check_box_draw]
1101 Lrz 96
 
3693 lordok-gr 97
    push    dword check2
98
    call    [check_box_draw]
1101 Lrz 99
 
3693 lordok-gr 100
    push    dword Option_boxs
101
    call    [option_box_draw]
1101 Lrz 102
 
3693 lordok-gr 103
    push    dword Option_boxs2
104
    call    [option_box_draw]
1101 Lrz 105
 
9568 IgorA 106
    mcall   SF_REDRAW, SSF_END_DRAW
3693 lordok-gr 107
   ret
1101 Lrz 108
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
109
;DATA данные
110
;Всегда соблюдать последовательность в имени.
3693 lordok-gr 111
system_path     db '/sys/lib/'
112
library_name    db 'box_lib.obj',0
1101 Lrz 113
; Если есть желание разъединить, то нужно использовать следующию конструкцию
114
;system_path      db '/sys/lib/box_lib.obj',0
115
;... любая последовательность других команд и определений.
116
;library_name     db 'box_lib.obj',0
117
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
118
 
3693 lordok-gr 119
myimport:
1101 Lrz 120
 
3693 lordok-gr 121
edit_box_draw    dd    aEdit_box_draw
122
edit_box_key     dd    aEdit_box_key
123
edit_box_mouse   dd    aEdit_box_mouse
124
version_ed       dd    aVersion_ed
1101 Lrz 125
 
3693 lordok-gr 126
init_checkbox    dd    aInit_checkbox
127
check_box_draw   dd    aCheck_box_draw
128
check_box_mouse  dd    aCheck_box_mouse
129
version_ch       dd    aVersion_ch
1101 Lrz 130
 
3693 lordok-gr 131
option_box_draw  dd    aOption_box_draw
132
option_box_mouse dd    aOption_box_mouse
133
version_op       dd    aVersion_op
1101 Lrz 134
 
9568 IgorA 135
    dd    0,0
1101 Lrz 136
 
9568 IgorA 137
aEdit_box_draw   db 'edit_box_draw',0
3693 lordok-gr 138
aEdit_box_key    db 'edit_box_key',0
139
aEdit_box_mouse  db 'edit_box_mouse',0
140
aVersion_ed      db 'version_ed',0
1101 Lrz 141
 
3693 lordok-gr 142
aInit_checkbox   db 'init_checkbox2',0
143
aCheck_box_draw  db 'check_box_draw2',0
144
aCheck_box_mouse db 'check_box_mouse2',0
145
aVersion_ch      db 'version_ch2',0
1101 Lrz 146
 
147
aOption_box_draw  db 'option_box_draw',0
148
aOption_box_mouse db 'option_box_mouse',0
3693 lordok-gr 149
aVersion_op       db 'version_op',0
1101 Lrz 150
 
151
 
3693 lordok-gr 152
check1 check_box2 (10 shl 16 + 12),(45 shl 16 + 12),5,0x80AABBCC,0,0,check_text1,ch_flag_en
153
check2 check_box2 (10 shl 16 + 12),(60 shl 16 + 12),6,0x80AABBCC,0,0,check_text2
1101 Lrz 154
 
1214 Lrz 155
edit1 edit_box 350,3,5,0xffffff,0x6f9480,0,0xAABBCC,0,308,hed,mouse_dd,ed_focus,hed_end-hed-1,hed_end-hed-1
156
edit2 edit_box 350,3,25,0xffffff,0x6a9480,0,0,0,99,ed_buffer,mouse_dd,ed_figure_only
1101 Lrz 157
 
3693 lordok-gr 158
op1  option_box option_group1,10,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
159
op2  option_box option_group1,10,105,6,12,0xFFFFFF,0,0,op_text.2,op_text.e2-op_text.2
160
op3  option_box option_group1,10,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
1101 Lrz 161
op11 option_box option_group2,120,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
162
op12 option_box option_group2,120,105,6,12,0xffffff,0,0,op_text.2,op_text.e2-op_text.2
163
op13 option_box option_group2,120,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
164
 
3693 lordok-gr 165
option_group1    dd op1    ;указатели, они отображаются по умолчанию, когда выводится
166
option_group2    dd op12   ;приложение
167
Option_boxs    dd  op1,op2,op3,0
168
Option_boxs2   dd  op11,op12,op13,0
169
 
170
hed db     'BOXs load from lib  date 27.04.2009',0
1101 Lrz 171
hed_end:
3693 lordok-gr 172
 
1101 Lrz 173
rb  256
3693 lordok-gr 174
check_text1  db 'First checkbox',0
175
check_text2 db 'Second checkbox',0
176
 
177
op_text:        ; Сопровождающий текст для Optionbox'а
178
.1 db 'Option_Box #1'
1101 Lrz 179
.e1:
180
.2 db 'Option_Box #2'
181
.e2:
182
.3 db 'Option_Box #3'
183
.e3:
3693 lordok-gr 184
ed_buffer    rb 100
1101 Lrz 185
;-----------------------
186
;sc      system_colors
1214 Lrz 187
 
3693 lordok-gr 188
mouse_dd        rd 1
189
p_info    process_information
190
cur_dir_path    rb 4096
191
library_path    rb 4096
1101 Lrz 192
i_end:
193
rb 1024
194
mem: