bool FileSys::OpenDIR() { DIR * dir; struct dirent * entry; string currentDIR = GetDIR(); dir = opendir( currentDIR.c_str() ); if ( !dir ) { SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Запрещенно", GetDIR().c_str(), NULL ); Upward(); return false; } EmptyFoldersAndFiles(); while ( ( entry = readdir(dir) ) != NULL ) { if( entry->d_name[0] != '.' ) { if( entry->d_type == DT_DIR ) foldersInDIR.push_back( entry->d_name ); if( entry->d_type == DT_REG ) filesInDIR.push_back( entry->d_name ); } }; allFilesInDIR = filesInDIR.size(); allFoldersInDIR = foldersInDIR.size(); closedir(dir); return true; }
/* ---- cursor left key: left one character position ---- */ static void Backward(WINDOW wnd) { if (wnd->CurrCol) { --wnd->CurrCol; if (wnd->CurrCol < wnd->wleft) SendMessage(wnd, HORIZSCROLL, FALSE, 0); } else if (isMultiLine(wnd) && wnd->CurrLine != 0) { Upward(wnd); End(wnd); } }
void TransformObject::CalculateNewDirVectors(void) { forward = rot.Rotated(Forward()); up = rot.Rotated(Upward()); }
/* ---------- page/scroll keys ----------- */ static int DoScrolling(WINDOW wnd, int c, PARAM p2) { switch (c) { case PGUP: case PGDN: if (isMultiLine(wnd)) BaseWndProc(EDITBOX, wnd, KEYBOARD, c, p2); break; case CTRL_PGUP: case CTRL_PGDN: BaseWndProc(EDITBOX, wnd, KEYBOARD, c, p2); break; case HOME: Home(wnd); break; case END: End(wnd); break; case CTRL_FWD: NextWord(wnd); break; case CTRL_BS: PrevWord(wnd); break; case CTRL_HOME: if (isMultiLine(wnd)) { SendMessage(wnd, SCROLLDOC, TRUE, 0); wnd->CurrLine = 0; wnd->WndRow = 0; } Home(wnd); break; case CTRL_END: if (isMultiLine(wnd) && wnd->WndRow+wnd->wtop+1 < wnd->wlines && wnd->wlines > 0) { SendMessage(wnd, SCROLLDOC, FALSE, 0); SetLinePointer(wnd, wnd->wlines-1); wnd->WndRow = min(ClientHeight(wnd)-1, wnd->wlines-1); Home(wnd); } End(wnd); break; case UP: if (isMultiLine(wnd)) Upward(wnd); break; case DN: if (isMultiLine(wnd)) Downward(wnd); break; case FWD: Forward(wnd); break; case BS: Backward(wnd); break; default: return FALSE; } if (!KeyBoardMarking && TextBlockMarked(wnd)) { ClearTextBlock(wnd); SendMessage(wnd, PAINT, 0, 0); } SendMessage(wnd, KEYBOARD_CURSOR, WndCol, wnd->WndRow); return TRUE; }