Subversion Repositories Kolibri OS

Rev

Rev 111 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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