Описание собственных функцийСУП ИЗ ТЫКВЫ С СУХОФРУКТАМИ
СУП ГРИБНОЙ С СУХОФРУКТАМИ Что нужно: Что делать:
Порядок создания библиотеки Для создания библиотеки были использованы следующие файлы: - makedir.cpp, cut.cpp, fcopy.cpp, remdf.cpp – исходный файл C++, содержит собственные функции. - drawlib.cpp – исходный файл C++, содержит изменённые функции исходной программы. - directory.h – заголовочный файл для makedir.cpp, cut.cpp, fcopy.cpp, remdf.cpp Directory.h #ifndef DIRECTORY_H_ #define DIRECTORY_H_
int makedir (char *path); int remdf(char*path); int cutf(char*path, char*pathD); int copyfd(char*path, char*pathD); #endif /*DIRECTORY_H_*/
Drawlib.h
#ifndef DRAWLIB_H_ #define DRAWLIB_H_ //Идентификаторы активной панели #define LEFT 0//метка левой панели #define RIGHT 1//метка правой панели
//Идентификаторы клавиш #undef KEY_ENTER//переопределение идентефикатора описанного в curses #define KEY_ENTER 10// #define KEY_ESC 27//определение идентификатора для клавиши Esc #define KEY_TAB 9 #define WLINES (LINES/4+1) /* высота */ #define WCOLS (COLS/4*2) /* ширина */ #define Wy (LINES/3) /* y верхнего левого угла на экране */ #define Wx (COLS/4) /* x верхнего левого угла на экране */
//макросы цветовых пар #define BLUE_BLUE COLOR_PAIR(1) #define GREEN_BLUE COLOR_PAIR(2) #define BLUE_WHITE COLOR_PAIR(3) #define BLACK_WHITE COLOR_PAIR(4) #define WHITE_BLUE COLOR_PAIR(5) #define RED_BLUE COLOR_PAIR(6) #define BLACK_YELLOW COLOR_PAIR(7) #define YELLOW_BLACK COLOR_PAIR(8) #define BLACK_CYAN COLOR_PAIR(9) #define RED_CYAN COLOR_PAIR(10) #define YELLOW_CYAN COLOR_PAIR(11) #define BLACK_RED COLOR_PAIR(12) #define WHITE_RED COLOR_PAIR(13) #define YELLOW_RED COLOR_PAIR(14) #define WHITE_CYAN COLOR_PAIR(15)
//Функция получения полного имени файла char* getfullname(char* dirname,char* filename); //Функция очистки Левой панели void clearL(); //Функция очистки правой панели void clearR(); //Функция отображения панелей псевдографикой void drawframe(); //Функция отображения списка имен файлов левой панели void paintdirL(char* path,int n, struct dirent **namelist, int up, int down, int positionkurs); //Функция отображения списка имен файлов правой панели void paintdirR(char* path,int n, struct dirent **namelist, int up, int down, int positionkurs); void accesscheck(); void accessdev(); //Функция вывода сообщения об ошибке void printerror (const char* text); void name(char nn[33]); #endif /*DRAWLIB_H_*/ Описание собственных функций void paintdirR(char* path,int n, struct dirent **namelist, int up, int down, int positionkurs) - отрисовка правой панели файлового менеджера. Параметры функции: char* path – путь к текущему каталогу; struct dirent **namelist – структура с именами всех файлов каталога; up – верхняя граница видимой части списка файлов; down – нижняя граница видимой части списка файлов; int positionkurs – положение курсора в списке файлов. Возвращаемое значение – void. Cхема алгоритма Функция отображения списка имен файлов правой панели void paintdirR(char* path,int n, struct dirent **namelist, int up, int down, int positionkurs) { struct stat buf;//структура со сведениями о файле clearR(); drawframe(); attrset(0|BLACK_WHITE); move(1,COLS/2+1); printw("~%s",strrchr(path,'/')); int numberline;//номера строк, на которых выводятся имена файлов numberline=4;//первая строка с именем if(down>n) down=n; for (int i=up;i<down;i++,numberline++) { move(numberline,COLS/2+2);attrset(0|GREEN_BLUE); lstat(getfullname(path,namelist[i]->d_name),&buf); if(S_ISDIR(buf.st_mode)) attrset(A_BOLD|GREEN_BLUE); if(i==positionkurs)attrset(A_BOLD|A_UNDERLINE|BLUE_WHITE); printw("%s",namelist[i]->d_name); move(numberline,COLS-12); accessdev(); move(numberline,COLS-22); printw("%zu", buf.st_size); attrset(A_BOLD|A_UNDERLINE|BLACK_YELLOW); } attrset(0|GREEN_BLUE); move(LINES-4,COLS/2+1);printw(" name: %s ",namelist[positionkurs]->d_name); accesscheck(); refresh(); }
void paintdirL(char* path,int n, struct dirent **namelist, int up, int down, int positionkurs ) - отрисовка левой панели файлового менеджера. Набор параметров и возвращаемое значение аналогичны void paintdirR. Функция создания нового каталога int makedir(char*path); Данная функция создает новый каталог. При ее вызове появляется окно со строкой ввода имени нового каталога. При удачном завершении создается новый каталог, иначе выводится окно с ошибкой. Параметры функции: char* path – путь к каталогу; Используемые библиотеки:<curses.h><dirent.h><stdlib.h><string.h> <sys/dir.h><sys/stat.h><unistd.h><errno.h>
|