Exemple #1
0
/*--------------------------------------------------------------------------*/
void newLine(void)
{
    reallocLineBuffer();

    cur_line[0] = '\0';
    cur_pos = 0;
    max_pos = 0;
}
Exemple #2
0
/*--------------------------------------------------------------------------*/
void moveEndLine(void)
{
    reallocLineBuffer();
    while (cur_pos < max_pos)
    {
        TerminalPutc (cur_line[cur_pos]);
        cur_pos += 1;
    }
}
Exemple #3
0
/*--------------------------------------------------------------------------*/
void killCurrentPositionToEndLine(void)
{
	int i = 0;
	reallocLineBuffer();
	for (i = cur_pos; i < max_pos; i++)  cur_line[i] = '\0';
	for (i = cur_pos; i < max_pos; i++) TerminalPutc(VK_SPACE);
	for (i = cur_pos; i < max_pos; i++) backSpace ();
	max_pos = cur_pos;
}
Exemple #4
0
/*--------------------------------------------------------------------------*/
char *getLineBeforeCaret(void)
{
    char *line = NULL;

    reallocLineBuffer();
    line = os_strdup(cur_line);
    line[cur_pos] = '\0';
    return line;
}
Exemple #5
0
/*--------------------------------------------------------------------------*/
void moveBackSingleChar(void)
{
    reallocLineBuffer();
    if (cur_pos > 0)
    {
        cur_pos -= 1;
        backSpace();
    }
}
Exemple #6
0
/*--------------------------------------------------------------------------*/
void moveForwardSingleChar(void)
{
    reallocLineBuffer();
    if (cur_pos < max_pos)
    {
        TerminalPutc(cur_line[cur_pos]);
        cur_pos += 1;
    }
}
Exemple #7
0
/*--------------------------------------------------------------------------*/
void moveBeginningLine(void)
{
    reallocLineBuffer();
    while (cur_pos > 0)
    {
        cur_pos -= 1;
        backSpace();
    }
}
Exemple #8
0
/*--------------------------------------------------------------------------*/
void copyLine(char *line)
{
    reallocLineBuffer();

    if (line)
    {
        TerminalPrintf(line);
        CharToOem(line, cur_line);
        cur_pos = max_pos = (int)strlen (cur_line);
    }
}
Exemple #9
0
/*--------------------------------------------------------------------------*/
char *getCurrentLine(void)
{
	char *line = NULL;

	reallocLineBuffer();

	cur_line[max_pos + 1] = '\0';
	line = strdup_windows(cur_line);
	if (line) OemToChar(cur_line, line);
	return line;
}
Exemple #10
0
/*--------------------------------------------------------------------------*/
void deletePreviousChar(void)
{
	reallocLineBuffer();
	if (cur_pos > 0)
	{
		int i = 0;
		cur_pos -= 1;
		backSpace ();
		for (i = cur_pos; i < max_pos; i++) cur_line[i] = cur_line[i + 1];
		max_pos -= 1;
		refreshLine();
	}
	else TerminalBeep();
}
Exemple #11
0
/*--------------------------------------------------------------------------*/
static void backSpace(void)
{
	int X = 0, Y = 0;
	reallocLineBuffer();

	TermGetPosition(&X, &Y);
	if ( (X - 1) < 0 )
	{
		X = getXConsoleScreenSize();
		Y = Y - 1;
		TermSetPosition(X, Y);
	}
	else TerminalPutc(VK_BACK);
}
Exemple #12
0
/*--------------------------------------------------------------------------*/
char *getCurrentLine(void)
{
    char *line = NULL;

    reallocLineBuffer();

    cur_line[max_pos + 1] = '\0';
    line = os_strdup(cur_line);
    if (line)
    {
        OemToChar(cur_line, line);
    }
    return line;
}
Exemple #13
0
/*--------------------------------------------------------------------------*/
void moveForwardSingleWord(void)
{
    reallocLineBuffer();
    while ( !isspace(cur_line[cur_pos]) && (cur_pos < max_pos) )
    {
        TerminalPutc(cur_line[cur_pos]);
        cur_pos++;
    }
    while ( isspace(cur_line[cur_pos]) && (cur_pos < max_pos) )
    {
        TerminalPutc(cur_line[cur_pos]);
        cur_pos++;
    }
    refreshLine();
}
Exemple #14
0
/*--------------------------------------------------------------------------*/
void moveBackSingleWord(void)
{
    reallocLineBuffer();
    while ((cur_pos > 0) && (isspace(cur_line[cur_pos - 1]) ))
    {
        cur_pos -= 1;
        backSpace ();
    }
    while ((cur_pos > 0) && ( !isspace(cur_line[cur_pos - 1]) ))
    {
        cur_pos -= 1;
        backSpace ();
    }
    refreshLine();
}
Exemple #15
0
/*--------------------------------------------------------------------------*/
void refreshLine(void)
{
	int i = 0;

	reallocLineBuffer();

	/* write tail of string */
	for (i = cur_pos; i < max_pos; i++) TerminalPutc(cur_line[i]);

	/* write a space at the end of the line in case we deleted one */
	TerminalPutc(VK_SPACE);

	/* backup to original position */
	for (i = max_pos + 1; i > cur_pos; i--) backSpace ();

}
Exemple #16
0
/*--------------------------------------------------------------------------*/
char *getLineAfterCaret(void)
{
    char *line = NULL;

    reallocLineBuffer();
    if (cur_pos != max_pos)
    {
        line = os_strdup(&cur_line[cur_pos]);
        line[(max_pos - cur_pos) + 1] = '\0';
    }
    else
    {
        line = os_strdup("");
    }
    return line;
}
Exemple #17
0
/*--------------------------------------------------------------------------*/
void addCharacterCurrentLine(unsigned char ch)
{
	int i = 0;

	reallocLineBuffer();

	for (i = max_pos; i > cur_pos; i--) cur_line[i] = cur_line[i - 1];

	cur_line[cur_pos] = ch;
	cur_pos += 1;
	max_pos += 1;
	cur_line[max_pos] = '\0';

	setSearchedTokenInScilabHistory(cur_line);

	if (cur_pos < max_pos) refreshLine();
}
Exemple #18
0
/*--------------------------------------------------------------------------*/
void clearCurrentLine(void)
{
	int i = 0;

	reallocLineBuffer();

	for (i = 0; i < max_pos; i++) cur_line[i] = '\0';

	moveBeginningLine();
	
	for (i = 0; i < max_pos; i++) TerminalPutc(VK_SPACE);

	TerminalPutc('\r');
	displayPrompt();

	newLine();
}
Exemple #19
0
/*--------------------------------------------------------------------------*/
void killLastWord(void)
{
    reallocLineBuffer();

    while ((cur_pos > 0) && (cur_line[cur_pos - 1] == VK_SPACE))
    {
        cur_pos -= 1;
        backSpace ();
    }
    while ((cur_pos > 0) && (cur_line[cur_pos - 1] != VK_SPACE))
    {
        cur_pos -= 1;
        backSpace ();
    }

    killCurrentPositionToEndLine();
}
Exemple #20
0
/*--------------------------------------------------------------------------*/
void deleteCurrentChar(void)
{
	reallocLineBuffer();
	if (max_pos == 0) 
	{
		TerminalBeep();
	}
	else
	{
		if (cur_pos < max_pos)
		{
			int i =0;
			for (i = cur_pos; i < max_pos; i++) cur_line[i] = cur_line[i + 1];
			max_pos -= 1;
			refreshLine();
		}
	}
}
Exemple #21
0
/*--------------------------------------------------------------------------*/
void moveForwardHistory(void)
{
    char *newline = NULL;

    reallocLineBuffer();

    cur_line[max_pos + 1] = '\0';
    if (cur_line[0] == '\0')
    {
        resetSearchedTokenInScilabHistory();
        setSearchedTokenInScilabHistory(NULL);
    }

    newline = getNextLineInScilabHistory();

    if (newline)
    {
        clearCurrentLine();
        copyLine(newline);
        FREE(newline);
        newline = NULL;
    }
}