Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Функциональные клавиши.docx
Скачиваний:
8
Добавлен:
11.04.2015
Размер:
785.39 Кб
Скачать

Порядок создания библиотеки

Для создания библиотеки были использованы следующие файлы:

- 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 .

Функция создания нового каталога

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]