Ejemplo n.º 1
0
Archivo: menu.c Proyecto: ralienpp/deco
static void drawhead (int nm)
{
    register i, reverse;

    VSetDim ();
    reverse = VStandOut ();
    VMove (0, 0);
    for (i=0; i<80; ++i)
        VPutChar (' ');
    VMove (0, 2);
    for (i=0; menu[i].name; ++i) {
        if (i == nm) {
            VStandEnd ();
            VSetBold ();
        }
        VPutChar (' ');
        VPutChar (i==nm && !reverse ? '[' : ' ');
        VPutString (menu[i].name);
        VPutChar (i==nm && !reverse ? ']' : ' ');
        VPutChar (' ');
        if (i == nm) {
            VStandOut ();
            VSetDim ();
        }
    }
    VSetNormal ();
    VStandEnd ();
}
Ejemplo n.º 2
0
Archivo: com.c Proyecto: stqism/DEMOS
drawcmd ()
{
	int c;
	CURSOR cursor;

	if (H==LINES-7 && strlen (cur->shortcwd) + 3 + esclen (command) > 79) {
		fullscreen ();
		draw ();
	}
	for (c=H+5; c<LINES-1; ++c) {
		VMove (c, 0);
		VClearLine ();
	}
	VSetDim ();
	VMPutString (H+5, 0, cur->shortcwd);
	VSetBold ();
	VPutString (" > ");
	VSetNormal ();
	cursor = VGetCursor ();
	putescstr (command);
	if (c = command [cpos]) {
		VSetCursor (cursor);
		command [cpos] = 0;
		putescstr (command);
		command [cpos] = c;
	}
}
Ejemplo n.º 3
0
Archivo: menu.c Proyecto: ralienpp/deco
static void drawmenu (struct menu *m)
{
    register i, reverse;

    VClearBox (1, m->col-1, m->hgh+3, m->wid+4);
    VSetBold ();
    VDrawBox (1, m->col, m->hgh+2, m->wid+2);
    VSetDim ();
    for (i=0; m->submenu[i].name; ++i)
        if (! m->submenu[i].name[0])
            VHorLine (i+2, m->col+2, m->wid-2);
    VSetNormal ();
    for (i=0; m->submenu[i].name; ++i) {
        if (! m->submenu[i].name[0])
            continue;
        reverse = 0;
        if (i == m->nsm)
            reverse = VStandOut ();
        else if (! m->submenu[i].active)
            VSetDim ();
        VMove (2+i, m->col+1);
        VPutChar (i==m->nsm && !reverse ? '[' : ' ');
        VPrint ("%c %-*s", m->submenu[i].tag ? '*' : ' ',
                m->wid-4, m->submenu[i].name);
        VPutChar (i==m->nsm && !reverse ? ']' : ' ');
        if (i == m->nsm)
            VStandEnd ();
        else if (! m->submenu[i].active)
            VSetNormal ();
    }
}
Ejemplo n.º 4
0
/* cmd, com */
void quitdeco(void) {
	VMove (LINES-1, 0);
	VClearLine ();
	VSync ();
	v.VClose ();
	exit (0);
}
Ejemplo n.º 5
0
void run_unix () {

	static char command[COMMAND_LENGTH] = "";
	register char *s;
	register ret, o_errno;
	CURSOR	 Old;

	if ((s = getstring(COMMAND_LENGTH, command, "Выполнение команды SHELL",
			 "Введите команду SHELL")) != NULL) {
		strncpy (command, s, COMMAND_LENGTH);
		Old = VGetCursor ();
		VMove (0, 0);
		VSync ();
		VIClear ();
		VFlush ();
		s = strcmp (command, "") == 0 ? "/bin/sh" : command;
		TtyReset ();
		ret = system (s);
		o_errno = errno; /* VRedraw () портит errno */
		fprintf (stderr, "Нажмите 'Enter' для продолжения.");
		(void) getchar ();
		TtySet ();
		VSetCursor( Old );
		VRedraw ();
		if (ret == -1)
			error ("SHELL : %s", sys_errlist[o_errno]);
	}
}
Ejemplo n.º 6
0
void run_dos () {

	static char command[COMMAND_LENGTH] = "";
	register char *s;
	register ret, o_errno;
	CURSOR	 Old;

	if ((s = getstring(COMMAND_LENGTH, command, "Выполнение команды DOS",
			 "Введите команду DOS")) != NULL) {
		strncpy (command, s, COMMAND_LENGTH);
		_dos_setvect (0x1C, old_timer);
		Old = VGetCursor ();
		VMove (0, 0);
		VSync ();
		VIClear ();
		s = strcmp (command, "") == 0 ? "COMMAND.COM" : command;
		ret = system (s);
		o_errno = errno; /* VRedraw () портит errno */
		fprintf (stderr, "Нажмите 'Enter' для продолжения.");
		(void) getchar ();
		VSetCursor( Old );
		VRedraw ();
		_dos_setvect (0x1C, timer_int);
		old_addr = -1;
		if (ret == -1)
			error ("DOS : %s", sys_errlist[o_errno]);
	}
}
Ejemplo n.º 7
0
void doquit() {

	if (! saved_batch && loaded_batch)
		save_batch ();

	VMove (LINES - 1, 0);
	VClearLine ();
	VMove (LINES - 2, 0);
	VSetPalette (2, 0, 7, 1, 15, 0, 15, 7, 14, 0, 15, 1);
	VSetBold ();
	VSync ();
	VClose ();
# ifdef MSDOS
	_dos_setvect (0x1C, old_timer);
# endif
	exit (0);

}
Ejemplo n.º 8
0
Archivo: ex.c Proyecto: shodanium/deco
static void printudm ()
{
	register n;

	for (n=0; n<nm; ++n) {
		VMove (menurow+n, menucol+1);
		switch (um[n].key) {
		case 1:         VPutString ("F1");      break;
		case 2:         VPutString ("F2");      break;
		case 3:         VPutString ("F3");      break;
		case 4:         VPutString ("F4");      break;
		case 5:         VPutString ("F5");      break;
		case 6:         VPutString ("F6");      break;
		case 7:         VPutString ("F7");      break;
		case 8:         VPutString ("F8");      break;
		case 9:         VPutString ("F9");      break;
		default:        VPutChar (um[n].key);   break;
		}
		if (um[n].menu)
			VMPutString (menurow+n, menucol+3, "->");
		if (um[n].str)
			VMPutString (menurow+n, menucol+5, um[n].str);
	}
}
Ejemplo n.º 9
0
static char *editstring (int r, int c, int w, char *str, int cp)
{
    register key, k;
    int firstkey = 1;

    if (cp) {
        for (cp=0; str[cp]; ++cp);
        firstkey = 0;
    }
    for (; ; firstkey=0) {
        VClearBox (r, c, 1, w);
        VMPutString (r, c, str);
        VMove (r, c+cp);
        VSync ();
        switch (key = KeyGet ()) {
        default:
            if (key<' ' || (key>'~' && key<0300) || key>0377) {
                VBeep ();
                continue;
            }
            if (firstkey) {
                str[0] = key;
                str[1] = 0;
                cp = 1;
                continue;
            }
            for (k=cp; str[k]; ++k)
                SWAP (key, str[k]);
            str [k] = key;
            str [w] = str [k+1] = 0;
        /* fall through */
        case meta ('r'):        /* right */
            if (str [cp]) {
                ++cp;
                if (cp >= w)
                    cp = w-1;
            }
            continue;
        case meta ('l'):        /* left */
            if (--cp < 0)
                cp = 0;
            continue;
        case cntrl (']'):       /* redraw screen */
            VRedraw ();
            continue;
        case cntrl ('C'):
        case cntrl ('['):
        case meta ('J'):        /* f0 */
            return (0);
        case cntrl ('M'):
        case cntrl ('J'):
            return (str);
        case cntrl ('I'):
            if (str [cp])
                while (str [++cp]);
            else
                cp = 0;
            continue;
        case meta ('h'):        /* home */
            cp = 0;
            continue;
        case meta ('e'):        /* end */
            while (str [cp])
                ++cp;
            continue;
        case meta ('b'):        /* back space */
            if (cp) {
                for (k=cp--; str[k]; ++k)
                    str[k-1] = str[k];
                str [k-1] = 0;
            }
            continue;
        case cntrl ('G'):       /* delete */
            if (! str [cp])
                continue;
            for (k=cp+1; str[k]; ++k)
                str[k-1] = str[k];
            str [k-1] = 0;
            continue;
        case cntrl ('Y'):       /* clear line */
            str [cp = 0] = 0;
            continue;
        }
    }
}