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 }
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; }