Subversion Repositories Kolibri OS

Rev

Rev 3962 | Rev 4007 | 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
 
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
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
204
        or      [edtIcon.flags],ed_focus
205
        stdcall [edit_box_draw],edtParams
206
        stdcall [edit_box_draw],edtIcon
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
 
4003 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
;##################################################################
380
proc DRedraw
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
 
477
        mov     ecx,[sbIcons.position]
478
        xor     eax,eax
479
        m2m     dword[iIcon],0
480
 
481
        test    ecx,ecx
482
        jz      .DST1
483
     @@:
484
        add     [iIcon],ICONS_DRAW_COUNTH
485
        add     eax,IMG_SIZE*IMG_SIZE*4*ICONS_DRAW_COUNTH
486
        loop    @b
487
   .DST1:
488
 
489
        lea     esi,[eax+44]
490
        add     esi,[raw_pointer]
491
 
492
        mov     [IcoX],ICONSX
493
 
494
 
495
        mov     ecx,ICONS_DRAW_COUNTW
496
  .DrawIcons:
497
        push    ecx
498
 
499
        mov     [IcoY],ICONSY
500
 
501
        mov     ecx,ICONS_DRAW_COUNTH
502
  .DrawIcoStolb:
503
        push    ecx
504
 
505
        mov     edi,IconArea
506
        mov     edx,IMG_SIZE
507
 
508
    .DrawLine:
509
 
510
 
511
        mov     ecx,IMG_SIZE
512
     .DrawPix:
513
 
514
        lodsd
515
        test    eax,0FF000000h
516
        jnz     @f
517
        mov     eax,[sc.work]
518
     @@:
519
 
520
        mov     word[edi],ax
521
        shr     eax,16
522
        mov     [edi+2],al
523
        add     edi,3
524
 
525
        loop    .DrawPix
526
 
527
        dec     edx
528
        jnz    .DrawLine
529
 
530
        mov     edx,[IcoX]
531
        shl     edx,16
532
        mov     dx,word[IcoY]
533
        mcall   7,IconArea,
534
 
535
        inc     [iIcon]
536
        mov     eax,[iIcon]
537
        cmp     eax,[icon_count]
538
        jae     .endDrawIcon
539
 
540
        add     dword[IcoY],IMG_SIZE+SPCH
541
        pop     ecx
542
        loop    .DrawIcoStolb
543
 
544
        add     dword[IcoX],IMG_SIZE+SPCW
545
        pop     ecx
546
        loop    .DrawIcons
547
        jmp     .endProc
548
 
549
    .endDrawIcon:
550
 
551
        mov     ecx,IMG_SIZE*IMG_SIZE
552
        mov     edi,IconArea
553
        mov     eax,[sc.work]
554
        mov     ebx,eax
555
        shr     ebx,16
556
     @@:
557
        mov     word[edi],ax
558
        mov     [edi+2],bl
559
        add     edi,3
560
        loop    @b
561
 
562
                                     ;затирание не использованых мест
563
        jmp     .Dalee
564
 
565
  .DrawIcons2:
566
        push    ecx
567
 
568
        mov     [IcoY],ICONSY
569
        mov     ecx,ICONS_DRAW_COUNTH
570
  .DrawIcoStolb2:
571
        push    ecx
572
 
573
        mov     edx,[IcoX]
574
        shl     edx,16
575
        mov     dx,word[IcoY]
576
        mcall   7,IconArea,
577
 
578
     .Dalee:
579
        add     dword[IcoY],IMG_SIZE+SPCH
580
        pop     ecx
581
        loop    .DrawIcoStolb2
582
 
583
        add     dword[IcoX],IMG_SIZE+SPCW
584
        pop     ecx
585
        loop    .DrawIcons2
586
 
587
   .endProc:
588
        ret
589
endp
590
 
591
proc DrawSelIcon
592
        mov     edi,DAreaIcon
593
        cmp     byte[edi],0
594
        jne     @f
595
        ret
596
      @@:
597
 
598
        mov     al,[edi]
599
        cmp     al,'9'
600
        ja      .PathToIcon
601
        cmp     al,'/'
602
        jne     .GetIconInd
603
   .PathToIcon:
604
        mov     al,30h           ;заглушка!!!!!!!!!!!!!
605
        mov     byte[edi+1],0
606
   .GetIconInd:
607
;int3
608
        sub     al,30h
609
        cmp     byte[edi+1],0
610
        je      @f
611
        shl     eax,1
612
        lea     eax,[eax*4+eax]
613
        xor     edx,edx
614
        mov     dl,[edi+1]
615
        sub     dl,30h
616
        add     eax,edx
617
     @@:             ;eax=num icon
618
        cmp     eax,[icon_count]
619
        jb      @f
620
        xor     eax,eax
621
     @@:
622
        test    eax,eax
623
        je      .DI1
624
        mov     ecx,eax
625
        xor     eax,eax
626
      @@:
627
        add     eax,IMG_SIZE*IMG_SIZE*4
628
        loop    @b
629
     .DI1:
630
        mov     esi,eax
631
        add     esi,[raw_pointer]
632
        add     esi,44
633
 
634
        mov     edi,IconArea
635
        mov     edx,IMG_SIZE
636
    .DrawLine:
637
 
638
        mov     ecx,IMG_SIZE
639
     .DrawPix:
640
 
641
        lodsd
642
        test    eax,0FF000000h
643
        jnz     @f
644
        mov     eax,[sc.work]
645
     @@:
646
 
647
        mov     word[edi],ax
648
        shr     eax,16
649
        mov     [edi+2],al
650
        add     edi,3
651
 
652
        loop    .DrawPix
653
 
654
        dec     edx
655
        jnz     .DrawLine
656
 
4003 GerdtR 657
        mcall   7,IconArea,,<15,15>
3853 GerdtR 658
 
659
        ret
660
endp