-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmenu.cpp
More file actions
125 lines (119 loc) · 2.55 KB
/
menu.cpp
File metadata and controls
125 lines (119 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <iostream>
#include <conio.h>
#include "menu.h"
#include "file.h"
#include "text.h"
#include "screen.h"
void Menu::detect(Instance &i){
string line;
string cmd[3];
cout << "\n: ";
getline(cin, line);
Text::trimht(line);
if (!(line.empty())){
cmd[0] = line.substr(0, line.find_first_of(' '));
line.erase(0, line.find_first_of(' '));
Text::trimht(line);
cmd[1] = line.substr(0, line.find_first_of(' '));
line.erase(0, line.find_first_of(' '));
Text::trimht(line);
cmd[2] = line.substr(0, line.find_first_of(' '));
switch (cmd[0].c_str()[0])
{
case 'W':
case 'w':
if (!(cmd[1].empty()))
i.filename = cmd[1];
if (!(i.filename.empty()))
File::save(i);
else{
cout << "\nNome do arquivo: ";
string f;
getline(cin, f);
Text::trimht(f);
if(!(f.empty())){
i.filename = f;
File::save(i);
}
}
//Screen::update(i);
break;
case 'Q':
case 'q':
if (i.saved)
i.exit = true;
else{
cout << "Deseja sair sem salvar?(S/n) ";
char op = _getch();
if (op == 'S' || op == 's')
i.exit = true;
}
//Screen::update(i);
break;
case 'E':
case 'e':
if (!(cmd[1].empty())){
i.filename = cmd[1];
File::load_to_buffer(i);
}
//Screen::update(i);
break;
case 'M':
case 'm':
i.buffer.mode = EDIT;
if (cmd[1].empty()){
i.buffer.reset_line();
i.buffer.line_buffer.clear();
}
else
i.buffer.change_line(atoi(cmd[1].c_str()));
//Screen::update(i);
break;
case 'A':
case 'a':
i.buffer.line_buffer.clear();
i.buffer.mode = INSERT;
if (!(cmd[1].empty()))
i.buffer.change_line(atoi(cmd[1].c_str()));
else
i.buffer.change_line(i.buffer.getLineNumber());
//Screen::update(i);
break;
case 'L':
case 'l':
if (cmd[1].empty())
Screen::update(i);
else if (cmd[2].empty())
Screen::updateRange(i, 1, atoi(cmd[1].c_str()));
else
Screen::updateRange(i, atoi(cmd[1].c_str()), atoi(cmd[2].c_str()));
break;
case 'D':
case 'd':
if (cmd[1].empty())
i.buffer.removeLine();
else if (cmd[2].empty())
i.buffer.removeLine(atoi(cmd[1].c_str()));
else
i.buffer.removeLines(atoi(cmd[1].c_str()), atoi(cmd[2].c_str()) + 1);
//Screen::update(i);
break;
case 'I':
case 'i':
i.buffer.line_buffer.clear();
i.buffer.mode = INSERT_AFTER;
if (!(cmd[1].empty()))
i.buffer.change_line(atoi(cmd[1].c_str()));
else
i.buffer.change_line(i.buffer.getLineNumber());
//Screen::update(i);
break;
case 'H':
case 'h':
Screen::help();
break;
default:
break;
}
}
}