Rev 3123 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3123 | Rev 3125 | ||
---|---|---|---|
1 | //Leency & Veliant -=- KolibriOS Team -=- 2012 |
1 | //Leency & Veliant -=- KolibriOS Team -=- 2012 |
2 | //GNU GPL licence. |
2 | //GNU GPL licence. |
3 | 3 | ||
4 | //êîïèðîâàòü ÷åðåç ïîòîê |
4 | //êîïèðîâàòü ÷åðåç ïîòîê |
5 | //IF (strcmp(#path+strlen(#path)-1,"/")<>0) copystr("/",#path+strlen(#path)); //åñëè íåò, + "/" ïåðåíåñòèâ îïåíäèð |
5 | //IF (strcmp(#path+strlen(#path)-1,"/")<>0) copystr("/",#path+strlen(#path)); //åñëè íåò, + "/" ïåðåíåñòèâ îïåíäèð |
6 | //èêîíêà äåéñòâèòåëüíî íóæíà äðóãàÿ äëÿ íåèçâåñíûõ óñòðîéñòâ è ïàïîê â áóäóþùåì. |
6 | //èêîíêà äåéñòâèòåëüíî íóæíà äðóãàÿ äëÿ íåèçâåñíûõ óñòðîéñòâ è ïàïîê â áóäóþùåì. |
7 | 7 | ||
8 | #include "lib\kolibri.h" |
8 | #include "lib\kolibri.h" |
9 | #include "lib\memory.h" |
9 | #include "lib\memory.h" |
10 | #include "lib\edit_box_lib.h" |
10 | #include "lib\edit_box_lib.h" |
11 | #include "lib\file_system.h" |
11 | #include "lib\file_system.h" |
12 | #include "imgs\toolbar.txt" |
12 | #include "imgs\toolbar.txt" |
13 | #include "imgs\left_p.txt" |
13 | #include "imgs\left_p.txt" |
14 | 14 | ||
15 | int BUTTON_HEIGHT=18; |
15 | int BUTTON_HEIGHT=18; |
16 | 16 | ||
17 | //for OpenDir |
17 | //for OpenDir |
18 | #define ONLY_SHOW 0 |
18 | #define ONLY_SHOW 0 |
19 | #define WITH_REDRAW 1 |
19 | #define WITH_REDRAW 1 |
20 | #define ONLY_OPEN 2 |
20 | #define ONLY_OPEN 2 |
21 | 21 | ||
22 | //ïåðåìåííûå |
22 | //ïåðåìåííûå |
23 | #define title "Eolite File Manager v1.5" |
23 | #define title "Eolite File Manager v1.5" |
24 | dword col_work = 0xE4DFE1; |
24 | dword col_work = 0xE4DFE1; |
25 | dword col_border = 0x819FC5; |
25 | dword col_border = 0x819FC5; |
26 | dword col_padding = 0xC8C9C9; |
26 | dword col_padding = 0xC8C9C9; |
27 | dword col_selec = 0x94AECE; |
27 | dword col_selec = 0x94AECE; |
28 | dword col_lpanel = 0x00699C; |
28 | dword col_lpanel = 0x00699C; |
29 | 29 | ||
30 | 30 | ||
31 | /* |
31 | /* |
32 | int |
32 | int |
33 | f_count, |
33 | f_count, |
34 | f_first, |
34 | f_first, |
35 | f_current; |
35 | f_current; |
36 | */ |
36 | */ |
37 | 37 | ||
38 | int f_visible, |
38 | int f_visible, |
39 | count, |
39 | count, |
40 | za_kadrom, |
40 | za_kadrom, |
41 | curbtn; |
41 | curbtn; |
42 | 42 | ||
43 | 43 | ||
44 | byte cut_active, |
44 | byte cut_active, |
45 | rename_active, |
45 | rename_active, |
46 | del_active; |
46 | del_active; |
47 | byte show_actions=1, |
47 | byte show_actions=1, |
48 | show_dev_name=1, |
48 | show_dev_name=1, |
49 | sort_num=2, |
49 | sort_num=2, |
50 | isdir; |
50 | isdir; |
51 | unsigned char |
51 | unsigned char |
52 | path[4096], |
52 | path[4096], |
53 | edit_path[4096], |
53 | edit_path[4096], |
54 | file_path[4096], |
54 | file_path[4096], |
55 | file_name[4096], |
55 | file_name[4096], |
56 | copy_file[4096], |
56 | copy_file[4096], |
57 | temp[4096]; |
57 | temp[4096]; |
58 | int scroll_size; |
58 | int scroll_size; |
59 | 59 | ||
60 | 60 | ||
61 | 61 | ||
62 | int toolbar_buttons_x[7]={9,46,85,134,167,203}; |
62 | int toolbar_buttons_x[7]={9,46,85,134,167,203}; |
63 | char tmp_disk_del_param[3]="d0\0"; |
63 | char tmp_disk_del_param[3]="d0\0"; |
64 | 64 | ||
65 | dword file_mas[6898]; |
65 | dword file_mas[6898]; |
66 | int j, i, mouse_dd; |
66 | int j, i, mouse_dd; |
67 | int scroll_used; |
67 | int scroll_used; |
68 | 68 | ||
69 | struct path_string { |
69 | struct path_string { |
70 | char Item[4096]; |
70 | char Item[4096]; |
71 | }; |
71 | }; |
72 | 72 | ||
73 | 73 | ||
74 | dword stak[100]; //îêíî About |
74 | dword stak[100]; //îêíî About |
75 | 75 | ||
76 | edit_box edit1= {250,247,13,0xffffff,0x94AECE,0xD3DDEB,0xffffff,0,248,#edit_path,#mouse_dd,64,6,6}; |
76 | edit_box edit1= {250,247,13,0xffffff,0x94AECE,0xD3DDEB,0xffffff,0,248,#edit_path,#mouse_dd,64,6,6}; |
77 | edit_box edit2= {250,213,80,0xFFFFCC,0x94AECE,0xFFFFCC,0xffffff,0,248,#file_name,#mouse_dd,64,6,6}; |
77 | edit_box edit2= {250,213,80,0xFFFFCC,0x94AECE,0xFFFFCC,0xffffff,0,248,#file_name,#mouse_dd,64,6,6}; |
78 | 78 | ||
79 | proc_info Form; |
79 | proc_info Form; |
80 | dword buf, off; //äëÿ òåêñòà è áóôåðà |
80 | dword buf, off; //äëÿ òåêñòà è áóôåðà |
81 | 81 | ||
82 | #include "include\some_code.h" |
82 | #include "include\some_code.h" |
83 | #include "include\about_dialog.h" |
83 | #include "include\about_dialog.h" |
84 | #include "include\sorting.h" |
84 | #include "include\sorting.h" |
85 | #include "include\icons_f.h" |
85 | #include "include\icons_f.h" |
86 | #include "include\ini.h" |
86 | #include "include\ini.h" |
87 | #include "include\left_panel.h" |
87 | #include "include\left_panel.h" |
88 | #include "include\history.h" |
88 | #include "include\history.h" |
89 | 89 | ||
90 | void main() |
90 | void main() |
91 | { |
91 | { |
92 | word key, id; |
92 | word key, id; |
93 | mouse m; |
93 | mouse m; |
94 | 94 | ||
95 | load_editbox_lib(); |
95 | load_editbox_lib(); |
96 | GetSystemDiscs(); |
96 | GetSystemDiscs(); |
97 | GetIni(1); |
97 | GetIni(1); |
98 | 98 | ||
99 | edit1.shift_color=col_selec; |
99 | edit1.shift_color=col_selec; |
100 | edit2.shift_color=col_selec; |
100 | edit2.shift_color=col_selec; |
101 | 101 | ||
102 | if (param) |
102 | if (param) |
103 | { |
103 | { |
104 | copystr(#param, #path); |
104 | copystr(#param, #path); |
105 | if (strcmp(#path+strlen(#path)-1,"/")<>0) copystr("/",#path+strlen(#path)); //åñëè íåò, + "/" |
105 | if (strcmp(#path+strlen(#path)-1,"/")<>0) copystr("/",#path+strlen(#path)); //åñëè íåò, + "/" |
106 | } |
106 | } |
107 | else |
107 | else |
108 | copystr("/rd/1/", #path); |
108 | copystr("/rd/1/", #path); |
109 | 109 | ||
110 | Open_Dir(#path,ONLY_OPEN); |
110 | Open_Dir(#path,ONLY_OPEN); |
111 | loop() switch(WaitEvent()) |
111 | loop() switch(WaitEvent()) |
112 | { |
112 | { |
113 | case evMouse: |
113 | case evMouse: |
114 | IF (del_active) break; |
114 | IF (del_active) break; |
115 | 115 | ||
116 | id=GetSlot(Form.ID); |
116 | id=GetSlot(Form.ID); |
117 | IF (id<>GetActiveProcess()) break; //åñëè îêíî íå àêòèâíî íà ñîáûòèÿ ìûøè íå ðåàãèðóåì |
117 | IF (id<>GetActiveProcess()) break; //åñëè îêíî íå àêòèâíî íà ñîáûòèÿ ìûøè íå ðåàãèðóåì |
118 | 118 | ||
119 | IF (!rename_active) edit_box_mouse stdcall(#edit1); ELSE edit_box_mouse stdcall(#edit2); |
119 | IF (!rename_active) edit_box_mouse stdcall(#edit1); ELSE edit_box_mouse stdcall(#edit2); |
120 | 120 | ||
121 | m.get(); |
121 | m.get(); |
122 | 122 | ||
123 | if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>40) && (m.y<57) |
123 | if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>40) && (m.y<57) |
124 | { |
124 | { |
125 | IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),41,14,14,0xC7C7C7,0xFFFFFF); |
125 | IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),41,14,14,0xC7C7C7,0xFFFFFF); |
126 | WHILE (m.lkm==1) && (za_kadrom>0) |
126 | WHILE (m.lkm==1) && (za_kadrom>0) |
127 | { |
127 | { |
128 | Pause(10); |
128 | Pause(10); |
129 | za_kadrom--; |
129 | za_kadrom--; |
130 | List_ReDraw(); |
130 | List_ReDraw(); |
131 | m.get(); |
131 | m.get(); |
132 | } |
132 | } |
133 | DrawRegion_3D(onLeft(26,0),41,14,14,0xFFFFFF,0xC7C7C7); |
133 | DrawRegion_3D(onLeft(26,0),41,14,14,0xFFFFFF,0xC7C7C7); |
134 | } |
134 | } |
135 | 135 | ||
136 | if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>onTop(22,0)+1) && (m.y |
136 | if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>onTop(22,0)+1) && (m.y |
137 | { |
137 | { |
138 | IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xC7C7C7,0xFFFFFF); |
138 | IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xC7C7C7,0xFFFFFF); |
139 | while (m.lkm==1) && (za_kadrom |
139 | while (m.lkm==1) && (za_kadrom |
140 | { |
140 | { |
141 | Pause(10); |
141 | Pause(10); |
142 | za_kadrom++; |
142 | za_kadrom++; |
143 | List_ReDraw(); |
143 | List_ReDraw(); |
144 | m.get(); |
144 | m.get(); |
145 | } |
145 | } |
146 | DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xFFFFFF,0xC7C7C7); |
146 | DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xFFFFFF,0xC7C7C7); |
147 | } |
147 | } |
148 | 148 | ||
149 | //êîë¸ñèêî ìûøè |
149 | //êîë¸ñèêî ìûøè |
150 | IF (m.vert==65535) && (za_kadrom>0) |
150 | IF (m.vert==65535) && (za_kadrom>0) |
151 | { |
151 | { |
152 | if (za_kadrom>0) za_kadrom--; |
152 | if (za_kadrom>0) za_kadrom--; |
153 | if (curbtn |
153 | if (curbtn |
154 | List_ReDraw(); |
154 | List_ReDraw(); |
155 | if (za_kadrom>0) za_kadrom--; |
155 | if (za_kadrom>0) za_kadrom--; |
156 | if (curbtn |
156 | if (curbtn |
157 | List_ReDraw(); |
157 | List_ReDraw(); |
158 | } |
158 | } |
159 | IF (m.vert==1) && (za_kadrom |
159 | IF (m.vert==1) && (za_kadrom |
160 | { |
160 | { |
161 | if (za_kadrom |
161 | if (za_kadrom |
162 | if (curbtn>0) curbtn--; |
162 | if (curbtn>0) curbtn--; |
163 | List_ReDraw(); |
163 | List_ReDraw(); |
164 | if (za_kadrom |
164 | if (za_kadrom |
165 | if (curbtn>0) curbtn--; |
165 | if (curbtn>0) curbtn--; |
166 | List_ReDraw(); |
166 | List_ReDraw(); |
167 | } |
167 | } |
168 | //ñêðîëë |
168 | //ñêðîëë |
169 | if (!m.lkm) && (scroll_used) { scroll_used=NULL; TVScroll(); } |
169 | if (!m.lkm) && (scroll_used) { scroll_used=NULL; TVScroll(); } |
170 | if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>56) && (m.y |
170 | if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>56) && (m.y |
171 | 171 | ||
172 | if (scroll_used) |
172 | if (scroll_used) |
173 | { |
173 | { |
174 | IF (scroll_size/2+57>m.y) || (m.y<0) || (m.y>4000) m.y=scroll_size/2+57; //åñëè êóðñîð íàä îêíîì |
174 | IF (scroll_size/2+57>m.y) || (m.y<0) || (m.y>4000) m.y=scroll_size/2+57; //åñëè êóðñîð íàä îêíîì |
175 | id=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî |
175 | id=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî |
176 | j= scroll_size/2; |
176 | j= scroll_size/2; |
177 | za_kadrom = m.y -j -57 * count; |
177 | za_kadrom = m.y -j -57 * count; |
178 | za_kadrom /= onTop(22,57); |
178 | za_kadrom /= onTop(22,57); |
179 | IF (f_visible+za_kadrom>count) za_kadrom=count-f_visible; |
179 | IF (f_visible+za_kadrom>count) za_kadrom=count-f_visible; |
180 | IF (id<>za_kadrom) List_ReDraw(); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü |
180 | IF (id<>za_kadrom) List_ReDraw(); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü |
181 | } |
181 | } |
182 | break; |
182 | break; |
183 | //Button pressed----------------------------------------------------------------------------- |
183 | //Button pressed----------------------------------------------------------------------------- |
184 | case evButton: |
184 | case evButton: |
185 | id=GetButtonID(); |
185 | id=GetButtonID(); |
186 | IF (id==1) ExitProcess(); |
186 | IF (id==1) ExitProcess(); |
187 | 187 | ||
188 | IF (del_active) |
188 | IF (del_active) |
189 | { |
189 | { |
190 | IF (id==301) || (id==302) Del_File(302-id); |
190 | IF (id==301) || (id==302) Del_File(302-id); |
191 | break; |
191 | break; |
192 | } |
192 | } |
193 | switch(id) |
193 | switch(id) |
194 | { |
194 | { |
195 | case 21: //Back |
195 | case 21: //Back |
196 | GoBack(); |
196 | GoBack(); |
197 | break; |
197 | break; |
198 | case 22: //Forward |
198 | case 22: //Forward |
199 | if (HistoryPath(GO_FORWARD)) |
199 | if (HistoryPath(GO_FORWARD)) |
200 | { |
200 | { |
201 | za_kadrom=curbtn=NULL; //ââåðõ ñïèñêà |
201 | za_kadrom=curbtn=NULL; //ââåðõ ñïèñêà |
202 | Open_Dir(#path,WITH_REDRAW); |
202 | Open_Dir(#path,WITH_REDRAW); |
203 | } |
203 | } |
204 | break; |
204 | break; |
205 | case 23: //up! |
205 | case 23: //up! |
206 | Dir_Up(); |
206 | Dir_Up(); |
207 | break; |
207 | break; |
208 | case 24: //cut |
208 | case 24: //cut |
209 | key=24; |
209 | key=24; |
210 | case 25: //copy |
210 | case 25: //copy |
211 | goto CTRLC_MARK; |
211 | goto CTRLC_MARK; |
212 | case 26: //paste |
212 | case 26: //paste |
213 | Paste(); |
213 | Paste(); |
214 | break; |
214 | break; |
215 | case 27: //goto edit_path |
215 | case 27: //goto edit_path |
216 | Goto_edit_path(); |
216 | Goto_edit_path(); |
217 | break; |
217 | break; |
218 | case 31...33: //sort |
218 | case 31...33: //sort |
219 | IF(sort_num==1) DrawFilledBar(onLeft(192,168)/2+210,42,6,10); |
219 | IF(sort_num==1) DrawFilledBar(onLeft(192,168)/2+210,42,6,10); |
220 | IF(sort_num==2) DrawFilledBar(onLeft(115,0),42,6,10); |
220 | IF(sort_num==2) DrawFilledBar(onLeft(115,0),42,6,10); |
221 | IF(sort_num==3) DrawFilledBar(onLeft(44,0),42,6,10); |
221 | IF(sort_num==3) DrawFilledBar(onLeft(44,0),42,6,10); |
222 | sort_num=id-30; |
222 | sort_num=id-30; |
223 | Open_Dir(#path,1); |
223 | Open_Dir(#path,1); |
224 | break; |
224 | break; |
225 | case 30: //about |
225 | case 30: //about |
226 | CreateThread(#about_dialog,#stak); |
226 | CreateThread(#about_dialog,#stak); |
227 | break; |
227 | break; |
228 | case 77: |
228 | case 77: |
229 | IF (show_actions==1) show_actions=0; ELSE show_actions=1; |
229 | IF (show_actions==1) show_actions=0; ELSE show_actions=1; |
230 | DrawLeftPanel(); |
230 | DrawLeftPanel(); |
231 | break; |
231 | break; |
232 | case 78: //rescan devices |
232 | case 78: //rescan devices |
233 | Tip(56, "Devices", 78, "-"); |
233 | Tip(56, "Devices", 78, "-"); |
234 | Pause(10); |
234 | Pause(10); |
235 | GetSystemDiscs(); |
235 | GetSystemDiscs(); |
236 | Open_Dir(#path,WITH_REDRAW); |
236 | Open_Dir(#path,WITH_REDRAW); |
237 | DrawLeftPanel(); |
237 | DrawLeftPanel(); |
238 | break; |
238 | break; |
239 | case 80: //rename |
239 | case 80: //rename |
240 | goto REN_MARK; |
240 | goto REN_MARK; |
241 | case 81: //Delete file |
241 | case 81: //Delete file |
242 | Del_Form(); |
242 | Del_Form(); |
243 | break; |
243 | break; |
244 | case 82: //create folder |
244 | case 82: //create folder |
245 | NEW_FOLDER_MARK: |
245 | NEW_FOLDER_MARK: |
246 | copystr(#path, #temp); |
246 | copystr(#path, #temp); |
247 | copystr("New folder", #temp+strlen(#temp)); |
247 | copystr("New folder", #temp+strlen(#temp)); |
248 | CreateFolder(#temp); |
248 | CreateFolder(#temp); |
249 | IF (!EAX){ |
249 | IF (!EAX){ |
250 | SelectFile("New folder"); |
250 | SelectFile("New folder"); |
251 | goto REN_MARK; |
251 | goto REN_MARK; |
252 | } |
252 | } |
253 | ELSE |
253 | ELSE |
254 | { |
254 | { |
255 | Write_Error(EAX); |
255 | Write_Error(EAX); |
256 | ShowMessage("Folder can not be created."); |
256 | ShowMessage("Folder can not be created."); |
257 | } |
257 | } |
258 | break; |
258 | break; |
259 | case 100...120: |
259 | case 100...120: |
260 | DEVICE_MARK: |
260 | DEVICE_MARK: |
261 | DrawRegion_3D(17,id-100*16+74,159,16, 0, 0); //âûäåëåíèå |
261 | DrawRegion_3D(17,id-100*16+74,159,16, 0, 0); //âûäåëåíèå |
262 | copystr(#disk_list[id-100].Item, #path); |
262 | copystr(#disk_list[id-100].Item, #path); |
263 | za_kadrom=curbtn=0; |
263 | za_kadrom=curbtn=0; |
264 | Open_Dir(#path,1); |
264 | Open_Dir(#path,1); |
265 | Pause(5); |
265 | Pause(5); |
266 | DrawRegion_3D(17,id-100*16+74,159,16, 0xFFFFFF, 0xFFFFFF); |
266 | DrawRegion_3D(17,id-100*16+74,159,16, 0xFFFFFF, 0xFFFFFF); |
267 | break; |
267 | break; |
268 | case 130...160: |
268 | case 130...160: |
269 | tmp_disk_del_param[1]=disk_list[id-130].Item[4]; |
269 | tmp_disk_del_param[1]=disk_list[id-130].Item[4]; |
270 | RunProgram("/sys/tmpdisk", #tmp_disk_del_param); |
270 | RunProgram("/sys/tmpdisk", #tmp_disk_del_param); |
271 | Pause(10); |
271 | Pause(10); |
272 | GetSystemDiscs(); |
272 | GetSystemDiscs(); |
273 | Open_Dir(#path,WITH_REDRAW); |
273 | Open_Dir(#path,WITH_REDRAW); |
274 | DrawLeftPanel(); |
274 | DrawLeftPanel(); |
275 | break; |
275 | break; |
276 | default: |
276 | default: |
277 | if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ |
277 | if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ |
278 | if (curbtn!=id-201) {FileList_ReDraw(id-201-curbtn); break;} |
278 | if (curbtn!=id-201) {FileList_ReDraw(id-201-curbtn); break;} |
279 | else |
279 | else |
280 | OPEN_MARK: |
280 | OPEN_MARK: |
281 | if (!isdir) GetIni(0); else |
281 | if (!isdir) GetIni(0); else |
282 | if (!strcmp(#file_name,"..")) Dir_Up(); |
282 | if (!strcmp(#file_name,"..")) Dir_Up(); |
283 | else |
283 | else |
284 | { |
284 | { |
285 | OPEN_DEV: |
285 | OPEN_DEV: |
286 | copystr(#file_path, #path); |
286 | copystr(#file_path, #path); |
287 | IF (strcmp(#path+strlen(#path)-1,"/")<>0) copystr("/",#path+strlen(#path)); //åñëè íåò, + "/" |
287 | IF (strcmp(#path+strlen(#path)-1,"/")<>0) copystr("/",#path+strlen(#path)); //åñëè íåò, + "/" |
288 | za_kadrom=curbtn=0; |
288 | za_kadrom=curbtn=0; |
289 | Open_Dir(#path,1); |
289 | Open_Dir(#path,1); |
290 | } |
290 | } |
291 | } |
291 | } |
292 | break; |
292 | break; |
293 | //Key pressed----------------------------------------------------------------------------- |
293 | //Key pressed----------------------------------------------------------------------------- |
294 | case evKey: |
294 | case evKey: |
295 | key = GetKey(); |
295 | key = GetKey(); |
296 | if (Form.status_window>2) break; |
296 | if (Form.status_window>2) break; |
297 | IF (del_active) |
297 | IF (del_active) |
298 | { |
298 | { |
299 | IF (key==013) Del_File(true); |
299 | IF (key==013) Del_File(true); |
300 | IF (key==027) Del_File(false); |
300 | IF (key==027) Del_File(false); |
301 | break; |
301 | break; |
302 | } |
302 | } |
303 | IF (edit1.flags<>64) && (edit1.flags<>0) && (key<>13) |
303 | IF (edit1.flags<>64) && (edit1.flags<>0) && (key<>13) |
304 | { |
304 | { |
305 | EAX=key<<8; |
305 | EAX=key<<8; |
306 | edit_box_key stdcall (#edit1); |
306 | edit_box_key stdcall (#edit1); |
307 | break; |
307 | break; |
308 | } |
308 | } |
309 | IF (edit2.flags<>64) && (key<>13) && (key<>27) |
309 | IF (edit2.flags<>64) && (key<>13) && (key<>27) |
310 | { |
310 | { |
311 | EAX=key<<8; |
311 | EAX=key<<8; |
312 | edit_box_key stdcall (#edit2); |
312 | edit_box_key stdcall (#edit2); |
313 | break; |
313 | break; |
314 | } |
314 | } |
315 | switch (key) |
315 | switch (key) |
316 | { |
316 | { |
317 | case 209...217: |
317 | case 209...217: |
318 | id=key-110; |
318 | id=key-110; |
319 | IF (id-100>=disc_num) break; |
319 | IF (id-100>=disc_num) break; |
320 | GOTO DEVICE_MARK; |
320 | GOTO DEVICE_MARK; |
321 | case 8: //Íàçàä |
321 | case 8: //Íàçàä |
322 | //GoBack(); |
322 | //GoBack(); |
323 | Dir_Up(); |
323 | Dir_Up(); |
324 | break; |
324 | break; |
325 | case 004: //Ctrl+D ðèñ íà ðàá ñòîë ðàñòÿíóòü |
325 | case 004: //Ctrl+D ðèñ íà ðàá ñòîë ðàñòÿíóòü |
326 | copystr("\\S__", #temp); |
326 | copystr("\\S__", #temp); |
327 | copystr(#file_path, #temp+strlen(#temp)); |
327 | copystr(#file_path, #temp+strlen(#temp)); |
328 | RunProgram("/sys/media/kiv", #temp); |
328 | RunProgram("/sys/media/kiv", #temp); |
329 | break; |
329 | break; |
330 | case 014: //Ctrl+N íîâîå îêíî |
330 | case 014: //Ctrl+N íîâîå îêíî |
331 | IF (Form.left==98) MoveSize(Form.left-20,Form.top-20,OLD,OLD); |
331 | IF (Form.left==98) MoveSize(Form.left-20,Form.top-20,OLD,OLD); |
332 | RunProgram("/sys/File Managers/Eolite", #path); |
332 | RunProgram("/sys/File Managers/Eolite", #path); |
333 | break; |
333 | break; |
334 | case 024: //Ctrl+X |
334 | case 024: //Ctrl+X |
335 | case 003: //Ctrl+C |
335 | case 003: //Ctrl+C |
336 | CTRLC_MARK: |
336 | CTRLC_MARK: |
337 | IF (isdir) break; //ïàïêè ïîêà ÷òî êîïèðîâàòü íå óìååì |
337 | IF (isdir) break; //ïàïêè ïîêà ÷òî êîïèðîâàòü íå óìååì |
338 | copystr(#file_path,#copy_file); //âû÷èñëÿåì êàêîé ôàéë êîïèðîâàòü |
338 | copystr(#file_path,#copy_file); //âû÷èñëÿåì êàêîé ôàéë êîïèðîâàòü |
339 | IF (key==24) cut_active=1; ELSE cut_active=0; |
339 | IF (key==24) cut_active=1; ELSE cut_active=0; |
340 | break; |
340 | break; |
341 | case 022: //Ctrl+V |
341 | case 022: //Ctrl+V |
342 | Paste(); |
342 | Paste(); |
343 | break; |
343 | break; |
344 | case 027: //Esc |
344 | case 027: //Esc |
345 | IF (rename_active==1) ReName(false); |
345 | IF (rename_active==1) ReName(false); |
346 | break; |
346 | break; |
347 | case 013: //Enter |
347 | case 013: //Enter |
348 | IF (rename_active==1) {ReName(true); break;} |
348 | IF (rename_active==1) {ReName(true); break;} |
349 | IF (strcmp(#path,#edit_path)<>0) Goto_edit_path(); |
349 | IF (strcmp(#path,#edit_path)<>0) Goto_edit_path(); |
350 | ELSE GOTO OPEN_MARK; |
350 | ELSE GOTO OPEN_MARK; |
351 | break; |
351 | break; |
352 | case 55: //F6 - new folder |
352 | case 55: //F6 - new folder |
353 | goto NEW_FOLDER_MARK; |
353 | goto NEW_FOLDER_MARK; |
354 | case 56: //IF (rename_active==1) break;//up |
354 | case 56: //IF (rename_active==1) break;//up |
355 | case 178: //up |
355 | case 178: //up |
356 | FileList_ReDraw(-1); |
356 | FileList_ReDraw(-1); |
357 | break; |
357 | break; |
358 | case 177: //down |
358 | case 177: //down |
359 | FileList_ReDraw(1); |
359 | FileList_ReDraw(1); |
360 | break; |
360 | break; |
361 | case 180: //home |
361 | case 180: //home |
362 | za_kadrom=0; |
362 | za_kadrom=0; |
363 | curbtn=0; |
363 | curbtn=0; |
364 | List_ReDraw(); |
364 | List_ReDraw(); |
365 | break; |
365 | break; |
366 | case 181: //end |
366 | case 181: //end |
367 | za_kadrom=count-f_visible; |
367 | za_kadrom=count-f_visible; |
368 | curbtn=f_visible-1; |
368 | curbtn=f_visible-1; |
369 | List_ReDraw(); |
369 | List_ReDraw(); |
370 | break; |
370 | break; |
371 | case 183: //Page Down |
371 | case 183: //Page Down |
372 | FileList_ReDraw(f_visible-1); |
372 | FileList_ReDraw(f_visible-1); |
373 | break; |
373 | break; |
374 | case 184: //Page Up |
374 | case 184: //Page Up |
375 | FileList_ReDraw(-f_visible+1); |
375 | FileList_ReDraw(-f_visible+1); |
376 | break; |
376 | break; |
377 | case 051: //Íàæàòà F2 |
377 | case 051: //Íàæàòà F2 |
378 | REN_MARK: |
378 | REN_MARK: |
379 | DeleteButton(curbtn+201); //ýòî ÷òîá ìîæíî áûëî âûäåëÿòü ìûøüþ |
379 | DeleteButton(curbtn+201); //ýòî ÷òîá ìîæíî áûëî âûäåëÿòü ìûøüþ |
380 | edit2.flags=66; //äåëàåì êîìïîíåíò àêòèâíûì |
380 | edit2.flags=66; //äåëàåì êîìïîíåíò àêòèâíûì |
381 | edit2.width=onLeft(24,217); |
381 | edit2.width=onLeft(24,217); |
382 | edit2.top=curbtn*BUTTON_HEIGHT+59; |
382 | edit2.top=curbtn*BUTTON_HEIGHT+59; |
383 | edit2.size=edit2.pos=strlen(#file_name); |
383 | edit2.size=edit2.pos=strlen(#file_name); |
384 | edit_box_draw stdcall (#edit2); |
384 | edit_box_draw stdcall (#edit2); |
385 | DrawBar(213,curbtn*BUTTON_HEIGHT+58,edit2.width+1,1,0xFFFFCC); //ïîëîñà æåëòàÿ ñâåðõó äëÿ îäèíàêîâîñòè |
385 | DrawBar(213,curbtn*BUTTON_HEIGHT+58,edit2.width+1,1,0xFFFFCC); //ïîëîñà æåëòàÿ ñâåðõó äëÿ îäèíàêîâîñòè |
386 | rename_active=1; |
386 | rename_active=1; |
387 | break; |
387 | break; |
388 | case 052: //Íàæàòà F3 |
388 | case 052: //Íàæàòà F3 |
389 | IF (!isdir) RunProgram("/sys/tinypad", #file_path); |
389 | IF (!isdir) RunProgram("/sys/tinypad", #file_path); |
390 | break; |
390 | break; |
391 | case 053: //Íàæàòà F4 |
391 | case 053: //Íàæàòà F4 |
392 | IF (!isdir) RunProgram("/sys/develop/heed", #file_path); |
392 | IF (!isdir) RunProgram("/sys/develop/heed", #file_path); |
393 | break; |
393 | break; |
394 | case 054: //F5 |
394 | case 054: //F5 |
395 | Open_Dir(#path,1); |
395 | Open_Dir(#path,1); |
396 | break; |
396 | break; |
397 | case 182: //delete file |
397 | case 182: //delete file |
398 | Del_Form(); |
398 | Del_Form(); |
399 | break; |
399 | break; |
400 | default: |
400 | default: |
401 | for (i=curbtn+za_kadrom+1; i |
401 | for (i=curbtn+za_kadrom+1; i |
402 | { |
402 | { |
403 | copystr(file_mas[i]*304+buf+72,#temp); |
403 | copystr(file_mas[i]*304+buf+72,#temp); |
404 | IF (temp[0]==key) || (temp[0]==key-32) |
404 | IF (temp[0]==key) || (temp[0]==key-32) |
405 | { |
405 | { |
406 | FileList_ReDraw(i-curbtn-za_kadrom); |
406 | FileList_ReDraw(i-curbtn-za_kadrom); |
407 | break; |
407 | break; |
408 | } |
408 | } |
409 | } |
409 | } |
410 | } |
410 | } |
411 | break; |
411 | break; |
412 | case evReDraw: |
412 | case evReDraw: |
413 | draw_window(); |
413 | draw_window(); |
414 | } |
414 | } |
415 | } |
415 | } |
416 | 416 | ||
417 | 417 | ||
418 | inline fastcall void draw_window() |
418 | inline fastcall void draw_window() |
419 | { |
419 | { |
420 | int min_size_y = disc_num*16+195; |
420 | int min_size_y = disc_num*16+195; |
421 | 421 | ||
422 | if (GetScreenHeight()<480) |
422 | if (GetScreenHeight()<480) |
423 | DefineAndDrawWindow(20,0,582,GetScreenHeight()-30,0x73,col_work,title); |
423 | DefineAndDrawWindow(20,0,582,GetScreenHeight()-30,0x73,col_work,title); |
424 | else |
424 | else |
425 | DefineAndDrawWindow(98,90,582,482,0x73,col_work,title); |
425 | DefineAndDrawWindow(98,90,582,482,0x73,col_work,title); |
426 | GetProcessInfo(#Form, SelfInfo); |
426 | GetProcessInfo(#Form, SelfInfo); |
427 | if (Form.status_window>2) return; |
427 | if (Form.status_window>2) return; |
428 | if (Form.height |
428 | if (Form.height |
429 | if (Form.width<480) MoveSize(OLD,OLD,480,OLD); |
429 | if (Form.width<480) MoveSize(OLD,OLD,480,OLD); |
430 | 430 | ||
431 | //toolbar buttons |
431 | //toolbar buttons |
432 | PutPaletteImage(#toolbar,246,34,0,0,#toolbar_pal); |
432 | PutPaletteImage(#toolbar,246,34,0,0,#toolbar_pal); |
433 | for (j=0; j<3; j++) DefineButton(toolbar_buttons_x[j]+2,5+2,31-5,29-5,21+j+BT_HIDE,col_work); |
433 | for (j=0; j<3; j++) DefineButton(toolbar_buttons_x[j]+2,5+2,31-5,29-5,21+j+BT_HIDE,col_work); |
434 | for (j=3; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,col_work); |
434 | for (j=3; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,col_work); |
435 | //ïîëîñà àäðåñà |
435 | //ïîëîñà àäðåñà |
436 | edit1.width=Form.width-314; |
436 | edit1.width=Form.width-314; |
437 | DrawBar(246,0,onLeft(246,60),12, col_work); //ôîí íàä ïîëîñîé àäðåñà |
437 | DrawBar(246,0,onLeft(246,60),12, col_work); //ôîí íàä ïîëîñîé àäðåñà |
438 | DrawBar(246,29,onLeft(246,60),5,col_work); //ôîí ïîä ïîëîñîé àäðåñà |
438 | DrawBar(246,29,onLeft(246,60),5,col_work); //ôîí ïîä ïîëîñîé àäðåñà |
439 | DrawRegion_3D(246,12,onLeft(66,246),16,col_border,col_border); //îáîäîê |
439 | DrawRegion_3D(246,12,onLeft(66,246),16,col_border,col_border); //îáîäîê |
440 | DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,col_work); //about |
440 | DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,col_work); //about |
441 | DefineButton(onLeft(65,0),13,16,14,27+BT_HIDE,col_work); //êíîïêà ïåðåõîäà |
441 | DefineButton(onLeft(65,0),13,16,14,27+BT_HIDE,col_work); //êíîïêà ïåðåõîäà |
442 | PutPaletteImage(#goto_about,56,34,Form.width-65,0,#goto_about_pal); |
442 | PutPaletteImage(#goto_about,56,34,Form.width-65,0,#goto_about_pal); |
443 | //ïðÿìîóãîëüíèêè âíóòðè |
443 | //ïðÿìîóãîëüíèêè âíóòðè |
444 | DrawRegion_3D(1,40,Form.cwidth-3,onTop(46,0),col_border,col_border); //ñèíèé îáîäîê |
444 | DrawRegion_3D(1,40,Form.cwidth-3,onTop(46,0),col_border,col_border); //ñèíèé îáîäîê |
445 | DrawRegion_3D(0,39,Form.cwidth-1,onTop(44,0),col_palette[4],col_palette[4]); //ôîí |
445 | DrawRegion_3D(0,39,Form.cwidth-1,onTop(44,0),col_palette[4],col_palette[4]); //ôîí |
446 | for (i=0; i<5; i++) DrawBar(0, 34+i, Form.cwidth, 1, col_palette[8-i]); |
446 | for (i=0; i<5; i++) DrawBar(0, 34+i, Form.cwidth, 1, col_palette[8-i]); |
447 | DrawLeftPanel(); |
447 | DrawLeftPanel(); |
448 | //SortButtons |
448 | //SortButtons |
449 | DrawFlatButton(192,40,onLeft(192,168),16,31,col_work,"File"); |
449 | DrawFlatButton(192,40,onLeft(192,168),16,31,col_work,"File"); |
450 | DrawFlatButton(onLeft(168,0),40,73,16,32,col_work,"Type"); |
450 | DrawFlatButton(onLeft(168,0),40,73,16,32,col_work,"Type"); |
451 | DrawFlatButton(onLeft(95,0),40,68,16,33,col_work,"Size"); |
451 | DrawFlatButton(onLeft(95,0),40,68,16,33,col_work,"Size"); |
452 | //Ïåðåðèñîâûâàåì ñïèñîê |
452 | //Ïåðåðèñîâûâàåì ñïèñîê |
453 | Open_Dir(#path,ONLY_SHOW); |
453 | Open_Dir(#path,ONLY_SHOW); |
454 | //ïðîêðóòêà |
454 | //ïðîêðóòêà |
455 | DrawBar(onLeft(27,0),57,1,onTop(22,57),col_border); //ëèíèÿ ñëåâà îò ïðîêðóòêè |
455 | DrawBar(onLeft(27,0),57,1,onTop(22,57),col_border); //ëèíèÿ ñëåâà îò ïðîêðóòêè |
456 | DrawFlatButton(onLeft(27,0),40,16,16,0,col_work,"\x18"); //ïðîêðóòêà ââåðõ |
456 | DrawFlatButton(onLeft(27,0),40,16,16,0,col_work,"\x18"); //ïðîêðóòêà ââåðõ |
457 | DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,col_work,"\x19");//ïðîêðóòêà âíèç |
457 | DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,col_work,"\x19");//ïðîêðóòêà âíèç |
458 | if (del_active) Del_Form(); |
458 | if (del_active) Del_Form(); |
459 | } |
459 | } |
460 | 460 | ||
461 | 461 | ||
462 | void KEdit() |
462 | void KEdit() |
463 | { |
463 | { |
464 | edit1.size=edit1.pos=strlen(#edit_path); |
464 | edit1.size=edit1.pos=strlen(#edit_path); |
465 | edit1.offset=0; |
465 | edit1.offset=0; |
466 | edit_box_draw stdcall (#edit1); |
466 | edit_box_draw stdcall (#edit1); |
467 | } |
467 | } |
468 | 468 | ||
469 | 469 | ||
470 | void FileList_ReDraw(int curbtn_) |
470 | void FileList_ReDraw(int curbtn_) |
471 | { |
471 | { |
472 | if (curbtn_<=0) //ââåðõ |
472 | if (curbtn_<=0) //ââåðõ |
473 | { |
473 | { |
474 | IF (za_kadrom==0) && (curbtn<=0) return; |
474 | IF (za_kadrom==0) && (curbtn<=0) return; |
475 | IF (-curbtn_-1 |
475 | IF (-curbtn_-1 |
476 | { |
476 | { |
477 | Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà |
477 | Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà |
478 | curbtn+=curbtn_; |
478 | curbtn+=curbtn_; |
479 | Line_ReDraw(col_selec, curbtn); //âûäåëåíèå |
479 | Line_ReDraw(col_selec, curbtn); //âûäåëåíèå |
480 | return; |
480 | return; |
481 | } |
481 | } |
482 | ELSE |
482 | ELSE |
483 | { |
483 | { |
484 | IF (-curbtn_ |
484 | IF (-curbtn_ |
485 | curbtn=0; |
485 | curbtn=0; |
486 | List_ReDraw(); |
486 | List_ReDraw(); |
487 | return; |
487 | return; |
488 | } |
488 | } |
489 | } |
489 | } |
490 | else //âíèç |
490 | else //âíèç |
491 | { |
491 | { |
492 | IF (za_kadrom==count-f_visible) && (curbtn==f_visible-1) return; |
492 | IF (za_kadrom==count-f_visible) && (curbtn==f_visible-1) return; |
493 | IF (f_visible-curbtn>curbtn_) |
493 | IF (f_visible-curbtn>curbtn_) |
494 | { |
494 | { |
495 | Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà |
495 | Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà |
496 | curbtn+=curbtn_; |
496 | curbtn+=curbtn_; |
497 | Line_ReDraw(col_selec, curbtn); //âûäåëåíèå |
497 | Line_ReDraw(col_selec, curbtn); //âûäåëåíèå |
498 | return; |
498 | return; |
499 | } |
499 | } |
500 | else |
500 | else |
501 | { |
501 | { |
502 | IF(za_kadrom+curbtn+curbtn_>=count) |
502 | IF(za_kadrom+curbtn+curbtn_>=count) |
503 | { |
503 | { |
504 | za_kadrom=count-f_visible; |
504 | za_kadrom=count-f_visible; |
505 | curbtn=curbtn_-za_kadrom+curbtn; |
505 | curbtn=curbtn_-za_kadrom+curbtn; |
506 | } |
506 | } |
507 | ELSE |
507 | ELSE |
508 | { |
508 | { |
509 | za_kadrom+=curbtn_+curbtn-f_visible+1; |
509 | za_kadrom+=curbtn_+curbtn-f_visible+1; |
510 | curbtn=f_visible-1; |
510 | curbtn=f_visible-1; |
511 | } |
511 | } |
512 | 512 | ||
513 | IF (curbtn<0) || (curbtn>f_visible) |
513 | IF (curbtn<0) || (curbtn>f_visible) |
514 | { |
514 | { |
515 | curbtn=f_visible-1; |
515 | curbtn=f_visible-1; |
516 | } |
516 | } |
517 | List_ReDraw(); |
517 | List_ReDraw(); |
518 | } |
518 | } |
519 | } |
519 | } |
520 | } |
520 | } |
521 | 521 | ||
522 | 522 | ||
523 | 523 | ||
524 | 524 | ||
525 | void List_ReDraw() |
525 | void List_ReDraw() |
526 | { |
526 | { |
527 | int paint_x=f_visible*BUTTON_HEIGHT+57; |
527 | int paint_x=f_visible*BUTTON_HEIGHT+57; |
528 | IF (count-za_kadrom |
528 | IF (count-za_kadrom |
529 | { za_kadrom=count-f_visible; curbtn=f_visible-1; } //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì |
529 | { za_kadrom=count-f_visible; curbtn=f_visible-1; } //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì |
530 | 530 | ||
531 | FOR (j=0; j |
531 | FOR (j=0; j |
532 | DrawBar(192,paint_x,onLeft(27,192),onTop(paint_x,6),0xFFFFFF); //çàëèâêà áåëûì äîêîíöà |
532 | DrawBar(192,paint_x,onLeft(27,192),onTop(paint_x,6),0xFFFFFF); //çàëèâêà áåëûì äîêîíöà |
533 | DrawBar(onLeft(168,0),paint_x,1,onTop(paint_x,6),col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1 |
533 | DrawBar(onLeft(168,0),paint_x,1,onTop(paint_x,6),col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1 |
534 | DrawBar(onLeft(95,0),paint_x,1,onTop(paint_x,6),col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2 |
534 | DrawBar(onLeft(95,0),paint_x,1,onTop(paint_x,6),col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2 |
535 | TVScroll(); |
535 | TVScroll(); |
536 | } |
536 | } |
537 | 537 | ||
538 | 538 | ||
539 | void Line_ReDraw(dword color, filenum){ |
539 | void Line_ReDraw(dword color, filenum){ |
540 | dword text_col=0, name_len, |
540 | dword text_col=0, name_len, |
541 | y=filenum*BUTTON_HEIGHT+57; //ïîëîæåíèå òåêñòà ïî Y |
541 | y=filenum*BUTTON_HEIGHT+57; //ïîëîæåíèå òåêñòà ïî Y |
542 | IF (rename_active==1) ReName(false); |
542 | IF (rename_active==1) ReName(false); |
543 | DefineButton(192,y,onLeft(28,192),BUTTON_HEIGHT,201+filenum+BT_HIDE+BT_NOFRAME,color); //êíîïà |
543 | DefineButton(192,y,onLeft(28,192),BUTTON_HEIGHT,201+filenum+BT_HIDE+BT_NOFRAME,color); //êíîïà |
544 | //äà, ÿ íå ñïîðþ ÷òî èçâðàò, íî çàòî ïåðåðèñîâêè íå âèäíî |
544 | //äà, ÿ íå ñïîðþ ÷òî èçâðàò, íî çàòî ïåðåðèñîâêè íå âèäíî |
545 | DrawBar(192,y,3,BUTTON_HEIGHT,color); |
545 | DrawBar(192,y,3,BUTTON_HEIGHT,color); |
546 | DrawBar(192+19,y,onLeft(46,192),BUTTON_HEIGHT,color); DrawBar(195,y+17,16,1,color); |
546 | DrawBar(192+19,y,onLeft(46,192),BUTTON_HEIGHT,color); DrawBar(195,y+17,16,1,color); |
547 | if (BUTTON_HEIGHT>18) DrawBar(195,y+18,16,BUTTON_HEIGHT-18,color); |
547 | if (BUTTON_HEIGHT>18) DrawBar(195,y+18,16,BUTTON_HEIGHT-18,color); |
548 | if (BUTTON_HEIGHT>15) DrawBar(195,y,16,BUTTON_HEIGHT-15,color); |
548 | if (BUTTON_HEIGHT>15) DrawBar(195,y,16,BUTTON_HEIGHT-15,color); |
549 | 549 | ||
550 | off=file_mas[filenum+za_kadrom]*304 + buf+72; |
550 | off=file_mas[filenum+za_kadrom]*304 + buf+72; |
551 | 551 | ||
552 | if (!TestBit(ESDWORD[off-40], 4)) //ýòî ÔÀÉË èëè ïàïêà? |
552 | if (!TestBit(ESDWORD[off-40], 4)) //ýòî ÔÀÉË èëè ïàïêà? |
553 | { |
553 | { |
554 | copystr(off,#temp); |
554 | copystr(off,#temp); |
555 | Put_icon(#temp+strchr(#temp,'.'), BUTTON_HEIGHT/2-7+y, color); |
555 | Put_icon(#temp+strchr(#temp,'.'), BUTTON_HEIGHT/2-7+y, color); |
556 | WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),BUTTON_HEIGHT-6/2+y,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size |
556 | WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),BUTTON_HEIGHT-6/2+y,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size |
557 | } |
557 | } |
558 | else |
558 | else |
559 | if (!strcmp("..",off)) |
559 | if (!strcmp("..",off)) |
560 | Put_icon("..", BUTTON_HEIGHT/2-7+y, color); |
560 | Put_icon("..", BUTTON_HEIGHT/2-7+y, color); |
561 | else |
561 | else |
562 | Put_icon(" |
562 | Put_icon(" |
563 | 563 | ||
564 | if (TestBit(ESDWORD[off-40],1)) || (TestBit(ESDWORD[off-40],2)) text_col=0xA6A6B7; //ôàéë ñêðûòûé èëè ñèñòåìíûé? |
564 | if (TestBit(ESDWORD[off-40],1)) || (TestBit(ESDWORD[off-40],2)) text_col=0xA6A6B7; //ôàéë ñêðûòûé èëè ñèñòåìíûé? |
565 | 565 | ||
566 | if (color<>0xFFFfff) |
566 | if (color<>0xFFFfff) |
567 | { |
567 | { |
568 | isdir=TestBit(ESDWORD[off-40], 4); |
568 | isdir=TestBit(ESDWORD[off-40], 4); |
569 | 569 | ||
570 | copystr(off,#file_name); |
570 | copystr(off,#file_name); |
571 | copystr(#path,#file_path); |
571 | copystr(#path,#file_path); |
572 | copystr(#file_name,#file_path+strlen(#file_path)); //ïîëíûé ïóòü ê ôàéëó |
572 | copystr(#file_name,#file_path+strlen(#file_path)); //ïîëíûé ïóòü ê ôàéëó |
573 | IF (text_col==0xA6A6B7) text_col=0xFFFFFF; |
573 | IF (text_col==0xA6A6B7) text_col=0xFFFFFF; |
574 | } |
574 | } |
575 | name_len = onLeft(215,165)/6; |
575 | name_len = onLeft(215,165)/6; |
576 | IF (strlen(off) |
576 | IF (strlen(off) |
577 | WriteText(215,BUTTON_HEIGHT-6/2+y,0,text_col,off,name_len); //èìÿ ôàéëà |
577 | WriteText(215,BUTTON_HEIGHT-6/2+y,0,text_col,off,name_len); //èìÿ ôàéëà |
578 | DrawBar(onLeft(168,0),y,1,BUTTON_HEIGHT,col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1 |
578 | DrawBar(onLeft(168,0),y,1,BUTTON_HEIGHT,col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1 |
579 | DrawBar(onLeft(95,0),y,1,BUTTON_HEIGHT,col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2 |
579 | DrawBar(onLeft(95,0),y,1,BUTTON_HEIGHT,col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2 |
580 | } |
580 | } |
581 | 581 | ||
582 | 582 | ||
583 | void Open_Dir(dword temp_, redraw){ |
583 | void Open_Dir(dword temp_, redraw){ |
584 | int errornum; |
584 | int errornum; |
585 | char path_[4096], |
585 | char path_[4096], |
586 | somelen=strlen(temp_)-1; |
586 | somelen=strlen(temp_)-1; |
587 | 587 | ||
588 | if (redraw<>ONLY_SHOW) |
588 | if (redraw<>ONLY_SHOW) |
589 | { |
589 | { |
590 | copystr(temp_, #path_); |
590 | copystr(temp_, #path_); |
591 | if (somelen) path_[somelen]=NULL; |
591 | if (somelen) path_[somelen]=NULL; |
592 | 592 | ||
593 | if (buf) free(buf); |
593 | if (buf) free(buf); |
594 | buf = malloc(32); |
594 | buf = malloc(32); |
595 | errornum=ReadDir(0, buf, #path_); |
595 | errornum=ReadDir(0, buf, #path_); |
596 | if (errornum<>0) //îøèáêà ïðè ÷òåíèè ïàïêè |
596 | if (errornum<>0) //îøèáêà ïðè ÷òåíèè ïàïêè |
597 | { |
597 | { |
598 | HistoryPath(ADD_NEW_PATH); |
598 | HistoryPath(ADD_NEW_PATH); |
599 | GoBack(); |
599 | GoBack(); |
600 | Write_Error(errornum); |
600 | Write_Error(errornum); |
601 | return; |
601 | return; |
602 | } |
602 | } |
603 | count = ESDWORD[buf+8]; |
603 | count = ESDWORD[buf+8]; |
604 | buf = realloc(count * 304 + 32, buf); //ïî÷åìó 32? |
604 | buf = realloc(count * 304 + 32, buf); //ïî÷åìó 32? |
605 | ReadDir(count, buf, #path_); |
605 | ReadDir(count, buf, #path_); |
606 | IF (EBX>6897) && (EBX<>-1) EBX=6897; //1 íà óäà÷ó ;) |
606 | IF (EBX>6897) && (EBX<>-1) EBX=6897; //1 íà óäà÷ó ;) |
607 | count=EBX; |
607 | count=EBX; |
608 | } |
608 | } |
609 | if (count<>-1) |
609 | if (count<>-1) |
610 | { |
610 | { |
611 | //debug("successfully \n"); |
611 | //debug("successfully \n"); |
612 | copystr(temp_,#edit_path); |
612 | copystr(temp_,#edit_path); |
613 | KEdit(); |
613 | KEdit(); |
614 | HistoryPath(ADD_NEW_PATH); |
614 | HistoryPath(ADD_NEW_PATH); |
615 | IF (!strcmp(".",buf+72)) {count--; memmov(buf,buf+304,count*304);} //ôèëüòðóåì ýëåìåíò "." |
615 | IF (!strcmp(".",buf+72)) {count--; memmov(buf,buf+304,count*304);} //ôèëüòðóåì ýëåìåíò "." |
616 | FOR (j=0;j |
616 | FOR (j=0;j |
617 | f_visible=onTop(6,57)/BUTTON_HEIGHT; |
617 | f_visible=onTop(6,57)/BUTTON_HEIGHT; |
618 | IF (count |
618 | IF (count |
619 | //ñòðåëî÷êà ñîðòèðîâêè |
619 | //ñòðåëî÷êà ñîðòèðîâêè |
620 | IF (sort_num==1) WriteText(Form.width+60/2,45,0x80,0x4E78AC,"\x19",0); |
620 | IF (sort_num==1) WriteText(Form.width+60/2,45,0x80,0x4E78AC,"\x19",0); |
621 | IF (sort_num==2) WriteText(Form.width-115,45,0x80,0x4E78AC,"\x19",0); |
621 | IF (sort_num==2) WriteText(Form.width-115,45,0x80,0x4E78AC,"\x19",0); |
622 | IF (sort_num==3) WriteText(Form.width-44,45,0x80,0x4E78AC,"\x19",0); |
622 | IF (sort_num==3) WriteText(Form.width-44,45,0x80,0x4E78AC,"\x19",0); |
623 | IF (redraw<>ONLY_SHOW) Sorting(); //äëÿ áîëüøèõ ïàïîê ïðè ðåïåèíòå îêíà |
623 | IF (redraw<>ONLY_SHOW) Sorting(); //äëÿ áîëüøèõ ïàïîê ïðè ðåïåèíòå îêíà |
624 | IF (redraw<>ONLY_OPEN) List_ReDraw(); |
624 | IF (redraw<>ONLY_OPEN) List_ReDraw(); |
625 | } |
625 | } |
626 | IF (count==-1) && (redraw<>ONLY_OPEN) {f_visible=count=0; List_ReDraw();} |
626 | IF (count==-1) && (redraw<>ONLY_OPEN) {f_visible=count=0; List_ReDraw();} |
627 | } |
627 | } |
628 | 628 | ||
629 | 629 | ||
630 | 630 | ||
631 | inline Sorting() |
631 | inline Sorting() |
632 | { |
632 | { |
633 | dword k=0, l=1; |
633 | dword k=0, l=1; |
634 | if (!strcmp(#path,"/")) //íå ñîðòèðîâàòü ïàïêè è íå ìåíÿòü ðåãèñòð â "/" |
634 | if (!strcmp(#path,"/")) //íå ñîðòèðîâàòü ïàïêè è íå ìåíÿòü ðåãèñòð â "/" |
635 | { |
635 | { |
636 | FOR(k=1;k |
636 | FOR(k=1;k |
637 | return; |
637 | return; |
638 | } |
638 | } |
639 | FOR (j=count-1, off=count-1*304+buf+32; j>=0; j--, off-=304;) //ïàïêè ââåðõ, ôàéëû âíèç |
639 | FOR (j=count-1, off=count-1*304+buf+32; j>=0; j--, off-=304;) //ïàïêè ââåðõ, ôàéëû âíèç |
640 | { |
640 | { |
641 | TitleCase(off+40); |
641 | TitleCase(off+40); |
642 | if (TestBit(ESDWORD[off],4)) //ïàïêà? |
642 | if (TestBit(ESDWORD[off],4)) //ïàïêà? |
643 | { |
643 | { |
644 | file_mas[k]=j; |
644 | file_mas[k]=j; |
645 | k++; |
645 | k++; |
646 | } |
646 | } |
647 | else |
647 | else |
648 | { |
648 | { |
649 | file_mas[count-l]=j; |
649 | file_mas[count-l]=j; |
650 | l++; |
650 | l++; |
651 | } |
651 | } |
652 | } |
652 | } |
653 | //Ñîáñòâåííî ñîðòèðîâêà: âíà÷àëå ïàïêè, ïîòîì ôàéëû |
653 | //Ñîáñòâåííî ñîðòèðîâêà: âíà÷àëå ïàïêè, ïîòîì ôàéëû |
654 | Sort_by_Name(0,k-1); |
654 | Sort_by_Name(0,k-1); |
655 | IF (sort_num==1) Sort_by_Name(k,count-1); |
655 | IF (sort_num==1) Sort_by_Name(k,count-1); |
656 | IF (sort_num==2) Sort_by_Type(k,count-1); |
656 | IF (sort_num==2) Sort_by_Type(k,count-1); |
657 | IF (sort_num==3) Sort_by_Size(k,count-1); |
657 | IF (sort_num==3) Sort_by_Size(k,count-1); |
658 | //åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà |
658 | //åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà |
659 | IF (k>0) && (strcmp(file_mas[0]*304+buf+72,"..")<>0) FOR(k--; k>0; k--;) IF (!strcmp(file_mas[k]*304+buf+72,"..")) file_mas[k]> |
659 | IF (k>0) && (strcmp(file_mas[0]*304+buf+72,"..")<>0) FOR(k--; k>0; k--;) IF (!strcmp(file_mas[k]*304+buf+72,"..")) file_mas[k]> |
660 | } |
660 | } |
661 | 661 | ||
662 | 662 | ||
663 | void Del_Form() |
663 | void Del_Form() |
664 | { |
664 | { |
665 | int dform_x=Form.width/2-13; |
665 | int dform_x=Form.width/2-13; |
666 | //òèïà îêíî |
666 | //òèïà îêíî |
667 | FOR (i=5;i<11;i++) DeleteButton(201+i); //óäàëÿåì êíîïêè ïîä ôîðìîé |
667 | FOR (i=5;i<11;i++) DeleteButton(201+i); //óäàëÿåì êíîïêè ïîä ôîðìîé |
668 | DrawFlatButton(dform_x,160,200,80,0,col_work, ""); //ôîðìà |
668 | DrawFlatButton(dform_x,160,200,80,0,col_work, ""); //ôîðìà |
669 | WriteText(dform_x+19,175,0x80,0,"Do you really want to delete",0); |
669 | WriteText(dform_x+19,175,0x80,0,"Do you really want to delete",0); |
670 | IF (strlen(#file_name)<28) |
670 | IF (strlen(#file_name)<28) |
671 | { |
671 | { |
672 | WriteText(strlen(#file_name)*6+dform_x+20,190,0x80,0,"?",0); |
672 | WriteText(strlen(#file_name)*6+dform_x+20,190,0x80,0,"?",0); |
673 | WriteText(dform_x+20,190,0x80,0,#file_name,0); //ïèøåì èìÿ |
673 | WriteText(dform_x+20,190,0x80,0,#file_name,0); //ïèøåì èìÿ |
674 | } |
674 | } |
675 | ELSE |
675 | ELSE |
676 | { |
676 | { |
677 | WriteText(164+dform_x,190,0x80,0,"...?",0); |
677 | WriteText(164+dform_x,190,0x80,0,"...?",0); |
678 | WriteText(dform_x+20,190,0,0,#file_name,24); //ïèøåì èìÿ |
678 | WriteText(dform_x+20,190,0,0,#file_name,24); //ïèøåì èìÿ |
679 | } |
679 | } |
680 | //êíîïî÷êè |
680 | //êíîïî÷êè |
681 | DrawFlatButton(dform_x+20,208,70,20,301,0xFFB6B5,"Yes"); |
681 | DrawFlatButton(dform_x+20,208,70,20,301,0xFFB6B5,"Yes"); |
682 | DrawFlatButton(dform_x+111,208,70,20,302,0xC6DFC6,"No"); |
682 | DrawFlatButton(dform_x+111,208,70,20,302,0xC6DFC6,"No"); |
683 | del_active=1; |
683 | del_active=1; |
684 | } |
684 | } |
685 | 685 | ||
686 | 686 | ||
687 | void Del_File(byte dodel) |
687 | void Del_File(byte dodel) |
688 | { |
688 | { |
689 | int del_file_rez; |
689 | int del_file_rez; |
690 | IF (dodel==true) |
690 | IF (dodel==true) |
691 | { |
691 | { |
692 | del_file_rez=DeleleFile(#file_path); |
692 | del_file_rez=DeleleFile(#file_path); |
693 | IF (del_file_rez<>0) |
693 | IF (del_file_rez<>0) |
694 | { |
694 | { |
695 | Write_Error(del_file_rez); |
695 | Write_Error(del_file_rez); |
696 | IF ( isdir) ShowMessage("Error. Folder isn't empty."); |
696 | IF ( isdir) ShowMessage("Error. Folder isn't empty."); |
697 | IF (!isdir) ShowMessage("Error. Filesystem read-only."); |
697 | IF (!isdir) ShowMessage("Error. Filesystem read-only."); |
698 | } |
698 | } |
699 | } |
699 | } |
700 | del_active=0; |
700 | del_active=0; |
701 | DeleteButton(301); DeleteButton(302); //óäàëÿåì êíîïî÷êè Yes/No |
701 | DeleteButton(301); DeleteButton(302); //óäàëÿåì êíîïî÷êè Yes/No |
702 | Open_Dir(#path,1); |
702 | Open_Dir(#path,1); |
703 | } |
703 | } |
704 | 704 | ||
705 | void Paste() |
705 | void Paste() |
706 | { |
706 | { |
707 | char new_copy_path[4096]; |
707 | char new_copy_path[4096]; |
708 | int copy_rezult; |
708 | int copy_rezult; |
709 | 709 | ||
710 | IF (!copy_file) return; //îòìåíà, åøè åù¸ íè÷¸ íå ñêîïèðîâàëè |
710 | IF (!copy_file) return; //îòìåíà, åøè åù¸ íè÷¸ íå ñêîïèðîâàëè |
711 | copystr(#path,#new_copy_path); |
711 | copystr(#path,#new_copy_path); |
712 | copystr(#copy_file+strchr(#copy_file,'/'),#new_copy_path+strlen(#new_copy_path)); |
712 | copystr(#copy_file+strchr(#copy_file,'/'),#new_copy_path+strlen(#new_copy_path)); |
713 | if (!strcmp(#copy_file,#new_copy_path)) //åñëè ìû êîïèðóåì è âñòàâëÿåì â îäíîé è òîé æå ïàïêå |
713 | if (!strcmp(#copy_file,#new_copy_path)) //åñëè ìû êîïèðóåì è âñòàâëÿåì â îäíîé è òîé æå ïàïêå |
714 | { |
714 | { |
715 | copystr(#path,#new_copy_path); |
715 | copystr(#path,#new_copy_path); |
716 | copystr("new_",#new_copy_path+strlen(#new_copy_path)); |
716 | copystr("new_",#new_copy_path+strlen(#new_copy_path)); |
717 | copystr(#copy_file+strchr(#copy_file,'/'),#new_copy_path+strlen(#new_copy_path)); |
717 | copystr(#copy_file+strchr(#copy_file,'/'),#new_copy_path+strlen(#new_copy_path)); |
718 | } |
718 | } |
719 | copy_rezult=CopyFile(#copy_file,#new_copy_path); |
719 | copy_rezult=CopyFile(#copy_file,#new_copy_path); |
720 | IF (copy_rezult<>0) //îøèáêà |
720 | IF (copy_rezult<>0) //îøèáêà |
721 | { |
721 | { |
722 | Write_Error(copy_rezult); |
722 | Write_Error(copy_rezult); |
723 | DrawFlatButton(Form.width/2-13,160,200,80,0,0xFFB6B5, "Error. You can't paste here."); |
723 | DrawFlatButton(Form.width/2-13,160,200,80,0,0xFFB6B5, "Error. You can't paste here."); |
724 | Pause(150); |
724 | Pause(150); |
725 | } |
725 | } |
726 | IF (cut_active) //åñëè ìû âûáðàëè âûðåçàòü |
726 | IF (cut_active) //åñëè ìû âûáðàëè âûðåçàòü |
727 | { |
727 | { |
728 | copystr(#copy_file,#file_path); |
728 | copystr(#copy_file,#file_path); |
729 | Del_File(true); |
729 | Del_File(true); |
730 | copy_file=NULL; |
730 | copy_file=NULL; |
731 | cut_active=false; |
731 | cut_active=false; |
732 | } |
732 | } |
733 | SelectFile(#new_copy_path+strchr(#new_copy_path,'/')); |
733 | SelectFile(#new_copy_path+strchr(#new_copy_path,'/')); |
734 | } |
734 | } |
735 | 735 | ||
736 | 736 | ||
737 | void ReName(byte rename) |
737 | void ReName(byte rename) |
738 | { |
738 | { |
739 | int del_file_rez; |
739 | int del_file_rez; |
740 | char edit_name[256]; |
740 | char edit_name[256]; |
741 | rename_active=0; |
741 | rename_active=0; |
742 | edit2.flags=64; |
742 | edit2.flags=64; |
743 | DefineButton(192,curbtn*BUTTON_HEIGHT+57,onLeft(27,192),BUTTON_HEIGHT,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF); |
743 | DefineButton(192,curbtn*BUTTON_HEIGHT+57,onLeft(27,192),BUTTON_HEIGHT,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF); |
744 | if (rename==true) |
744 | if (rename==true) |
745 | { |
745 | { |
746 | copystr(#path,#temp); |
746 | copystr(#path,#temp); |
747 | copystr(#file_name,#edit_name); //ñîõðàíÿåì íîâîå èìÿ ôàéëà, äëÿ òîãî, ÷òîáû åãî ïîòîì âûäåëèòü |
747 | copystr(#file_name,#edit_name); //ñîõðàíÿåì íîâîå èìÿ ôàéëà, äëÿ òîãî, ÷òîáû åãî ïîòîì âûäåëèòü |
748 | copystr(#file_name,#temp+strlen(#temp)); |
748 | copystr(#file_name,#temp+strlen(#temp)); |
749 | if (strcmp(#file_path,#temp)<>0) && (file_name) |
749 | if (strcmp(#file_path,#temp)<>0) && (file_name) |
750 | IF (isdir) |
750 | IF (isdir) |
751 | { |
751 | { |
752 | del_file_rez=DeleleFile(#file_path); |
752 | del_file_rez=DeleleFile(#file_path); |
753 | IF (del_file_rez<>0) |
753 | IF (del_file_rez<>0) |
754 | { |
754 | { |
755 | Write_Error(del_file_rez); |
755 | Write_Error(del_file_rez); |
756 | ShowMessage("Error. Folder isn't empty."); |
756 | ShowMessage("Error. Folder isn't empty."); |
757 | return; |
757 | return; |
758 | } |
758 | } |
759 | ELSE CreateFolder(#temp); |
759 | ELSE CreateFolder(#temp); |
760 | Open_Dir(#path,1); |
760 | Open_Dir(#path,1); |
761 | } |
761 | } |
762 | ELSE |
762 | ELSE |
763 | { |
763 | { |
764 | CopyFile(#file_path,#temp); |
764 | CopyFile(#file_path,#temp); |
765 | Del_File(true); |
765 | Del_File(true); |
766 | } |
766 | } |
767 | SelectFile(#edit_name); |
767 | SelectFile(#edit_name); |
768 | } |
768 | } |
769 | Line_ReDraw(col_selec,curbtn); |
769 | Line_ReDraw(col_selec,curbtn); |
770 | } |
770 | } |
771 | 771 | ||
772 | 772 | ||
773 | 773 | ||
774 | void Goto_edit_path() |
774 | void Goto_edit_path() |
775 | { |
775 | { |
776 | IF (!strcmp(#path,#edit_path)) return; //ïðîâåðêà íå â ýòîé ëè ìû ïàïêå |
776 | IF (!strcmp(#path,#edit_path)) return; //ïðîâåðêà íå â ýòîé ëè ìû ïàïêå |
777 | IF (strcmp(#edit_path+strlen(#edit_path)-1,"/")<>0) copystr("/",#edit_path+strlen(#edit_path)); //åñëè íåò, + "/" |
777 | IF (strcmp(#edit_path+strlen(#edit_path)-1,"/")<>0) copystr("/",#edit_path+strlen(#edit_path)); //åñëè íåò, + "/" |
778 | Open_Dir(#edit_path,ONLY_OPEN); //ïðîâåðÿåì åñëè ôàéëû â ïàïêå, òàê ìû óçíà¸ì ñóùåñòâóåò ëè îíà |
778 | Open_Dir(#edit_path,ONLY_OPEN); //ïðîâåðÿåì åñëè ôàéëû â ïàïêå, òàê ìû óçíà¸ì ñóùåñòâóåò ëè îíà |
779 | IF (count<1) |
779 | IF (count<1) |
780 | KEdit(); //ïðîñòî î÷èùàåì ïîëîñó àäðåñà |
780 | KEdit(); //ïðîñòî î÷èùàåì ïîëîñó àäðåñà |
781 | ELSE |
781 | ELSE |
782 | { |
782 | { |
783 | za_kadrom=curbtn=0; //íàâåðõ ñïèñêà |
783 | za_kadrom=curbtn=0; //íàâåðõ ñïèñêà |
784 | copystr(#edit_path,#path); |
784 | copystr(#edit_path,#path); |
785 | } |
785 | } |
786 | Open_Dir(#path,1); |
786 | Open_Dir(#path,1); |
787 | } |
787 | } |
788 | 788 | ||
789 | void SelectFile(dword that_file) |
789 | void SelectFile(dword that_file) |
790 | { |
790 | { |
791 | za_kadrom=curbtn=0; //ââåðõ ñïèñêà |
791 | za_kadrom=curbtn=0; //ââåðõ ñïèñêà |
792 | Open_Dir(#path,ONLY_OPEN); |
792 | Open_Dir(#path,ONLY_OPEN); |
793 | TitleCase(that_file); |
793 | TitleCase(that_file); |
794 | for (i=count-1; i>=0; i--;) |
794 | for (i=count-1; i>=0; i--;) |
795 | if (!strcmp(file_mas[i]*304+buf+72,that_file)) break; |
795 | if (!strcmp(file_mas[i]*304+buf+72,that_file)) break; |
796 | FileList_ReDraw(i); |
796 | FileList_ReDraw(i); |
797 | List_ReDraw(); |
797 | List_ReDraw(); |
798 | } |
798 | } |
799 | 799 | ||
800 | 800 | ||
801 | void Dir_Up() |
801 | void Dir_Up() |
802 | { |
802 | { |
803 | char cur_folder[4096]; |
803 | char cur_folder[4096]; |
804 | if (path[1]==NULL) return; |
804 | if (path[1]==NULL) return; |
805 | i=strlen(#path)-1; |
805 | i=strlen(#path)-1; |
806 | path[i]=0x00; |
806 | path[i]=0x00; |
807 | do i--; while (path[i]<>'/'); |
807 | do i--; while (path[i]<>'/'); |
808 | copystr(#path+i+1,#cur_folder); |
808 | copystr(#path+i+1,#cur_folder); |
809 | path[i+1]=0x00; |
809 | path[i+1]=0x00; |
810 | SelectFile(#cur_folder); |
810 | SelectFile(#cur_folder); |
811 | } |
811 | } |
812 | 812 | ||
813 | 813 | ||
814 | inline fastcall void GoBack() //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü |
814 | inline fastcall void GoBack() //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü |
815 | { |
815 | { |
816 | char cur_folder[4096]; |
816 | char cur_folder[4096]; |
817 | copystr(GetCurrentFolder(), #cur_folder); |
817 | copystr(GetCurrentFolder(), #cur_folder); |
818 | if (HistoryPath(GO_BACK)) SelectFile(#cur_folder); |
818 | if (HistoryPath(GO_BACK)) SelectFile(#cur_folder); |
819 | } |
819 | } |
820 | 820 | ||
821 | 821 | ||
822 | stop:>1)>>>>>>28)>11;i++)> |
822 | stop:>1)>>>>>>28)>11;i++)> |
823 | } |
823 | } |
824 | 824 | ||
825 | 825 | ||
826 | void>>>>>>>>>>>0)> |
826 | void>>>>>>>>>>>0)> |
827 | >=0)>=0)>5;>6;>3;>480)>480) |
827 | >=0)>=0)>5;>6;>3;>480)>480) |
828 | >>8; |
828 | >>8; |
829 | ><8; |
829 | ><8; |
830 | >>>>8; |
830 | >>>>8; |
831 | ><8; |
831 | ><8; |
832 | >>>>>200)>>0)>=Form.width-6)> |
832 | >>>>>200)>>0)>=Form.width-6)> |
833 | > |
833 | > |
834 | > |
834 | > |
835 | >=Form.width-6)>57) |
835 | >=Form.width-6)>57) |
836 | >=Form.width-6)>>>> |
836 | >=Form.width-6)>>>> |