Compare commits

...

2 Commits

Author SHA1 Message Date
bd5fe465a7 Better output 2025-01-24 14:20:03 +01:00
ea56f6ee0a Format 2025-01-24 14:07:33 +01:00
3 changed files with 30 additions and 6 deletions

View File

@ -24,6 +24,7 @@ public:
Pager &operator-=(int number);
Page &operator*();
Page *operator->();
void set(int number);

View File

@ -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);
}

View File

@ -16,6 +16,10 @@ public:
void run();
private:;
static void clear_console();
private:
Pager m_pager;
};