示例#1
0
文件: ex_cmd.c 项目: jollywho/nav
void start_ex_cmd(char symbol, int state)
{
  log_msg("EXCMD", "start");
  ex.ex_state = state;
  ex.state_symbol = symbol;
  window_refresh();

  pos_T max = layout_size();
  ex.curpos = 0;
  ex.curofs = 0;
  ex.maxpos = max.col - 2;
  ex.state = 0;
  ex.col_text = opt_color(COMPL_TEXT);
  ex.col_symb = opt_color(BUF_TEXT);

  switch (state) {
    case EX_CMD_STATE:
      menu_start(ex.menu);
      break;
    case EX_REG_STATE:
      ex.lm = window_get_focus()->matches;
      regex_mk_pivot(ex.lm);
      break;
    case EX_FIL_STATE:
      ex.fil = window_get_focus()->filter;
      //swap exline with filter string
      break;
  }
  ex.line = calloc(max.col, sizeof(char*));
  ex.cmd.cmds = NULL;
  ex.cmd.line = NULL;
  hist_push(state);
  cmdline_build(&ex.cmd, ex.line);
}
示例#2
0
Dpause()
{
#ifdef hpux
	return FALSE;
#else
#if BSDUNIX || LINUX
	extern int sgarbf;
	(*term.t_move)( term.t_nrow - 1, 0 );
	(*term.t_eeop)();
	ttflush();
	ttclose();
	killpg(getpgrp(0), 18);	/* SIGTSTP -- stop the current program */
	ttopen();
	sgarbf = TRUE;
	window_refresh(FALSE, 1);
#endif
	return( TRUE );
#endif
}
示例#3
0
文件: ex_cmd.c 项目: jollywho/nav
void stop_ex_cmd()
{
  log_msg("EXCMD", "stop_ex_cmd");
  if (ex.ex_state == EX_CMD_STATE)
    menu_stop(ex.menu);
  ex.lm = NULL;
  ex.fil = NULL;
  free(ex.line);
  cmdline_cleanup(&ex.cmd);

  if (!message_pending) {
    werase(ex.nc_win);
    wnoutrefresh(ex.nc_win);
  }
  ex.ex_state = EX_OFF_STATE;
  window_ex_cmd_end();
  cmd_flush();
  window_refresh();
}
示例#4
0
文件: ed.c 项目: jollywho/nav
void ed_close_cb(Plugin *plugin, Ed *ed, bool closed)
{
    log_msg("ED", "ed_close_cb");

    if (closed) {
        ed->state |= ED_CLOSED;
        ed_cleanup(ed);
        return;
    }

    term_delete(ed->base);
    window_refresh();

    if (!ed_read_temp(ed))
        return ed_cleanup(ed);

    if (ed->state == ED_RENAME)
        return ed_stage_confirm(ed);
    if (ed->state == ED_CONFRM)
        return ed_do_rename(ed);
}
示例#5
0
/**
 * my_readline()
 *
 * Wrapper for readline(). Prepares appropriate prompt, locks screen
 * output. Recodes the result to utf-8.
 *
 * @return A pointer to utf8 string or NULL.
 */
static gchar *my_readline(void)
{
		/* main loop could call current_prompt()
		 * and break the buffer */
	char *prompt = g_strdup(current_prompt());
	char *res, *tmp;

	in_readline++;
	res = readline(prompt);
	in_readline--;

	if (config_print_line) {
		tmp = g_strdup_printf("%s%s\n", prompt, (res) ? res : "");
		window_write(window_current->id, tmp);
		g_free(tmp);
	} else {
		window_refresh();
	}

	g_free(prompt);

	return res;
}
示例#6
0
static void do_sleep(int seconds)
{
	time_t target;
	int delta;

	if (!ncurses_initialized()) {
		sleep(seconds);
		return;
	}
	target = time(NULL) + seconds;
	delta = seconds;
	do {
		int c;
		usleep(6000);
		halfdelay(delta * 10);

		c = getch();
		switch (c) {
		case KEY_BTAB:
			show_prev_tab();
			break;
		case '\t':
			show_next_tab(); 
			break;
		case KEY_RIGHT:
			cursor_right(); 
			break;
		case KEY_LEFT:
			cursor_left(); 
			break;
		case KEY_NPAGE:
		case KEY_DOWN:
			cursor_down();
			break;
		case KEY_PPAGE:
		case KEY_UP:
			cursor_up();
			break;
		case ' ':
		case '\n':
			cursor_enter();
			break;
		case 's':
			if (set_refresh_timeout())
				return;
			break;
		case 'r':
			window_refresh();
			return;
		case KEY_EXIT:
		case 'q':
		case 27:	// Escape
			leave_powertop = 1;
			return;
		}

		delta = target - time(NULL);
		if (delta <= 0)
			break;

	} while (1);
}
示例#7
0
void game_display(struct game* game) {
	assert(game);

	int map_w, map_h;

	window_clear();

	if(game->nb_player == 1) {
		map_w = map_get_width(level_get_curr_map(game->curr_level));
		map_h = map_get_height(level_get_curr_map(game->curr_level));
		for(int i = 0; i < map_w; i++)
			for(int j = 0; j < map_h+2; j++)
				window_display_image(sprite_get_empty(), i * SIZE_BLOC, j * SIZE_BLOC);
	}

	level_display(game_get_curr_level(game));

	monster_display(level_get_curr_map(game->curr_level));

	bomb_display(game, level_get_curr_map(game->curr_level));

	game_banner_display(game);

	if(game->nb_player == 1) { // Single player
		struct player* player = game->players[0];

		// Always display
		player_display(player);

		if(game->game_state == PLAYING) {
			player_move(game, player, level_get_curr_map(game->curr_level));
			monster_move(game, level_get_curr_map(game->curr_level), player);

			player_update(player);
			monster_update(level_get_curr_map(game->curr_level));
		}
	}
	else { // Multi player
		struct player* players_in_order[game->nb_player];
		for(int i=0; i<game->nb_player; i++)
			players_in_order[i] = game->players[i];
		game_order_players_array(game, players_in_order);

		for(int i = 0; i < game->nb_player; i++) {

			player_display(players_in_order[i]);

			if(game->game_state == PLAYING) {
				player_move(game, players_in_order[i], level_get_curr_map(game->curr_level));

				player_update(players_in_order[i]);
			}
		} // end for each player


	} // end Multi player

	if(game->game_state == PLAYING) {

		bomb_update(level_get_curr_map(game->curr_level));

	}
	else if(game->game_state == PAUSED) {
		map_w = map_get_width(level_get_curr_map(game->curr_level));
		map_h = map_get_height(level_get_curr_map(game->curr_level));
		int mid_w = map_w / 2 * SIZE_BLOC + map_w%2 * SIZE_BLOC / 2;
		int mid_h = map_h / 2 * SIZE_BLOC + map_h%2 * SIZE_BLOC / 2;
		menu_display(mid_w, mid_h);

	}
	window_refresh();
}
示例#8
0
void multi_display(struct game* game) {
	assert(game);
	struct map* map = NULL;
	int w, h;
	int* scores;

	switch(game_get_state(game)) {
	case PLAYING:
	case PAUSED:
		game_display(game);
		if(player_get_nb_player_alive(game) == 1)
			multi_change_state(game, SCORE);

		break;
	case CHOOSE_MAP:

		map = level_get_curr_map(game_get_curr_level(game));

		w = 10 + 15 + sprite_get_max_width() + 50 + SIZE_BLOC * map_get_width(map);
		h = max(30 * (sprite_get_nb_map_multi() + 1), SIZE_BLOC * map_get_height(map));

		window_resize( w, h);
		window_clear();

		for(int i = 0; i < sprite_get_nb_map_multi(); i++) {
			window_display_image(	sprite_get_map_multi(i),
									10 + 15,
									15 + 30 * i);
		}

		window_display_image(sprite_get_menu(M_S_SELECT_BLACK), 10, 15 + 30 * game_get_pos(game));

		map_display(	map,
						10 + 15 + sprite_get_max_width() + 50,
						(h-(SIZE_BLOC * map_get_height(map))) / 2);
		window_refresh();

		break;
	case SCORE:

		window_clear();
		level_display(game_get_curr_level(game));
		bomb_display(game, level_get_curr_map(game_get_curr_level(game)));
		for(int i = 0; i < game_get_nb_player(game); i++)
			player_display(game_get_player(game, i+1));

		int map_w = map_get_width(level_get_curr_map(game_get_curr_level(game)));
		int map_h = map_get_height(level_get_curr_map(game_get_curr_level(game)));
		int mid_w = map_w / 2 * SIZE_BLOC + map_w%2 * SIZE_BLOC / 2;
		int mid_h = map_h / 2 * SIZE_BLOC + map_h%2 * SIZE_BLOC / 2;

		window_display_image(	sprite_get_menu(M_BG_GREY),
								mid_w - 240,
								mid_h - 262);

		window_display_image(	sprite_get_score(player_get_id_player_alive(game)),
								mid_w - 200,
								mid_h - 222);

		scores = game_get_scores(game);
		for(int i = 0; i < game_get_nb_player(game); i++) {
			window_display_sprite(	sprite_get_players(i+1),
									sprite_get_rect_player_anim(0, i+1, SOUTH),
									mid_w - 200,
									mid_h - 222 + 80 + 80 * i);

			window_display_image(	sprite_get_number_white(scores[i]),
									mid_w - 140,
									mid_h - 222 + 100 + 80 * i);
		}

		window_refresh();

		break;
	}
}