Subversion Repositories Kolibri OS

Rev

Rev 3921 | Rev 4003 | 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
143
        edit_boxes_set_sys_color edtIcon,endEdits,sc
144
 
145
        call    DRedraw
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
172
        stdcall [edit_box_key],edtIcon
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
184
        test    [edtIcon.flags],ed_focus
185
        jne      .DNE4
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
204
        or      [edtIcon.flags],ed_focus
205
        stdcall [edit_box_draw],edtParams
206
        stdcall [edit_box_draw],edtIcon
207
        jmp     DMessages
208
 
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
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
231
        stdcall [edit_box_mouse],edtIcon
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
 
315
        stdcall [edit_box_draw],edtIcon
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:
334
        mov     dword[fiRunProg+8],WarningSave
335
        mov     dword[fiRunProg+21],pthNotify
336
        mcall   70,fiRunProg
337
 
338
 
3921 mario79 339
        cmp     [DlgSelIcon],-1
3853 GerdtR 340
        je      @f
341
                       ;удаляем из ini старую иконку
3921 mario79 342
        mov     ebx,[DlgSelIcon]
3853 GerdtR 343
        mov     eax,[IconsOffs+ebx*4]
344
        stdcall [ini_del_section],IconIni,eax
345
 
3921 mario79 346
        stdcall EditIcon,[DlgSelIcon],DAreaIcon,DAreaName,DAreaPath,DAreaParams
3853 GerdtR 347
        jmp     DExitAndSave
348
     @@:
349
        stdcall AddIcon,[AddX],[AddY],DAreaIcon,DAreaName,DAreaPath,DAreaParams
350
        ;jmp     DExitAndSave
351
;-------------------------------------------------------------------------------
352
DExitAndSave:
353
 
354
         stdcall [ini_set_str],IconIni,DAreaName,keyPath,DAreaPath,dword[edtExePath.size]
355
         stdcall [ini_set_str],IconIni,DAreaName,keyParams,DAreaParams,dword[edtParams.size]
356
         stdcall [ini_set_str],IconIni,DAreaName,keyIco,DAreaIcon,dword[edtIcon.size]
357
         stdcall [ini_set_int],IconIni,DAreaName,keyX,[MouseX]
358
         stdcall [ini_set_int],IconIni,DAreaName,keyY,[MouseY]
359
 
360
DExit:
3921 mario79 361
        mov     [DlgAddActiv],0
362
        mov     [slotDlgAdd],0
363
        mcall   -1              ;ExitThread
3853 GerdtR 364
 
365
;##################################################################
366
proc DRedraw
3921 mario79 367
        mcall   12,1            ;RedrawWinBeg
3853 GerdtR 368
        mov     edx,[sc.work]
369
        or      edx,33000000h
3962 GerdtR 370
        cmp     [DlgSelIcon],-1
371
        jne      @f
372
        mov     edi,DTitleAdd
373
        jmp     .l1
374
      @@:
375
        mov     edi,DTitleProp
376
      .l1:
377
        mcall   0,<100,400>,<100,(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH+185>,,,
3853 GerdtR 378
 
379
        stdcall [edit_box_draw],edtName
380
        stdcall [edit_box_draw],edtExePath
381
        stdcall [edit_box_draw],edtParams
382
        stdcall [edit_box_draw],edtIcon
383
 
384
        call    DrawStdIcons
385
 
386
 
387
        stdcall [scrollbar_h_draw],sbIcons
388
        mcall   38,,\
389
                   ,\
390
                [sc.work_graph]
391
        mcall     ,,\
392
                   ,\
393
                [sc.work_graph]
394
 
395
        mcall     ,,\
396
                   ,\
397
                [sc.work_graph]
398
        mcall     ,,\
399
                   ,\
400
                [sc.work_graph]
401
 
402
                                  ;BUTTONS
403
        mcall   8,<250,49>,<30+END_ICONS_AREAH,16>,idbCreate,[sc.work_button]
404
        mcall    ,<305,54>,                       ,idbCancel
405
        mcall    ,<351,14>,<26,14>             ,idbChange
406
 
407
                                  ;CAPTIONS
408
        mov     ecx,[sc.work_text]
409
        or      ecx,80000000h
410
        mcall   4,<30+IMG_SIZE,10>,,DCaptName
411
        mcall    ,<30+IMG_SIZE,30>,,DCaptPath
412
        mcall    ,<30+IMG_SIZE,50>,,DCaptParams
413
        mcall    ,<30+IMG_SIZE,70>,,DCaptIcon
414
 
415
if lang eq ru
416
        mov     ecx,[sc.work_button_text]
417
        or      ecx,80000000h
418
        mcall    ,<309,35+END_ICONS_AREAH>,,DCaptCancel
419
 
3921 mario79 420
        cmp     [DlgSelIcon],-1
3853 GerdtR 421
        jne     @f
422
        mpack   ebx,255,35+END_ICONS_AREAH
423
        mov     edx,DCaptCreate
424
        jmp     .DRD1
425
      @@:
426
        mpack   ebx,252,35+END_ICONS_AREAH
427
        mov     edx,DCaptProperties
428
     .DRD1:
429
else
430
        mov     ecx,[sc.work_button_text]
431
        or      ecx,80000000h
432
        mcall    ,<315,35+END_ICONS_AREAH>,,DCaptCancel
433
 
434
 
3921 mario79 435
        cmp     [DlgSelIcon],-1
3853 GerdtR 436
        jne     @f
437
        mpack   ebx,257,35+END_ICONS_AREAH
438
        mov     edx,DCaptCreate
439
        jmp     .DRD1
440
      @@:
441
        mpack   ebx,257,35+END_ICONS_AREAH
442
        mov     edx,DCaptProperties
443
     .DRD1:
444
end if
445
        mcall
446
 
447
        mcall   1,351+4  ,26+10,[sc.work_button_text]
448
        mcall    ,351+4+3,26+10,
449
        mcall    ,351+4+6,26+10,
450
 
451
        call DrawSelIcon
452
 
3921 mario79 453
        mcall   12,2            ;RedrawWinEnd
3853 GerdtR 454
        ret
455
endp
456
 
457
 
458
proc DrawStdIcons
459
local IcoX:DWORD,\
460
      IcoY:DWORD,\
461
      iIcon:DWORD
462
 
463
        mov     ecx,[sbIcons.position]
464
        xor     eax,eax
465
        m2m     dword[iIcon],0
466
 
467
        test    ecx,ecx
468
        jz      .DST1
469
     @@:
470
        add     [iIcon],ICONS_DRAW_COUNTH
471
        add     eax,IMG_SIZE*IMG_SIZE*4*ICONS_DRAW_COUNTH
472
        loop    @b
473
   .DST1:
474
 
475
        lea     esi,[eax+44]
476
        add     esi,[raw_pointer]
477
 
478
        mov     [IcoX],ICONSX
479
 
480
 
481
        mov     ecx,ICONS_DRAW_COUNTW
482
  .DrawIcons:
483
        push    ecx
484
 
485
        mov     [IcoY],ICONSY
486
 
487
        mov     ecx,ICONS_DRAW_COUNTH
488
  .DrawIcoStolb:
489
        push    ecx
490
 
491
        mov     edi,IconArea
492
        mov     edx,IMG_SIZE
493
 
494
    .DrawLine:
495
 
496
 
497
        mov     ecx,IMG_SIZE
498
     .DrawPix:
499
 
500
        lodsd
501
        test    eax,0FF000000h
502
        jnz     @f
503
        mov     eax,[sc.work]
504
     @@:
505
 
506
        mov     word[edi],ax
507
        shr     eax,16
508
        mov     [edi+2],al
509
        add     edi,3
510
 
511
        loop    .DrawPix
512
 
513
        dec     edx
514
        jnz    .DrawLine
515
 
516
        mov     edx,[IcoX]
517
        shl     edx,16
518
        mov     dx,word[IcoY]
519
        mcall   7,IconArea,
520
 
521
        inc     [iIcon]
522
        mov     eax,[iIcon]
523
        cmp     eax,[icon_count]
524
        jae     .endDrawIcon
525
 
526
        add     dword[IcoY],IMG_SIZE+SPCH
527
        pop     ecx
528
        loop    .DrawIcoStolb
529
 
530
        add     dword[IcoX],IMG_SIZE+SPCW
531
        pop     ecx
532
        loop    .DrawIcons
533
        jmp     .endProc
534
 
535
    .endDrawIcon:
536
 
537
        mov     ecx,IMG_SIZE*IMG_SIZE
538
        mov     edi,IconArea
539
        mov     eax,[sc.work]
540
        mov     ebx,eax
541
        shr     ebx,16
542
     @@:
543
        mov     word[edi],ax
544
        mov     [edi+2],bl
545
        add     edi,3
546
        loop    @b
547
 
548
                                     ;затирание не использованых мест
549
        jmp     .Dalee
550
 
551
  .DrawIcons2:
552
        push    ecx
553
 
554
        mov     [IcoY],ICONSY
555
        mov     ecx,ICONS_DRAW_COUNTH
556
  .DrawIcoStolb2:
557
        push    ecx
558
 
559
        mov     edx,[IcoX]
560
        shl     edx,16
561
        mov     dx,word[IcoY]
562
        mcall   7,IconArea,
563
 
564
     .Dalee:
565
        add     dword[IcoY],IMG_SIZE+SPCH
566
        pop     ecx
567
        loop    .DrawIcoStolb2
568
 
569
        add     dword[IcoX],IMG_SIZE+SPCW
570
        pop     ecx
571
        loop    .DrawIcons2
572
 
573
   .endProc:
574
        ret
575
endp
576
 
577
proc DrawSelIcon
578
        mov     edi,DAreaIcon
579
        cmp     byte[edi],0
580
        jne     @f
581
        ret
582
      @@:
583
 
584
        mov     al,[edi]
585
        cmp     al,'9'
586
        ja      .PathToIcon
587
        cmp     al,'/'
588
        jne     .GetIconInd
589
   .PathToIcon:
590
        mov     al,30h           ;заглушка!!!!!!!!!!!!!
591
        mov     byte[edi+1],0
592
   .GetIconInd:
593
;int3
594
        sub     al,30h
595
        cmp     byte[edi+1],0
596
        je      @f
597
        shl     eax,1
598
        lea     eax,[eax*4+eax]
599
        xor     edx,edx
600
        mov     dl,[edi+1]
601
        sub     dl,30h
602
        add     eax,edx
603
     @@:             ;eax=num icon
604
        cmp     eax,[icon_count]
605
        jb      @f
606
        xor     eax,eax
607
     @@:
608
        test    eax,eax
609
        je      .DI1
610
        mov     ecx,eax
611
        xor     eax,eax
612
      @@:
613
        add     eax,IMG_SIZE*IMG_SIZE*4
614
        loop    @b
615
     .DI1:
616
        mov     esi,eax
617
        add     esi,[raw_pointer]
618
        add     esi,44
619
 
620
        mov     edi,IconArea
621
        mov     edx,IMG_SIZE
622
    .DrawLine:
623
 
624
        mov     ecx,IMG_SIZE
625
     .DrawPix:
626
 
627
        lodsd
628
        test    eax,0FF000000h
629
        jnz     @f
630
        mov     eax,[sc.work]
631
     @@:
632
 
633
        mov     word[edi],ax
634
        shr     eax,16
635
        mov     [edi+2],al
636
        add     edi,3
637
 
638
        loop    .DrawPix
639
 
640
        dec     edx
641
        jnz     .DrawLine
642
 
643
        mcall   7,IconArea,,<15,25>
644
 
645
        ret
646
endp