#include #include #include #include "defines.h" #include "dir.h" extern unsigned int terminal_height; extern unsigned int terminal_width; extern unsigned int status; extern char *input; extern unsigned int timeout_time; extern unsigned int color_count; extern color *colors; extern dir rgt_dir; extern dir mid_dir; extern dir lft_dir; extern char *top_buffer; extern char *rgt_buffer; extern char *btm_buffer; extern unsigned long top_width; extern pthread_mutex_t mutex_top; extern pthread_mutex_t mutex_btm; extern pthread_mutex_t mutex_lft; extern pthread_mutex_t mutex_mid; extern pthread_mutex_t mutex_rgt; void window_top(WINDOW *win){ if (pthread_mutex_trylock(&mutex_top) == 0) { if (*top_buffer != ' ') { /*printing ' ' (standard initialized value, see threading_init) makes valgrind throw a fuss*/ wattron(win, COLOR_PAIR(COLOR_PATH)); mvwaddstr(win, 0, 0, top_buffer); mvwaddch(win, 0, strlen(top_buffer), '/'); wattroff(win, COLOR_PAIR(COLOR_PATH)); if (mid_dir.file_count != 0) { mvwaddstr(win, 0, strlen(top_buffer)+1, mid_dir.current_file->file_name); } } pthread_mutex_unlock(&mutex_top); } else { mvwaddstr(win, 0, terminal_width/2, "LOADING"); /* status |= STATUS_UPDATE_SCREEN_GENERIC; */ } } void window_btm(WINDOW *win){ if (pthread_mutex_trylock(&mutex_btm) == 0) { if (*top_buffer != ' ') { /*printing ' ' (standard initialized value, see threading_init) makes valgrind throw a fuss*/ mvwprintw(win, 0, 0, "%s", btm_buffer); } pthread_mutex_unlock(&mutex_btm); /*the printing of the input char is done in user_interactions*/ /*the printing of all possible inputs are done in user_interactions */ } else { mvwaddstr(win, 0, terminal_width/2, "LOADING"); /* status |= STATUS_UPDATE_SCREEN_GENERIC; */ } } void window_lft(WINDOW *win){ if (pthread_mutex_trylock(&mutex_lft) == 0) { print_dir(win, 0, &lft_dir); pthread_mutex_unlock(&mutex_lft); } else { mvwaddstr(win, terminal_height/2, terminal_width/8, "LOADING"); /* status |= STATUS_UPDATE_SCREEN_GENERIC; */ } } void window_mid(WINDOW *win){ if (pthread_mutex_trylock(&mutex_mid) == 0) { if (mid_dir.file_count == 0) { mvwaddstr(win, 0, 0, "empty"); } else { print_dir(win, 1, &mid_dir); } pthread_mutex_unlock(&mutex_mid); } else { mvwaddstr(win, terminal_height/2, terminal_width/4, "LOADING"); /* status |= STATUS_UPDATE_SCREEN_GENERIC; */ } } void window_rgt(WINDOW *win){ if (pthread_mutex_trylock(&mutex_rgt) == 0) { if (!rgt_dir.current_file) { mvwaddstr(win, 0, 0, "not accessible"); }else if (rgt_dir.current_file->file_type == FILE_TYPE_OPEN_FILE) { mvwaddnstr(win, 0, 0, rgt_buffer, (terminal_width/2) * terminal_width); } else if ((rgt_dir.current_file->permissions & S_IRUSR) == 0) { mvwaddstr(win, 0, 0, "not accessible"); } else { print_dir(win, 0, &rgt_dir); } pthread_mutex_unlock(&mutex_rgt); } else { mvwaddstr(win, terminal_height/2, terminal_width/4, "LOADING"); /* status |= STATUS_UPDATE_SCREEN_GENERIC; */ } }