int EDirectory::Activate(int No) { SearchLen = 0; Msg(S_INFO, ""); if (Files && No >= 0 && No < FCount) { if (isDir(No)) { FmChDir(Files[No]->Name()); return 0; } else { return FmLoad(Files[No]->Name(), View); } } return 1; }
int EDirectory::ExecCommand(int Command, ExState &State) { switch (Command) { case ExActivateInOtherWindow: SearchLen = 0; Msg(S_INFO, ""); if (Files && Row >= 0 && Row < FCount) { if (isDir(Row)) { } else { return FmLoad(Files[Row]->Name(), View->Next); } } return ErFAIL; case ExRescan: if (RescanDir() == 0) return ErFAIL; return ErOK; case ExDirGoUp: SearchLen = 0; Msg(S_INFO, ""); FmChDir(SDOT SDOT); return ErOK; case ExDirGoDown: SearchLen = 0; Msg(S_INFO, ""); if (Files && Row >= 0 && Row < FCount) { if (isDir(Row)) { FmChDir(Files[Row]->Name()); return ErOK; } } return ErFAIL; case ExDirGoto: SearchLen = 0; Msg(S_INFO, ""); return ChangeDir(State); case ExDirGoRoot: SearchLen = 0; Msg(S_INFO, ""); FmChDir(SSLASH); return ErOK; case ExDirSearchCancel: // Kill search when moving SearchLen = 0; Msg(S_INFO, ""); return ErOK; case ExDirSearchNext: // Find next matching file, search is case in-sensitive while sorting is sensitive if (SearchLen) { for (int i = Row + 1; i < FCount; i++) { if (strnicmp(SearchName, Files[i]->Name(), SearchLen) == 0) { Row = i; break; } } } return ErOK; case ExDirSearchPrev: // Find prev matching file, search is case in-sensitive while sorting is sensitive if (SearchLen) { for (int i = Row - 1; i >= 0; i--) { if (strnicmp(SearchName, Files[i]->Name(), SearchLen) == 0) { Row = i; break; } } } return ErOK; case ExDeleteFile: SearchLen = 0; Msg(S_INFO, ""); return FmRmDir(Files[Row]->Name()); } return EList::ExecCommand(Command, State); }
int EDirectory::ExecCommand(int Command, ExState &State) { switch (Command) { case ExActivateInOtherWindow: SearchLen = 0; Msg(S_INFO, ""); if (Files && Row >= 0 && Row < FCount) { if (isDir(Row)) { } else { return FmLoad(Files[Row]->Name(), View->Next); } } return ErFAIL; case ExRescan: if (RescanDir() == 0) return ErFAIL; return ErOK; case ExDirGoUp: SearchLen = 0; Msg(S_INFO, ""); FmChDir(SDOT SDOT); return ErOK; case ExDirGoDown: SearchLen = 0; Msg(S_INFO, ""); if (Files && Row >= 0 && Row < FCount) { if (isDir(Row)) { FmChDir(Files[Row]->Name()); return ErOK; } } return ErFAIL; case ExDirGoto: SearchLen = 0; Msg(S_INFO, ""); return ChangeDir(State); case ExDirGoRoot: SearchLen = 0; Msg(S_INFO, ""); FmChDir(SSLASH); return ErOK; case ExDirSearchCancel: // Kill search when moving SearchLen = 0; Msg(S_INFO, ""); return ErOK; case ExDirSearchNext: // Find next matching file, search is case in-sensitive while sorting is sensitive if (SearchLen) { int found = GetMatchForward(Row + 1); if (found != -1) { Row = found; break; } } return ErOK; case ExDirSearchPrev: // Find prev matching file, search is case in-sensitive while sorting is sensitive if (SearchLen) { int found = GetMatchBackward(Row - 1); if (found != -1) { Row = found; break; } } return ErOK; case ExRenameFile: SearchLen = 0; Msg(S_INFO, ""); return FmMvFile(Files[Row]->Name()); case ExDeleteFile: SearchLen = 0; Msg(S_INFO, ""); return FmRmFile(Files[Row]->Name()); case ExMakeDirectory: SearchLen = 0; Msg(S_INFO, ""); return FmMkDir(); } return EList::ExecCommand(Command, State); }