Subversion Repositories Kolibri OS

Rev

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