Import basics from testing before
This commit is contained in:
parent
859e727587
commit
073fbeb796
1 changed files with 105 additions and 0 deletions
105
main.cpp
Normal file
105
main.cpp
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
#include <ncurses.h>
|
||||||
|
#include <curses.h>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
using std::string;
|
||||||
|
using std::vector;
|
||||||
|
|
||||||
|
#define adds(s) addstr(s.c_str())
|
||||||
|
|
||||||
|
// Global variables
|
||||||
|
vector<string> file(0);
|
||||||
|
int row = 0, col = 0;
|
||||||
|
|
||||||
|
enum mode_ty {
|
||||||
|
insert, normal
|
||||||
|
};
|
||||||
|
|
||||||
|
// Load file to buffer
|
||||||
|
bool load(string filename) {
|
||||||
|
std::ifstream infile(filename);
|
||||||
|
if(!infile.good())
|
||||||
|
return 1;
|
||||||
|
string line;
|
||||||
|
while (std::getline(infile, line))
|
||||||
|
file.push_back(line);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save file from buffer
|
||||||
|
bool save(string filename) {
|
||||||
|
std::ofstream outfile(filename);
|
||||||
|
if(!outfile.good())
|
||||||
|
return 1;
|
||||||
|
for(string line : file)
|
||||||
|
outfile << line << std::endl;
|
||||||
|
outfile << "brambus chungus";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print file content
|
||||||
|
void print_file() {
|
||||||
|
for(int i = 0; i < file.size(); i++) {
|
||||||
|
move(i, 0);
|
||||||
|
adds(file[i]);
|
||||||
|
}
|
||||||
|
move(row, col);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO psaní do souboru
|
||||||
|
// TODO mazání v souboru
|
||||||
|
// TODO vkládání a mazání řádků
|
||||||
|
// TODO skoky a esuny
|
||||||
|
// TODO korování
|
||||||
|
// TODO hledání a nahrazování
|
||||||
|
// TODO undo
|
||||||
|
|
||||||
|
// Cursor movement
|
||||||
|
void move_cursor(char ch) {
|
||||||
|
move(row, col);
|
||||||
|
addch(file[row][col]);
|
||||||
|
move(row, col);
|
||||||
|
|
||||||
|
switch(ch) {
|
||||||
|
case 'h':
|
||||||
|
if(col > 0) move(row, --col);
|
||||||
|
break;
|
||||||
|
case 'j':
|
||||||
|
if(row < file.size()-1) move(++row, col);
|
||||||
|
break;
|
||||||
|
case 'k':
|
||||||
|
if(row > 0) move(--row, col);
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
if(col < file[row].size()) move(row, ++col);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
|
||||||
|
// Init
|
||||||
|
initscr();
|
||||||
|
refresh();
|
||||||
|
if(argc > 1 && load(argv[1]))
|
||||||
|
return 1;
|
||||||
|
if(argc > 1 && save(argv[1]))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
print_file();
|
||||||
|
|
||||||
|
mode_ty mode = normal;
|
||||||
|
|
||||||
|
// Main loop
|
||||||
|
while(true) {
|
||||||
|
char ch = getch();
|
||||||
|
move_cursor( ch);
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
// End
|
||||||
|
endwin();
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in a new issue