Better output
This commit is contained in:
parent
ea56f6ee0a
commit
bd5fe465a7
31
src/Tui.cpp
31
src/Tui.cpp
@ -50,6 +50,7 @@ void printHelp() {
|
||||
}
|
||||
|
||||
void Tui::run() {
|
||||
clear_console();
|
||||
std::cout << m_pager->str_pretty() << std::endl;
|
||||
for (;;) {
|
||||
std::cout << "Enter a command: ";
|
||||
@ -62,32 +63,34 @@ void Tui::run() {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
bool should_exit = false;
|
||||
auto visitor = [this, &should_exit]<typename T0>(T0 &&arg) {
|
||||
bool should_output = false;
|
||||
auto visitor = [this, &should_exit, &should_output]<typename T0>(T0 &&arg) {
|
||||
using T = std::decay_t<T0>;
|
||||
|
||||
if constexpr (std::is_same_v<T, Command::None>) {
|
||||
std::cout << "Invalid command!" << std::endl;
|
||||
} else if constexpr (std::is_same_v<T, Command::Next>) {
|
||||
try {
|
||||
std::cout << "Fetching..." << std::endl;
|
||||
m_pager += 1;
|
||||
} catch (const std::runtime_error &e) {
|
||||
std::cout << e.what() << std::endl;
|
||||
return;
|
||||
}
|
||||
std::cout << m_pager->str_pretty() << std::endl;
|
||||
should_output = true;
|
||||
} else if constexpr (std::is_same_v<T, Command::Previous>) {
|
||||
try {
|
||||
std::cout << "Fetching..." << std::endl;
|
||||
m_pager -= 1;
|
||||
} catch (const std::runtime_error &e) {
|
||||
std::cout << e.what() << std::endl;
|
||||
return;
|
||||
}
|
||||
std::cout << m_pager->str_pretty() << std::endl;
|
||||
should_output = true;
|
||||
} else if constexpr (std::is_same_v<T, Command::Refresh>) {
|
||||
m_pager.clear();
|
||||
std::cout << m_pager->str_pretty() << std::endl;
|
||||
should_output = true;
|
||||
} else if constexpr (std::is_same_v<T, Command::Exit>) {
|
||||
should_exit = true;
|
||||
} else if constexpr (std::is_same_v<T, Command::Help>) {
|
||||
@ -96,16 +99,32 @@ void Tui::run() {
|
||||
const Command::Seek &seek = arg;
|
||||
const int number = seek.number;
|
||||
try {
|
||||
std::cout << "Fetching..." << std::endl;
|
||||
m_pager.seek(number);
|
||||
} catch (const std::runtime_error &e) {
|
||||
std::cout << e.what() << std::endl;
|
||||
return;
|
||||
}
|
||||
std::cout << m_pager->str_pretty() << std::endl;
|
||||
should_output = true;
|
||||
}
|
||||
};
|
||||
std::visit(visitor, command);
|
||||
if (should_exit)
|
||||
return;
|
||||
|
||||
clear_console();
|
||||
if (should_output)
|
||||
std::cout << m_pager->str_pretty() << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void Tui::clear_console() {
|
||||
const auto CMD =
|
||||
#ifdef _WIN32 || _WIN64
|
||||
"cls";
|
||||
#else
|
||||
"clear";
|
||||
#endif
|
||||
|
||||
system(CMD);
|
||||
}
|
||||
|
@ -16,6 +16,10 @@ public:
|
||||
|
||||
void run();
|
||||
|
||||
private:;
|
||||
|
||||
static void clear_console();
|
||||
|
||||
private:
|
||||
Pager m_pager;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user