Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
31 halyavin 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9971 Doczom 2
;                                                   ;
2619 mario79 3
;   TASK PANEL for KolibriOS  - Compile with fasm   ;
9971 Doczom 4
;                                                   ;
31 halyavin 5
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2619 mario79 6
;------------------------------------------------------------------------------
9971 Doczom 7
; version:      2.25
8
; last update:  14/07/2013
9
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
10
; changes:      Reinstall screen work area after change screen resolution
3823 mario79 11
;------------------------------------------------------------------------------
9971 Doczom 12
; version:      2.24
13
; last update:  16/06/2013
14
; changed by:   hidnplayr
15
; changes:      Changed keymap hotkeys to only use left alt
16
;               (Right alt has special function on some keyboards)
3672 hidnplayr 17
;------------------------------------------------------------------------------
9971 Doczom 18
; version:      2.23
19
; last update:  26/04/2012
20
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
21
; changes:      Using new  f18.23 - minimize all windows
2649 mario79 22
;------------------------------------------------------------------------------
9971 Doczom 23
; version:      2.22
24
; last update:  20/04/2012
25
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
26
; changes:      Activation mechanism when trying to run an existing appl.
27
;               Forced redrawing the background after the clean desktop (Win+D)
2638 mario79 28
;------------------------------------------------------------------------------
9971 Doczom 29
; version:      2.2
30
; last update:  19/04/2012
31
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
32
; changes:      Support PrintScreen for SCRSHOOT.
33
;               Path to run applications from the INI file.
34
;               Algorithm anti-duplication of applications for run with hotkey.
35
;               Added color selection for the Alt+Tab.
36
;               Alt+Ctrl+ArrowLeft - Page list next
37
;               Alt+Ctrl+ArrowRight - Page list previous
2630 mario79 38
;------------------------------------------------------------------------------
9971 Doczom 39
; version:      2.1
40
; last update:  18/04/2012
41
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
42
; changes:      Added color selection for the text.
43
;               Show "change page list" only if the applications
44
;               does not fit in the panel.
45
;               Display file names up to 11 char previously displ. only 8 char.
2626 mario79 46
;------------------------------------------------------------------------------
9971 Doczom 47
; version:      2.0
48
; last update:  17/04/2012
49
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
50
; changes:      New logic of switching windows (turnoff/restore)
51
;               New logic of button "clear desktop".
52
;               Win+D (restore/clear desktop), Win+R (start RUN application).
53
;               Using the library LibINI to set the parameters.
54
;               New style of panel. Start application Menu with boot options.
55
;               two versions of the location of the panel -
56
;               the bottom of the desktop and on top of the desktop.
2619 mario79 57
;------------------------------------------------------------------------------
9971 Doczom 58
; last update:  31/03/2012
59
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
60
; changes:      The program uses only 20 Kb memory is now.
61
;               Code optimizing and refactoring.
2532 mario79 62
;------------------------------------------------------------------------------
3670 hidnplayr 63
format binary as ""
64
 
9971 Doczom 65
        use32
66
        org 0x0
67
        db 'MENUET01'   ; 8 byte id
68
        dd 0x01         ; header version
69
        dd START        ; program start
70
        dd IM_END       ; program image size
71
        dd I_END        ; reguired amount of memory - 10 Kb
72
        dd stack_top    ; esp
73
        dd 0x0          ; boot parameters
74
        dd path         ; application pach
2619 mario79 75
;------------------------------------------------------------------------------
31 halyavin 76
include 'lang.inc'
2619 mario79 77
include '../../../macros.inc'
78
include '../../../proc32.inc'
3013 dunkaist 79
;include '../../../debug.inc'
9971 Doczom 80
include 'MOI.INC'       ;раскладки клавиатуры
2619 mario79 81
include '../../../develop/libraries/box_lib/load_lib.mac'
9971 Doczom 82
        @use_library    ;use load lib macros
2619 mario79 83
;------------------------------------------------------------------------------
84
caps_lock_check fix 1
85
;------------------------------------------------------------------------------
1440 diamond 86
time_bgr_color = 0x66cc
2619 mario79 87
;PANEL_HEIGHT = 18
88
ML_SIZE = 10
89
MR_SIZE = 10
3927 kaitz 90
if lang eq et
91
MENU_SIZE = 60
92
else
2619 mario79 93
MENU_SIZE = 50
3927 kaitz 94
end if
2619 mario79 95
CLD_SIZE = 20
9971 Doczom 96
TAB_SIZE = 75   ;60
2619 mario79 97
TRAY_SIZE = 140
1440 diamond 98
 
2619 mario79 99
CLOCK_SIZE = 40
100
CPU_USAGE_SIZE = 10
101
CHLANG_SIZE = 20
102
PAGE_LIST_SIZE = 36
103
;------------------------------------------------------------------------------
2532 mario79 104
align 4
93 diamond 105
handle_key:
9971 Doczom 106
        mcall   18,7
107
        mov     [active_process],eax
31 halyavin 108
 
9971 Doczom 109
        mcall   2
5432 eAndrew 110
 
9971 Doczom 111
;       dps     "panel key: "
112
;       dph     eax
113
;       newline
2619 mario79 114
 
9971 Doczom 115
        cmp     al, 2
116
        jnz     begin_1.ret
2532 mario79 117
 
9971 Doczom 118
        mov     ebx, exec_fileinfo
119
        shr     eax, 8
120
        cmp     al, 0
121
        je      prod
2532 mario79 122
 
9971 Doczom 123
        mov     [key_r],al
124
        sub     [key_r],3
125
        cmp     [key_r],9
126
        jc      alter
2532 mario79 127
 
128
if caps_lock_check
9971 Doczom 129
        cmp     al,58   ;CAPS LOCK DOWN
130
        jne     @f
2532 mario79 131
 
9971 Doczom 132
        pusha
133
        mcall   26,2,9
134
        mov     ebx,eax
135
        mov     eax,2
136
        mov     [draw_flag_certainly],1
137
        call    draw_flag       ; language
138
        popa
139
        ret
2532 mario79 140
@@:
141
end if
5872 pathoswith 142
 
9971 Doczom 143
        cmp     al, 15  ; Alt+Tab DOWN
144
        jz      alt_tab_pressed
2532 mario79 145
 
9971 Doczom 146
        cmp     al, 88  ; Ctrl+Alt+F12
147
        jz      start_end_application
2532 mario79 148
 
9971 Doczom 149
        cmp     al, 91  ; RWin DOWN
150
        jz      set_win_key_flag
2532 mario79 151
 
9971 Doczom 152
        cmp     al, 92  ; LWin DOWN
153
        jz      set_win_key_flag
5432 eAndrew 154
 
9971 Doczom 155
        cmp     al, 1   ; LCtrl+Esc DOWN
156
        jz      set_win_key_flag
9933 dunkaist 157
 
9971 Doczom 158
        cmp     al, 219 ; RWin UP
159
        jz      cut_win_key_flag        ;start_menu_application
2532 mario79 160
 
9971 Doczom 161
        cmp     al, 220 ; LWin UP
162
        jz      cut_win_key_flag        ;start_menu_application
2619 mario79 163
 
9971 Doczom 164
        cmp     al, 129 ; LCtrl+Esc UP
165
        jz      cut_win_key_flag        ;start_menu_application
9933 dunkaist 166
 
9971 Doczom 167
        cmp     al, 62  ; Alt+F4
168
        jz      kill_active_application
2532 mario79 169
 
9971 Doczom 170
        cmp     al, 205
171
        jz      page_list_next
2532 mario79 172
 
9971 Doczom 173
        cmp     al, 203
174
        jz      page_list_prev
2532 mario79 175
 
9971 Doczom 176
        cmp     al, 69  ; Alt+Shift+NumLock
177
        jz      start_mousemul_application
5432 eAndrew 178
 
9971 Doczom 179
        cmp     al, 19  ; Win+R
180
        jz      start_run_application
1920 Albom 181
 
9971 Doczom 182
        cmp     al, 32  ; Win+D
183
        jz      minimize_all_windows
5432 eAndrew 184
 
9971 Doczom 185
        cmp     al, 55  ; PrintScreen DOWN
186
        jz      start_PrintScreen_application
2619 mario79 187
;--------------------------------------
188
align 4
189
prod:
9971 Doczom 190
        cmp     [current_alt_tab_app], -1
191
        jz      @f
2532 mario79 192
 
9971 Doczom 193
        test    ah, 0x30        ; Alt+Tab UP
194
        jz      alt_tab_released
2532 mario79 195
;--------------------------------------
196
align 4
443 diamond 197
@@:
7181 0CodErr 198
; this is hotkey LCtrl+LShift ;or LShift+RShift
9971 Doczom 199
        jmp     karu
2619 mario79 200
;------------------------------------------------------------------------------
2532 mario79 201
align 4
2619 mario79 202
set_win_key_flag:
9971 Doczom 203
        mov     [win_key_flag],1
204
        ret
2619 mario79 205
;------------------------------------------------------------------------------
206
align 4
207
cut_win_key_flag:
9971 Doczom 208
        xor     eax,eax
209
        mov     [win_key_flag],al
210
        xchg    [start_menu_flag],al
211
        test    al,al
212
        jz      start_menu_application
213
        ret
2619 mario79 214
;------------------------------------------------------------------------------
215
align 4
304 diamond 216
change_key_lang:
9971 Doczom 217
        mov     dword [ebx+8], chlang
218
        mcall   70
2532 mario79 219
;--------------------------------------
220
align 4
31 halyavin 221
begin_1:
9971 Doczom 222
        mov     ecx,[active_process]
223
        mcall   18, 3
224
        mcall   5, 25
2532 mario79 225
;--------------------------------------
226
align 4
93 diamond 227
.ret:
9971 Doczom 228
        ret
2619 mario79 229
;------------------------------------------------------------------------------
2532 mario79 230
align 4
231
start_end_application:
9971 Doczom 232
        mov     esi,end_name
233
        call    algorithm_anti_duplication
234
        test    eax,eax
235
        jz      @f
2638 mario79 236
 
9971 Doczom 237
        mcall   18,3,edi
238
        ret
2630 mario79 239
;--------------------------------------
240
align 4
241
@@:
9971 Doczom 242
        mov     ebx, exec_fileinfo
243
        mov     dword [ebx + 21],end_name
244
        mcall   70
245
        ret
2619 mario79 246
;------------------------------------------------------------------------------
2532 mario79 247
align 4
248
start_mousemul_application:
9971 Doczom 249
        mov     esi,mousemul_name
250
        call    algorithm_anti_duplication
251
        test    eax,eax
252
        jz      @f
253
        ret
2630 mario79 254
;--------------------------------------
255
align 4
256
@@:
9971 Doczom 257
        mov     ebx, exec_fileinfo
258
        mov     dword [ebx + 21],mousemul_name
259
        mcall   70
260
        ret
2619 mario79 261
;------------------------------------------------------------------------------
2532 mario79 262
align 4
263
kill_active_application:
9971 Doczom 264
        mcall   72,1,3,1
265
        jmp     begin_1.ret
2619 mario79 266
;------------------------------------------------------------------------------
267
 
2532 mario79 268
align 4
269
start_menu_application:
9971 Doczom 270
        call    menu_handler
271
        jmp     begin_1.ret
2619 mario79 272
;------------------------------------------------------------------------------
273
align 4
274
start_run_application:
9971 Doczom 275
        cmp     [win_key_flag],1
276
        je      @f
277
        ret
2626 mario79 278
;--------------------------------------
279
align 4
2619 mario79 280
@@:
9971 Doczom 281
        mov     [start_menu_flag],1
5432 eAndrew 282
 
9971 Doczom 283
        mov     esi,run_name
284
        call    algorithm_anti_duplication
285
        test    eax,eax
286
        jz      @f
2638 mario79 287
 
9971 Doczom 288
        mcall   18,3,edi
289
        ret
2630 mario79 290
;--------------------------------------
291
align 4
292
@@:
9971 Doczom 293
        mov     ebx, exec_fileinfo
294
        mov     dword [ebx + 21], run_name
295
        mcall   70
296
        jmp     begin_1.ret
2619 mario79 297
;------------------------------------------------------------------------------
298
align 4
2630 mario79 299
start_PrintScreen_application:
9971 Doczom 300
        mov     esi,printscreen_name
301
        call    algorithm_anti_duplication
302
        test    eax,eax
303
        jz      @f
304
        mcall   18,3,edi
305
        ret
2630 mario79 306
;--------------------------------------
307
align 4
308
@@:
9971 Doczom 309
        mov     ebx, exec_fileinfo
310
        mov     dword [ebx + 21],printscreen_name
311
        mov     [ebx+8],dword bootparam_printscreen
312
        mcall   70
313
        jmp     begin_1.ret
2630 mario79 314
;------------------------------------------------------------------------------
315
align 4
2619 mario79 316
minimize_all_windows:
9971 Doczom 317
        cmp     [win_key_flag],1
318
        je      @f
319
        ret
2626 mario79 320
;--------------------------------------
321
align 4
2619 mario79 322
@@:
9971 Doczom 323
        mov     [start_menu_flag],1
324
        call    clean_desktop
325
        ret
2619 mario79 326
;------------------------------------------------------------------------------
2630 mario79 327
align 4
328
algorithm_anti_duplication:
9971 Doczom 329
        cld
2630 mario79 330
;--------------------------------------
331
align 4
332
@@:
9971 Doczom 333
        lodsb
334
        test    al,al
335
        jnz     @r
2630 mario79 336
;--------------------------------------
337
align 4
338
@@:
9971 Doczom 339
        std
340
        lodsb
341
        cmp     al,'/'
342
        jnz     @r
343
        add     esi,2
344
        mov     edx,esi
5432 eAndrew 345
 
9971 Doczom 346
        mov     edi,1
2630 mario79 347
;--------------------------------------
348
align 4
349
@@:
9971 Doczom 350
        inc     edi
351
        mov     ecx,edi
352
        mcall   9,procinfo_window_tabs
2630 mario79 353
 
9971 Doczom 354
        cmp     edi,eax
355
        jg      .apply_changes
2630 mario79 356
 
9971 Doczom 357
        mov     esi,edx
358
        mov     ecx,11
359
        add     ebx,9
360
        cld
2630 mario79 361
;--------------------------------------
362
align 4
363
.loop:
9971 Doczom 364
        lodsb
365
        inc     ebx
366
        cmp     al,[ebx]
367
        jne     @r
2630 mario79 368
 
9971 Doczom 369
        loop    .loop
2630 mario79 370
 
9971 Doczom 371
        mov     eax,1
372
        ret
2630 mario79 373
;--------------------------------------
374
align 4
375
.apply_changes:
9971 Doczom 376
        xor     eax,eax
377
        ret
2619 mario79 378
;------------------------------------------------------------------------------
2630 mario79 379
align 4
380
page_list_next:
9971 Doczom 381
        cmp     [page_list],50
382
        je      @f
2630 mario79 383
 
9971 Doczom 384
        xor     eax,eax
385
        cmp     [page_list_enable],eax
386
        je      @f
2630 mario79 387
 
9971 Doczom 388
        inc     [page_list]
389
        mov     [redraw_window_flag],1
2630 mario79 390
;--------------------------------------
391
align 4
392
@@:
9971 Doczom 393
        jmp     begin_1.ret
2619 mario79 394
;------------------------------------------------------------------------------
2532 mario79 395
align 4
2630 mario79 396
page_list_prev:
9971 Doczom 397
        xor     eax,eax
398
        cmp     [page_list],eax
399
        je      @f
2630 mario79 400
 
9971 Doczom 401
        cmp     [page_list_enable],eax
402
        je      @f
2630 mario79 403
 
9971 Doczom 404
        dec     [page_list]
405
        mov     [redraw_window_flag],1
2630 mario79 406
;--------------------------------------
407
align 4
408
@@:
9971 Doczom 409
        jmp     begin_1.ret
2630 mario79 410
;------------------------------------------------------------------------------
411
align 4
443 diamond 412
alt_tab_pressed:
413
; handle Alt+Tab and Alt+Shift+Tab
9971 Doczom 414
        mov     ebp, eax
415
        cmp     [current_alt_tab_app], -1
416
        jnz     has_alt_tab_app
443 diamond 417
; заполняем таблицу приложений, подлежащих переключению
9971 Doczom 418
        xor     edx, edx
419
        mov     ebx, procinfo_window_tabs
420
        mov     ecx, 1
2626 mario79 421
;--------------------------------------
422
align 4
443 diamond 423
.fill:
9971 Doczom 424
        inc     ecx
425
        mcall   9
426
        call    need_window_tab
427
        jz      @f
2532 mario79 428
 
9971 Doczom 429
        cmp     edx, 256
430
        jz      @f
2532 mario79 431
 
9971 Doczom 432
        mov     [alt_tab_list+edx*8], ecx
433
        movzx   esi, word [ebx+4]
434
        mov     [alt_tab_list+edx*8+4], esi
435
        inc     edx
2532 mario79 436
;--------------------------------------
437
align 4
443 diamond 438
@@:
9971 Doczom 439
        cmp     ecx,eax
440
        jb      .fill
2532 mario79 441
 
9971 Doczom 442
        mov     [alt_tab_list_size], edx
443
        test    edx, edx
444
        jz      begin_1.ret
2532 mario79 445
 
9971 Doczom 446
        mcall   66,4,0,0        ; ловим момент отпускания всех управляющих клавиш
447
        test    eax, eax
448
        jnz     begin_1.ret
2532 mario79 449
 
9971 Doczom 450
        xor     edx, edx
451
        mov     eax, [alt_tab_list+4]
452
        xor     ecx, ecx
453
        inc     ecx
2532 mario79 454
;--------------------------------------
455
align 4
443 diamond 456
.findmax:
9971 Doczom 457
        cmp     [alt_tab_list+ecx*8+4], eax
458
        jb      @f
2532 mario79 459
 
9971 Doczom 460
        mov     edx, ecx
461
        mov     eax, [alt_tab_list+ecx*8+4]
2532 mario79 462
;--------------------------------------
463
align 4
443 diamond 464
@@:
9971 Doczom 465
        inc     ecx
466
        cmp     ecx, [alt_tab_list_size]
467
        jb      .findmax
2532 mario79 468
 
9971 Doczom 469
        mov     [current_alt_tab_app], edx
2532 mario79 470
;--------------------------------------
471
align 4
443 diamond 472
has_alt_tab_app:
9971 Doczom 473
        mov     eax, [current_alt_tab_app]
474
        mov     edx, [alt_tab_list+eax*8+4]     ; slot
475
        xor     ecx, ecx
476
        or      eax, -1
477
        test    ebp, 300h
478
        jz      .notshift
2532 mario79 479
 
9971 Doczom 480
        or      esi, -1
2532 mario79 481
;--------------------------------------
482
align 4
443 diamond 483
.loop1:
9971 Doczom 484
        cmp     [alt_tab_list+ecx*8+4], edx
485
        jbe     @f
2532 mario79 486
 
9971 Doczom 487
        cmp     [alt_tab_list+ecx*8+4], esi
488
        jae     @f
2532 mario79 489
 
9971 Doczom 490
        mov     eax, ecx
491
        mov     esi, [alt_tab_list+ecx*8+4]
2532 mario79 492
;--------------------------------------
493
align 4
443 diamond 494
@@:
9971 Doczom 495
        inc     ecx
496
        cmp     ecx, [alt_tab_list_size]
497
        jb      .loop1
2532 mario79 498
 
9971 Doczom 499
        cmp     eax, -1
500
        jnz     .found
2532 mario79 501
 
9971 Doczom 502
        xor     edx, edx
503
        xor     ecx, ecx
504
        jmp     .loop1
2532 mario79 505
;--------------------------------------
506
align 4
443 diamond 507
.notshift:
9971 Doczom 508
        xor     esi, esi
2532 mario79 509
;--------------------------------------
510
align 4
443 diamond 511
.loop2:
9971 Doczom 512
        cmp     [alt_tab_list+ecx*8+4], edx
513
        jae     @f
2532 mario79 514
 
9971 Doczom 515
        cmp     [alt_tab_list+ecx*8+4], esi
516
        jbe     @f
2532 mario79 517
 
9971 Doczom 518
        mov     eax, ecx
519
        mov     esi, [alt_tab_list+ecx*8+4]
2532 mario79 520
;--------------------------------------
521
align 4
443 diamond 522
@@:
9971 Doczom 523
        inc     ecx
524
        cmp     ecx, [alt_tab_list_size]
525
        jb      .loop2
2532 mario79 526
 
9971 Doczom 527
        cmp     eax, -1
528
        jnz     .found
2532 mario79 529
 
9971 Doczom 530
        or      edx, -1
531
        xor     ecx, ecx
532
        jmp     .loop2
2532 mario79 533
;--------------------------------------
534
align 4
443 diamond 535
.found:
9971 Doczom 536
        mov     [current_alt_tab_app], eax
537
        push    eax
538
        xor     edx, edx
539
        div     [max_applications]
540
        mov     [page_list], eax
541
        mov     edi, app_list
542
        push    edi
543
        mov     ecx, 20
544
        or      eax, -1
545
        rep     stosd
546
        pop     edi
547
        pop     ecx
548
        sub     ecx, edx
2532 mario79 549
;--------------------------------------
550
align 4
443 diamond 551
@@:
9971 Doczom 552
        cmp     ecx, [alt_tab_list_size]
553
        jae     redraw_window_tabs
2532 mario79 554
 
9971 Doczom 555
        mov     eax, [alt_tab_list+ecx*8]
556
        stosd
557
        inc     ecx
558
        jmp     @b
2532 mario79 559
;--------------------------------------
560
align 4
443 diamond 561
alt_tab_released:
9971 Doczom 562
        mcall   66,5,0,0        ; уже поймали, хватит :)
2619 mario79 563
 
9971 Doczom 564
        or      eax, -1
565
        xchg    eax, [current_alt_tab_app]
566
        mov     ecx, [alt_tab_list+eax*8]
567
        mcall   18,3
2619 mario79 568
 
9971 Doczom 569
        jmp     redraw_window_tabs
2619 mario79 570
;------------------------------------------------------------------------------
2532 mario79 571
align 4
9971 Doczom 572
active_process  dd 0
31 halyavin 573
 
2619 mario79 574
exit:
9971 Doczom 575
        mcall -1
2619 mario79 576
;------------------------------------------------------------------------------
577
START:
9971 Doczom 578
        mcall   68,11
579
        mcall   66,1,1
5432 eAndrew 580
 
9971 Doczom 581
        mcall   9,process_info_buffer,-1
582
        mov     ecx, [ebx + process_information.PID]    ; PID
583
        mcall   18,21
584
        mov     [my_active_slot],eax    ; WINDOW SLOT
5432 eAndrew 585
 
586
 
2619 mario79 587
load_libraries l_libs_start,end_l_libs
31 halyavin 588
 
9971 Doczom 589
        test    eax,eax
590
        jnz     exit
31 halyavin 591
 
9971 Doczom 592
        call    Get_ini
2619 mario79 593
 
9971 Doczom 594
        mcall   66,4,0,2        ; LShift+RShift
595
        mcall   66,,,33h        ; LCtrl+LShift
596
        mcall   66,,88,110h     ; Alt+Ctrl+F12
597
        mcall   66,,91,0h       ; RWin DOWN
598
        mcall   66,,92          ; LWin DOWN
599
        mcall   66,,219         ; RWin UP
600
        mcall   66,,220         ; LWin UP
601
        mcall   66,,19,0h       ; Win+R DOWN
602
        mcall   66,,32,0h       ; Win+D DOWN
603
        mcall   66,,55,10h      ; Ctrl+PrintScreen DOWN
604
        mcall   66,,1,30h       ; LCtrl+Esc DOWN
605
        mcall   66,,129         ; LCtrl+Esc UP
606
        mcall   66,,62,300h     ; Alt+F4
607
        mcall   66,,2           ; Alt+1
608
        mcall   66,,3           ; Alt+2
609
        mcall   66,,4           ; Alt+3
610
        mcall   66,,5           ; Alt+4
611
        mcall   66,,6           ; Alt+5
612
        mcall   66,,7           ; Alt+6
613
        mcall   66,,8           ; Alt+7
614
        mcall   66,,9           ; Alt+8
615
        mcall   66,,10          ; Alt+9
616
        mcall   66,,15          ; Alt+Tab DOWN
617
        mcall   66,,15,301h     ; Alt+Shift+Tab DOWN
618
        mcall   66,,69          ; Alt+Shift+NumLock
870 barsuk 619
 
2532 mario79 620
if caps_lock_check
9971 Doczom 621
        xor     edx,edx
622
        mcall   66,4,58
2532 mario79 623
end if
9971 Doczom 624
        mcall   14
625
        mov     [screen_size],eax
31 halyavin 626
 
9971 Doczom 627
        call    set_work_ares_pf_screen
51 mikedld 628
 
9971 Doczom 629
        mcall   9,process_info_buffer,-1
630
        mov     ecx,[process_info_buffer.PID]
631
        mcall   18,21
632
        mov     [this_slot],eax
633
        mov     [max_slot],255
2532 mario79 634
;--------------------------------------
635
align 4
31 halyavin 636
start_after_minimize:
9971 Doczom 637
        call    draw_window
638
        call    draw_running_applications
31 halyavin 639
 
9971 Doczom 640
        mcall   23,30
641
        call    load_ini
2532 mario79 642
;------------------------------------------------------------------------------
643
align 4
31 halyavin 644
still:
9971 Doczom 645
        call    draw_time
646
        call    draw_cpu_usage
647
        call    draw_running_applications
31 halyavin 648
 
9971 Doczom 649
        mcall   18,7    ; check if active window changed
650
        cmp     eax, [last_active_window]
651
        jz      @f
870 barsuk 652
; need_window_tab:
653
; in: ebx->process info
654
; out: ZF set <=> do not draw
9971 Doczom 655
        mov     ebx,[last_active_window]
656
        mov     [prev_active_window], ebx
657
        mov     [last_active_window], eax
870 barsuk 658
 
9971 Doczom 659
        mov     ecx, eax
660
        mcall   9,process_info_buffer
870 barsuk 661
 
9971 Doczom 662
        call    need_window_tab
663
        jnz     .need_repaint
870 barsuk 664
 
9971 Doczom 665
        mcall   9,process_info_buffer,[prev_active_window]
666
        call    need_window_tab
667
        jz      @f
2532 mario79 668
;--------------------------------------
669
align 4
870 barsuk 670
.need_repaint:
9971 Doczom 671
        mov     dword [active_window_changed], 1
2532 mario79 672
;--------------------------------------
673
align 4
870 barsuk 674
@@:
9971 Doczom 675
        mcall   23,20
5432 eAndrew 676
 
9971 Doczom 677
        push    eax
678
        mcall   18,7
679
        cmp     [my_active_slot],eax
680
        je      @f
2630 mario79 681
 
9971 Doczom 682
        mov     [current_active_slot],eax
2630 mario79 683
;--------------------------------------
684
align 4
2619 mario79 685
@@:
9971 Doczom 686
        pop     eax
5432 eAndrew 687
 
9971 Doczom 688
        cmp     eax,1           ; redraw ?
689
        jz      red
870 barsuk 690
 
9971 Doczom 691
        push    eax
692
        mov     eax,[redraw_window_flag]
693
        test    eax,eax
694
        jz      @f
2630 mario79 695
 
9971 Doczom 696
        call    draw_window
2630 mario79 697
;--------------------------------------
698
align 4
2626 mario79 699
@@:
9971 Doczom 700
        pop     eax
5432 eAndrew 701
 
9971 Doczom 702
        cmp     eax,2
703
        jnz     @f
704
        call    handle_key
705
        jmp     .key
2630 mario79 706
;--------------------------------------
707
align 4
2619 mario79 708
@@:
9971 Doczom 709
        cmp     eax,3           ; button ?
710
        jz      button
2630 mario79 711
;--------------------------------------
712
align 4
2619 mario79 713
.key:
9971 Doczom 714
        cmp     dword [active_window_changed], 0
715
        jnz     red_active
870 barsuk 716
 
9971 Doczom 717
        call    draw_flag       ; language
718
        jmp     still
2619 mario79 719
;------------------------------------------------------------------------------
2532 mario79 720
align 4
3823 mario79 721
set_work_ares_pf_screen:
722
;eax = [xsize]*65536 + [ysize]
9971 Doczom 723
        mov     ecx,eax
724
        shr     ecx,16
725
        and     eax,0xFFFF
726
        cmp     [place_attachment],1
727
        je      @f
3823 mario79 728
 
9971 Doczom 729
        ror     eax,16
730
        add     eax,[height]
731
        rol     eax,16
732
        mov     edx,eax
733
        jmp     .selected
3823 mario79 734
;--------------------------------------
735
align 4
736
@@:
9971 Doczom 737
        sub     eax,[height]
738
        mov     edx, eax
3823 mario79 739
;--------------------------------------
740
align 4
5432 eAndrew 741
.selected:
9971 Doczom 742
        mcall   48,6
743
        ret
3823 mario79 744
;------------------------------------------------------------------------------
745
align 4
2532 mario79 746
red_active:
747
red:
9971 Doczom 748
        mov     dword [active_window_changed], 0
870 barsuk 749
 
9971 Doczom 750
        mcall   14
751
        movzx   ecx,ax
752
        mov     edx,eax
753
        shr     edx,16
754
        cmp     [screen_size.height],ax
755
        jne     @f
2532 mario79 756
 
9971 Doczom 757
        rol     eax,16
758
        cmp     [screen_size.width],ax
759
        je      .lp1
2630 mario79 760
 
9971 Doczom 761
        rol     eax,16
2630 mario79 762
;--------------------------------------
763
align 4
2532 mario79 764
@@:
9971 Doczom 765
        mov     [screen_size],eax
3823 mario79 766
 
9971 Doczom 767
        push    ecx edx
768
        call    set_work_ares_pf_screen
769
        pop     edx ecx
3823 mario79 770
 
9971 Doczom 771
        sub     ecx,[height]
772
        mcall   67,0,,,[height]
2532 mario79 773
;--------------------------------------
774
align 4
775
.lp1:
9971 Doczom 776
        call    draw_window
777
        jmp     still
2619 mario79 778
;------------------------------------------------------------------------------
2532 mario79 779
align 4
780
button:
9971 Doczom 781
        mcall   17
782
        test    eax,0xfffffe00  ; is it close button? (signal from @taskbar)
783
        jz      still           ; if so - wait for another event, because @taskbar shouldn't be closed
51 mikedld 784
 
9971 Doczom 785
        cmp     al, 0
786
        jnz     right_mouse
870 barsuk 787
 
9971 Doczom 788
        cmp     ah,50
789
        jb      no_activate
790
        cmp     ah,70
791
        jg      no_activate
31 halyavin 792
 
9971 Doczom 793
        movzx   ecx,byte ah
794
        sub     ecx,52
795
        shl     ecx,2
870 barsuk 796
 
9971 Doczom 797
        mov     ecx,[app_list+ecx]
5432 eAndrew 798
 
9971 Doczom 799
        mcall   9,process_info_buffer
2619 mario79 800
 
9971 Doczom 801
        test    [ebx + process_information.wnd_state], byte 10b ; window is minimized to panel
802
        jnz     @f
2619 mario79 803
 
9971 Doczom 804
        cmp     ecx,[current_active_slot]
805
        je      .turn_off
2630 mario79 806
;--------------------------------------
807
align 4
2619 mario79 808
@@:
9971 Doczom 809
        mcall   18,3,
810
        jmp     .task_switching
2619 mario79 811
;--------------------------------------
2532 mario79 812
align 4
2619 mario79 813
.turn_off:
9971 Doczom 814
        mov     edx,ecx
815
        mcall   18,22,0
2630 mario79 816
;--------------------------------------
817
align 4
2619 mario79 818
.task_switching:
9971 Doczom 819
        mcall   68,1
820
        jmp     still
2619 mario79 821
;------------------------------------------------------------------------------
822
align 4
2532 mario79 823
right_mouse:
9971 Doczom 824
        cmp     ah,50
825
        jb      still
31 halyavin 826
 
9971 Doczom 827
        cmp     ah,70
828
        jg      still
870 barsuk 829
 
9971 Doczom 830
        movzx   ecx,byte ah
831
        sub     ecx,52
870 barsuk 832
 
9971 Doczom 833
        cmp     ecx, [app_tab_count]
834
        jge     still
870 barsuk 835
 
9971 Doczom 836
        shl     ecx,2
837
        mcall   37,0
838
        mov     ebx, eax
839
        shr     eax, 16
840
        mov     [x_coord], ax
841
        and     ebx, 0xFFFF
842
        mov     [y_coord], bx
870 barsuk 843
 
9971 Doczom 844
        mov     ecx,[app_list+ecx]      ; ecx->selected app.slot
845
        mov     [n_slot], ecx
846
        mcall   9,procinfo_for_detect
870 barsuk 847
 
9971 Doczom 848
        mcall   51,1,context_menu_start,ctx_menu_stack
870 barsuk 849
 
9971 Doczom 850
        mov     [ctx_menu_PID], eax
851
        jmp     still
2619 mario79 852
;------------------------------------------------------------------------------
2532 mario79 853
align 4
854
no_activate:
9971 Doczom 855
        cmp     ah,101    ; minimize to left
856
        je      left_button
870 barsuk 857
 
9971 Doczom 858
        cmp     ah,102    ; minimize to right
859
        je      right_button
870 barsuk 860
 
9971 Doczom 861
        cmp     ah, 103
862
        je      clean_desktop_1             ; minimize all windows
870 barsuk 863
 
9971 Doczom 864
        cmp     ah,byte 1         ; start/terminate menu
865
        jnz     noselect
31 halyavin 866
 
9971 Doczom 867
        call    menu_handler
31 halyavin 868
 
9971 Doczom 869
        jmp     still
2532 mario79 870
;--------------------------------------
2619 mario79 871
align 4
872
clean_desktop_1:
9971 Doczom 873
        call    clean_desktop
874
        jmp     still
2619 mario79 875
;--------------------------------------
5432 eAndrew 876
align 4
2532 mario79 877
noselect:
9971 Doczom 878
        mov     ebx, exec_fileinfo
879
        cmp     ah,byte 2              ; start calendar
880
        jnz     noid15  ;noclock
633 diamond 881
 
9971 Doczom 882
        mov     esi,calendar_name
883
        call    algorithm_anti_duplication
884
        test    eax,eax
885
        jz      @f
2630 mario79 886
 
9971 Doczom 887
        mcall   18,2,edi
888
        jmp     still
2638 mario79 889
;--------------------------------------
890
align 4
891
@@:
9971 Doczom 892
        mov     ebx, exec_fileinfo
893
        mov     dword [ebx+21], calendar_name
894
        mcall   70
895
        jmp     still
2532 mario79 896
;--------------------------------------
5432 eAndrew 897
align 4
2532 mario79 898
noid15:
9971 Doczom 899
        cmp     ah,16
900
        jne     noid16
31 halyavin 901
 
9971 Doczom 902
        call    karu
903
        call    draw_flag       ; language
904
        jmp     still
2532 mario79 905
;--------------------------------------
5432 eAndrew 906
align 4
2532 mario79 907
noid16:
9971 Doczom 908
        cmp     ah,18
909
        jne     noid18
2532 mario79 910
 
9971 Doczom 911
        mov     esi,sysmeter_name
912
        call    algorithm_anti_duplication
913
        test    eax,eax
914
        jz      @f
2630 mario79 915
 
9971 Doczom 916
        mcall   18,2,edi
917
        jmp     still
2638 mario79 918
;--------------------------------------
5432 eAndrew 919
align 4
2638 mario79 920
@@:
9971 Doczom 921
        mov     ebx, exec_fileinfo
922
        mov     dword [ebx+21], sysmeter_name
923
        mcall   70
924
        jmp     still
2532 mario79 925
;--------------------------------------
5432 eAndrew 926
align 4
2532 mario79 927
noid18:
9971 Doczom 928
        cmp     ah,21
929
        jnz     noid21
31 halyavin 930
 
9971 Doczom 931
        cmp     [page_list],50
932
        jnc     still
933
        inc     [page_list]
934
        jmp     red
2532 mario79 935
;--------------------------------------
5432 eAndrew 936
align 4
2532 mario79 937
noid21:
9971 Doczom 938
        cmp     ah,22
939
        jnz     still
31 halyavin 940
 
9971 Doczom 941
        cmp     [page_list],0
942
        je      still
31 halyavin 943
 
9971 Doczom 944
        dec     [page_list]
945
        jmp     red
2619 mario79 946
;------------------------------------------------------------------------------
2532 mario79 947
align 4
633 diamond 948
restore_desktop:
9971 Doczom 949
        mcall   9,process_info_buffer,-1
950
        mov     [max_slot], eax
951
        mov     ecx, 2
952
        mov     edx, 2
2532 mario79 953
;--------------------------------------
5432 eAndrew 954
align 4
633 diamond 955
@@:
9971 Doczom 956
        mcall   18, 22
957
        inc     edx
958
        cmp     edx, [max_slot]
959
        jbe     @b
960
        ret
2619 mario79 961
;------------------------------------------------------------------------------
2532 mario79 962
align 4
633 diamond 963
clean_desktop:
9971 Doczom 964
        mcall   18,23
965
        test    eax,eax
966
        jnz     @f
967
        call    restore_desktop
2630 mario79 968
;--------------------------------------
969
align 4
443 diamond 970
@@:
9971 Doczom 971
        ret
2619 mario79 972
;------------------------------------------------------------------------------
2532 mario79 973
align 4
2619 mario79 974
conversion_HEX_to_ASCII:
9971 Doczom 975
        ror     eax,12
976
        mov     ecx,4
2532 mario79 977
;--------------------------------------
978
align 4
443 diamond 979
.loop:
9971 Doczom 980
        mov     bl,al
981
        rol     eax,4
982
        and     bl,0xf
983
        cmp     bl,0xA  ; check for ABCDEF
984
        jae     @f
31 halyavin 985
 
9971 Doczom 986
        add     bl,0x30 ; 0-9
987
        jmp     .store
2532 mario79 988
;--------------------------------------
989
align 4
443 diamond 990
@@:
9971 Doczom 991
        add     bl,0x57 ; A-F
2532 mario79 992
;--------------------------------------
993
align 4
2619 mario79 994
.store:
9971 Doczom 995
;       dps     "param_store: "
996
        mov     [edi],bl
997
        inc     edi
998
        dec     ecx
999
        jnz     .loop
1000
        ret
2619 mario79 1001
;------------------------------------------------------------------------------
2532 mario79 1002
align 4
2619 mario79 1003
menu_handler:
9971 Doczom 1004
        mov     edi,bootparam
5432 eAndrew 1005
 
9971 Doczom 1006
        mov     eax,[menu_button_x.start]
1007
        call    conversion_HEX_to_ASCII
31 halyavin 1008
 
9971 Doczom 1009
        mov     eax,[menu_button_x.size]
1010
        call    conversion_HEX_to_ASCII
5432 eAndrew 1011
 
9971 Doczom 1012
        mov     eax,[menu_button_y.start]
1013
        call    conversion_HEX_to_ASCII
5432 eAndrew 1014
 
9971 Doczom 1015
        mov     eax,[menu_button_y.size]
1016
        call    conversion_HEX_to_ASCII
5432 eAndrew 1017
 
9971 Doczom 1018
        mov     eax,[height]
1019
        call    conversion_HEX_to_ASCII
5432 eAndrew 1020
 
9971 Doczom 1021
        mov     eax,[place_attachment]
1022
        call    conversion_HEX_to_ASCII
5432 eAndrew 1023
 
9971 Doczom 1024
        xor     eax,eax ; terminator for boot parameters string
1025
        stosd
5432 eAndrew 1026
 
9971 Doczom 1027
        mov     ebx, exec_fileinfo
1028
        mov     [ebx+21],dword menu_name
1029
        mov     [ebx+8],dword bootparam
1030
        mcall   70
1031
        mov     [ebx+8],dword 0
1032
        ret
2619 mario79 1033
;------------------------------------------------------------------------------
2532 mario79 1034
align 4
31 halyavin 1035
draw_small_right:
9971 Doczom 1036
        pusha
1037
        mcall   12,1
31 halyavin 1038
 
9971 Doczom 1039
        xor     eax,eax
1040
        mov     edx,[wcolor]
1041
        mov     esi,edx
1042
        mov     edi,edx
1043
        or      edx, 0x01000000
1044
        mcall
31 halyavin 1045
 
9971 Doczom 1046
        xor     ecx,ecx
1047
        mov     cx,[height]
1048
        mcall   8,<0,10>,,1,[wcolor]
31 halyavin 1049
 
9971 Doczom 1050
        mov     ebx,2*65536     ;+6
1051
        mov     bx,[height]
1052
        shr     bx,1
1053
        sub     bx,3
1054
        mov     edx,[wcolor]
1055
        mov     eax,COLOR_CHANGE_MAGNITUDE_2
1056
        call    add_color_change_magnitude
1057
        mov     ecx,edx
1058
        mcall   4,,,hidetext,1
31 halyavin 1059
 
9971 Doczom 1060
        mcall   12,2
1061
        popa
1062
        ret
2619 mario79 1063
;------------------------------------------------------------------------------
2532 mario79 1064
align 4
31 halyavin 1065
draw_small_left:
9971 Doczom 1066
        pusha
1067
        mcall   12,1
31 halyavin 1068
 
9971 Doczom 1069
        xor     eax,eax
1070
        mov     edx,[wcolor]
1071
        mov     esi,edx
1072
        mov     edi,edx
1073
        or      edx, 0x01000000
1074
        mcall
31 halyavin 1075
 
9971 Doczom 1076
        xor     ecx,ecx
1077
        mov     cx,[height]
1078
        mcall   8,<0,9>,,1,[wcolor]
31 halyavin 1079
 
9971 Doczom 1080
        mov     ebx,3*65536     ;+6
1081
        mov     bx,[height]
1082
        shr     bx,1
1083
        sub     bx,3
1084
        mov     edx,[wcolor]
1085
        mov     eax,COLOR_CHANGE_MAGNITUDE_2
1086
        call    add_color_change_magnitude
1087
        mov     ecx,edx
1088
        mcall   4,,,hidetext+1,1
31 halyavin 1089
 
9971 Doczom 1090
        mcall   12,2
1091
        popa
1092
        ret
2619 mario79 1093
;------------------------------------------------------------------------------
2532 mario79 1094
align 4
31 halyavin 1095
right_button:
9971 Doczom 1096
        mov     [small_draw],dword draw_small_right
31 halyavin 1097
 
9971 Doczom 1098
        mcall   14
31 halyavin 1099
 
9971 Doczom 1100
        shr     eax, 16
1101
        mov     ebx, eax
1102
        mov     ecx, -1
1103
        mov     edx, 9
1104
        sub     ebx, edx
1105
        mov     esi, -1
1106
        mcall   67
31 halyavin 1107
 
9971 Doczom 1108
        call    draw_small_right
1109
        jmp     small_wait
2619 mario79 1110
;------------------------------------------------------------------------------
2532 mario79 1111
align 4
31 halyavin 1112
left_button:
9971 Doczom 1113
        mov     [small_draw],dword draw_small_left
31 halyavin 1114
 
9971 Doczom 1115
        xor     ebx,ebx
1116
        mcall   67,,-1,9,-1
31 halyavin 1117
 
9971 Doczom 1118
        call    draw_small_left
2532 mario79 1119
;--------------------------------------
1120
align 4
1121
small_wait:
9971 Doczom 1122
        mcall   10
1123
        cmp     eax,1
1124
        jne     no_win
31 halyavin 1125
 
9971 Doczom 1126
        call    [small_draw]
1127
        jmp     small_wait
2532 mario79 1128
;--------------------------------------
1129
align 4
1130
no_win:
9971 Doczom 1131
        cmp     eax,2
1132
        jne     no_key
31 halyavin 1133
 
9971 Doczom 1134
        call    handle_key
1135
        jmp     small_wait
2532 mario79 1136
;--------------------------------------
1137
align 4
93 diamond 1138
no_key:
9971 Doczom 1139
        mcall   17
1140
        cmp     ah,1
1141
        jne     no_full
31 halyavin 1142
 
9971 Doczom 1143
        mcall   14      ; get screen max x & max y
31 halyavin 1144
 
9971 Doczom 1145
        mov     edx, eax
1146
        shr     edx, 16
1147
        xor     ebx, ebx
1148
        mcall   67,,-1,,-1 ; x0 y0 xs ys
31 halyavin 1149
 
9971 Doczom 1150
        jmp     still
2532 mario79 1151
;--------------------------------------
1152
align 4
1153
no_full:
9971 Doczom 1154
        call    menu_handler
1155
        jmp     small_wait
2619 mario79 1156
;------------------------------------------------------------------------------
1157
include 'libini.inc'
1158
;------------------------------------------------------------------------------
3014 dunkaist 1159
include '../../../dll.inc'
2619 mario79 1160
;------------------------------------------------------------------------------
1161
include 'drawappl.inc'
1162
;------------------------------------------------------------------------------
1163
include 'drawbutt.inc'
1164
;------------------------------------------------------------------------------
1165
include 'drawwind.inc'
1166
;------------------------------------------------------------------------------
1167
include 'drawtray.inc'
1168
;------------------------------------------------------------------------------
601 Rus 1169
include 'ctx_menu.asm'
2619 mario79 1170
;------------------------------------------------------------------------------
1171
include 'i_data.inc'
1172
;------------------------------------------------------------------------------
2532 mario79 1173
IM_END:
1174
;------------------------------------------------------------------------------
2619 mario79 1175
include 'u_data.inc'
1176
;------------------------------------------------------------------------------
1177
I_END:
1178
;------------------------------------------------------------------------------