Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
31 halyavin 1
;------------------------------------------------------------------------------
2
;///// COPYING ////////////////////////////////////////////////////////////////
3
;------------------------------------------------------------------------------
4
 
7134 dunkaist 5
__func copy_file
31 halyavin 6
        pushad
7
 
8
        cmp     [active_panel],0
9
        jne    ._00
10
        push    f_path0
11
        push    [f_plen0]
12
        mov     eax,[d_lpos]
13
        shl     eax,4
14
        add     eax,lstart
15
        push    eax
16
        mov     esi,f_path1
17
        mov     eax,[f_plen1]
18
        jmp     @f
19
   ._00:
20
        push    f_path1
21
        push    [f_plen1]
22
        mov     eax,[d_rpos]
23
        shl     eax,4
24
        add     eax,rstart
25
        push    eax
26
        mov     esi,f_path0
27
        mov     eax,[f_plen0]
28
    @@:
29
        mov     ebx,[esp]
30
        test    byte[ebx+11],FA_FOLDER
31
        jz      @f
32
        add     esp,3*4
33
        stc
34
        jmp    .close
35
    @@:
36
        mov     edi,fc_info.path
37
        call    get_normal_path
38
        mov     eax,[len]
39
        mov     byte[edi+eax-1],'/'
40
        mov     [fc_len2],eax
41
 
42
        pop     esi
43
        call    get_file_info
44
        mov     eax,[f_size]
45
        mov     [fc_size],eax
46
 
47
        pop     eax
48
        pop     esi
49
        mov     edi,f_info.path
50
        call    get_normal_path
51
        mov     eax,[len]
52
        mov     byte[edi+eax-1],'/'
53
        mov     [fc_len1],eax
54
 
55
        jmp     .redraw_copy
56
 
57
  .redraw:
58
        call    draw_window_full
59
  .redraw_copy:
60
        call    draw_window_copy_main
61
  .still:
62
        mcall   MF_WAITEVENT
63
        jmpe    al,.still,\
64
          EV_REDRAW,.redraw,\
65
          EV_KEY,.key,\
66
          EV_BUTTON,.button
67
 
68
  .key:
69
        mcall   MF_GETKEY
70
 
71
        jmpe    ah,.still,\
72
          VK_ESCAPE,._close,\
73
          VK_RETURN,.copy
74
 
75
  .button:
76
        jmp    .still
77
 
78
  .copy:
79
        mov     ecx,[fc_size]
80
        shr     ecx,9
81
        inc     ecx
82
        push    ecx
83
        shl     ecx,9
84
        add     ecx,MEM_USED
85
        mcall   MF_MEMRESIZE,MR_SETSIZE
86
        or      eax,eax
87
        jnz    .close
88
 
89
        mov     edi,file_info
90
        mov     al,' '
91
        mov     ecx,13
92
        repne   scasb
93
        sub     ecx,12
94
        neg     ecx
95
        push    ecx
96
        mov     esi,file_info
97
        mov     edi,f_info.path
98
        add     edi,[fc_len1]
99
        rep     movsb
100
        mov     byte[edi],0
101
        pop     ecx
102
        mov     esi,file_info
103
        mov     edi,fc_info.path
104
        add     edi,[fc_len2]
105
        rep     movsb
106
        mov     byte[edi],0
107
 
108
        xor     eax,eax                 ; FS_READ
109
        mov     [f_info],eax
110
        mov     [f_info+4],eax
111
        pop     eax
112
        mov     [f_info+8],eax
113
        mov     dword[f_info+12],MEM_USED
114
        mcall   MF_FSACCESS,f_info
115
        mov     eax,[fc_size]
116
        mov     [fc_info+8],eax
117
        mcall   MF_FSACCESS,fc_info
118
 
119
        mcall   MF_MEMRESIZE,MR_SETSIZE,MEM_USED
120
  ._close:
121
        clc
122
  .close:
123
        popad
124
        ret
125
endf
126
 
127
;------------------------------------------------------------------------------
128
 
7134 dunkaist 129
__func draw_window_copy_main
31 halyavin 130
        mcall2  MF_FILLRECT,oX+tW*2,tW*76,oY+tH*7,tH*8,0x00C0C0C0
131
 
132
        mmov    esi,oX+tW*4+2,oX+tW*75+3
133
        mmov    edi,oY+tH*8+3,oY+tH*13+5
134
        xor     edx,edx
135
        call    draw_frame
136
        mmov    esi,oX+tW*4+4,oX+tW*75+1
137
        mmov    edi,oY+tH*8+5,oY+tH*13+3
138
        call    draw_frame
139
 
140
        mcall2  MF_DRAWLINE,oX+tW*4+4,oX+tW*75+1,oY+tH*11+3,oY+tH*11+3,0
141
 
142
        mcall2  MF_FILLRECT,oX+tW*40-(sz_copy.size-2)*tW/2-tW,sz_copy.size*tW,\
143
                   oY+tH*8+3,3,0x00C0C0C0
144
        mcall1  MF_DRAWTEXT,oX+tW*40-(sz_copy.size-2)*tW/2,oY+tH*8,\
145
                   0x00000000,sz_copy,sz_copy.size-2
146
 
147
        mcall1  ,oX+tW*6,oY+tH*9,,,sz_copy.size
148
 
149
        mov     edi,file_info
150
        mov     al,' '
151
        mov     ecx,13
152
        repne   scasb
153
 
154
        madd    ebx,(sz_copy.size)*tW,0
155
        mov     esi,ecx
156
        sub     esi,12
157
        neg     esi
158
        mcall   MF_DRAWTEXT,,,file_info
159
        imul    esi,tW
160
        shl     esi,16
161
        add     ebx,esi
162
        mcall   ,,,sz_copyto,sz_copyto.size
163
 
164
        call    draw_copy_input
165
 
166
        ret
167
endf
168
 
169
;------------------------------------------------------------------------------
170
 
7134 dunkaist 171
__func draw_copy_input
31 halyavin 172
        mcall2  MF_FILLRECT,oX+tW*6,tW*68,oY+tH*10,tH,0x00008080
173
 
174
        mov     edx,fc_info.path
175
        mov     esi,[fc_len2]
176
        cmp     esi,68
177
        jb      @f
178
        sub     esi,68
179
        lea     edx,[edx+esi+1]
180
        mov     esi,67
181
    @@:
182
        mcall1  MF_DRAWTEXT,oX+tW*6,oY+tH*10+1,0x00000000
183
        ret
184
endf
185
 
186
;------------------------------------------------------------------------------
187
 
188
;fc_pst  db 0
189
;fc_cur  db 0
190
 
191
align 4
192
 
193
fc_size dd ?
194
fc_len1 dd 0
195
fc_len2 dd 0
196
 
197
fc_info:
198
 dd 1
199
 dd 0
200
 dd ?
201
 dd MEM_USED
202
 dd MEM_FOR_OS
203
.path:
204
 rb 200