#include "Utils.h" #include #include #include "TDoublyLinkedList.h" #include "TStack.h" int Utils::Choice() { std::cout << "========\n1. Add line\n2. Remove line\n3. Print current document\n4. Print queue\n5. Undo\n6. Redo\n0. Exit" "\n\nChoice: "; int choice; std::cin >> choice; std::cin.ignore(std::numeric_limits::max(), '\n'); //std::cout << "\n=====================\n"; return choice; } int Utils::Insert(TDoublyLinkedList &document, TStack &undoStack, TStack &redoStack, int index) { for (int i = 0; i < document.GetSize(); i++) { std::cout << i + 1 << ". " << document.GetAtIndex(i) << std::endl; } if (document.GetSize() > 0) { std::cout << "Enter the line number where you want to insert the line" <> index)) { std::cin.clear(); std::cin.ignore(std::numeric_limits::max(), '\n'); std::cout << "========\nIndex must be a number\n========\n\n" << std::endl; return index; } std::cin.ignore(std::numeric_limits::max(), '\n'); } if (document.GetSize() < 1) index = 1; std::cout << "Enter the text" <> index)) { std::cin.clear(); std::cin.ignore(std::numeric_limits::max(), '\n'); std::cout << "========\nIndex must be a number\n========\n\n" << std::endl; return index; } std::cin.ignore(std::numeric_limits::max(), '\n'); const std::string deletedLine = document.GetAtIndex(index-1); document.Remove(index-1); undoStack.Push({DELETE, deletedLine, index-1}); if (!redoStack.IsEmpty()) { redoStack.Clear(); } return index; }