示例#1
0
void termkey_destroy(TermKey *tk)
{
  if(tk->is_started)
    termkey_stop(tk);

  termkey_free(tk);
}
示例#2
0
int main(int argc, char *argv[])
{
  TermKey   *tk;

  plan_tests(6);

  tk = termkey_new_abstract("vt100", 0);

  ok(!!tk, "termkey_new_abstract");

  is_int(termkey_get_buffer_size(tk), 256, "termkey_get_buffer_size");
  ok(termkey_is_started(tk), "termkey_is_started true after construction");

  termkey_stop(tk);

  ok(!termkey_is_started(tk), "termkey_is_started false after termkey_stop()");

  termkey_start(tk);

  ok(termkey_is_started(tk), "termkey_is_started true after termkey_start()");

  termkey_destroy(tk);

  ok(1, "termkey_free");

  return exit_status();
}
示例#3
0
static UiWin *ui_window_new(Ui *ui, View *view, File *file, enum UiOption options) {
	UiCurses *uic = (UiCurses*)ui;
	UiCursesWin *win = calloc(1, sizeof(UiCursesWin));
	if (!win)
		return NULL;

	win->uiwin = (UiWin) {
		.draw = ui_window_draw,
		.draw_status = ui_window_draw_status,
		.options_set = ui_window_options_set,
		.options_get = ui_window_options_get,
		.reload = ui_window_reload,
		.syntax_style = ui_window_syntax_style,
	};

	if (!(win->win = newwin(0, 0, 0, 0))) {
		ui_window_free((UiWin*)win);
		return NULL;
	}


	for (int i = 0; i < UI_STYLE_MAX; i++) {
		win->styles[i] = (CellStyle) {
			.fg = -1, .bg = -1, .attr = A_NORMAL,
		};
	}

	win->styles[UI_STYLE_CURSOR].attr |= A_REVERSE;
	win->styles[UI_STYLE_CURSOR_PRIMARY].attr |= A_REVERSE|A_BLINK;
	win->styles[UI_STYLE_SELECTION].attr |= A_REVERSE;
	win->styles[UI_STYLE_COLOR_COLUMN].attr |= A_REVERSE;

	win->ui = uic;
	win->view = view;
	win->file = file;
	view_ui(view, &win->uiwin);

	if (uic->windows)
		uic->windows->prev = win;
	win->next = uic->windows;
	uic->windows = win;

	ui_window_options_set((UiWin*)win, options);

	return &win->uiwin;
}

__attribute__((noreturn)) static void ui_die(Ui *ui, const char *msg, va_list ap) {
	UiCurses *uic = (UiCurses*)ui;
	endwin();
	if (uic->termkey)
		termkey_stop(uic->termkey);
	vfprintf(stderr, msg, ap);
	exit(EXIT_FAILURE);
}
示例#4
0
static void ui_terminal_save(Ui *ui) {
	UiCurses *uic = (UiCurses*)ui;
	curs_set(1);
	reset_shell_mode();
	termkey_stop(uic->termkey);
}