Website Summary Files Commits Branches @commit @diff @stats
path: root / src / Generic / ConsoleInterface / Toolbox.cpp
diff options
context:
space:
mode:
Commitb844597fd23bc57aa97e231fc90eecfd6322cecc (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-07 08:28:27 +0300
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-07 08:28:27 +0300
Files86a4112ecfa1e3a54dbcf44a7ddf37575ba4aa39 /src/Generic/ConsoleInterface/Toolbox.cpp
FMI-OOP-P1_TicketSystem-b844597fd23bc57aa97e231fc90eecfd6322cecc.tar
FMI-OOP-P1_TicketSystem-b844597fd23bc57aa97e231fc90eecfd6322cecc.tar.gz
FMI-OOP-P1_TicketSystem-b844597fd23bc57aa97e231fc90eecfd6322cecc.zip
Parent0910afb91c8f9672be1d6184f47fb75947ea14f1 (diff)
Reorganized whole architecture
1 files changed, 99 insertions, 0 deletions
-rw-r--r--src/Generic/ConsoleInterface/Toolbox.cpp99
diff --git a/src/Generic/ConsoleInterface/Toolbox.cpp b/src/Generic/ConsoleInterface/Toolbox.cpp
new file mode 100644
index 0000000..1f2e42c
--- /dev/null
+++ b/src/Generic/ConsoleInterface/Toolbox.cpp
@@ -0,0 +1,99 @@
+#include "Toolbox.hpp"
+
+void clear() {
+ // Clears console on Linux
+ // Source: https://stackoverflow.com/a/52895729/12036073
+ std::cout << u8"\033[2J\033[1;1H";
+}
+
+int orderedListIndex = 1;
+
+void resetOrderedList(int starter) {
+ orderedListIndex = starter;
+}
+
+void titleBox(const char* title) {
+ std::cout << std::endl << "=== " << title << " ===" << std::endl;
+}
+
+void subTitleBox(const char* title) {
+ std::cout << std::endl << "--- " << title << " ---" << std::endl;
+}
+
+void successBox(const char* message) {
+ std::cout << "<S> " << message << std::endl;
+}
+
+void warningBox(const char* message) {
+ std::cout << "<W> " << message << std::endl;
+}
+
+void errorBox(const char* message) {
+ std::cout << "<E> " << message << std::endl;
+}
+
+void __printTableHeaderNumber(unsigned number) {
+ std::cout << ":" << ((number < 100) ? " " : "") << number << ((number < 10) ? " " : "");
+}
+
+void __printTableColumnHeader(unsigned start, unsigned count) {
+ std::cout << ": ";
+ for (unsigned i = 0; i < count; i++)
+ __printTableHeaderNumber(start++);
+ std::cout << ":" << std::endl;
+
+ for (unsigned i = 0; i <= count; i++)
+ std::cout << "====";
+ std::cout << "=" << std::endl;
+}
+
+void __printTableLine(unsigned columns) {
+ std::cout << ":===";
+ for (unsigned i = 0; i < columns; i++)
+ std::cout << "+---";
+ std::cout << ":" << std::endl;
+}
+
+void table(unsigned startNumber, unsigned columns, const char* items) {
+ __printTableColumnHeader(startNumber, columns);
+
+ __printTableHeaderNumber(startNumber);
+ for (unsigned i = 0, colInd = 0, rowInd = 0; items[i] != '\0'; i++, (++colInd) %= columns) {
+ if (colInd == 0 && i != 0) {
+ std::cout << ":" << std::endl;
+ __printTableLine(columns);
+ __printTableHeaderNumber((++rowInd) + startNumber);
+ }
+
+ std::cout << ((colInd == 0) ? "║ " : "| ") << items[rowInd * columns + colInd] << " ";
+ }
+ std::cout << ":" << std::endl;
+}
+
+void _printOrderedListBeginning() {
+ std::cout << "[" << orderedListIndex++ << "] ";
+}
+
+void _printInputBoxLabel(const char* label) {
+ std::cout << "(+) " << label;
+}
+
+void _printInputSubBoxLabel(const char* label) {
+ std::cout << " ";
+ _printInputBoxLabel(label);
+}
+
+void __inputLineBoxGetInput(char* output, unsigned maxWidth) {
+ std::cin.ignore();
+ std::cin.getline(output, maxWidth);
+}
+
+void inputLineBox(const char* label, char* output, unsigned maxWidth) {
+ _printInputBoxLabel(label);
+ __inputLineBoxGetInput(output, maxWidth);
+}
+
+void inputLineSubBox(const char* label, char* output, unsigned maxWidth) {
+ _printInputSubBoxLabel(label);
+ __inputLineBoxGetInput(output, maxWidth);
+}