diff --git a/data/Tupfile.lua b/data/Tupfile.lua index 8c1ad66c46..430641e2f8 100644 --- a/data/Tupfile.lua +++ b/data/Tupfile.lua @@ -27,7 +27,7 @@ img_files = { {"NOTIFY3.PNG", "common/notify3.png"}, {"UNIMG", PROGS .. "/fs/unimg/unimg"}, {"3D/HOUSE.3DS", "common/3d/house.3ds"}, - {"File Managers/EFM", "common/File Managers/efm"}, + {"File Managers/KFM2", "common/File Managers/kfm2"}, {"File Managers/ICONS.INI", "common/File Managers/icons.ini"}, {"File Managers/KFM.INI", "common/File Managers/kfm.ini"}, {"File Managers/FNAV/ABOUT.TXT", "common/File Managers/fNav/About.txt"}, diff --git a/data/ca/settings/icon.ini b/data/ca/settings/icon.ini index fbbf2e382c..5a8ff6c55a 100644 --- a/data/ca/settings/icon.ini +++ b/data/ca/settings/icon.ini @@ -5,8 +5,8 @@ Background=/sys/media/palitra Device setup=setup Shell=shell [00] -name=KFM -path=/SYS/FILE MANAGERS/KFM +name=KFM2 +path=/SYS/FILE MANAGERS/KFM2 param= ico=3 x=0 diff --git a/data/ca/settings/menu.dat b/data/ca/settings/menu.dat index e4ac5b8199..62b75c4b78 100644 --- a/data/ca/settings/menu.dat +++ b/data/ca/settings/menu.dat @@ -85,7 +85,7 @@ Informaci #10 **** ARCHIUS **** KFAR /sys/File Managers/kfar fNav /sys/File Managers/fNav/fNav -KFM /sys/File Managers/kfm +KFM2 /sys/File Managers/kfm2 Eolite /sys/File Managers/Eolite Virtual disks /sys/tmpdisk SHELL /sys/shell diff --git a/data/common/File Managers/efm b/data/common/File Managers/kfm2 similarity index 100% rename from data/common/File Managers/efm rename to data/common/File Managers/kfm2 diff --git a/data/common/icons16.png b/data/common/icons16.png index a433c6a326..307272117c 100644 Binary files a/data/common/icons16.png and b/data/common/icons16.png differ diff --git a/data/eng/settings/icon.ini b/data/eng/settings/icon.ini index 592dbf1285..a21cd18b7f 100644 --- a/data/eng/settings/icon.ini +++ b/data/eng/settings/icon.ini @@ -4,8 +4,8 @@ Theme settings=skincfg Background=/sys/media/palitra System panel=syspanel [00] -name=KFM -path=/SYS/FILE MANAGERS/KFM +name=KFM2 +path=/SYS/FILE MANAGERS/KFM2 param= ico=3 x=0 diff --git a/data/eng/settings/menu.dat b/data/eng/settings/menu.dat index cc750a52e0..191b6487a5 100644 --- a/data/eng/settings/menu.dat +++ b/data/eng/settings/menu.dat @@ -75,7 +75,7 @@ System panel |syspanel #8 **** FM KFAR |File Managers/kfar fNav |File Managers/fNav/fNav -KFM |File Managers/kfm +KFM2 |File Managers/kfm2 Eolite |File Managers/Eolite Virtual disks |tmpdisk Shell |shell diff --git a/data/et/settings/icon.ini b/data/et/settings/icon.ini index 6e83fd59dd..b34f4f3343 100644 --- a/data/et/settings/icon.ini +++ b/data/et/settings/icon.ini @@ -4,8 +4,8 @@ Theme settings=skincfg Fondo=/sys/media/palitra System panel=syspanel [00] -name=KFM -path=/SYS/FILE MANAGERS/KFM +name=KFM2 +path=/SYS/FILE MANAGERS/KFM2 param= ico=3 x=0 diff --git a/data/et/settings/menu.dat b/data/et/settings/menu.dat index 1ad73c6b9e..b9f434b777 100644 --- a/data/et/settings/menu.dat +++ b/data/et/settings/menu.dat @@ -85,7 +85,8 @@ K. Bus disconnected |kbd HDD info |hdd_info #10 **** WORK WITH FILES **** KFAR |File Managers/kfar -KFM |File Managers/kfm +KFM2 |File Managers/kfm2 +fNav |File Managers/fNav/fNav Eolite |File Managers/Eolite Virtual disks |tmpdisk SHELL konsool |shell diff --git a/data/it/settings/icon.ini b/data/it/settings/icon.ini index 592dbf1285..a21cd18b7f 100644 --- a/data/it/settings/icon.ini +++ b/data/it/settings/icon.ini @@ -4,8 +4,8 @@ Theme settings=skincfg Background=/sys/media/palitra System panel=syspanel [00] -name=KFM -path=/SYS/FILE MANAGERS/KFM +name=KFM2 +path=/SYS/FILE MANAGERS/KFM2 param= ico=3 x=0 diff --git a/data/it/settings/menu.dat b/data/it/settings/menu.dat index ae71842c16..e630d1d3db 100644 --- a/data/it/settings/menu.dat +++ b/data/it/settings/menu.dat @@ -86,7 +86,7 @@ HDD informer |hdd_info #10 **** FM KFAR |File Managers/kfar fNav |File Managers/fNav/fNav -KFM |File Managers/kfm +KFM2 |File Managers/kfm2 Eolite |File Managers/Eolite Virtual disks |tmpdisk SHELL console |shell diff --git a/data/rus/settings/icon.ini b/data/rus/settings/icon.ini index 991e5d93f8..a9ab5e2d43 100644 --- a/data/rus/settings/icon.ini +++ b/data/rus/settings/icon.ini @@ -4,8 +4,8 @@ Настройка фона=/sys/media/palitra Системная панель=syspanel [00] -name=KFM -path=/SYS/FILE MANAGERS/KFM +name=KFM2 +path=/SYS/FILE MANAGERS/KFM2 param= ico=3 x=0 diff --git a/data/rus/settings/menu.dat b/data/rus/settings/menu.dat index 4509cc923c..d45a98d470 100644 --- a/data/rus/settings/menu.dat +++ b/data/rus/settings/menu.dat @@ -75,7 +75,7 @@ ScummVM |/kolibrios/emul/scummvm #8 ==Система > ФМ KFAR |File Managers/kfar fNav |File Managers/fNav/fNav -KFM |File Managers/kfm +KFM2 |File Managers/kfm2 Eolite |File Managers/Eolite #9 ==Система > Спец.возможности Экранная лупа |magnify diff --git a/data/sp/settings/icon.ini b/data/sp/settings/icon.ini index 592dbf1285..a21cd18b7f 100644 --- a/data/sp/settings/icon.ini +++ b/data/sp/settings/icon.ini @@ -4,8 +4,8 @@ Theme settings=skincfg Background=/sys/media/palitra System panel=syspanel [00] -name=KFM -path=/SYS/FILE MANAGERS/KFM +name=KFM2 +path=/SYS/FILE MANAGERS/KFM2 param= ico=3 x=0 diff --git a/data/sp/settings/menu.dat b/data/sp/settings/menu.dat index 0ddd450f6d..11be31e25a 100644 --- a/data/sp/settings/menu.dat +++ b/data/sp/settings/menu.dat @@ -86,7 +86,7 @@ Informaci #10 **** ARCHIVOS KFAR |File Managers/kfar fNav |File Managers/fNav/fNav -KFM |File Managers/kfm +KFM2 |File Managers/kfm2 Eolite |File Managers/Eolite Virtual disks |tmpdisk SHELL |shell diff --git a/programs/cmm/eolite/Eolite.c b/programs/cmm/eolite/Eolite.c index 917493ccac..b4528ecae7 100644 --- a/programs/cmm/eolite/Eolite.c +++ b/programs/cmm/eolite/Eolite.c @@ -3,8 +3,8 @@ // 70.5 - get volume info and label -#define TITLE "Eolite File Manager 4.80" -#define ABOUT_TITLE "EOLITE 4.80" +#define TITLE "Eolite File Manager 5 Beta" +#define ABOUT_TITLE "EOLITE 5 Beta" #ifndef AUTOBUILD #include "lang.h--" @@ -37,7 +37,16 @@ enum { PATH_BTN = 10, POPUP_BTN1 = 201, POPUP_BTN2 = 202, - BREADCRUMB_ID = 300 + KFM_DEV_DROPDOWN_1 = 205, + KFM_DEV_DROPDOWN_2 = 207, + BREADCRUMB_ID = 300, + + BACK_BTN = 400, + FWRD_BTN, + GOUP_BTN, + COPY_BTN, + CUT_BTN, + PASTE_BTN }; //NewElement options @@ -85,8 +94,10 @@ bool _not_draw = false; bool exif_load = false; bool dir_at_fat16 = NULL; -word about_thread_id; -word settings_window; +bool dev_popin_active_on_panel=0; + +dword about_thread_id; +dword settings_window; byte del_active=0; byte new_element_active=0; @@ -241,7 +252,7 @@ void main() loop() switch(@WaitEventTimeout(80)) { case evMouse: - if (del_active) || (Form.status_window>2) break; + if (del_active) || (dev_popin_active_on_panel) || (Form.status_window>2) break; if (new_element_active) { edit_box_mouse stdcall(#new_file_ed); @@ -331,7 +342,7 @@ void main() break; } - if (two_panels.checked) && (mouse.y > files.y) && (mouse.down) { + if (efm) && (mouse.y > files.y) && (mouse.down) { if (mouse.x2) break; - if (new_element_active) || (del_active) + if (new_element_active) || (del_active) || (dev_popin_active_on_panel) { - if (del_active) - { + if (dev_popin_active_on_panel) { + if (key_scancode == SCAN_CODE_ESC) EventClosePopinForm(); + } + if (del_active) { if (key_scancode == SCAN_CODE_ENTER) EventDelete(); if (key_scancode == SCAN_CODE_ESC) EventClosePopinForm(); } - if (new_element_active) - { + if (new_element_active) { if (key_scancode == SCAN_CODE_ENTER) NewElement(); if (key_scancode == SCAN_CODE_ESC) EventClosePopinForm(); EAX = key_editbox; @@ -462,7 +481,7 @@ void main() case SCAN_CODE_1...SCAN_CODE_10: key_scancode-=2; if (key_scancode >= SystemDiscs.list.count) break; - if (!two_panels.checked) + if (!efm) { DrawRectangle(17,key_scancode*16+74,159,16, 0); //display click pause(7); @@ -479,7 +498,7 @@ void main() EventOpenConsoleHere(); break; case SCAN_CODE_KEY_V: - EventPaste(); + EventPaste(#path); break; case SCAN_CODE_KEY_D: //set image as bg strlcpy(#temp, "\\S__",4); @@ -492,6 +511,9 @@ void main() case SCAN_CODE_KEY_M: Open_Dir(#inactive_path,WITH_REDRAW); break; + case SCAN_CODE_KEY_R: + EventRefresh(); + break; case SCAN_CODE_ENTER: if (!itdir) ShowOpenWithDialog(); else EventOpen(1); @@ -509,14 +531,13 @@ void main() switch (key_scancode) { case SCAN_CODE_BS: - //EventHistoryGoBack(); Dir_Up(); break; case SCAN_CODE_ENTER: EventOpen(0); break; case SCAN_CODE_TAB: - if (!two_panels.checked) break; + if (!efm) break; if (active_panel==1) active_panel=2; else active_panel=1; ChangeActivePanel(); DrawFilePanels(); @@ -548,7 +569,7 @@ void main() if (CheckActiveProcess(Form.ID)) && (GetMenuClick()) break; if (action_buf==OPERATION_END) { - FnProcess(5); + EventRefresh(); action_buf=0; } break; @@ -569,29 +590,35 @@ void main() void draw_window() { - dword i; + dword i=0; incn x; + dword title; if (show_status_bar.checked) status_bar_h = STATUS_BAR_H; else status_bar_h = 0; - DefineAndDrawWindow(Form.left+rand_n,Form.top+rand_n,Form.width,Form.height,0x73,NULL,TITLE,0); + if (efm) title = "Kolibri File Manager 2 - BETA"; else title = TITLE; + DefineAndDrawWindow(Form.left+rand_n,Form.top+rand_n,Form.width,Form.height,0x73,NULL,title,0); GetProcessInfo(#Form, SelfInfo); if (Form.status_window>2) return; - if (Form.height < 350) { MoveSize(OLD,OLD,OLD,350); return; } + if (Form.height < 356) { MoveSize(OLD,OLD,OLD,356); return; } GetProcessInfo(#Form, SelfInfo); SetAppColors(); - if (two_panels.checked) { - if (Form.width < 573) { MoveSize(OLD,OLD,573,OLD); return; } + if (efm) { + if (screen.width > 693) && (Form.width < 693) { MoveSize(OLD,OLD,693,OLD); return; } DrawBar(0, 0, Form.cwidth, 34, sc.work); #define PAD 7 #define GAP_S 26+5 #define GAP_B 26+14 - x.set(-GAP_S+8); - DrawTopPanelButton(21, x.inc(GAP_S), PAD, 30, false); - DrawTopPanelButton(22, x.inc(GAP_S), PAD, 31, false); - DrawTopPanelButton(23, x.inc(GAP_B), PAD, 01, false); - DrawTopPanelButton(24, x.inc(GAP_B), PAD, 55, false); - DrawTopPanelButton(25, x.inc(GAP_S), PAD, 20, false); - DrawTopPanelButton(26, x.inc(GAP_S), PAD, 56, false); - DrawTopPanelButton(51, Form.cwidth-GAP_S-PAD, PAD, -1, false); //burger menu + x.set(Form.cwidth/2-DDW-203/2-GAP_S); + while (i<200) { + DrawTopPanelButton(i+BACK_BTN, x.inc(GAP_S), PAD, 30, false); + DrawTopPanelButton(i+FWRD_BTN, x.inc(GAP_S), PAD, 31, false); + DrawTopPanelButton(i+GOUP_BTN, x.inc(GAP_B), PAD, 01, false); + DrawTopPanelButton(i+COPY_BTN, x.inc(GAP_B), PAD, 55, false); + DrawTopPanelButton(i+CUT_BTN, x.inc(GAP_S), PAD, 20, false); + DrawTopPanelButton(i+PASTE_BTN,x.inc(GAP_S), PAD, 56, false); + x.set(Form.cwidth/2-DDW-203/2-GAP_S+calc(Form.cwidth/2)); + i+=100; + } + //DrawTopPanelButton(51, Form.cwidth-GAP_S-PAD, PAD, -1, false); //burger menu } else { if (Form.width < 480) { MoveSize(OLD,OLD,480,OLD); return; } ESDWORD[#toolbar_pal] = sc.work; @@ -616,6 +643,7 @@ void draw_window() DrawStatusBar(); if (!selected_count) Open_Dir(#path,ONLY_OPEN); //if there are no selected files -> refresh folder [L001] DrawFilePanels(); + dev_popin_active_on_panel = 0; } void DrawList() @@ -633,13 +661,20 @@ void DrawList() if (sort_type==3) sorting_arrow_x = strlen(T_SIZE)*3-30+files.x+files.w; WriteText(sorting_arrow_x,files.y-12,0x80, sc.work_text, sorting_arrow_t); DrawBar(files.x+files.w,files.y,1,files.h,sc.work_graph); - if (two_panels.checked) && (files.x<5) DrawBar(files.x+files.w+16,files.y,1,files.h,sc.work_graph); + if (efm) && (files.x<5) DrawBar(files.x+files.w+16,files.y,1,files.h,sc.work_graph); } void DrawStatusBar() { char status_bar_str[80]; int go_up_folder_exists=0; + + if (efm) { + DrawBar(0, Form.cheight - status_bar_h, Form.cwidth, status_bar_h, sc.work); + WriteTextCenter(0,Form.cheight - 12, Form.cwidth,sc.work_text,T_KFM_FUNC); + return; + } + if (!show_status_bar.checked) return; if (files.count>0) && (streq(items.get(0)*304+buf+72,"..")) go_up_folder_exists=1; DrawBar(0, Form.cheight - status_bar_h, Form.cwidth, status_bar_h, sc.work); @@ -657,7 +692,7 @@ void DrawFilePanels() int files_y; int w2 = -Form.cwidth-1/2+Form.cwidth; int h2; - if (!two_panels.checked) + if (!efm) { DrawDeviceAndActionsLeftPanel(); files.SetSizes(192, 57, Form.cwidth - 210, Form.cheight - 59 - status_bar_h, files.item_h); @@ -855,7 +890,7 @@ void Line_ReDraw(dword bgcol, filenum){ kfont.WriteIntoWindow(files.x + icon_size+7, files.item_h - kfont.height / 2 + y, bgcol, text_col, kfont.size.pt, #label_file_name); } - if (bgcol == col.selec_inactive) DrawWideRectangle(files.x+2, y, files.w-4, files.item_h, 2, 0x92B1D9); + if (bgcol == col.selec_inactive) DrawWideRectangle(files.x+2, y, files.w-4, files.item_h, 2, col.selec_active); sprintf(#full_path,"%s/%s",#path,file_name_off); DrawIconByExtension(#full_path, ext1, files.x+4, icon_y, bgcol); @@ -880,7 +915,7 @@ void Open_Dir(dword dir_path, redraw){ } if (files.count!=-1) { - if(!_not_draw) if (show_breadcrumb.checked) DrawBreadCrumbs(); else DrawPathBar(); + if(!_not_draw) DrawPathBar(); history.add(#path); SystemDiscs.Draw(); files.visible = files.h / files.item_h; @@ -1156,21 +1191,19 @@ void FnProcess(byte N) case 4: if (files.count) && (!itdir) RunProgram("/sys/develop/cedit", #file_path); break; - case 5: //refresh cur dir & devs - if (two_panels.checked) - { - DrawFilePanels(); + case 5: + if (efm) { + EventCopy(false); + EventPaste(#inactive_path); } else { - Tip(56, T_DEVICES, 55, "-"); - Open_Dir(#path,WITH_REDRAW); - pause(10); - SystemDiscs.Get(); - Open_Dir(#path,WITH_REDRAW); - DrawDeviceAndActionsLeftPanel(); + EventRefresh(); } break; case 6: - //Move + if (efm) { + EventCopy(true); + EventPaste(#inactive_path); + } break; case 7: NewElement_Form(CREATE_FOLDER, T_NEW_FOLDER); @@ -1196,6 +1229,21 @@ void FnProcess(byte N) } } +void EventRefresh() +{ + if (efm) + { + DrawFilePanels(); + } else { + Tip(56, T_DEVICES, 55, "-"); + Open_Dir(#path,WITH_REDRAW); + pause(10); + SystemDiscs.Get(); + Open_Dir(#path,WITH_REDRAW); + DrawDeviceAndActionsLeftPanel(); + } +} + void ChangeActivePanel() { llist_copy(#files_active, #files_inactive); @@ -1246,9 +1294,9 @@ int GetRealFileCountInFolder(dword folder_path) void EventRefreshDisksAndFolders() { if(GetRealFileCountInFolder("/")+dir_exists("/kolibrios") != SystemDiscs.dev_num) { - FnProcess(5); + EventRefresh(); } - if(two_panels.checked) + if(efm) { if(GetRealFileCountInFolder(#inactive_path) != files_inactive.count) { ChangeActivePanel(); @@ -1256,9 +1304,7 @@ void EventRefreshDisksAndFolders() ChangeActivePanel(); } if(GetRealFileCountInFolder(#path) != files.count) Open_Dir(#path,WITH_REDRAW); - } - else - { + } else { if(GetRealFileCountInFolder(#path) != files.count) Open_Dir(#path,WITH_REDRAW); } } @@ -1330,9 +1376,9 @@ void ProceedMouseGestures() } } -void EventPaste() { +void EventPaste(dword _into_path) { char paste_line[4096+6]; - sprintf(#paste_line, "-v%i %s", cut_active, #path); + sprintf(#paste_line, "-v%i %s", cut_active, _into_path); RunProgram(#program_path, #paste_line); EventClosePopinForm(); } @@ -1352,11 +1398,12 @@ char line_param[4096+5]; void EventClosePopinForm() { - del_active=0; + del_active = 0; new_element_active = 0; + dev_popin_active_on_panel = 0; draw_window(); - DeleteButton(POPUP_BTN1); - DeleteButton(POPUP_BTN2); + //DeleteButton(POPUP_BTN1); + //DeleteButton(POPUP_BTN2); } void EventShowProperties() @@ -1400,6 +1447,29 @@ void EventChooseAllFiles(dword state) DrawStatusBar(); } +void EventToolbarButtonClick(int _btid) +{ + switch(_btid) { + case BACK_BTN: EventHistoryGoBack(); break; + case FWRD_BTN: EventHistoryGoForward(); break; + case GOUP_BTN: Dir_Up(); break; + case COPY_BTN: EventCopy(CUT); break; + case CUT_BTN: EventCopy(NOCUT); break; + case PASTE_BTN:EventPaste(#path); break; + } +} +void EventDriveClick(int __id) +{ + if (dev_popin_active_on_panel != active_panel) { + if (active_panel == 1) active_panel=2; else active_panel=1; + ChangeActivePanel(); + } + + SystemDiscs.Click(__id-100); + if (efm) { + draw_window(); + } +} stop: diff --git a/programs/cmm/eolite/include/breadcrumbs.h b/programs/cmm/eolite/include/breadcrumbs.h index f72ab58283..05139c9c92 100644 --- a/programs/cmm/eolite/include/breadcrumbs.h +++ b/programs/cmm/eolite/include/breadcrumbs.h @@ -2,6 +2,14 @@ PathShow_data PathShow = {0, 17,250, 6, 250, 0, 0, 0x0, 0xFFFfff, #path, #temp, 0}; void DrawPathBar() { + if (efm) { + return; + } + if (show_breadcrumb.checked) { + DrawBreadCrumbs(); + return; + } + PathShow.start_x = -efm*22 + 250; PathShow.area_size_x = Form.cwidth-300; diff --git a/programs/cmm/eolite/include/left_panel.h b/programs/cmm/eolite/include/left_panel.h index c2b80e2ee3..5a3214da5d 100644 --- a/programs/cmm/eolite/include/left_panel.h +++ b/programs/cmm/eolite/include/left_panel.h @@ -43,11 +43,13 @@ struct _SystemDiscs int dev_num; void Get(); void Draw(); + void DrawSelect(); + void DrawOptions(); void Click(); } SystemDiscs=0; #define DEV_H 17 -#define DEV_H_HOR 21 +#define DEV_H_HOR 20 void GetDiskIconAndName(char disk_first_letter, dword dev_icon, disc_name) { @@ -124,37 +126,32 @@ void _SystemDiscs::Get() free(devbuf); } +#define DDW 120 + void _SystemDiscs::Draw() { - char dev_name[15], disc_name[100], i, dev_icon, is_active, name_len; + char dev_name[15], disc_name[100], i, dev_icon, is_active=0, name_len; int draw_y, draw_x; for (i=0; i<30; i++) DeleteButton(100+i); - if (two_panels.checked) { draw_y = 41; draw_x = 2; } - else { draw_y = 74; draw_x = 17; } - - for (i=0;i=Form.cwidth-100) && (Form.cwidth) { - DrawBar(draw_x, draw_y, Form.cwidth - draw_x - 2, DEV_H_HOR, 0xFFFFFF); - draw_x = 2; - draw_y += DEV_H_HOR; - } + if (efm) { + if (active_panel==1) { + DrawSelect(Form.cwidth/2-DDW, 10, #path, KFM_DEV_DROPDOWN_1); + DrawSelect(Form.cwidth-DDW-2, 10, #inactive_path, KFM_DEV_DROPDOWN_2); + } else { + DrawSelect(Form.cwidth/2-DDW, 10, #inactive_path, KFM_DEV_DROPDOWN_1); + DrawSelect(Form.cwidth-DDW-2, 10, #path, KFM_DEV_DROPDOWN_2); } - else - { + files.y = 40 + 17; + } else { + draw_y = 74; + draw_x = 17; + for (i=0;i