Website Summary Files Commits Branches @commit @diff @stats
path: root / src / Generic / ConsoleInterface
diff options
context:
space:
mode:
Commit9097bced161430813b6dd1980b0b2f6c2bd09b32 (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-05-29 07:58:46 +0300
Committer
 Syndamia <kamen@syndamia.com>
2022-05-29 07:58:46 +0300
Files62ddf909db26bcdd695ac4600ae9f3882a85921f /src/Generic/ConsoleInterface
FMI-OOP-P2_Tables-9097bced161430813b6dd1980b0b2f6c2bd09b32.tar
FMI-OOP-P2_Tables-9097bced161430813b6dd1980b0b2f6c2bd09b32.tar.gz
FMI-OOP-P2_Tables-9097bced161430813b6dd1980b0b2f6c2bd09b32.zip
Parentcf991dc2d8694bfc6d457133b44cb4a760f93724 (diff)
Autocommit at 29.05.2022 @ 07:58
2 files changed, 12 insertions, 147 deletions
-rw-r--r--src/Generic/ConsoleInterface/Toolbox.cpp148
-rw-r--r--src/Generic/ConsoleInterface/Toolbox.hpp11
diff --git a/src/Generic/ConsoleInterface/Toolbox.cpp b/src/Generic/ConsoleInterface/Toolbox.cpp
index ca83b3b..f8434a4 100644
--- a/src/Generic/ConsoleInterface/Toolbox.cpp
+++ b/src/Generic/ConsoleInterface/Toolbox.cpp
@@ -11,103 +11,8 @@ void clear() {
std::cout << u8"\033[2J\033[1;1H";
}
-/*!
- * Sub boxes are like normal boxes, but indented with 4 spaces.
- */
-void _printSubBoxSpacing() {
- std::cout << " ";
-}
-
-/* Title boxes */
-
-/*! \param title C-style string, there are no size checks so it could wrap
- *
- * Prints the title, surrounded by "===".
- */
-void titleBox(const char* title) {
- std::cout << std::endl << "=== " << title << " ===" << std::endl;
-}
-
-/*! \param title C-style string, there are no size checks so it could wrap
- *
- * Prints the title, surrounded by "---".
- */
-void subTitleBox(const char* title) {
- std::cout << std::endl << "--- " << title << " ---" << std::endl;
-}
-
-/* Status boxes */
-
-/*! \param message C-style string, there are no size checks so it could wrap
- *
- * Success boxes start with "<S>" and print the message.
- *
- * \remark Success/Warning/Error boxes start with "<C>" where C is an appropriate character.
- */
-void successBox(const char* message) {
- std::cout << "<S> " << message << std::endl;
-}
-
-/*!
- * \copydetails successBox()
- * \sa _printSubBoxSpacing()
- */
-void successSubBox(const char* message) {
- _printSubBoxSpacing();
- successBox(message);
-}
-
-/*! \param message C-style string, there are no size checks so it could wrap
- *
- * Warning boxes start with "<W>" and print the message.
- *
- * \remark Success/Warning/Error boxes start with "<C>" where C is an appropriate character.
- */
-void warningBox(const char* message) {
- std::cout << "<W> " << message << std::endl;
-}
-
-/*!
- * \copydetails warningBox()
- * \sa _printSubBoxSpacing()
- */
-void warningSubBox(const char* message) {
- _printSubBoxSpacing();
- warningBox(message);
-}
-
-/*! \param message C-style string, there are no size checks so it could wrap
- *
- * Error boxes start with "<E>" and print the message.
- *
- * \remark Success/Warning/Error boxes start with "<C>" where C is an appropriate character.
- */
-void errorBox(const char* message) {
- std::cout << "<E> " << message << std::endl;
-}
-
-/*!
- * \copydetails errorBox()
- * \sa _printSubBoxSpacing()
- */
-void errorSubBox(const char* message) {
- _printSubBoxSpacing();
- errorBox(message);
-}
-
/* Input line boxes */
-/*! \param label C-style string, there are no size checks so it could wrap
- *
- * Prints "(+)" and then the given label.
- * It doesn't create spacing after label, so it should exist in the label itself.
- *
- * \remark Semi-internal means the function is defined in the header out of necessity (for templated functions)
- */
-void _printInputBoxLabel(const char* label) {
- std::cout << "(+) " << label;
-}
-
void __inputLineBoxGetInput(char* output, unsigned maxWidth, bool ignore) {
if (ignore)
std::cin.ignore();
@@ -123,54 +28,10 @@ void __inputLineBoxGetInput(char* output, unsigned maxWidth, bool ignore) {
* Prints "(+)" before the label.
*/
void inputLineBox(const char* label, char* output, unsigned maxWidth, bool ignore) {
- _printInputBoxLabel(label);
+ print(label);
__inputLineBoxGetInput(output, maxWidth, ignore);
}
-/*!
- * \copydetails inputLineBox()
- * \sa _printSubBoxSpacing()
- */
-void inputLineSubBox(const char* label, char* output, unsigned maxWidth, bool ignore) {
- _printSubBoxSpacing();
- _printInputBoxLabel(label);
- __inputLineBoxGetInput(output, maxWidth, ignore);
-}
-
-/*! \param ignore Whether or not to ignore the first new-line delimiter.
- * true by default, should be set to false only when an inputLineBox/SubBox has been issued directly prior or when it's the very first issued box command.
- *
- * Prints a "Press enter to continue" message and waits for the user
- */
-void pressEnterToContinue(bool ignore) {
- char tmp;
- inputLineBox("[Press enter to continue]", &tmp, 1, ignore);
-}
-
-/* Ordered list */
-
-int orderedListIndex = 1;
-
-/*!
- * Prints the latests ordered list index, surrounded by square brackets, and increments the ordered list index.
- *
- * \remark There are no size checks, so list index could overflow.
- *
- * \remark Semi-internal means the function is defined in the header out of necessity (for templated functions)
- */
-
-void _printOrderedListBeginning() {
- std::cout << "[" << orderedListIndex++ << "] ";
-}
-
-/*! \param starter Sets the starting number by which ordered list will enumerate
- *
- * \remark Although starter can be a negative number, ordered list will always increment up the number.
- */
-void resetOrderedList(int starter) {
- orderedListIndex = starter;
-}
-
/* Table */
void __printTableHeaderNumber(unsigned number) {
@@ -195,6 +56,10 @@ void __printTableLine(unsigned columns) {
std::cout << ":" << std::endl;
}
+void __printPadded(const String& str) {
+
+}
+
/*! \param startNumber The number by which column and row enumeration begins
* \param columns How many columns the table should have
* \param items C-style string, each cell is a single character from the string
@@ -205,7 +70,8 @@ void __printTableLine(unsigned columns) {
* Table is printed until a terminating zero is encountered.
* The rows are "calculated" from the columns count and the items length.
*/
-void table(unsigned startNumber, unsigned columns, const char* items) {
+void table(const List<String>& items) {
+ unsigned *paddings = new unsigned[items.get_count()];
__printTableColumnHeader(startNumber, columns);
__printTableHeaderNumber(startNumber);
diff --git a/src/Generic/ConsoleInterface/Toolbox.hpp b/src/Generic/ConsoleInterface/Toolbox.hpp
index 4fb8214..e590a25 100644
--- a/src/Generic/ConsoleInterface/Toolbox.hpp
+++ b/src/Generic/ConsoleInterface/Toolbox.hpp
@@ -2,6 +2,8 @@
#define HEADER_CONSOLEINTERFACE_TOOLBOX
#include <iostream>
+#include "../List/List.hpp"
+#include "../String/String.h"
/*! \file Toolbox.hpp
* \brief Stores a wide range of functions for simpler/more automated printing.
@@ -19,11 +21,8 @@ void clear();
//! Prints label, gets a whole line of input and stores it to output
void inputLineBox(const char* label, char* output, unsigned maxWidth, bool ignore = true);
-//! Prints a string as a table
-void table(unsigned startNumber, unsigned columns, const char* items);
-
-//! Semi-internal function that prints the label of an input box
-void _printInputBoxLabel(const char* label);
+//! Prints a string list as a table
+void table(const List<String>& items);
//! Reads user input and stores it
template <typename T>
@@ -64,7 +63,7 @@ void printLine(const T& item) {
//! Prints a label and then reads user input and stores it
template <typename T>
void inputBox(const char* label, T* output) {
- _printInputBoxLabel(label);
+ print(label);
std::cin >> *output;
}