move down

This commit is contained in:
yukun 2019-12-20 16:13:24 +01:00
parent 7641ca7966
commit 53f0d3d033
2 changed files with 240 additions and 50 deletions

View File

@ -103,12 +103,19 @@ int main() {
vkvm::callEvent(vkvm::EventType::RenderText); vkvm::callEvent(vkvm::EventType::RenderText);
} }
// if(vkvm::KeyCode::Arrow_Down == keycode){ if(vkvm::KeyCode::Arrow_Down == keycode){
// terminal.movedown(); terminal.movedown();
// std::cout << terminal.getString() << std::endl; std::cout << terminal.getString() << std::endl;
// vkvm::setText(terminal.getString()); vkvm::setText(terminal.getString());
// vkvm::callEvent(vkvm::EventType::RenderText); vkvm::callEvent(vkvm::EventType::RenderText);
// } }
if(vkvm::KeyCode::Arrow_Up == keycode){
terminal.moveup();
std::cout << terminal.getString() << std::endl;
vkvm::setText(terminal.getString());
vkvm::callEvent(vkvm::EventType::RenderText);
}

View File

@ -80,62 +80,245 @@ void Terminal::moveright() {
} }
void Terminal::movedown() { void Terminal::movedown() {
std::string news=""; // std::string news="";
int i = s.find(cursor); // int i = s.find(cursor);
s.erase(i, 1); // s.erase(i, 1);
//
// std::vector<std::vector<char>> vec(100,std::vector<char>(21,0));
// for(int n = 0; n < 100; n++){
// if(n*21 < s.length()) {
// for (int m = 0; m < 21; m++) {
// int sum = n * 21 + m;
// if (s[sum] != '\n') {
// vec[n][m] = s[sum];
// std::cout<<"vec before" + vec[n][m]<<std::endl;
// }
// else {
// vec[n][m] = s[sum];
// break;
// }
// }
// }
// else {
// break;
// }
// }
//
// int cursorrow = i / 21;
// int cursorcolumn =i % 21;
// std::cout<<"before" + std::to_string(cursorrow) + ' '+ std::to_string(cursorcolumn)<<std::endl;
// if(vec[cursorrow+1].size() >= cursorcolumn){
// cursorrow++;
// }
// else if(vec[cursorrow+1].size() >=1){
// cursorrow++;
// cursorcolumn = vec[cursorrow].size()-1;
// }
// std::cout<<"after" + std::to_string(cursorrow) + ' '+ std::to_string(cursorcolumn)<<std::endl;
//
// for(int n = 0; n < 100; n++){
// for(int m=0;m<21;m++){
// if((n==cursorrow) && (m==cursorcolumn)){
// news = news + cursor;
// }
// else if(vec[n][m] != '\n'){
// std::cout<<"vec after" + vec[n][m]<<std::endl;
// news = news + vec[n][m];
// }
// else{
// news = news + vec[n][m];
// break;
// }
// }
// }
//
// std::cout<< news<<std::endl;
std::vector<std::vector<char>> vec(100,std::vector<char>(21,0));
for(int n = 0; n < 100; n++){ int count =0;
if(n*21 < s.length()) { for(int i = 0; i < s.length(); i++) {
for (int m = 0; m < 21; m++) { if (s[i] == '\n') {
int sum = n * 21 + m; count = 0;
if (s[sum] != '\n') {
vec[n][m] = s[sum];
std::cout<<"vec before" + vec[n][m]<<std::endl;
} }
else { else {if(s[i]!=cursor)
vec[n][m] = s[sum]; count++;
}
if(count == 21){
s = s + s[s.length() - 1];
int x = s.length() - 1;
for(; x > i; x--){
s[x] = s[x-1];
}
s[x] = '\n';
}
}
std::cout<<"plus enter:" + s <<std::endl;
int cursorposition = s.find(cursor);
int aftercursorenter1 = s.find('\n',cursorposition);
int beforcursorenter = cursorposition - 1;
do {
if (s[beforcursorenter] != '\n') {
beforcursorenter--;
} else {
break; break;
} }
} while (beforcursorenter >= 0);
std::cout<<"cursorpositon:" + std::to_string(cursorposition)<<std::endl;
std::cout<<"aftercursorenter1:" + std::to_string(aftercursorenter1)<<std::endl;
std::cout<<"beforecursorenter:" + std::to_string(beforcursorenter)<<std::endl;
if(aftercursorenter1 != s.npos) {
int aftercursorenter2 = s.find('\n', aftercursorenter1 + 1);
std::cout<<"aftercursorenter2:" + std::to_string(aftercursorenter2)<<std::endl;
if(aftercursorenter2 != s.npos){
std::cout<<"enter the loop & aftercursorenter2 !=s.npos" <<std::endl;
if((aftercursorenter2 - aftercursorenter1) >= (cursorposition - beforcursorenter)) {
for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter1 + cursorposition -beforcursorenter -1);newcursorposition++){
s[newcursorposition] = s[newcursorposition + 1];
} }
} s[aftercursorenter1 + cursorposition - beforcursorenter -1] = cursor;
else {
break;
}
}
int cursorrow = i / 21;
int cursorcolumn =i % 21;
std::cout<<"before" + std::to_string(cursorrow) + ' '+ std::to_string(cursorcolumn)<<std::endl;
if(vec[cursorrow+1].size() >= cursorcolumn){
cursorrow++;
}
else if(vec[cursorrow+1].size() >=1){
cursorrow++;
cursorcolumn = vec[cursorrow].size()-1;
}
std::cout<<"after" + std::to_string(cursorrow) + ' '+ std::to_string(cursorcolumn)<<std::endl;
for(int n = 0; n < 100; n++){
for(int m=0;m<21;m++){
if((n==cursorrow) && (m==cursorcolumn)){
news = news + cursor;
}
else if(vec[n][m] != '\n'){
std::cout<<"vec after" + vec[n][m]<<std::endl;
news = news + vec[n][m];
} }
else{ else{
news = news + vec[n][m]; for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter2); newcursorposition++){
break; s[newcursorposition] = s[newcursorposition + 1];
} }
s[aftercursorenter2] = cursor;
}
}
else{
std::cout<<"enter the loop & aftercursorenter2 ==s.npos" <<std::endl;
std::cout<<"elsecursorpositon:" + std::to_string(cursorposition)<<std::endl;
std::cout<<"elseaftercursorenter1:" + std::to_string(aftercursorenter1)<<std::endl;
std::cout<<"elsebeforecursorenter:" + std::to_string(beforcursorenter)<<std::endl;
if((s.length()- 1 - aftercursorenter1) >= (cursorposition - beforcursorenter)) {
std::cout<<"enter the loop if" <<std::endl;
for(int newcursorposition=cursorposition; newcursorposition < (aftercursorenter1 + cursorposition -beforcursorenter); newcursorposition++){
s[newcursorposition] = s[newcursorposition + 1];
std::cout<<"forcursorpositon:" + std::to_string(cursorposition)<<std::endl;
}
s[aftercursorenter1 + cursorposition - beforcursorenter ] = cursor;
std::cout<<"new cursorposition" + std::to_string(aftercursorenter1 + cursorposition - beforcursorenter -1) <<std::endl;
std::cout<<"delect enter:" + s <<std::endl;
}
else{
std::cout<<"enter the loop else" <<std::endl;
for(int newcursorposition = cursorposition;newcursorposition < (s.length() -1); newcursorposition++){
s[newcursorposition] = s[newcursorposition + 1];
}
std::cout<<"new cursorposition" + std::to_string(s.length() - 1) <<std::endl;
s[s.length() - 1] = cursor;
} }
} }
std::cout<< news<<std::endl; }
std::cout<<"after down:" + s <<std::endl;
count = 0;
for(int i = 0; i < s.length(); i++) {
count++;
if((count ==21) && (s[i]=='\n')){
for(int n=i; n < s.length();n++){
s[n] = s[n+1];
}
s = s.substr(0,s.length()-1);
}
}
std::cout<<"delect enter:" + s <<std::endl;
} }
void Terminal::moveup() { void Terminal::moveup() {
int count =0;
for(int i = 0; i < s.length(); i++) {
if (s[i] == '\n') {
count = 0;
}
else {if(s[i]!=cursor)
count++;
}
if(count == 21){
s = s + s[s.length() - 1];
int x = s.length() - 1;
for(; x > i; x--){
s[x] = s[x-1];
}
s[x] = '\n';
}
}
std::cout<<"plus enter:" + s <<std::endl;
int cursorposition = s.find(cursor);
int aftercursorenter1 = s.find('\n',cursorposition);
int beforecursorenter1 = cursorposition - 1;
do {
if (s[beforecursorenter1] != '\n') {
beforecursorenter1--;
} else {
break;
}
} while (beforecursorenter1 >= 0);
std::cout<<"cursorpositon:" + std::to_string(cursorposition)<<std::endl;
std::cout<<"aftercursorenter1:" + std::to_string(aftercursorenter1)<<std::endl;
std::cout<<"beforecursorenter:" + std::to_string(beforecursorenter1)<<std::endl;
if(beforecursorenter1 != s.npos) {
int beforercursorenter2 = s.find('\n', aftercursorenter1 + 1);
std::cout<<"aftercursorenter2:" + std::to_string(aftercursorenter2)<<std::endl;
if(aftercursorenter2 != s.npos){
std::cout<<"enter the loop & aftercursorenter2 !=s.npos" <<std::endl;
if((aftercursorenter2 - aftercursorenter1) >= (cursorposition - beforcursorenter)) {
for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter1 + cursorposition -beforcursorenter -1);newcursorposition++){
s[newcursorposition] = s[newcursorposition + 1];
}
s[aftercursorenter1 + cursorposition - beforcursorenter -1] = cursor;
}
else{
for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter2); newcursorposition++){
s[newcursorposition] = s[newcursorposition + 1];
}
s[aftercursorenter2] = cursor;
}
}
else{
std::cout<<"enter the loop & aftercursorenter2 ==s.npos" <<std::endl;
std::cout<<"elsecursorpositon:" + std::to_string(cursorposition)<<std::endl;
std::cout<<"elseaftercursorenter1:" + std::to_string(aftercursorenter1)<<std::endl;
std::cout<<"elsebeforecursorenter:" + std::to_string(beforcursorenter)<<std::endl;
if((s.length()- 1 - aftercursorenter1) >= (cursorposition - beforcursorenter)) {
std::cout<<"enter the loop if" <<std::endl;
for(int newcursorposition=cursorposition; newcursorposition < (aftercursorenter1 + cursorposition -beforcursorenter); newcursorposition++){
s[newcursorposition] = s[newcursorposition + 1];
std::cout<<"forcursorpositon:" + std::to_string(cursorposition)<<std::endl;
}
s[aftercursorenter1 + cursorposition - beforcursorenter ] = cursor;
std::cout<<"new cursorposition" + std::to_string(aftercursorenter1 + cursorposition - beforcursorenter -1) <<std::endl;
std::cout<<"delect enter:" + s <<std::endl;
}
else{
std::cout<<"enter the loop else" <<std::endl;
for(int newcursorposition = cursorposition;newcursorposition < (s.length() -1); newcursorposition++){
s[newcursorposition] = s[newcursorposition + 1];
}
std::cout<<"new cursorposition" + std::to_string(s.length() - 1) <<std::endl;
s[s.length() - 1] = cursor;
}
}
}
std::cout<<"after down:" + s <<std::endl;
count = 0;
for(int i = 0; i < s.length(); i++) {
count++;
if((count ==21) && (s[i]=='\n')){
for(int n=i; n < s.length();n++){
s[n] = s[n+1];
}
s = s.substr(0,s.length()-1);
}
}
std::cout<<"delect enter:" + s <<std::endl;
} }