From 78360ec3b067af33d45c2a57ace2fee03d1d2354 Mon Sep 17 00:00:00 2001 From: Frederic Culot Date: Sun, 4 Mar 2007 16:14:31 +0000 Subject: use of terminal default background color instead of black call to custom_load_color() added in load_conf() update_windows() updated to avoid the use of the global 'colr' variable --- src/calcurse.c | 109 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 65 insertions(+), 44 deletions(-) (limited to 'src/calcurse.c') diff --git a/src/calcurse.c b/src/calcurse.c index cdb78d8..3e59d19 100755 --- a/src/calcurse.c +++ b/src/calcurse.c @@ -1,4 +1,4 @@ -/* $calcurse: calcurse.c,v 1.36 2007/02/25 19:32:30 culot Exp $ */ +/* $calcurse: calcurse.c,v 1.37 2007/03/04 16:14:31 culot Exp $ */ /* * Calcurse - text-based organizer @@ -97,11 +97,11 @@ enum window_number {CALENDAR, APPOINTMENT, TODO}; /* External functions */ void get_date(void); -void init_vars(int colr); +void init_vars(); void init_notify_bar(void); void init_wins(void), reinit_wins(void); void add_item(void); -void load_conf(void); +void load_conf(int background); bool fill_config_var(char *string); void update_todo_panel(void); void update_app_panel(int yeat, int month, int day); @@ -123,13 +123,13 @@ void del_item(void); */ int main(int argc, char **argv) { - int ch; + int ch, background, foreground; int non_interactive; bool do_storage = false; bool day_changed = false; char *no_color_support = - _("Sorry, colors are not supported by your terminal\n" - "(Press [ENTER] to continue)"); + _("Sorry, colors are not supported by your terminal\n" + "(Press [ENTER] to continue)"); char *quit_message = _("Do you really want to quit ?"); char choices[] = "[y/n] "; @@ -148,7 +148,8 @@ int main(int argc, char **argv) * The data path is also initialized here. */ non_interactive = parse_args(argc, argv, colr); - if (non_interactive) return EXIT_SUCCESS; + if (non_interactive) + return EXIT_SUCCESS; /* Begin of interactive mode with ncurses interface. */ initscr(); /* start the curses mode */ @@ -162,24 +163,32 @@ int main(int argc, char **argv) /* Check if terminal supports color. */ if (has_colors()) { colorize = true; + background = COLOR_BLACK; + foreground = COLOR_WHITE; start_color(); +#ifdef NCURSES_VERSION + if (use_default_colors() != ERR) { + background = -1; + foreground = -1; + } +#endif /* NCURSES_VERSION */ + /* Color assignment */ - init_pair(1, COLOR_RED, COLOR_BLACK); - init_pair(2, COLOR_GREEN, COLOR_BLACK); - init_pair(3, COLOR_BLUE, COLOR_BLACK); - init_pair(4, COLOR_CYAN, COLOR_BLACK); - init_pair(5, COLOR_YELLOW, COLOR_BLACK); - init_pair(6, COLOR_BLACK, COLOR_GREEN); - init_pair(7, COLOR_BLACK, COLOR_YELLOW); - init_pair(8, COLOR_RED, COLOR_BLUE); - init_pair(9, COLOR_WHITE, COLOR_BLACK); - } else { + init_pair(COLR_RED, COLOR_RED, background); + init_pair(COLR_GREEN, COLOR_GREEN, background); + init_pair(COLR_YELLOW, COLOR_YELLOW, background); + init_pair(COLR_BLUE, COLOR_BLUE, background); + init_pair(COLR_MAGENTA, COLOR_MAGENTA, background); + init_pair(COLR_CYAN, COLOR_CYAN, background); + init_pair(COLR_DEFAULT, foreground, background); + init_pair(COLR_HIGH, COLOR_BLACK, COLOR_GREEN); + init_pair(COLR_CUSTOM, COLOR_RED, background); + + } else colorize = false; - use_default_colors(); - } - init_vars(colr); + init_vars(); init_wins(); notify_init_bar(nl_not, nc_not, y_not, x_not); reset_status_page(); @@ -191,8 +200,7 @@ int main(int argc, char **argv) * the todo list, appointments and events. */ no_data_file = check_data_files(); - load_conf(); - custom_init_attr(colr); + load_conf(background); nb_tod = load_todo(colr); load_app(); notify_catch_children(); @@ -290,8 +298,8 @@ int main(int argc, char **argv) case 'c': if (has_colors()) { colorize = true; - colr = color_config(colr); - custom_init_attr(colr); + custom_color_config( + notify_bar()); } else { colorize = false; erase_window_part(swin, 0, 0, @@ -504,14 +512,16 @@ int main(int argc, char **argv) } else /* next week */ sel_day = sel_day + 7; } else { - if ((which_pan == APPOINTMENT) & (hilt_app < number_events_inday + number_apoints_inday)) - { + if ((which_pan == APPOINTMENT) && + (hilt_app < number_events_inday + + number_apoints_inday)) { hilt_app++; scroll_pad_down(hilt_app, number_events_inday, nl_app); } - if ((which_pan == TODO) & (hilt_tod < nb_tod)) { + if ((which_pan == TODO) && + (hilt_tod < nb_tod)) { ++hilt_tod; if (hilt_tod - first_todo_onscreen == nl_tod - 4) @@ -566,7 +576,7 @@ int main(int argc, char **argv) /* * Variables init */ -void init_vars(int colr) +void init_vars() { // Variables for user configuration confirm_quit = true; @@ -584,7 +594,7 @@ void init_vars(int colr) apad->ptrwin = newpad(apad->length, apad->width); // Attribute definitions for color and non-color terminals - custom_init_attr(colr); + custom_init_attr(); // Start at the current date sel_year = year; @@ -615,32 +625,43 @@ void init_notify_bar(void) * Update all of the three windows and put a border around the * selected window. */ -void update_windows(int surrounded_window) +void +update_windows(int surrounded_window) { - if (surrounded_window == CALENDAR) { - border_color(cwin, colr); + switch (surrounded_window) { + + case CALENDAR: + border_color(cwin); border_nocolor(awin); border_nocolor(twin); - } else if (surrounded_window == APPOINTMENT) { - border_color(awin, colr); + break; + + case APPOINTMENT: + border_color(awin); border_nocolor(cwin); border_nocolor(twin); - } else if (surrounded_window == TODO) { - border_color(twin, colr); + break; + + case TODO: + border_color(twin); border_nocolor(awin); border_nocolor(cwin); - } else { - /* NOTREACHED */ + break; + + default: fputs(_("FATAL ERROR in update_windows: no window selected\n"),stderr); exit(EXIT_FAILURE); + /* NOTREACHED */ } + update_app_panel(sel_year, sel_month, sel_day); update_todo_panel(); update_cal_panel(cwin, nl_cal, nc_cal, sel_month, - sel_year, sel_day, day, month, year, - week_begins_on_monday); + sel_year, sel_day, day, month, year, + week_begins_on_monday); status_bar(surrounded_window, colr, nc_bar, nl_bar); - if (notify_bar()) notify_update_bar(); + if (notify_bar()) + notify_update_bar(); wmove(swin, 0, 0); doupdate(); } @@ -1381,7 +1402,8 @@ void store_day(int year, int month, int day, bool day_changed) } /* Load the user configuration */ -void load_conf(void) +void +load_conf(int background) { FILE *data_file; char *mesg_line1 = _("Failed to open config file"); @@ -1428,8 +1450,7 @@ void load_conf(void) fill_config_var(e_conf); var = 0; } else if (var == 7) { - colr = atoi(e_conf); - if (colr == 0) colorize = false; + custom_load_color(e_conf, background); var = 0; } else if (var == 8) { layout = atoi(e_conf); -- cgit v1.2.3-54-g00ecf