示例#1
0
文件: tty.c 项目: GarothLongint/mc
void
tty_draw_box (int y, int x, int ys, int xs, gboolean single)
{
    int y2, x2;

    if (ys <= 0 || xs <= 0)
        return;

    ys--;
    xs--;

    y2 = y + ys;
    x2 = x + xs;

    tty_draw_vline (y, x, mc_tty_frm[single ? MC_TTY_FRM_VERT : MC_TTY_FRM_DVERT], ys);
    tty_draw_vline (y, x2, mc_tty_frm[single ? MC_TTY_FRM_VERT : MC_TTY_FRM_DVERT], ys);
    tty_draw_hline (y, x, mc_tty_frm[single ? MC_TTY_FRM_HORIZ : MC_TTY_FRM_DHORIZ], xs);
    tty_draw_hline (y2, x, mc_tty_frm[single ? MC_TTY_FRM_HORIZ : MC_TTY_FRM_DHORIZ], xs);
    tty_gotoyx (y, x);
    tty_print_alt_char (ACS_ULCORNER, single);
    tty_gotoyx (y2, x);
    tty_print_alt_char (ACS_LLCORNER, single);
    tty_gotoyx (y, x2);
    tty_print_alt_char (ACS_URCORNER, single);
    tty_gotoyx (y2, x2);
    tty_print_alt_char (ACS_LRCORNER, single);
}
示例#2
0
static void
view_status (WDiff *view, int ord, int width, int pos)
{
    char buf[BUFSIZ];
    int filename_width;
    off_t skip_offs = view->df[ord].offs;
    int moves = view->df[ord].move;

    tty_setcolor(SELECTED_COLOR);

#if VERTICAL_SPLIT
    tty_gotoyx(0, pos);
#else	/* !VERTICAL_SPLIT */
    tty_gotoyx(pos, 0);
#endif	/* !VERTICAL_SPLIT */

    filename_width = width - 22;
    if (filename_width < 8) {
	filename_width = 8;
    }
    if (filename_width >= (int)sizeof(buf)) {
	/* abnormal, but avoid buffer overflow */
	filename_width = sizeof(buf) - 1;
    }
    trim(strip_home_and_password(view->file[ord]), buf, filename_width);
    tty_printf("%-*s   %s%-16lX ", filename_width, buf, moves ? "0x" : "--", skip_offs);
}
示例#3
0
文件: tty.c 项目: ebichu/dd-wrt
extern void
tty_print_vline(int top, int left, int length)
{
    int i;

    tty_gotoyx(top, left);
    for (i = 0; i < length; i++) {
	tty_gotoyx(top + i, left);
	tty_print_one_vline();
    }
}
示例#4
0
文件: chmod.c 项目: BrEacK/mc
static void
chmod_refresh (Dlg_head * h)
{
    int y = file_gb->widget.y + 1;
    int x = file_gb->widget.x + 2;

    common_dialog_repaint (h);

    tty_setcolor (COLOR_NORMAL);

    tty_gotoyx (y, x);
    tty_print_string (file_info_labels[0]);
    tty_gotoyx (y + 2, x);
    tty_print_string (file_info_labels[1]);
    tty_gotoyx (y + 4, x);
    tty_print_string (file_info_labels[2]);
    tty_gotoyx (y + 6, x);
    tty_print_string (file_info_labels[3]);
}
示例#5
0
文件: layout.c 项目: artzub/mc
void
rotate_dash (void)
{
    static const char rotating_dash[] = "|/-\\";
    static size_t pos = 0;

    if (!nice_rotating_dash || (ok_to_refresh <= 0))
        return;

    if (pos >= sizeof (rotating_dash) - 1)
        pos = 0;
    tty_gotoyx (0, COLS - 1);
    tty_setcolor (NORMAL_COLOR);
    tty_print_char (rotating_dash[pos]);
    mc_refresh ();
    pos++;
}
示例#6
0
文件: win.c 项目: sfionov/mc-dev
void
show_rxvt_contents (int starty, unsigned char y1, unsigned char y2)
{
    unsigned char *k;
    int bytes, i, j, cols = 0;

    y1 += (keybar_visible != 0);        /* i don't knwo why we need this - paul */
    y2 += (keybar_visible != 0);
    while (anything_ready ())
        tty_lowlevel_getch ();

/* my own wierd protocol base 26 - paul */
    printf ("\033CL%c%c%c%c\n", (y1 / 26) + 'A', (y1 % 26) + 'A', (y2 / 26) + 'A', (y2 % 26) + 'A');

    bytes = (y2 - y1) * (COLS + 1) + 1; /* *should* be the number of bytes read */
    j = 0;
    k = g_malloc (bytes);
    for (;;) {
        int c;
        c = rxvt_getc ();
        if (c < 0)
            break;
        if (j < bytes)
            k[j++] = c;
        for (cols = 1;; cols++) {
            c = rxvt_getc ();
            if (c < 0)
                break;
            if (j < bytes)
                k[j++] = c;
        }
    }
    for (i = 0; i < j; i++) {
        if ((i % cols) == 0)
            tty_gotoyx (starty + (i / cols), 0);
        tty_print_char (is_printable (k[i]) ? k[i] : ' ');
    }
    g_free (k);
}
示例#7
0
static int
view_display_file (WDiff *view, int ord,
		   int r, int c, int height, int width,
#if !VERTICAL_SPLIT
		   int total_height,
#endif	/* !VERTICAL_SPLIT */
		   int owidth)
{
    int i, j, k;
    char buf[BUFSIZ];
    const char *data = view->df[ord].data;
    const char *diffs = view->diffs;
    off_t offset = view->df[ord].offs;
    int nbytes = view->nbytes;

    off_t mask = 0;

    int available = width - (nbytes * 4 + 1);
    if (owidth > available - 1) {
	owidth = available - 1;
	if (owidth < 0) {
	    owidth = 0;
	}
    }

    if (owidth > 0) {
	mask = ((((off_t)1 << ((owidth - 1) * 4)) - 1) << 4) | 0xF;
	owidth++;
    }

    if ((int)sizeof(buf) <= width) {
	/* abnormal, but avoid buffer overflow */
	return -1;
    }

    for (j = 0; j < height; j++) {
	int ch;
	int stop = 1;

	tty_gotoyx(r + j, c);

	if (owidth > 0) {
	    sprintf(buf, "%0*llX ", owidth - 1, offset & mask);
	    tty_setcolor(MARKED_COLOR);
	    tty_print_nstring(buf, owidth);
	}

	for (i = owidth, k = 0; k < nbytes; k++, i += 3) {
	    ch = *data++;
	    if (diffs[k] & (1 << ord)) {
		stop = 0;
		sprintf(buf + i, "%02X ", ch & 0xFF);
		ch = convert_to_display_c(ch & 0xFF);
		if (!is_printable(ch)) {
		    ch = '.';
		}
	    } else {
		buf[i + 0] = ' ';
		buf[i + 1] = ' ';
		buf[i + 2] = ' ';
		buf[i + 3] = '\0';
		ch = ' ';
	    }
	    buf[owidth + 3 * nbytes + 1 + k] = ch;
	    if (diffs[k] & XDIFF_DIFFERENT) {
		tty_setcolor(VIEW_UNDERLINED_COLOR);
	    } else {
		tty_setcolor(NORMAL_COLOR);
	    }
	    tty_print_nstring(buf + i, 3);
	}

	tty_setcolor(NORMAL_COLOR);
	if (i < width) {
	    buf[i] = ' ';
	    tty_print_char(buf[i]);
	    i++;
	}

	for (k = 0; k < nbytes; k++, i++) {
	    if (*diffs++ & XDIFF_DIFFERENT) {
		tty_setcolor(VIEW_UNDERLINED_COLOR);
	    } else {
		tty_setcolor(NORMAL_COLOR);
	    }
	    tty_print_char(buf[i] & 0xFF);
	}

	tty_setcolor(NORMAL_COLOR);
	for (; i < width; i++) {
	    buf[i] = ' ';
	    tty_print_char(buf[i]);
	}

	buf[width] = '\0';	/* XXX we fully construct the buffer, but don't necessarily have to */

	offset += nbytes;
	if (stop) {
	    break;
	}
    }
#if !VERTICAL_SPLIT
    height = total_height;
#endif	/* !VERTICAL_SPLIT */
    if (j < height) {
	memset(buf, ' ', width);
	buf[width] = '\0';
	for (; j < height; j++) {
	    tty_gotoyx(r + j, c);
	    tty_print_nstring(buf, width);
	}
    }

    return 0;
}