static NCURSES_INLINE void #endif wbkgrndset(WINDOW *win, const ARG_CH_T ch) { T((T_CALLED("wbkgdset(%p,%s)"), (void *) win, _tracech_t(ch))); if (win) { attr_t off = AttrOf(win->_nc_bkgd); attr_t on = AttrOf(CHDEREF(ch)); toggle_attr_off(WINDOW_ATTRS(win), off); toggle_attr_on(WINDOW_ATTRS(win), on); #if NCURSES_EXT_COLORS { int pair; if ((pair = GetPair(win->_nc_bkgd)) != 0) SET_WINDOW_PAIR(win, 0); if ((pair = GetPair(CHDEREF(ch))) != 0) SET_WINDOW_PAIR(win, pair); } #endif if (CharOf(CHDEREF(ch)) == L('\0')) { SetChar(win->_nc_bkgd, BLANK_TEXT, AttrOf(CHDEREF(ch))); if_EXT_COLORS(SetPair(win->_nc_bkgd, GetPair(CHDEREF(ch)))); } else { win->_nc_bkgd = CHDEREF(ch); } #if USE_WIDEC_SUPPORT /* * If we're compiled for wide-character support, _bkgrnd is the * preferred location for the background information since it stores * more than _bkgd. Update _bkgd each time we modify _bkgrnd, so the * macro getbkgd() will work. */ { cchar_t wch; int tmp; (void) wgetbkgrnd(win, &wch); tmp = _nc_to_char((wint_t) CharOf(wch)); win->_bkgd = (((tmp == EOF) ? ' ' : (chtype) tmp) | (AttrOf(wch) & ALL_BUT_COLOR) | ColorPair(GET_WINDOW_PAIR(win))); } #endif } returnVoid; }
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~FUNCTION~~~~~~ Console::Console NOTES: Constructor */ CursesConsole::CursesConsole() { mColors.push_back( ColorPair( ColorWhite, ColorBlack ) ); mCurrentTextPair = 0; mCurrentBGPair = 0; mpInputBuffer = new char[InputBufferSize]; initscr(); if(has_colors()) start_color(); scrollok( stdscr, true ); }
setcchar(cchar_t *wcval, const wchar_t *wch, const attr_t attrs, short color_pair, const void *opts) { unsigned i; unsigned len; int code = OK; TR(TRACE_CCALLS, (T_CALLED("setcchar(%p,%s,%lu,%d,%p)"), (void *) wcval, _nc_viswbuf(wch), (unsigned long) attrs, color_pair, opts)); len = (unsigned) wcslen(wch); if (opts != NULL || (len > 1 && wcwidth(wch[0]) < 0)) { code = ERR; } else { if (len > CCHARW_MAX) len = CCHARW_MAX; /* * If we have a following spacing-character, stop at that point. We * are only interested in adding non-spacing characters. */ for (i = 1; i < len; ++i) { if (wcwidth(wch[i]) != 0) { len = i; break; } } memset(wcval, 0, sizeof(*wcval)); if (len != 0) { SetAttr(*wcval, attrs | (attr_t) ColorPair(color_pair)); SetPair(CHDEREF(wcval), color_pair); memcpy(&wcval->chars, wch, len * sizeof(wchar_t)); TR(TRACE_CCALLS, ("copy %d wchars, first is %s", len, _tracecchar_t(wcval))); } } TR(TRACE_CCALLS, (T_RETURN("%d"), code)); return (code); }
void CRT_setColors(int colorScheme) { CRT_colorScheme = colorScheme; if (colorScheme == COLORSCHEME_BLACKNIGHT) { for (int i = 0; i < 8; i++) for (int j = 0; j < 8; j++) init_pair((7-i)*8+j, i, j); } else { for (int i = 0; i < 8; i++) for (int j = 0; j < 8; j++) init_pair((7-i)*8+j, i, (j==0?-1:j)); } if (colorScheme == COLORSCHEME_MONOCHROME) { CRT_colors[RESET_COLOR] = A_NORMAL; CRT_colors[DEFAULT_COLOR] = A_NORMAL; CRT_colors[FUNCTION_BAR] = A_REVERSE; CRT_colors[FUNCTION_KEY] = A_NORMAL; CRT_colors[PANEL_HEADER_FOCUS] = A_REVERSE; CRT_colors[PANEL_HEADER_UNFOCUS] = A_REVERSE; CRT_colors[PANEL_HIGHLIGHT_FOCUS] = A_REVERSE; CRT_colors[PANEL_HIGHLIGHT_UNFOCUS] = A_BOLD; CRT_colors[FAILED_SEARCH] = A_REVERSE | A_BOLD; CRT_colors[UPTIME] = A_BOLD; CRT_colors[BATTERY] = A_BOLD; CRT_colors[LARGE_NUMBER] = A_BOLD; CRT_colors[METER_TEXT] = A_NORMAL; CRT_colors[METER_VALUE] = A_BOLD; CRT_colors[LED_COLOR] = A_NORMAL; CRT_colors[TASKS_RUNNING] = A_BOLD; CRT_colors[PROCESS] = A_NORMAL; CRT_colors[PROCESS_SHADOW] = A_DIM; CRT_colors[PROCESS_TAG] = A_BOLD; CRT_colors[PROCESS_MEGABYTES] = A_BOLD; CRT_colors[PROCESS_BASENAME] = A_BOLD; CRT_colors[PROCESS_TREE] = A_BOLD; CRT_colors[PROCESS_R_STATE] = A_BOLD; CRT_colors[PROCESS_HIGH_PRIORITY] = A_BOLD; CRT_colors[PROCESS_LOW_PRIORITY] = A_DIM; CRT_colors[PROCESS_THREAD] = A_BOLD; CRT_colors[PROCESS_THREAD_BASENAME] = A_REVERSE; CRT_colors[BAR_BORDER] = A_BOLD; CRT_colors[BAR_SHADOW] = A_DIM; CRT_colors[SWAP] = A_BOLD; CRT_colors[GRAPH_1] = A_BOLD; CRT_colors[GRAPH_2] = A_BOLD; CRT_colors[GRAPH_3] = A_BOLD; CRT_colors[GRAPH_4] = A_NORMAL; CRT_colors[GRAPH_5] = A_NORMAL; CRT_colors[GRAPH_6] = A_NORMAL; CRT_colors[GRAPH_7] = A_DIM; CRT_colors[GRAPH_8] = A_DIM; CRT_colors[GRAPH_9] = A_DIM; CRT_colors[MEMORY_USED] = A_BOLD; CRT_colors[MEMORY_BUFFERS] = A_NORMAL; CRT_colors[MEMORY_CACHE] = A_NORMAL; CRT_colors[LOAD_AVERAGE_FIFTEEN] = A_DIM; CRT_colors[LOAD_AVERAGE_FIVE] = A_NORMAL; CRT_colors[LOAD_AVERAGE_ONE] = A_BOLD; CRT_colors[LOAD] = A_BOLD; CRT_colors[HELP_BOLD] = A_BOLD; CRT_colors[CLOCK] = A_BOLD; CRT_colors[CHECK_BOX] = A_BOLD; CRT_colors[CHECK_MARK] = A_NORMAL; CRT_colors[CHECK_TEXT] = A_NORMAL; CRT_colors[HOSTNAME] = A_BOLD; CRT_colors[CPU_NICE] = A_NORMAL; CRT_colors[CPU_NORMAL] = A_BOLD; CRT_colors[CPU_KERNEL] = A_BOLD; CRT_colors[CPU_IOWAIT] = A_NORMAL; CRT_colors[CPU_IRQ] = A_BOLD; CRT_colors[CPU_SOFTIRQ] = A_BOLD; CRT_colors[CPU_STEAL] = A_REVERSE; CRT_colors[CPU_GUEST] = A_REVERSE; } else if (CRT_colorScheme == COLORSCHEME_BLACKONWHITE) { CRT_colors[RESET_COLOR] = ColorPair(Black,White); CRT_colors[DEFAULT_COLOR] = ColorPair(Black,White); CRT_colors[FUNCTION_BAR] = ColorPair(Black,Cyan); CRT_colors[FUNCTION_KEY] = ColorPair(Black,White); CRT_colors[PANEL_HEADER_FOCUS] = ColorPair(Black,Green); CRT_colors[PANEL_HEADER_UNFOCUS] = ColorPair(Black,Green); CRT_colors[PANEL_HIGHLIGHT_FOCUS] = ColorPair(Black,Cyan); CRT_colors[PANEL_HIGHLIGHT_UNFOCUS] = ColorPair(Blue,White); CRT_colors[FAILED_SEARCH] = ColorPair(Red,Cyan); CRT_colors[UPTIME] = ColorPair(Yellow,White); CRT_colors[BATTERY] = ColorPair(Yellow,White); CRT_colors[LARGE_NUMBER] = ColorPair(Red,White); CRT_colors[METER_TEXT] = ColorPair(Blue,White); CRT_colors[METER_VALUE] = ColorPair(Black,White); CRT_colors[LED_COLOR] = ColorPair(Green,White); CRT_colors[TASKS_RUNNING] = ColorPair(Green,White); CRT_colors[PROCESS] = ColorPair(Black,White); CRT_colors[PROCESS_SHADOW] = A_BOLD | ColorPair(Black,White); CRT_colors[PROCESS_TAG] = ColorPair(White,Blue); CRT_colors[PROCESS_MEGABYTES] = ColorPair(Blue,White); CRT_colors[PROCESS_BASENAME] = ColorPair(Blue,White); CRT_colors[PROCESS_TREE] = ColorPair(Green,White); CRT_colors[PROCESS_R_STATE] = ColorPair(Green,White); CRT_colors[PROCESS_HIGH_PRIORITY] = ColorPair(Red,White); CRT_colors[PROCESS_LOW_PRIORITY] = ColorPair(Red,White); CRT_colors[PROCESS_THREAD] = ColorPair(Blue,White); CRT_colors[PROCESS_THREAD_BASENAME] = A_BOLD | ColorPair(Blue,White); CRT_colors[BAR_BORDER] = ColorPair(Blue,White); CRT_colors[BAR_SHADOW] = ColorPair(Black,White); CRT_colors[SWAP] = ColorPair(Red,White); CRT_colors[GRAPH_1] = ColorPair(Yellow,White); CRT_colors[GRAPH_2] = ColorPair(Yellow,White); CRT_colors[GRAPH_3] = ColorPair(Yellow,White); CRT_colors[GRAPH_4] = ColorPair(Yellow,White); CRT_colors[GRAPH_5] = ColorPair(Yellow,White); CRT_colors[GRAPH_6] = ColorPair(Yellow,White); CRT_colors[GRAPH_7] = ColorPair(Yellow,White); CRT_colors[GRAPH_8] = ColorPair(Yellow,White); CRT_colors[GRAPH_9] = ColorPair(Yellow,White); CRT_colors[MEMORY_USED] = ColorPair(Green,White); CRT_colors[MEMORY_BUFFERS] = ColorPair(Cyan,White); CRT_colors[MEMORY_CACHE] = ColorPair(Yellow,White); CRT_colors[LOAD_AVERAGE_FIFTEEN] = ColorPair(Black,White); CRT_colors[LOAD_AVERAGE_FIVE] = ColorPair(Black,White); CRT_colors[LOAD_AVERAGE_ONE] = ColorPair(Black,White); CRT_colors[LOAD] = ColorPair(Black,White); CRT_colors[HELP_BOLD] = ColorPair(Blue,White); CRT_colors[CLOCK] = ColorPair(Black,White); CRT_colors[CHECK_BOX] = ColorPair(Blue,White); CRT_colors[CHECK_MARK] = ColorPair(Black,White); CRT_colors[CHECK_TEXT] = ColorPair(Black,White); CRT_colors[HOSTNAME] = ColorPair(Black,White); CRT_colors[CPU_NICE] = ColorPair(Cyan,White); CRT_colors[CPU_NORMAL] = ColorPair(Green,White); CRT_colors[CPU_KERNEL] = ColorPair(Red,White); CRT_colors[CPU_IOWAIT] = A_BOLD | ColorPair(Black, White); CRT_colors[CPU_IRQ] = ColorPair(Blue,White); CRT_colors[CPU_SOFTIRQ] = ColorPair(Blue,White); CRT_colors[CPU_STEAL] = ColorPair(Cyan,White); CRT_colors[CPU_GUEST] = ColorPair(Cyan,White); } else if (CRT_colorScheme == COLORSCHEME_BLACKONWHITE2) { CRT_colors[RESET_COLOR] = ColorPair(Black,Black); CRT_colors[DEFAULT_COLOR] = ColorPair(Black,Black); CRT_colors[FUNCTION_BAR] = ColorPair(Black,Cyan); CRT_colors[FUNCTION_KEY] = ColorPair(Black,Black); CRT_colors[PANEL_HEADER_FOCUS] = ColorPair(Black,Green); CRT_colors[PANEL_HEADER_UNFOCUS] = ColorPair(Black,Green); CRT_colors[PANEL_HIGHLIGHT_FOCUS] = ColorPair(Black,Cyan); CRT_colors[PANEL_HIGHLIGHT_UNFOCUS] = ColorPair(Blue,Black); CRT_colors[FAILED_SEARCH] = ColorPair(Red,Cyan); CRT_colors[UPTIME] = ColorPair(Yellow,Black); CRT_colors[BATTERY] = ColorPair(Yellow,Black); CRT_colors[LARGE_NUMBER] = ColorPair(Red,Black); CRT_colors[METER_TEXT] = ColorPair(Blue,Black); CRT_colors[METER_VALUE] = ColorPair(Black,Black); CRT_colors[LED_COLOR] = ColorPair(Green,Black); CRT_colors[TASKS_RUNNING] = ColorPair(Green,Black); CRT_colors[PROCESS] = ColorPair(Black,Black); CRT_colors[PROCESS_SHADOW] = A_BOLD | ColorPair(Black,Black); CRT_colors[PROCESS_TAG] = ColorPair(White,Blue); CRT_colors[PROCESS_MEGABYTES] = ColorPair(Blue,Black); CRT_colors[PROCESS_BASENAME] = ColorPair(Green,Black); CRT_colors[PROCESS_TREE] = ColorPair(Blue,Black); CRT_colors[PROCESS_R_STATE] = ColorPair(Green,Black); CRT_colors[PROCESS_HIGH_PRIORITY] = ColorPair(Red,Black); CRT_colors[PROCESS_LOW_PRIORITY] = ColorPair(Red,Black); CRT_colors[PROCESS_THREAD] = ColorPair(Blue,Black); CRT_colors[PROCESS_THREAD_BASENAME] = A_BOLD | ColorPair(Blue,Black); CRT_colors[BAR_BORDER] = ColorPair(Blue,Black); CRT_colors[BAR_SHADOW] = ColorPair(Black,Black); CRT_colors[SWAP] = ColorPair(Red,Black); CRT_colors[GRAPH_1] = ColorPair(Yellow,Black); CRT_colors[GRAPH_2] = ColorPair(Yellow,Black); CRT_colors[GRAPH_3] = ColorPair(Yellow,Black); CRT_colors[GRAPH_4] = ColorPair(Yellow,Black); CRT_colors[GRAPH_5] = ColorPair(Yellow,Black); CRT_colors[GRAPH_6] = ColorPair(Yellow,Black); CRT_colors[GRAPH_7] = ColorPair(Yellow,Black); CRT_colors[GRAPH_8] = ColorPair(Yellow,Black); CRT_colors[GRAPH_9] = ColorPair(Yellow,Black); CRT_colors[MEMORY_USED] = ColorPair(Green,Black); CRT_colors[MEMORY_BUFFERS] = ColorPair(Cyan,Black); CRT_colors[MEMORY_CACHE] = ColorPair(Yellow,Black); CRT_colors[LOAD_AVERAGE_FIFTEEN] = ColorPair(Black,Black); CRT_colors[LOAD_AVERAGE_FIVE] = ColorPair(Black,Black); CRT_colors[LOAD_AVERAGE_ONE] = ColorPair(Black,Black); CRT_colors[LOAD] = ColorPair(White,Black); CRT_colors[HELP_BOLD] = ColorPair(Blue,Black); CRT_colors[CLOCK] = ColorPair(White,Black); CRT_colors[CHECK_BOX] = ColorPair(Blue,Black); CRT_colors[CHECK_MARK] = ColorPair(Black,Black); CRT_colors[CHECK_TEXT] = ColorPair(Black,Black); CRT_colors[HOSTNAME] = ColorPair(White,Black); CRT_colors[CPU_NICE] = ColorPair(Cyan,Black); CRT_colors[CPU_NORMAL] = ColorPair(Green,Black); CRT_colors[CPU_KERNEL] = ColorPair(Red,Black); CRT_colors[CPU_IOWAIT] = A_BOLD | ColorPair(Black, Black); CRT_colors[CPU_IRQ] = A_BOLD | ColorPair(Blue,Black); CRT_colors[CPU_SOFTIRQ] = ColorPair(Blue,Black); CRT_colors[CPU_STEAL] = ColorPair(Black,Black); CRT_colors[CPU_GUEST] = ColorPair(Black,Black); } else if (CRT_colorScheme == COLORSCHEME_MIDNIGHT) { CRT_colors[RESET_COLOR] = ColorPair(White,Blue); CRT_colors[DEFAULT_COLOR] = ColorPair(White,Blue); CRT_colors[FUNCTION_BAR] = ColorPair(Black,Cyan); CRT_colors[FUNCTION_KEY] = A_NORMAL; CRT_colors[PANEL_HEADER_FOCUS] = ColorPair(Black,Cyan); CRT_colors[PANEL_HEADER_UNFOCUS] = ColorPair(Black,Cyan); CRT_colors[PANEL_HIGHLIGHT_FOCUS] = ColorPair(Black,White); CRT_colors[PANEL_HIGHLIGHT_UNFOCUS] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[FAILED_SEARCH] = ColorPair(Red,Cyan); CRT_colors[UPTIME] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[BATTERY] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[LARGE_NUMBER] = A_BOLD | ColorPair(Red,Blue); CRT_colors[METER_TEXT] = ColorPair(Cyan,Blue); CRT_colors[METER_VALUE] = A_BOLD | ColorPair(Cyan,Blue); CRT_colors[LED_COLOR] = ColorPair(Green,Blue); CRT_colors[TASKS_RUNNING] = A_BOLD | ColorPair(Green,Blue); CRT_colors[PROCESS] = ColorPair(White,Blue); CRT_colors[PROCESS_SHADOW] = A_BOLD | ColorPair(Black,Blue); CRT_colors[PROCESS_TAG] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[PROCESS_MEGABYTES] = ColorPair(Cyan,Blue); CRT_colors[PROCESS_BASENAME] = A_BOLD | ColorPair(Cyan,Blue); CRT_colors[PROCESS_TREE] = ColorPair(Cyan,Blue); CRT_colors[PROCESS_R_STATE] = ColorPair(Green,Blue); CRT_colors[PROCESS_HIGH_PRIORITY] = ColorPair(Red,Blue); CRT_colors[PROCESS_LOW_PRIORITY] = ColorPair(Red,Blue); CRT_colors[PROCESS_THREAD] = ColorPair(Green,Blue); CRT_colors[PROCESS_THREAD_BASENAME] = A_BOLD | ColorPair(Green,Blue); CRT_colors[BAR_BORDER] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[BAR_SHADOW] = ColorPair(Cyan,Blue); CRT_colors[SWAP] = ColorPair(Red,Blue); CRT_colors[GRAPH_1] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[GRAPH_2] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[GRAPH_3] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[GRAPH_4] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[GRAPH_5] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[GRAPH_6] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[GRAPH_7] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[GRAPH_8] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[GRAPH_9] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[MEMORY_USED] = A_BOLD | ColorPair(Green,Blue); CRT_colors[MEMORY_BUFFERS] = A_BOLD | ColorPair(Cyan,Blue); CRT_colors[MEMORY_CACHE] = A_BOLD | ColorPair(Yellow,Blue); CRT_colors[LOAD_AVERAGE_FIFTEEN] = A_BOLD | ColorPair(Black,Blue); CRT_colors[LOAD_AVERAGE_FIVE] = A_NORMAL | ColorPair(White,Blue); CRT_colors[LOAD_AVERAGE_ONE] = A_BOLD | ColorPair(White,Blue); CRT_colors[LOAD] = A_BOLD | ColorPair(White,Blue); CRT_colors[HELP_BOLD] = A_BOLD | ColorPair(Cyan,Blue); CRT_colors[CLOCK] = ColorPair(White,Blue); CRT_colors[CHECK_BOX] = ColorPair(Cyan,Blue); CRT_colors[CHECK_MARK] = A_BOLD | ColorPair(White,Blue); CRT_colors[CHECK_TEXT] = A_NORMAL | ColorPair(White,Blue); CRT_colors[HOSTNAME] = ColorPair(White,Blue); CRT_colors[CPU_NICE] = A_BOLD | ColorPair(Cyan,Blue); CRT_colors[CPU_NORMAL] = A_BOLD | ColorPair(Green,Blue); CRT_colors[CPU_KERNEL] = A_BOLD | ColorPair(Red,Blue); CRT_colors[CPU_IOWAIT] = A_BOLD | ColorPair(Blue,Blue); CRT_colors[CPU_IRQ] = A_BOLD | ColorPair(Black,Blue); CRT_colors[CPU_SOFTIRQ] = ColorPair(Black,Blue); CRT_colors[CPU_STEAL] = ColorPair(White,Blue); CRT_colors[CPU_GUEST] = ColorPair(White,Blue); } else if (CRT_colorScheme == COLORSCHEME_BLACKNIGHT) { CRT_colors[RESET_COLOR] = ColorPair(Cyan,Black); CRT_colors[DEFAULT_COLOR] = ColorPair(Cyan,Black); CRT_colors[FUNCTION_BAR] = ColorPair(Black,Green); CRT_colors[FUNCTION_KEY] = ColorPair(Cyan,Black); CRT_colors[PANEL_HEADER_FOCUS] = ColorPair(Black,Green); CRT_colors[PANEL_HEADER_UNFOCUS] = ColorPair(Black,Green); CRT_colors[PANEL_HIGHLIGHT_FOCUS] = ColorPair(Black,Cyan); CRT_colors[PANEL_HIGHLIGHT_UNFOCUS] = ColorPair(Black,White); CRT_colors[FAILED_SEARCH] = ColorPair(Red,Cyan); CRT_colors[UPTIME] = ColorPair(Green,Black); CRT_colors[BATTERY] = ColorPair(Green,Black); CRT_colors[LARGE_NUMBER] = A_BOLD | ColorPair(Red,Black); CRT_colors[METER_TEXT] = ColorPair(Cyan,Black); CRT_colors[METER_VALUE] = ColorPair(Green,Black); CRT_colors[LED_COLOR] = ColorPair(Green,Black); CRT_colors[TASKS_RUNNING] = A_BOLD | ColorPair(Green,Black); CRT_colors[PROCESS] = ColorPair(Cyan,Black); CRT_colors[PROCESS_SHADOW] = A_BOLD | ColorPair(Black,Black); CRT_colors[PROCESS_TAG] = A_BOLD | ColorPair(Yellow,Black); CRT_colors[PROCESS_MEGABYTES] = A_BOLD | ColorPair(Green,Black); CRT_colors[PROCESS_BASENAME] = A_BOLD | ColorPair(Green,Black); CRT_colors[PROCESS_TREE] = ColorPair(Cyan,Black); CRT_colors[PROCESS_THREAD] = ColorPair(Green,Black); CRT_colors[PROCESS_THREAD_BASENAME] = A_BOLD | ColorPair(Blue,Black); CRT_colors[PROCESS_R_STATE] = ColorPair(Green,Black); CRT_colors[PROCESS_HIGH_PRIORITY] = ColorPair(Red,Black); CRT_colors[PROCESS_LOW_PRIORITY] = ColorPair(Red,Black); CRT_colors[BAR_BORDER] = A_BOLD | ColorPair(Green,Black); CRT_colors[BAR_SHADOW] = ColorPair(Cyan,Black); CRT_colors[SWAP] = ColorPair(Red,Black); CRT_colors[GRAPH_1] = A_BOLD | ColorPair(Red,Black); CRT_colors[GRAPH_2] = ColorPair(Red,Black); CRT_colors[GRAPH_3] = A_BOLD | ColorPair(Yellow,Black); CRT_colors[GRAPH_4] = A_BOLD | ColorPair(Green,Black); CRT_colors[GRAPH_5] = ColorPair(Green,Black); CRT_colors[GRAPH_6] = ColorPair(Cyan,Black); CRT_colors[GRAPH_7] = A_BOLD | ColorPair(Blue,Black); CRT_colors[GRAPH_8] = ColorPair(Blue,Black); CRT_colors[GRAPH_9] = A_BOLD | ColorPair(Black,Black); CRT_colors[MEMORY_USED] = ColorPair(Green,Black); CRT_colors[MEMORY_BUFFERS] = ColorPair(Blue,Black); CRT_colors[MEMORY_CACHE] = ColorPair(Yellow,Black); CRT_colors[LOAD_AVERAGE_FIFTEEN] = ColorPair(Green,Black); CRT_colors[LOAD_AVERAGE_FIVE] = ColorPair(Green,Black); CRT_colors[LOAD_AVERAGE_ONE] = A_BOLD | ColorPair(Green,Black); CRT_colors[LOAD] = A_BOLD; CRT_colors[HELP_BOLD] = A_BOLD | ColorPair(Cyan,Black); CRT_colors[CLOCK] = ColorPair(Green,Black); CRT_colors[CHECK_BOX] = ColorPair(Green,Black); CRT_colors[CHECK_MARK] = A_BOLD | ColorPair(Green,Black); CRT_colors[CHECK_TEXT] = ColorPair(Cyan,Black); CRT_colors[HOSTNAME] = ColorPair(Green,Black); CRT_colors[CPU_NICE] = ColorPair(Blue,Black); CRT_colors[CPU_NORMAL] = ColorPair(Green,Black); CRT_colors[CPU_KERNEL] = ColorPair(Red,Black); CRT_colors[CPU_IOWAIT] = ColorPair(Yellow,Black); CRT_colors[CPU_IRQ] = A_BOLD | ColorPair(Blue,Black); CRT_colors[CPU_SOFTIRQ] = ColorPair(Blue,Black); CRT_colors[CPU_STEAL] = ColorPair(Cyan,Black); CRT_colors[CPU_GUEST] = ColorPair(Cyan,Black); } else { /* Default */ CRT_colors[RESET_COLOR] = ColorPair(White,Black); CRT_colors[DEFAULT_COLOR] = ColorPair(White,Black); CRT_colors[FUNCTION_BAR] = ColorPair(Black,Cyan); CRT_colors[FUNCTION_KEY] = ColorPair(White,Black); CRT_colors[PANEL_HEADER_FOCUS] = ColorPair(Black,Green); CRT_colors[PANEL_HEADER_UNFOCUS] = ColorPair(Black,Green); CRT_colors[PANEL_HIGHLIGHT_FOCUS] = ColorPair(Black,Cyan); CRT_colors[PANEL_HIGHLIGHT_UNFOCUS] = ColorPair(Black,White); CRT_colors[FAILED_SEARCH] = ColorPair(Red,Cyan); CRT_colors[UPTIME] = A_BOLD | ColorPair(Cyan,Black); CRT_colors[BATTERY] = A_BOLD | ColorPair(Cyan,Black); CRT_colors[LARGE_NUMBER] = A_BOLD | ColorPair(Red,Black); CRT_colors[METER_TEXT] = ColorPair(Cyan,Black); CRT_colors[METER_VALUE] = A_BOLD | ColorPair(Cyan,Black); CRT_colors[LED_COLOR] = ColorPair(Green,Black); CRT_colors[TASKS_RUNNING] = A_BOLD | ColorPair(Green,Black); CRT_colors[PROCESS] = A_NORMAL; CRT_colors[PROCESS_SHADOW] = A_BOLD | ColorPair(Black,Black); CRT_colors[PROCESS_TAG] = A_BOLD | ColorPair(Yellow,Black); CRT_colors[PROCESS_MEGABYTES] = ColorPair(Cyan,Black); CRT_colors[PROCESS_BASENAME] = A_BOLD | ColorPair(Cyan,Black); CRT_colors[PROCESS_TREE] = ColorPair(Cyan,Black); CRT_colors[PROCESS_R_STATE] = ColorPair(Green,Black); CRT_colors[PROCESS_HIGH_PRIORITY] = ColorPair(Red,Black); CRT_colors[PROCESS_LOW_PRIORITY] = ColorPair(Red,Black); CRT_colors[PROCESS_THREAD] = ColorPair(Green,Black); CRT_colors[PROCESS_THREAD_BASENAME] = A_BOLD | ColorPair(Green,Black); CRT_colors[BAR_BORDER] = A_BOLD; CRT_colors[BAR_SHADOW] = A_BOLD | ColorPair(Black,Black); CRT_colors[SWAP] = ColorPair(Red,Black); CRT_colors[GRAPH_1] = A_BOLD | ColorPair(Red,Black); CRT_colors[GRAPH_2] = ColorPair(Red,Black); CRT_colors[GRAPH_3] = A_BOLD | ColorPair(Yellow,Black); CRT_colors[GRAPH_4] = A_BOLD | ColorPair(Green,Black); CRT_colors[GRAPH_5] = ColorPair(Green,Black); CRT_colors[GRAPH_6] = ColorPair(Cyan,Black); CRT_colors[GRAPH_7] = A_BOLD | ColorPair(Blue,Black); CRT_colors[GRAPH_8] = ColorPair(Blue,Black); CRT_colors[GRAPH_9] = A_BOLD | ColorPair(Black,Black); CRT_colors[MEMORY_USED] = ColorPair(Green,Black); CRT_colors[MEMORY_BUFFERS] = ColorPair(Blue,Black); CRT_colors[MEMORY_CACHE] = ColorPair(Yellow,Black); CRT_colors[LOAD_AVERAGE_FIFTEEN] = A_BOLD | ColorPair(Black,Black); CRT_colors[LOAD_AVERAGE_FIVE] = A_NORMAL; CRT_colors[LOAD_AVERAGE_ONE] = A_BOLD; CRT_colors[LOAD] = A_BOLD; CRT_colors[HELP_BOLD] = A_BOLD | ColorPair(Cyan,Black); CRT_colors[CLOCK] = A_BOLD; CRT_colors[CHECK_BOX] = ColorPair(Cyan,Black); CRT_colors[CHECK_MARK] = A_BOLD; CRT_colors[CHECK_TEXT] = A_NORMAL; CRT_colors[HOSTNAME] = A_BOLD; CRT_colors[CPU_NICE] = ColorPair(Blue,Black); CRT_colors[CPU_NORMAL] = ColorPair(Green,Black); CRT_colors[CPU_KERNEL] = ColorPair(Red,Black); CRT_colors[CPU_IOWAIT] = A_BOLD | ColorPair(Black, Black); CRT_colors[CPU_IRQ] = ColorPair(Yellow,Black); CRT_colors[CPU_SOFTIRQ] = ColorPair(Magenta,Black); CRT_colors[CPU_STEAL] = ColorPair(Cyan,Black); CRT_colors[CPU_GUEST] = ColorPair(Cyan,Black); } }
void CRT_init(int delay, int colorScheme) { initscr(); noecho(); CRT_delay = delay; if (CRT_delay == 0) { CRT_delay = 1; } CRT_colors = CRT_colorSchemes[colorScheme]; CRT_colorScheme = colorScheme; for (int i = 0; i < LAST_COLORELEMENT; i++) { unsigned int color = CRT_colorSchemes[COLORSCHEME_DEFAULT][i]; CRT_colorSchemes[COLORSCHEME_BROKENGRAY][i] = color == (A_BOLD | ColorPair(Black,Black)) ? ColorPair(White,Black) : color; } halfdelay(CRT_delay); nonl(); intrflush(stdscr, false); keypad(stdscr, true); mouseinterval(0); curs_set(0); if (has_colors()) { start_color(); CRT_hasColors = true; } else { CRT_hasColors = false; } CRT_termType = getenv("TERM"); if (String_eq(CRT_termType, "linux")) CRT_scrollHAmount = 20; else CRT_scrollHAmount = 5; if (String_eq(CRT_termType, "xterm") || String_eq(CRT_termType, "xterm-color") || String_eq(CRT_termType, "vt220")) { define_key("\033[H", KEY_HOME); define_key("\033[F", KEY_END); define_key("\033[7~", KEY_HOME); define_key("\033[8~", KEY_END); define_key("\033OP", KEY_F(1)); define_key("\033OQ", KEY_F(2)); define_key("\033OR", KEY_F(3)); define_key("\033OS", KEY_F(4)); define_key("\033[11~", KEY_F(1)); define_key("\033[12~", KEY_F(2)); define_key("\033[13~", KEY_F(3)); define_key("\033[14~", KEY_F(4)); define_key("\033[17;2~", KEY_F(18)); char sequence[3] = "\033a"; for (char c = 'a'; c <= 'z'; c++) { sequence[1] = c; define_key(sequence, KEY_ALT('A' + (c - 'a'))); } } #ifndef DEBUG signal(11, CRT_handleSIGSEGV); #endif signal(SIGTERM, CRT_handleSIGTERM); signal(SIGQUIT, CRT_handleSIGTERM); use_default_colors(); if (!has_colors()) CRT_colorScheme = 1; CRT_setColors(CRT_colorScheme); /* initialize locale */ setlocale(LC_CTYPE, ""); #ifdef HAVE_LIBNCURSESW if(strcmp(nl_langinfo(CODESET), "UTF-8") == 0) CRT_utf8 = true; else CRT_utf8 = false; #endif CRT_treeStr = #ifdef HAVE_LIBNCURSESW CRT_utf8 ? CRT_treeStrUtf8 : #endif CRT_treeStrAscii; #if NCURSES_MOUSE_VERSION > 1 mousemask(BUTTON1_RELEASED | BUTTON4_PRESSED | BUTTON5_PRESSED, NULL); #else mousemask(BUTTON1_RELEASED, NULL); #endif }
/////////////////////////////////////////////////////////////////////////////// // sinsp_cursesui implementation /////////////////////////////////////////////////////////////////////////////// sinsp_cursesui::sinsp_cursesui(sinsp* inspector, string event_source_name, string cmdline_capture_filter, uint64_t refresh_interval_ns, bool print_containers, bool raw_output) { m_inspector = inspector; m_event_source_name = event_source_name; m_selected_view = 0; m_prev_selected_view = 0; m_selected_sidemenu_entry = 0; m_datatable = NULL; m_viz = NULL; m_cmdline_capture_filter = cmdline_capture_filter; m_paused = false; m_last_input_check_ts = 0; m_output_filtering = false; m_output_searching = false; m_is_filter_sysdig = false; m_eof = 0; m_offline_replay = false; m_last_progress_evt = 0; m_input_check_period_ns = UI_USER_INPUT_CHECK_PERIOD_NS; m_search_nomatch = false; m_chart = NULL; m_n_evts_in_file = 0; m_1st_evt_ts = 0; m_last_evt_ts = 0; m_evt_ts_delta = 0; m_timedelta_formatter = new sinsp_filter_check_reference(); m_refresh_interval_ns = refresh_interval_ns; m_print_containers = print_containers; m_raw_output = raw_output; m_truncated_input = false; #ifndef NOCURSESUI m_spybox_text_format = sinsp_evt::PF_NORMAL; m_sidemenu = NULL; m_spy_box = NULL; m_search_caller_interface = NULL; m_viewinfo_page = NULL; m_mainhelp_page = NULL; if(!m_raw_output) { // // Colors initialization // m_colors[RESET_COLOR] = ColorPair( COLOR_WHITE,COLOR_BLACK); m_colors[DEFAULT_COLOR] = ColorPair( COLOR_WHITE,COLOR_BLACK); m_colors[FUNCTION_BAR] = ColorPair(COLOR_BLACK,COLOR_YELLOW); m_colors[FUNCTION_KEY] = ColorPair( COLOR_WHITE,COLOR_BLACK); m_colors[PANEL_HEADER_FOCUS] = ColorPair(COLOR_BLACK,COLOR_GREEN); m_colors[PANEL_HEADER_UNFOCUS] = ColorPair(COLOR_BLACK,COLOR_GREEN); m_colors[PANEL_HIGHLIGHT_FOCUS] = ColorPair(COLOR_BLACK,COLOR_CYAN); m_colors[PANEL_HIGHLIGHT_UNFOCUS] = ColorPair(COLOR_BLACK, COLOR_WHITE); m_colors[PANEL_HEADER_LIST_FOCUS] = ColorPair(COLOR_BLACK,COLOR_YELLOW); m_colors[PANEL_HEADER_LIST_HIGHLIGHT] = ColorPair(COLOR_BLACK,COLOR_GREEN); m_colors[FAILED_SEARCH] = ColorPair(COLOR_RED,COLOR_CYAN); m_colors[UPTIME] = A_BOLD | ColorPair(COLOR_CYAN,COLOR_BLACK); m_colors[BATTERY] = A_BOLD | ColorPair(COLOR_CYAN,COLOR_BLACK); m_colors[LARGE_NUMBER] = A_BOLD | ColorPair(COLOR_RED,COLOR_BLACK); m_colors[METER_TEXT] = ColorPair(COLOR_CYAN,COLOR_BLACK); m_colors[METER_VALUE] = A_BOLD | ColorPair(COLOR_CYAN,COLOR_BLACK); m_colors[LED_COLOR] = ColorPair(COLOR_GREEN,COLOR_BLACK); m_colors[TASKS_RUNNING] = A_BOLD | ColorPair(COLOR_GREEN,COLOR_BLACK); m_colors[PROCESS] = A_NORMAL; m_colors[PROCESS_SHADOW] = A_BOLD | ColorPair(COLOR_BLACK,COLOR_BLACK); m_colors[PROCESS_TAG] = A_BOLD | ColorPair(COLOR_YELLOW,COLOR_BLACK); m_colors[PROCESS_MEGABYTES] = ColorPair(COLOR_CYAN,COLOR_BLACK); m_colors[PROCESS_BASENAME] = A_BOLD | ColorPair(COLOR_CYAN,COLOR_BLACK); m_colors[PROCESS_TREE] = ColorPair(COLOR_CYAN,COLOR_BLACK); m_colors[PROCESS_R_STATE] = ColorPair(COLOR_GREEN,COLOR_BLACK); m_colors[PROCESS_D_STATE] = A_BOLD | ColorPair(COLOR_RED,COLOR_BLACK); m_colors[PROCESS_HIGH_PRIORITY] = ColorPair(COLOR_RED,COLOR_BLACK); m_colors[PROCESS_LOW_PRIORITY] = ColorPair(COLOR_RED,COLOR_BLACK); m_colors[PROCESS_THREAD] = ColorPair(COLOR_GREEN,COLOR_BLACK); m_colors[PROCESS_THREAD_BASENAME] = A_BOLD | ColorPair(COLOR_GREEN,COLOR_BLACK); m_colors[BAR_BORDER] = A_BOLD; m_colors[BAR_SHADOW] = A_BOLD | ColorPair(COLOR_BLACK,COLOR_BLACK); m_colors[SWAP] = ColorPair(COLOR_RED,COLOR_BLACK); m_colors[GRAPH_1] = A_BOLD | ColorPair(COLOR_RED,COLOR_BLACK); m_colors[GRAPH_2] = ColorPair(COLOR_RED,COLOR_BLACK); m_colors[GRAPH_3] = A_BOLD | ColorPair(COLOR_YELLOW,COLOR_BLACK); m_colors[GRAPH_4] = A_BOLD | ColorPair(COLOR_GREEN,COLOR_BLACK); m_colors[GRAPH_5] = ColorPair(COLOR_GREEN,COLOR_BLACK); m_colors[GRAPH_6] = ColorPair(COLOR_CYAN,COLOR_BLACK); m_colors[GRAPH_7] = A_BOLD | ColorPair(COLOR_BLUE,COLOR_BLACK); m_colors[GRAPH_8] = ColorPair(COLOR_BLUE,COLOR_BLACK); m_colors[GRAPH_9] = A_BOLD | ColorPair(COLOR_BLACK,COLOR_BLACK); m_colors[MEMORY_USED] = ColorPair(COLOR_GREEN,COLOR_BLACK); m_colors[MEMORY_BUFFERS] = ColorPair(COLOR_BLUE,COLOR_BLACK); m_colors[MEMORY_BUFFERS_TEXT] = A_BOLD | ColorPair(COLOR_BLUE,COLOR_BLACK); m_colors[MEMORY_CACHE] = ColorPair(COLOR_YELLOW,COLOR_BLACK); m_colors[LOAD_AVERAGE_FIFTEEN] = A_BOLD | ColorPair(COLOR_BLACK,COLOR_BLACK); m_colors[LOAD_AVERAGE_FIVE] = A_NORMAL; m_colors[LOAD_AVERAGE_ONE] = A_BOLD; m_colors[LOAD] = A_BOLD; m_colors[HELP_BOLD] = A_BOLD | ColorPair(COLOR_CYAN,COLOR_BLACK); m_colors[CLOCK] = A_BOLD; m_colors[CHECK_BOX] = ColorPair(COLOR_CYAN,COLOR_BLACK); m_colors[CHECK_MARK] = A_BOLD; m_colors[CHECK_TEXT] = A_NORMAL; m_colors[HOSTNAME] = A_BOLD; m_colors[CPU_NICE] = ColorPair(COLOR_BLUE,COLOR_BLACK); m_colors[CPU_NICE_TEXT] = A_BOLD | ColorPair(COLOR_BLUE,COLOR_BLACK); m_colors[CPU_NORMAL] = ColorPair(COLOR_GREEN,COLOR_BLACK); m_colors[CPU_KERNEL] = ColorPair(COLOR_RED,COLOR_BLACK); m_colors[CPU_IOWAIT] = A_BOLD | ColorPair(COLOR_BLACK, COLOR_BLACK); m_colors[CPU_IRQ] = ColorPair(COLOR_YELLOW,COLOR_BLACK); m_colors[CPU_SOFTIRQ] = ColorPair(COLOR_MAGENTA,COLOR_BLACK); m_colors[SPY_READ] = ColorPair(COLOR_RED,COLOR_BLACK); m_colors[SPY_WRITE] = ColorPair(COLOR_BLUE,COLOR_BLACK); // // Populate the main menu entries // m_menuitems.push_back(sinsp_menuitem_info("F1", "Help", sinsp_menuitem_info::ALL, KEY_F(1))); m_menuitems.push_back(sinsp_menuitem_info("F2", "Views", sinsp_menuitem_info::ALL, KEY_F(2))); m_menuitems.push_back(sinsp_menuitem_info("F4", "Filter", sinsp_menuitem_info::ALL, KEY_F(4))); m_menuitems.push_back(sinsp_menuitem_info("F5", "Echo", sinsp_menuitem_info::TABLE, KEY_F(5))); m_menuitems.push_back(sinsp_menuitem_info("F6", "Dig", sinsp_menuitem_info::TABLE, KEY_F(6))); m_menuitems.push_back(sinsp_menuitem_info("F7", "Legend", sinsp_menuitem_info::ALL, KEY_F(7))); m_menuitems.push_back(sinsp_menuitem_info("CTRL+F", "Search", sinsp_menuitem_info::ALL, 6)); m_menuitems.push_back(sinsp_menuitem_info("p", "Pause", sinsp_menuitem_info::ALL, 'p')); m_menuitems.push_back(sinsp_menuitem_info("c", "Clear", sinsp_menuitem_info::LIST, 'c')); m_menuitems_spybox.push_back(sinsp_menuitem_info("F1", "Help", sinsp_menuitem_info::ALL, KEY_F(1))); m_menuitems_spybox.push_back(sinsp_menuitem_info("F2", "View As", sinsp_menuitem_info::ALL, KEY_F(2))); m_menuitems_spybox.push_back(sinsp_menuitem_info("CTRL+F", "Search", sinsp_menuitem_info::ALL, 6)); m_menuitems_spybox.push_back(sinsp_menuitem_info("p", "Pause", sinsp_menuitem_info::ALL, 'p')); m_menuitems_spybox.push_back(sinsp_menuitem_info("Bak", "Back", sinsp_menuitem_info::ALL, KEY_BACKSPACE)); m_menuitems_spybox.push_back(sinsp_menuitem_info("c", "Clear", sinsp_menuitem_info::ALL, 'c')); m_menuitems_spybox.push_back(sinsp_menuitem_info("CTRL+G", "Goto", sinsp_menuitem_info::ALL, 7)); // // Get screen dimensions // getmaxyx(stdscr, m_screenh, m_screenw); } #endif }
void ColorModel::add(const std::string &name, const Color *const color1, const Color *const color2) { mNames.push_back(name); mColors.push_back(ColorPair(color1, color2)); }
int main( int argc, char* argv[] ) { //I sometimes use this to give me an opportunity to attach a debugger. //__asm int 3; GetPot cl( argc, argv ); //Test if we are using curses output bool UseCurses = false; if( cl.search( 2, "--curses", "-c" ) ) UseCurses = 1; Console* pCON = UseCurses ? (Console*)new CursesConsole : (Console*)new StdConsole; Console& CON = *pCON; //Win32 doesn't really support this right now. #if defined(PLAT_WIN32) if( !UseCurses ) CON.UseColor( false ); #endif //Test if we should print help message and quit if( cl.search( 2, "--help", "-h" ) ) { CON << TXT("SS Console Interpreter, \n"); CON << TXT("Usage: storyscript [OPTIONS] FILE\n"); CON << TXT("Options are:\n"); CON << TXT(" -u, -ungodly-verbose Rediculously verbose output.\n"); CON << TXT(" -b, -block BLOCKNAME Specifies the starting block.\n"); CON << TXT(" -h, --help Prints the message you are looking at right now.\n"); CON << TXT(" -c, --curses Use curses for output (ie. Fancy, colorful text).\n"); CON << TXT(" Currently a little buggy, but works well for files.\n"); CON << TXT(" -n, --no-color Don't print any color at all.\n"); CON << TXT(" -v, --verbose Adds some extra info, mainly with error output.\n"); CON << TXT(" --version Prints the version number, contact info, etc.\n"); delete pCON; exit(0); } //Test if we should print the version and exit if( cl.search( "--version" ) ) { CON << TXT("SS Console Interpreter\n"); CON << TXT("Copyright (c) 2004-2006 Daniel Jones ([email protected])\n"); CON << SS::GetVersionString(); CON << TXT("\n"); //CON << TXT("\nPlease send comments and report bugs to: [email protected].\n"); delete pCON; exit(0); } //Test for gcc-styles errors or not (I'm defaulting to yes, just because they look so much better). bool GCCErrors = true; bool Quiet = true; if( cl.search(2, "--verbose", "-v") ) { Quiet = false; GCCErrors = false; } //Test for ungoldly verbosity bool Verbose = false; if( cl.search( 2, "--ungodly-verbose", "-u" ) ) { Verbose = true; Quiet = false; GCCErrors = false; } //Shall we use color? //bool NoColor = false; if( cl.search( 2, "--no-color", "-n" ) ){ CON.UseColor( false ); } //Test for block name SS::String BlockName; if( cl.search( 2, "--block", "-b" ) ) { BlockName = SS::NormalizeString( cl.next("") ); } //Try to get a file name SS::String FileName; if( cl.size() > 1 ){ const char* Temp = cl[ cl.size() - 1]; if( Temp[0] != '-' ) FileName = SS::NormalizeString( Temp ); } CON.SetBackgroundFull( ColorPair( ColorCyan, ColorBlack ), ' ' ); SS::Interpreter* pI = new SS::Interpreter; ConsoleInterface Test( CON, *pI, !Quiet ); if( GCCErrors ) Test.SetGCCStyleErrors(); if( Verbose ) Test.GetInterpreter().SetVerbose( true ); Test.StartConversation( FileName, BlockName ); CON.SetTextFGColor( ColorCyan ); if( !Quiet || UseCurses ) { CON << TXT("\nTotal run time: ") << (float)(((double)clock()) / ((double)CLOCKS_PER_SEC)) << TXT(" seconds.\n\n"); //This is ridiculous that I need this much code for something so trivial. CON << TXT("Press [Enter] to continue..."); if( UseCurses ){ SS::String Dummy; CON >> Dummy; } else{
Profile::Profile(std::string name): name(name), directory(Globals::Config::directory + name + "/"), fileSettings(directory + "settings.ini"), fileTheme(directory + "theme.ini"), fileStatistics(directory + "statistics.bin") { // Make sure we can load a default profile at startup // (meaning the global settings file must have a profile // name at `profiles:default`) if (! Utils::File::exists(Globals::Config::file)) { INI::Parser ini; ini.create(); ini.top().addGroup("profiles"); ini("profiles").addKey("default", name); try { ini.saveAs(Globals::Config::file); } catch(std::runtime_error& e) { // Couldn't save the file... // ... do nothing } } else { INI::Parser ini(Globals::Config::file); std::string buffer = ini("profiles")["default"]; if (buffer.empty()) { ini.top().addGroup("profiles"); ini("profiles").addKey("default", name); try { ini.saveAs(Globals::Config::file); } catch(std::runtime_error& e) { // Couldn't save the file... // ... do nothing } } } // Making sure default directories and files exist. if (! Utils::File::isDirectory(this->directory)) Utils::File::mkdir_p(this->directory); if (! Utils::File::exists(this->fileSettings)) Utils::File::create(this->fileSettings); if (! Utils::File::exists(this->fileTheme)) Utils::File::create(this->fileTheme); if (! Utils::File::exists(this->fileStatistics)) Utils::File::create(this->fileStatistics); // Now that the directories exist, let's make sure // it's on the global list of existing Profiles if (std::find(Profile::profiles.begin(), Profile::profiles.end(), name) == Profile::profiles.end()) { Profile::profiles.push_back(name); std::sort(Profile::profiles.begin(), Profile::profiles.end()); } // Starting all settings with default, hardcoded values. // Screen settings.screen.center_horizontally = true; settings.screen.center_vertically = true; settings.screen.show_borders = true; settings.screen.fancy_borders = true; settings.screen.outer_border = true; settings.screen.use_colors = true; settings.screen.show_statistics = true; settings.screen.animation_menu = std::string("random"); settings.screen.animation_game = std::string("none"); // Game settings.game.next_pieces = 7; settings.game.has_ghost = true; settings.game.can_hold = true; settings.game.has_game_over_animation = true; settings.game.line_clear_delay = 200; // ms // Theme settings.theme.text = ColorPair(); settings.theme.hilite_text = Colors::pair("cyan", "default"); settings.theme.textbox = settings.theme.hilite_text.reverse(); settings.theme.piece_has_colors = true; settings.theme.ghost_has_colors = true; settings.theme.show_pivot_block = false; settings.theme.lock_piece_color = false; settings.theme.clear_line = new Block(Colors::pair("white", "default"), ':', ':'); settings.theme.piece_colorless = new Block(Colors::pair("black", "white"), ' ', ' '); settings.theme.piece = new Block(Colors::pair("black", "white"), ' ', ' '); settings.theme.ghost = new Block(Colors::pair("black", "white", true), '[', ']'); settings.theme.locked = new Block(Colors::pair("white", "white"), ' ', ' '); settings.theme.invisible = new Block(Colors::pair("white", "default"), ' ', ' '); settings.theme.piece_S = new Block(Colors::pair("white", "green"), ' ', ' '); settings.theme.piece_Z = new Block(Colors::pair("white", "red"), ' ', ' '); settings.theme.piece_O = new Block(Colors::pair("white", "yellow"), ' ', ' '); settings.theme.piece_I = new Block(Colors::pair("white", "cyan", true), ' ', ' '); settings.theme.piece_L = new Block(Colors::pair("white", "yellow", true), ' ', ' '); settings.theme.piece_J = new Block(Colors::pair("white", "blue"), ' ', ' '); settings.theme.piece_T = new Block(Colors::pair("white", "magenta"), ' ', ' '); this->resetKeybindings(); this->scores = new ScoreFile(); }