Esempio n. 1
0
void Console::process_command(char cmd[]) {
    clearchat();          // Clear chat window
    print(cmd);           // Echo input
    wrefresh(cmd_window); // Refresh cmd window
    clearcmd();           // Clear cmd window
    read();               // Wait for more user input
}
Esempio n. 2
0
std::string Console::read() {
    char cmd[CMD_LENGTH];
    reset_curs();
    wgetstr(cmd_window, cmd);
    clearcmd();
    return std::string(cmd);
}
void destroycmdwin( cmdWindowtype *cw )
	{
		systemlog( 2, "destroying command window" );
		cw->hidden = 1;
		clearcmd( cw );
		delwin( cw->win );
			free( cw );
		systemlog( 2, "command window destroyd");
	}
int printcmdwin( cmdWindowtype *cw, Windowtype *awin, Windowtype *pwin )
	{
		int ch;
		int x = 0;
		int EXIT = 0;
		int cc = 1;

		if( cw->hidden )
			{
				clearcmd( cw );
			}
		else
			{ 
				//collorate
				wattron( cw->win, COLOR_PAIR(1) );

				/*dekorations*/
				box( cw->win, 0, 0 );

				//topp of border, workdirectory of activ window
				for( x = 0; cw->wd[x] != '\0' && x+2 < cw->w -2; x++ )
					{
						mvwprintw( cw->win, 0,x+2,"%c", cw->wd[x] );
					}

				//bottom of border, destinationdir, workdirectory of passiv window
				for( x = 0; cw->ddir[x] != '\0' && x+2 < cw->w -2; x++ )
					{
						mvwprintw( cw->win, 2,x+2,"%c", cw->ddir[x] );
					}

				//print the currentli writen command
				mvwprintw( cw->win, 1, 1, ":_" );
				for( x = 0; x < cw->cruser; x++ )
					{
						mvwprintw( cw->win, 1,x+2,"%c_", cw->currentcmd[0][x] );
					}

				//paint the rest of cw witb background color
				while( x < cw->w -3 )
					{
						mvwprintw( cw->win, 1,x+2," " );
						x++;
					}
			}

		wrefresh( cw->win );
		keypad( cw->win, TRUE );

		/*get commands*/
		while( !EXIT && (ch = wgetch(cw->win)) )
			{ switch ( ch )
					{
						case 0x7f: 		if( cw->cruser > 0 )
					/*backspace*/			{
												mvwprintw(cw->win, 1, 1+cw->cruser, "_ ");
												cw->cruser--;
												cw->currentcmd[0][cw->cruser] = ' ';
												if( cc == 1 )
													cw->currentcmd[1][cw->cruser] = ' ';
											}
										break;

						case KEY_UP: 	if( cc < CMDHISTORY )
					/*up*/					cc++;
													
											clearcmd( cw );

										for( x = 0; x < strlen(cw->currentcmd[cc]); x++ )
											{
												mvwprintw( cw->win, 1,x+2,"%c_", cw->currentcmd[cc][x] );
												cw->currentcmd[0][x] = cw->currentcmd[cc][x];
											}
										cw->cruser = x;
										wrefresh( cw->win );
										break;

						case KEY_DOWN:  if( cc > 0 )
					/*down*/				cc--;

										clearcmd( cw );

										for( x = 0; x < strlen(cw->currentcmd[cc]); x++ )
											{
												mvwprintw( cw->win, 1,x+2,"%c_", cw->currentcmd[cc][x] );
												cw->currentcmd[0][x] = cw->currentcmd[cc][x];
											}
										cw->cruser = x;
										wrefresh( cw->win );
										break;

						case 0xA:		trowcmd( cw, awin, pwin );
					/*Enter*/			clearcmd( cw );
										loadnewdir( awin, awin->wd );
										EXIT = 1;
										break;

						case 0x1B:  	EXIT = 1; 
					/*Escape*/			break;

						default: 		mvwprintw( cw->win, 1, 2+cw->cruser, "%c_", ch );
										cw->currentcmd[0][cw->cruser] = ch;
										cw->currentcmd[1][cw->cruser] = ch;
										cw->cruser++;
										wrefresh( cw->win );
										break;
					}
			}
			
		if( EXIT )
			{
				togglehide( cw );
			}
		
			clearcmd( cw );

		return 1;
	}