Subversion Repositories Kolibri OS

Rev

Rev 4003 | Rev 4027 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3853 GerdtR 1
idbChange       equ 2
2
idbCreate       equ 3
3
idbLeft         equ 4
4
idbRight        equ 5
5
idbCancel       equ 1
6
 
7
DlgAdd:
8
DlgProp:
3921 mario79 9
 
3853 GerdtR 10
        mov     eax,[SelIcon]
3921 mario79 11
        mov     [DlgSelIcon],eax
3853 GerdtR 12
        cmp     eax,-1
13
        jne     SetProp
14
 
15
        m2m     dword[AddX],dword[MouseX]
16
        m2m     dword[AddY],dword[MouseY]
17
 
18
        mov     ecx,NAME_LENGTH
19
        mov     edi,DAreaName
20
        xor     al,al
21
        rep     stosb
22
        mov     dword[edtName.size],0
23
        mov     dword[edtName.pos],0
24
 
25
        mov     ecx,256
26
        mov     edi,DAreaPath
27
        rep     stosb
28
        mov     dword[edtExePath.size],0
29
        mov     dword[edtExePath.pos],0
30
 
31
        mov     ecx,256
32
        mov     edi,DAreaParams
33
        rep     stosb
34
        mov     dword[edtParams.size],0
35
        mov     dword[edtParams.pos],0
36
 
37
        mov     ecx,256
38
        mov     edi,DAreaIcon
39
        rep     stosb
40
        mov     dword[edtIcon.size],0
41
        mov     dword[edtIcon.pos],0
42
 
43
        jmp     startDlg
44
    ;--------
45
SetProp:
46
        mov     esi,[IconsOffs+eax*4]
47
        mov     edi,DAreaName
48
        xor     ecx,ecx
49
     @@:
50
        lodsb
51
        stosb
52
        inc     ecx
53
        test    al,al
54
        jnz     @b
55
        dec     ecx
56
        mov     dword[edtName.size],ecx
57
        mov     dword[edtName.pos],ecx
58
 
59
        xor     ecx,ecx
60
        mov     edi,DAreaPath
61
     @@:
62
        lodsb
63
        stosb
64
        inc     ecx
65
        test    al,al
66
        jnz     @b
67
        dec     ecx
68
        mov     dword[edtExePath.size],ecx
69
        mov     dword[edtExePath.pos],ecx
70
 
71
        xor     ecx,ecx
72
        mov     edi,DAreaParams
73
     @@:
74
        lodsb
75
        stosb
76
        inc     ecx
77
        test    al,al
78
        jnz     @b
79
        dec     ecx
80
        mov     dword[edtParams.size],ecx
81
        mov     dword[edtParams.pos],ecx
82
 
83
        xor     ecx,ecx
84
        mov     edi,DAreaIcon
85
     @@:
86
        lodsb
87
        stosb
88
        inc     ecx
89
        test    al,al
90
        jnz     @b
91
        dec     ecx
92
        mov     dword[edtIcon.size],ecx
93
        mov     dword[edtIcon.pos],ecx
94
 
95
 
96
startDlg:
3921 mario79 97
        mcall   9,RBProcInfo,-1
98
        mcall   18,21,dword[RBProcInfo+30]
99
        mov     [slotDlgAdd],eax
100
 
3853 GerdtR 101
        or      [edtName.flags],ed_focus
102
 
3921 mario79 103
        mcall   40,100111b      ;SetMaskMessage 100111b
3853 GerdtR 104
        xor     eax,eax
105
        mov     dword[MaxPage],0
106
      @@:
107
        add     eax,ICONS_DRAW_COUNTW
108
        inc     dword[MaxPage]
109
        cmp     eax,[icon_count]
110
        jb      @b
111
        dec     dword[MaxPage]
112
        cmp     dword[MaxPage],0
113
        jne     @f
114
        mov     dword[MaxPage],1
115
      @@:
116
 
117
DReDraw:
118
        mcall   48,3,sc,40
119
 
120
        mov     eax,[sc.work]
121
        rol     eax,16
122
        add     al,9
123
        jnc     @f
124
        mov     al,0FFh
125
      @@:
126
        rol     eax,16
127
        add     al,9
128
        jnc     @f
129
        mov     al,0FFh
130
      @@:
131
        add     ah,9
132
        jnc     @f
133
        mov     ah,0FFh
134
      @@:
135
 
136
        mov     [sbIcons.bckg_col],eax
137
        m2m     [sbIcons.frnt_col],[sc.work]
138
        m2m     [sbIcons.line_col],[sc.work_graph]
139
 
140
        edit_boxes_set_sys_color edtName,edtExePath,sc
141
        edit_boxes_set_sys_color edtExePath,edtParams,sc
142
        edit_boxes_set_sys_color edtParams,edtIcon,sc
4003 GerdtR 143
        ;edit_boxes_set_sys_color edtIcon,endEdits,sc
3853 GerdtR 144
 
4007 GerdtR 145
        call    DRedrawWin
3853 GerdtR 146
 
147
DMessages:
3921 mario79 148
        mcall   10              ;WaitMessage
3853 GerdtR 149
 
150
        dec     eax
151
        jz      DReDraw
152
        dec     eax
153
        jz      DKey
154
        dec     eax
155
        jz      DButton
156
        sub     eax,3
157
        jz      DMouse
158
 
159
        jmp  DMessages
160
 
161
 
162
;---------------------------------------------------------------------
163
DKey:
3921 mario79 164
        mcall   2               ;GetKeyPressed
3853 GerdtR 165
        cmp     ah,1Bh
166
        je      DExit
167
        cmp     ah,9  ;Tab
168
        je      DNextEdit
169
        stdcall [edit_box_key],edtName
170
        stdcall [edit_box_key],edtExePath
171
        stdcall [edit_box_key],edtParams
4003 GerdtR 172
        ;stdcall [edit_box_key],edtIcon
3853 GerdtR 173
 
174
        jmp     DMessages
175
 
176
 
177
DNextEdit:
178
        test    [edtName.flags],ed_focus
179
        jne      .DNE1
180
        test    [edtExePath.flags],ed_focus
181
        jne      .DNE2
182
        test    [edtParams.flags],ed_focus
183
        jne      .DNE3
4003 GerdtR 184
        ;test    [edtIcon.flags],ed_focus
185
        ;jne      .DNE4
3853 GerdtR 186
        jmp     DMessages
187
 
188
    .DNE1:
189
        and     [edtName.flags],not ed_focus
190
        or      [edtExePath.flags],ed_focus
191
        stdcall [edit_box_draw],edtName
192
        stdcall [edit_box_draw],edtExePath
193
        jmp     DMessages
194
 
195
    .DNE2:
196
        and     [edtExePath.flags],not ed_focus
197
        or      [edtParams.flags],ed_focus
198
        stdcall [edit_box_draw],edtExePath
199
        stdcall [edit_box_draw],edtParams
200
        jmp     DMessages
201
 
202
    .DNE3:
203
        and     [edtParams.flags],not ed_focus
4007 GerdtR 204
        or      [edtName.flags],ed_focus
3853 GerdtR 205
        stdcall [edit_box_draw],edtParams
4007 GerdtR 206
        stdcall [edit_box_draw],edtName
3853 GerdtR 207
        jmp     DMessages
208
 
4003 GerdtR 209
    ;.DNE4:
210
    ;    and     [edtIcon.flags],not ed_focus
211
    ;    or      [edtName.flags],ed_focus
212
    ;    stdcall [edit_box_draw],edtName
213
    ;    stdcall [edit_box_draw],edtIcon
214
    ;    jmp     DMessages
3853 GerdtR 215
;---------------------------------------------------------------------
216
DButton:
3921 mario79 217
        mcall   17              ;GetButtonPressed
3853 GerdtR 218
        cmp     ah, idbCancel
219
        je      DExit
220
        cmp     ah,idbChange
221
        je      DSetExePath
222
        cmp     ah,idbCreate
223
        je      DSaveIcon
224
 
225
        jmp     DMessages
226
;-------------------------------------------------------------------------------
227
DMouse:
228
        stdcall [edit_box_mouse],edtName
229
        stdcall [edit_box_mouse],edtExePath
230
        stdcall [edit_box_mouse],edtParams
4003 GerdtR 231
;        stdcall [edit_box_mouse],edtIcon
3853 GerdtR 232
 
233
        push    [sbIcons.position]
234
        stdcall [scrollbar_h_mouse],sbIcons
235
        pop     eax
236
        cmp     eax,[sbIcons.position]
237
        je      @f
238
        call    DrawStdIcons
239
      @@:
240
 
3921 mario79 241
        mcall   37,2            ;GetMouseKey
3853 GerdtR 242
        test    eax,1
243
        jz      DMessages
3921 mario79 244
        mcall   37,1            ;GetMouseWinPos
3853 GerdtR 245
 
246
        test    eax,10001000h
247
        jne     DMessages
248
        xor     edx,edx
249
        mov     dx,ax     ;y
250
        shr     eax,16    ;x
251
 
252
        sub     eax,ICONSX
253
        js      DMessages
254
        sub     edx,ICONSY
255
        js      DMessages
256
 
257
        cmp     eax,(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW
258
        ja      DMessages
259
        cmp     edx,(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH
260
        ja      DMessages
261
 
262
        xor     ebx,ebx
263
        mov     ecx,[sbIcons.position]
264
        test    ecx,ecx
265
        jz      .DM
266
     @@:
267
        add     ebx,ICONS_DRAW_COUNTH
268
        loop    @b
269
     .DM:
270
 
271
        sub     eax,IMG_SIZE+SPCW
272
        js     .DM1
273
     @@:
274
        add     ebx,ICONS_DRAW_COUNTH
275
        sub     eax,IMG_SIZE+SPCW
276
        jns     @b
277
     .DM1:
278
 
279
 
280
        sub     edx,IMG_SIZE+SPCH
281
        js     .DM2
282
     @@:
283
        inc     ebx
284
        sub     edx,IMG_SIZE+SPCH
285
        jns     @b
286
     .DM2:
287
 
288
        mov     eax,ebx
289
 
290
        cmp     eax,[icon_count]
291
        jae     DMessages
292
 
293
        mov     bl,10
294
        div     bl
295
 
296
        add     ah,30h
297
        test    al,al
298
        jz      @f
299
 
300
        add     al,30h
301
        mov     byte[DAreaIcon],al
302
        mov     byte[DAreaIcon+1],ah
303
        mov     byte[DAreaIcon+2],0
304
        mov     dword[edtIcon.size],2
305
        jmp     .RedrawNum
306
 
307
      @@:
308
        mov     byte[DAreaIcon],ah
309
        mov     byte[DAreaIcon+1],0
310
        mov     dword[edtIcon.size],1
311
        jmp     .RedrawNum
312
    .RedrawNum:
313
 
314
 
4007 GerdtR 315
      ;  stdcall [edit_box_draw],edtIcon
3853 GerdtR 316
 
317
 
318
        call    DrawSelIcon
319
        jmp     DReDraw;DMessages;
320
;-------------------------------------------------------------------------------
321
DSetExePath:
322
        stdcall [OpenDialog_Start],OpenDialog_data
323
        mov     edi,DAreaPath
324
        xor     al,al
325
        or      ecx,-1
326
        repne   scasb
327
        sub     edi,DAreaPath
328
        dec     edi
329
        mov     dword[edtExePath+12*4],edi
330
 
331
        jmp     DMessages;DReDraw;
332
 
333
DSaveIcon:
4003 GerdtR 334
        mov     edi,DAreaName
335
        mov     esi,secRButt
336
    @@: lodsb
337
        scasb
338
        jne     @f
339
        test    al,al
340
        jnz     @b
341
 
342
        mov     dword[fiRunProg+8],ErrName
343
        mov     dword[fiRunProg+21],pthNotify
344
        mcall   70,fiRunProg
345
 
346
        jmp     DMessages
347
    @@:
3853 GerdtR 348
        mov     dword[fiRunProg+8],WarningSave
349
        mov     dword[fiRunProg+21],pthNotify
350
        mcall   70,fiRunProg
351
 
352
 
3921 mario79 353
        cmp     [DlgSelIcon],-1
3853 GerdtR 354
        je      @f
355
                       ;удаляем из ini старую иконку
3921 mario79 356
        mov     ebx,[DlgSelIcon]
3853 GerdtR 357
        mov     eax,[IconsOffs+ebx*4]
358
        stdcall [ini_del_section],IconIni,eax
359
 
3921 mario79 360
        stdcall EditIcon,[DlgSelIcon],DAreaIcon,DAreaName,DAreaPath,DAreaParams
3853 GerdtR 361
        jmp     DExitAndSave
362
     @@:
363
        stdcall AddIcon,[AddX],[AddY],DAreaIcon,DAreaName,DAreaPath,DAreaParams
364
        ;jmp     DExitAndSave
365
;-------------------------------------------------------------------------------
366
DExitAndSave:
367
 
368
         stdcall [ini_set_str],IconIni,DAreaName,keyPath,DAreaPath,dword[edtExePath.size]
369
         stdcall [ini_set_str],IconIni,DAreaName,keyParams,DAreaParams,dword[edtParams.size]
370
         stdcall [ini_set_str],IconIni,DAreaName,keyIco,DAreaIcon,dword[edtIcon.size]
371
         stdcall [ini_set_int],IconIni,DAreaName,keyX,[MouseX]
372
         stdcall [ini_set_int],IconIni,DAreaName,keyY,[MouseY]
373
 
374
DExit:
3921 mario79 375
        mov     [DlgAddActiv],0
376
        mov     [slotDlgAdd],0
377
        mcall   -1              ;ExitThread
3853 GerdtR 378
 
379
;##################################################################
4007 GerdtR 380
proc DRedrawWin
3921 mario79 381
        mcall   12,1            ;RedrawWinBeg
3853 GerdtR 382
        mov     edx,[sc.work]
4003 GerdtR 383
        or      edx,34000000h
3962 GerdtR 384
        cmp     [DlgSelIcon],-1
385
        jne      @f
386
        mov     edi,DTitleAdd
387
        jmp     .l1
388
      @@:
389
        mov     edi,DTitleProp
390
      .l1:
4003 GerdtR 391
        mcall   0,<100,400>,<100,(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH+165>,,,
3853 GerdtR 392
 
393
        stdcall [edit_box_draw],edtName
394
        stdcall [edit_box_draw],edtExePath
395
        stdcall [edit_box_draw],edtParams
4003 GerdtR 396
;        stdcall [edit_box_draw],edtIcon
3853 GerdtR 397
 
398
        call    DrawStdIcons
399
 
400
 
401
        stdcall [scrollbar_h_draw],sbIcons
402
        mcall   38,,\
403
                   ,\
404
                [sc.work_graph]
405
        mcall     ,,\
406
                   ,\
407
                [sc.work_graph]
408
 
409
        mcall     ,,\
410
                   ,\
411
                [sc.work_graph]
412
        mcall     ,,\
413
                   ,\
414
                [sc.work_graph]
415
 
416
                                  ;BUTTONS
417
        mcall   8,<250,49>,<30+END_ICONS_AREAH,16>,idbCreate,[sc.work_button]
418
        mcall    ,<305,54>,                       ,idbCancel
419
        mcall    ,<351,14>,<26,14>             ,idbChange
420
 
421
                                  ;CAPTIONS
422
        mov     ecx,[sc.work_text]
423
        or      ecx,80000000h
424
        mcall   4,<30+IMG_SIZE,10>,,DCaptName
425
        mcall    ,<30+IMG_SIZE,30>,,DCaptPath
426
        mcall    ,<30+IMG_SIZE,50>,,DCaptParams
4003 GerdtR 427
        ;mcall    ,<30+IMG_SIZE,70>,,DCaptIcon
3853 GerdtR 428
 
429
if lang eq ru
430
        mov     ecx,[sc.work_button_text]
431
        or      ecx,80000000h
432
        mcall    ,<309,35+END_ICONS_AREAH>,,DCaptCancel
433
 
3921 mario79 434
        cmp     [DlgSelIcon],-1
3853 GerdtR 435
        jne     @f
436
        mpack   ebx,255,35+END_ICONS_AREAH
437
        mov     edx,DCaptCreate
438
        jmp     .DRD1
439
      @@:
440
        mpack   ebx,252,35+END_ICONS_AREAH
441
        mov     edx,DCaptProperties
442
     .DRD1:
443
else
444
        mov     ecx,[sc.work_button_text]
445
        or      ecx,80000000h
446
        mcall    ,<315,35+END_ICONS_AREAH>,,DCaptCancel
447
 
448
 
3921 mario79 449
        cmp     [DlgSelIcon],-1
3853 GerdtR 450
        jne     @f
451
        mpack   ebx,257,35+END_ICONS_AREAH
452
        mov     edx,DCaptCreate
453
        jmp     .DRD1
454
      @@:
455
        mpack   ebx,257,35+END_ICONS_AREAH
456
        mov     edx,DCaptProperties
457
     .DRD1:
458
end if
459
        mcall
460
 
461
        mcall   1,351+4  ,26+10,[sc.work_button_text]
462
        mcall    ,351+4+3,26+10,
463
        mcall    ,351+4+6,26+10,
464
 
465
        call DrawSelIcon
466
 
3921 mario79 467
        mcall   12,2            ;RedrawWinEnd
3853 GerdtR 468
        ret
469
endp
470
 
471
 
472
proc DrawStdIcons
473
local IcoX:DWORD,\
474
      IcoY:DWORD,\
475
      iIcon:DWORD
476
 
4007 GerdtR 477
      @@:                      ;ждём, когда освободится буффер
478
        cmp     [bIcoBuff],1
479
        jne     @f
480
        mcall   5,1
481
        jmp     @b
482
      @@:
483
 
484
        mov     [bIcoBuff],1 ;блокируем IconArea
485
 
3853 GerdtR 486
        mov     ecx,[sbIcons.position]
487
        xor     eax,eax
488
        m2m     dword[iIcon],0
489
 
490
        test    ecx,ecx
491
        jz      .DST1
492
     @@:
493
        add     [iIcon],ICONS_DRAW_COUNTH
494
        add     eax,IMG_SIZE*IMG_SIZE*4*ICONS_DRAW_COUNTH
495
        loop    @b
496
   .DST1:
497
 
498
        lea     esi,[eax+44]
499
        add     esi,[raw_pointer]
500
 
501
        mov     [IcoX],ICONSX
502
 
503
        mov     ecx,ICONS_DRAW_COUNTW
504
  .DrawIcons:
505
        push    ecx
506
 
507
        mov     [IcoY],ICONSY
508
 
509
        mov     ecx,ICONS_DRAW_COUNTH
510
  .DrawIcoStolb:
511
        push    ecx
512
 
513
        mov     edi,IconArea
514
        mov     edx,IMG_SIZE
515
 
516
    .DrawLine:
517
 
518
 
519
        mov     ecx,IMG_SIZE
520
     .DrawPix:
521
 
522
        lodsd
523
        test    eax,0FF000000h
524
        jnz     @f
525
        mov     eax,[sc.work]
526
     @@:
527
 
4007 GerdtR 528
        mov     [edi],ax
3853 GerdtR 529
        shr     eax,16
530
        mov     [edi+2],al
531
        add     edi,3
532
 
533
        loop    .DrawPix
534
 
535
        dec     edx
536
        jnz    .DrawLine
537
 
538
        mov     edx,[IcoX]
539
        shl     edx,16
540
        mov     dx,word[IcoY]
541
        mcall   7,IconArea,
542
 
543
        inc     [iIcon]
544
        mov     eax,[iIcon]
545
        cmp     eax,[icon_count]
546
        jae     .endDrawIcon
547
 
548
        add     dword[IcoY],IMG_SIZE+SPCH
549
        pop     ecx
550
        loop    .DrawIcoStolb
551
 
552
        add     dword[IcoX],IMG_SIZE+SPCW
553
        pop     ecx
554
        loop    .DrawIcons
555
        jmp     .endProc
556
 
557
    .endDrawIcon:
558
 
559
        mov     ecx,IMG_SIZE*IMG_SIZE
560
        mov     edi,IconArea
561
        mov     eax,[sc.work]
562
        mov     ebx,eax
563
        shr     ebx,16
564
     @@:
565
        mov     word[edi],ax
566
        mov     [edi+2],bl
567
        add     edi,3
568
        loop    @b
569
 
570
                                     ;затирание не использованых мест
571
        jmp     .Dalee
572
 
573
  .DrawIcons2:
574
        push    ecx
575
 
576
        mov     [IcoY],ICONSY
577
        mov     ecx,ICONS_DRAW_COUNTH
578
  .DrawIcoStolb2:
579
        push    ecx
580
 
581
        mov     edx,[IcoX]
582
        shl     edx,16
583
        mov     dx,word[IcoY]
584
        mcall   7,IconArea,
585
 
586
     .Dalee:
587
        add     dword[IcoY],IMG_SIZE+SPCH
588
        pop     ecx
589
        loop    .DrawIcoStolb2
590
 
591
        add     dword[IcoX],IMG_SIZE+SPCW
592
        pop     ecx
593
        loop    .DrawIcons2
594
 
595
   .endProc:
4007 GerdtR 596
 
597
        mov     [bIcoBuff],0           ;разблокируем буфер
3853 GerdtR 598
        ret
599
endp
600
 
601
proc DrawSelIcon
602
        mov     edi,DAreaIcon
603
        cmp     byte[edi],0
604
        jne     @f
605
        ret
606
      @@:
607
 
608
        mov     al,[edi]
609
        cmp     al,'9'
610
        ja      .PathToIcon
611
        cmp     al,'/'
612
        jne     .GetIconInd
613
   .PathToIcon:
614
        mov     al,30h           ;заглушка!!!!!!!!!!!!!
615
        mov     byte[edi+1],0
616
   .GetIconInd:
617
;int3
618
        sub     al,30h
619
        cmp     byte[edi+1],0
620
        je      @f
621
        shl     eax,1
622
        lea     eax,[eax*4+eax]
623
        xor     edx,edx
624
        mov     dl,[edi+1]
625
        sub     dl,30h
626
        add     eax,edx
627
     @@:             ;eax=num icon
628
        cmp     eax,[icon_count]
629
        jb      @f
630
        xor     eax,eax
631
     @@:
632
        test    eax,eax
633
        je      .DI1
634
        mov     ecx,eax
635
        xor     eax,eax
636
      @@:
637
        add     eax,IMG_SIZE*IMG_SIZE*4
638
        loop    @b
639
     .DI1:
640
        mov     esi,eax
641
        add     esi,[raw_pointer]
642
        add     esi,44
643
 
644
        mov     edi,IconArea
645
        mov     edx,IMG_SIZE
646
    .DrawLine:
647
 
648
        mov     ecx,IMG_SIZE
649
     .DrawPix:
650
 
651
        lodsd
652
        test    eax,0FF000000h
653
        jnz     @f
654
        mov     eax,[sc.work]
655
     @@:
656
 
657
        mov     word[edi],ax
658
        shr     eax,16
659
        mov     [edi+2],al
660
        add     edi,3
661
 
662
        loop    .DrawPix
663
 
664
        dec     edx
665
        jnz     .DrawLine
666
 
4003 GerdtR 667
        mcall   7,IconArea,,<15,15>
3853 GerdtR 668
 
669
        ret
670
endp