terminal/src/Terminal.cpp

142 lines
2.9 KiB
C++
Raw Normal View History

2019-12-12 11:59:07 +01:00
//
// Created by yukun on 29.11.19.
//
2019-12-18 13:26:59 +01:00
#include <iostream>
#include <vector>
2019-12-12 11:59:07 +01:00
#include "vkvm.hpp"
#include "Terminal.h"
std::string Terminal::getString() {
return s;
}
2019-12-18 13:26:59 +01:00
void Terminal::init(){
s = s + cursor;
}
2019-12-12 11:59:07 +01:00
void Terminal::setString(char c) {
2019-12-18 13:26:59 +01:00
// s.erase(s.end() - 1);
// s = s + c + cursor;
int i = s.find(cursor);
std::cout << i << std::endl;
std::cout<< s.length() -1 <<std::endl;
if(i < s.length() -1 ){
s= s + s[s.length() - 1];
int l = s.length() - 1;
for(; l > i + 1; l--){
s[l] = s[l-1];
}
s[i+1] = c;
}
else{
s = s + cursor;
s[s.length()-2] = c;
2019-12-18 13:26:59 +01:00
}
2019-12-12 11:59:07 +01:00
}
void Terminal::subString(){
2019-12-18 13:26:59 +01:00
// if(s.length() > 1)
// s.erase(s.end() - 1);
// s.erase(s.end() - 1);
// s = s + cursor;
if(s.length() > 1) {
int i = s.find(cursor);
s.erase(i - 1, 1);
}
2019-12-12 11:59:07 +01:00
}
void Terminal::shiftpressed() {
status = 1;
}
void Terminal::shiftup() {
status = 0;
}
int Terminal::getstatus() {
return status;
}
2019-12-18 13:26:59 +01:00
void Terminal::moveleft(){
int i = s.find(cursor);
if(i > 0){
char c = s[i-1];
s[i-1] = cursor;
s[i] = c;
}
}
void Terminal::moveright() {
int i = s.find(cursor);
if(i < (s.length() - 1)){
char c = s[i+1];
s[i+1] = cursor;
s[i] = c;
}
}
void Terminal::movedown() {
std::string news="";
int i = s.find(cursor);
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;
2019-12-18 13:26:59 +01:00
}
void Terminal::moveup() {
}