Пример #1
0
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;
}
Пример #2
0
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~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 );
}
Пример #3
0
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);
}
Пример #4
0
Файл: CRT.c Проект: lyase/htop
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);
     }
}
Пример #5
0
Файл: CRT.c Проект: EliteTK/htop
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

}
Пример #6
0
///////////////////////////////////////////////////////////////////////////////
// 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
}
Пример #7
0
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));
}
Пример #8
0
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{
Пример #9
0
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();
}