Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
4231 eAndrew 1
use32
2
    org     0x0
3
;-------------------------------------------------------------------------------
4
    db	    "MENUET01"
5
    dd	    1, @code, @data, @mem, @stack, 0, 0
6
;-------------------------------------------------------------------------------
7
    include "../../macros.inc"
4234 eAndrew 8
    include "../../proc32.inc"
9
    include "../../dll.inc"
10
    ;include "../../debug.inc"
4231 eAndrew 11
;===============================================================================
12
@code:
4234 eAndrew 13
    mcall   9, buffer, -1
14
    mov     ecx, [buffer + 30]
15
    mcall   18, 21
16
    mov     [win.sid], eax
17
;-------------------------------------------------------------------------------
18
    mcall   68, 11
19
    stdcall dll.Load, @import
20
;-------------------------------------------------------------------------------
4232 eAndrew 21
    mov     [tabs.index], byte 2
4234 eAndrew 22
;-------------------------------------------------------------------------------
4231 eAndrew 23
    mcall   48, 3, color, 40
24
;-------------------------------------------------------------------------------
4234 eAndrew 25
    invoke  ini.iget, ini.docky, ini.docky.sect.cfg, ini.docky.keys.fsize, 0
26
    mov     [docky.fsize], al
27
;-------------------------------------------------------------------------------
4231 eAndrew 28
main_loop:
29
    mcall   10
30
    cmp     eax, EV_REDRAW
31
    je	    event_redraw
32
    cmp     eax, EV_BUTTON
33
    je	    event_button
34
 
35
    jmp     main_loop
36
;-------------------------------------------------------------------------------
37
exit:
38
    mcall   -1
39
;-------------------------------------------------------------------------------
40
event_redraw:
41
    call    win.draw
42
    jmp     main_loop
43
;-------------------------------------------------------------------------------
44
event_button:
45
    mcall   17
46
    cmp     ah, 0x01
47
    je	    exit
48
    cmp     ah, 0x10
49
    je	    .tabs.walls
50
    cmp     ah, 0x11
51
    je	    .tabs.skins
52
    cmp     ah, 0x12
53
    je	    .tabs.docky
54
    cmp     ah, 0x13
55
    je	    .tabs.panel
56
 
4234 eAndrew 57
    cmp     ah, 0x40
58
    je	    .docky.button_top
59
    cmp     ah, 0x41
60
    je	    .docky.button_left
61
    cmp     ah, 0x42
62
    je	    .docky.button_bottom
63
    cmp     ah, 0x43
64
    je	    .docky.button_right
65
 
4232 eAndrew 66
    cmp     ah, 0x44
4234 eAndrew 67
    je	    .docky.checkbox_fsize
4232 eAndrew 68
 
4234 eAndrew 69
    cmp     ah, 0x45
70
    je	    .docky.kill
71
    cmp     ah, 0x46
72
    je	    .docky.start
73
 
4231 eAndrew 74
    jmp     main_loop
75
 
76
 .tabs.walls:
77
    mov     [tabs.index], byte 0
78
    call    win.draw
79
    jmp     main_loop
80
 .tabs.skins:
81
    mov     [tabs.index], byte 1
82
    call    win.draw
83
    jmp     main_loop
84
 .tabs.docky:
85
    mov     [tabs.index], byte 2
86
    call    win.draw
87
    jmp     main_loop
88
 .tabs.panel:
89
    mov     [tabs.index], byte 3
90
    call    win.draw
91
    jmp     main_loop
4232 eAndrew 92
 
4234 eAndrew 93
 .docky.button_top:
94
    invoke  ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 1
95
    call    docky.apply
96
    jmp     main_loop
97
 .docky.button_left:
98
    invoke  ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 2
99
    call    docky.apply
100
    jmp     main_loop
101
 .docky.button_bottom:
102
    invoke  ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 3
103
    call    docky.apply
104
    jmp     main_loop
105
 .docky.button_right:
106
    invoke  ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.location, 4
107
    call    docky.apply
108
    jmp     main_loop
109
 
110
 .docky.checkbox_fsize:
4232 eAndrew 111
    mov     al, 1
4234 eAndrew 112
    sub     al, byte [docky.fsize]
113
    mov     [docky.fsize], al
4232 eAndrew 114
    push    183
4234 eAndrew 115
    push    docky.fsize
4232 eAndrew 116
    call    checkbox.draw
4234 eAndrew 117
 
118
    xor     eax, eax
119
    mov     al, [docky.fsize]
120
    invoke  ini.iset, ini.docky, ini.docky.sect.cfg, ini.docky.keys.fsize, eax
121
    call    docky.apply
122
 
4232 eAndrew 123
    jmp     main_loop
4234 eAndrew 124
 
125
 .docky.kill:
126
    call    docky.kill
127
    jmp     main_loop
128
 .docky.start:
129
    call    docky.kill
130
    call    docky.start
131
    jmp     main_loop
4231 eAndrew 132
;-------------------------------------------------------------------------------
133
win.draw:
134
    mcall   12, 1
135
 
136
    mov     edx, [color.work]
137
    or	    edx, 0x34000000
4232 eAndrew 138
    mcall   0, <128, 256>, <128, 299>, , , win.title
4231 eAndrew 139
 
140
    call    tabs.draw
141
 
142
    mcall   12, 2
143
 
144
    ret
145
;-------------------------------------------------------------------------------
146
tabs.draw:
147
    mcall    8, <  8,  57>, < 9, 25>, 0x40000010
148
    mcall     , < 65,  57>,	    , 0x40000011
149
    mcall     , <122,  57>,	    , 0x40000012
150
    mcall     , <179,  58>,	    , 0x40000013
151
 
152
    mcall   13, <  9, 228>,	    , [color.work]
153
 
154
    mcall     , 	  , < 9,  1>, [color.workE]
155
    mcall     , 	  , <34,  1>
156
    mcall     , <  8,	1>, <10, 24>
157
    mcall     , < 65,	1>
158
    mcall     , <122,	1>
159
    mcall     , <179,	1>
160
    mcall     , <237,	1>
161
 
162
    mov     edx, [color.workE]
163
 
164
    cmp     [tabs.index], byte 0
165
    je	    .walls
166
    cmp     [tabs.index], byte 1
167
    je	    .skins
168
    cmp     [tabs.index], byte 2
169
    je	    .docky
170
    jmp     .panel
171
 
172
 .walls:
173
    mcall     , <  9,  56>
174
 
175
    mcall   4, < 22, 18>, [color.textE], tabs.walls_title, 5
176
    mcall    , < 79, 18>, [color.text] , tabs.skins_title
177
    mcall    , <136, 18>,	       , tabs.docky_title
178
    mcall    , <193, 18>,	       , tabs.panel_title
179
 
180
    call    tabs.walls.draw
181
 
182
    ret
183
 .skins:
184
    mcall     , < 66,  56>
185
 
186
    mcall   4, < 79, 18>, [color.textE], tabs.skins_title, 5
187
    mcall    , < 22, 18>, [color.text] , tabs.walls_title
188
    mcall    , <136, 18>,	       , tabs.docky_title
189
    mcall    , <193, 18>,	       , tabs.panel_title
190
 
191
    call    tabs.skins.draw
192
 
193
    ret
194
 .docky:
195
    mcall     , <123,  56>
196
 
197
    mcall   4, <136, 18>, [color.textE], tabs.docky_title, 5
198
    mcall    , < 79, 18>, [color.text] , tabs.skins_title
199
    mcall    , < 22, 18>,	       , tabs.walls_title
200
    mcall    , <193, 18>,	       , tabs.panel_title
201
 
202
    call    tabs.docky.draw
203
 
204
    ret
205
 .panel:
206
    mcall     , <180,  57>
207
 
208
    mcall   4, <193, 18>, [color.textE], tabs.panel_title, 5
209
    mcall    , < 79, 18>, [color.text] , tabs.skins_title
210
    mcall    , <136, 18>,	       , tabs.docky_title
211
    mcall    , < 22, 18>,	       , tabs.walls_title
212
 
213
    call    tabs.panel.draw
214
 
215
    ret
216
;-------------------------------------------------------------------------------
217
tabs.walls.draw:
218
    ret
219
;-------------------------------------------------------------------------------
220
tabs.skins.draw:
221
    ret
222
;-------------------------------------------------------------------------------
223
tabs.docky.draw:
4232 eAndrew 224
  ; == FRAME: POSITION == ;
225
    mcall   13, <10, 226>, <48, 112>, [color.workE]
226
    mcall     , <11, 224>, <49, 110>, [color.textE]
227
    mcall     , <12, 222>, <50, 108>, [color.work]
228
 
229
    mov     ecx, [color.text]
230
    or	    ecx, 0xC0000000
231
    mcall   4, <20, 45>, , tabs.docky.frame_pos_title, , [color.work]
232
 
233
    mcall   8, < 81, 84>, < 64, 24>, 0x40, [color.workE]
234
    mcall    , < 58, 64>, < 91, 24>, 0x41
4234 eAndrew 235
    mcall    , < 81, 84>, <118, 24>, 0x42
236
    mcall    , <125, 64>, < 91, 24>, 0x43
4232 eAndrew 237
 
238
    mov     ecx, [color.textE]
239
    or	    ecx, 0x80000000
240
    mcall   4, <115,  73>, , tabs.docky.button_top
241
    mcall    , < 79, 100>, , tabs.docky.button_left
242
    mcall    , <106, 127>, , tabs.docky.button_bottom
243
    mcall    , <143, 100>, , tabs.docky.button_right
244
 
245
  ; == FRAME: SETTINGS == ;
246
    mcall   13, <10, 226>, <170, 40>, [color.workE]
247
    mcall     , <11, 224>, <171, 38>, [color.textE]
248
    mcall     , <12, 222>, <172, 36>, [color.work]
249
 
250
    mov     ecx, [color.text]
251
    or	    ecx, 0xC0000000
252
    mcall   4, <20, 167>, , tabs.docky.frame_set_title, , [color.work]
253
 
254
    mcall   8, <20, 206>, <182, 16>, 0x60000044
255
 
256
    mov     ecx, [color.text]
257
    or	    ecx, 0x80000000
258
    mcall   4, <20, 187>, , tabs.docky.checkbox_fsize_title
259
 
260
    push    183
4234 eAndrew 261
    push    docky.fsize
4232 eAndrew 262
    call    checkbox.draw
263
 
264
  ; == FRAME: THEARD == ;
4234 eAndrew 265
    mcall   13, <10, 226>, <219, 44>, [color.workE]
266
    mcall     , <11, 224>, <220, 42>, [color.textE]
267
    mcall     , <12, 222>, <221, 40>, [color.work]
4232 eAndrew 268
 
269
    mov     ecx, [color.text]
270
    or	    ecx, 0xC0000000
271
    mcall   4, <20, 217>, , tabs.docky.frame_theard_title, , [color.work]
272
 
4234 eAndrew 273
    mcall   8, < 20,  98>, <231, 20>, 0x45, [color.workE]
274
    mcall    , <128,  98>,	    , 0x46
4232 eAndrew 275
 
276
    mov     ecx, [color.textE]
277
    or	    ecx, 0x80000000
278
    mcall   4, < 54,  238>, , tabs.docky.button_close
279
    mcall    , <139,  238>, , tabs.docky.button_start
280
 
4231 eAndrew 281
    ret
282
;-------------------------------------------------------------------------------
283
tabs.panel.draw:
284
    ret
4232 eAndrew 285
;-------------------------------------------------------------------------------
286
checkbox.draw:
287
    pop     ebp
288
    pop     edi
289
    pop     ecx
290
    push    ebp
291
 
292
    shl     ecx, 16
293
    mov     cx, 16
294
    mcall   13, <188, 34>, , [color.workE]
295
    sub     ecx, 2
296
    add     ecx, 0x00010000
297
    mcall     , <189, 32>, , [color.textE]
298
 
299
    mov     eax, 13
300
    mov     edx, [color.workE]
301
    cmp     [edi], byte 0
302
    je	    .draw_off
303
 .draw_on:
304
    mcall   , <189, 6>
305
    mov     edi, ecx
306
    shr     edi, 16
307
    add     edi, 3
308
    mcall   4, <189, edi>, [color.text], checkbox.on, 5
309
 
310
    ret
311
 
312
 .draw_off:
313
    mov     edx, [color.work]
314
    mcall   , <215, 6>
315
    mov     edi, ecx
316
    shr     edi, 16
317
    add     edi, 3
318
    mcall   4, <189, edi>, [color.text], checkbox.off, 5
319
    ret
4234 eAndrew 320
;-------------------------------------------------------------------------------
321
docky.kill:
322
    mov     dl, 0
323
    mcall   9, buffer, -1
324
    mov     ecx, eax
325
 .search:
326
    mcall   9, buffer
327
    cmp     [buffer + 10], dword "@doc"
328
    je	    .kill
329
    cmp     [buffer + 10], dword "@DOC"
330
    jne     .continue
331
 .kill:
332
    mov     dl, 1
333
    mcall   18, 2
334
 .continue:
335
    dec     ecx
336
    cmp     ecx, 0
337
    jne     .search
338
 
339
    ret
340
;-------------------------------------------------------------------------------
341
docky.start:
342
    mov     [buffer +  0], dword 7
343
    mov     [buffer +  4], dword 0
344
    mov     [buffer +  8], dword 0
345
    mov     [buffer + 20], dword "@doc"
346
    mov     [buffer + 24], word  "ky"
347
    mov     [buffer + 26], byte  0
348
    mcall   70, buffer
349
 
350
    mcall   5, 5
351
    mcall   18, 3, [win.sid]
352
 
353
    ret
354
;-------------------------------------------------------------------------------
355
docky.apply:
356
    call    docky.kill
357
    cmp     dl, byte 0
358
    je	    .end
359
    call    docky.start
360
 .end:
361
    ret
4231 eAndrew 362
;===============================================================================
4234 eAndrew 363
@import:
364
    library ini, "libini.obj"
365
    import  ini, ini.iget, "ini_get_int", ini.iset, "ini_set_int"
366
;===============================================================================
367
ini.docky:
368
    db	    "settings/docky.ini", 0
369
 .sect.cfg:
370
    db	    "@", 0
371
 .keys.fsize:
372
    db	    "fsize", 0
373
 .keys.location:
374
    db	    "location", 0
375
 
4231 eAndrew 376
win.title:
377
    db	    "Desktop configuration", 0
378
 
379
tabs.walls_title:
380
    db	    "Walls"
381
tabs.skins_title:
382
    db	    "Skins"
383
tabs.docky_title:
384
    db	    "Docky"
385
tabs.panel_title:
386
    db	    "Panel"
387
 
4232 eAndrew 388
tabs.docky.frame_pos_title:
389
    db	    " Position ", 0
390
tabs.docky.button_top:
391
    db	    "TOP", 0
392
tabs.docky.button_left:
393
    db	    "LEFT", 0
394
tabs.docky.button_bottom:
395
    db	    "BOTTOM", 0
396
tabs.docky.button_right:
397
    db	    "RIGHT", 0
398
 
399
tabs.docky.frame_set_title:
400
    db	    " Settings ", 0
401
tabs.docky.checkbox_fsize_title:
402
    db	    "Full size mode", 0
403
 
404
tabs.docky.frame_theard_title:
405
    db	    " Theard ", 0
406
tabs.docky.button_close:
407
    db	    "Close", 0
408
tabs.docky.button_start:
409
    db	    "Start/Restart", 0
410
 
411
 
412
checkbox.on:
413
    db	    "  ON "
414
checkbox.off:
415
    db	    " OFF "
416
 
4231 eAndrew 417
@data:
418
;===============================================================================
419
    rb	    2048
420
@stack:
421
;-------------------------------------------------------------------------------
4234 eAndrew 422
win.sid:
423
    rd	    1
424
 
425
docky.fsize:
4232 eAndrew 426
    rb	    1
427
 
4231 eAndrew 428
tabs.index:
429
    rb	    1
430
 
431
color:
432
 .frame:
433
    rd	    5
434
 .work:
435
    rd	    1
436
 .workE:
437
    rd	    1
438
 .textE:
439
    rd	    1
440
 .text:
441
    rd	    2
442
 
4234 eAndrew 443
buffer:
444
    rb	    1024
445
 
4231 eAndrew 446
@mem: