| 
									
										
										
										
											2023-08-19 13:56:36 +02:00
										 |  |  | // Copyright 2020 Arthur Sonzogni. All rights reserved.
 | 
					
						
							|  |  |  | // Use of this source code is governed by the MIT license that can be found in
 | 
					
						
							|  |  |  | // the LICENSE file.
 | 
					
						
							| 
									
										
										
										
											2021-08-08 23:25:20 +02:00
										 |  |  | #include <chrono>                  // for operator""s, chrono_literals
 | 
					
						
							| 
									
										
										
										
											2021-08-09 00:27:37 +02:00
										 |  |  | #include <ftxui/dom/elements.hpp>  // for Element, operator|, separator, filler, hbox, size, spinner, text, vbox, bold, border, Fit, EQUAL, WIDTH
 | 
					
						
							|  |  |  | #include <ftxui/screen/screen.hpp>  // for Full, Screen
 | 
					
						
							| 
									
										
										
										
											2021-08-08 23:25:20 +02:00
										 |  |  | #include <iostream>                 // for cout, endl, ostream
 | 
					
						
							| 
									
										
										
										
											2021-08-09 00:27:37 +02:00
										 |  |  | #include <string>                   // for to_string, operator<<, string
 | 
					
						
							| 
									
										
										
										
											2021-08-08 23:25:20 +02:00
										 |  |  | #include <thread>                   // for sleep_for
 | 
					
						
							|  |  |  | #include <utility>                  // for move
 | 
					
						
							|  |  |  | #include <vector>                   // for vector
 | 
					
						
							| 
									
										
										
										
											2021-05-01 20:40:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-07 11:03:54 +01:00
										 |  |  | #include "ftxui/dom/node.hpp"      // for Render
 | 
					
						
							|  |  |  | #include "ftxui/screen/color.hpp"  // for ftxui
 | 
					
						
							| 
									
										
										
										
											2019-01-06 22:28:15 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-03 13:59:39 +02:00
										 |  |  | int main() { | 
					
						
							| 
									
										
										
										
											2019-01-06 22:28:15 +01:00
										 |  |  |   using namespace ftxui; | 
					
						
							|  |  |  |   using namespace std::chrono_literals; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   std::string reset_position; | 
					
						
							| 
									
										
										
										
											2020-03-27 01:42:46 +01:00
										 |  |  |   for (int index = 0; index < 200; ++index) { | 
					
						
							| 
									
										
										
										
											2019-01-06 22:28:15 +01:00
										 |  |  |     std::vector<Element> entries; | 
					
						
							| 
									
										
										
										
											2023-01-06 11:05:56 +01:00
										 |  |  |     for (int i = 0; i < 23; ++i) { | 
					
						
							| 
									
										
										
										
											2025-08-17 11:18:25 +02:00
										 |  |  |       if (i != 0) { | 
					
						
							| 
									
										
										
										
											2020-03-27 01:42:46 +01:00
										 |  |  |         entries.push_back(separator()); | 
					
						
							| 
									
										
										
										
											2025-08-17 11:18:25 +02:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2020-05-20 20:36:47 +02:00
										 |  |  |       entries.push_back(  //
 | 
					
						
							|  |  |  |           hbox({ | 
					
						
							| 
									
										
										
										
											2021-08-09 00:27:37 +02:00
										 |  |  |               text(std::to_string(i)) | size(WIDTH, EQUAL, 2), | 
					
						
							| 
									
										
										
										
											2020-05-20 20:36:47 +02:00
										 |  |  |               separator(), | 
					
						
							|  |  |  |               spinner(i, index) | bold, | 
					
						
							|  |  |  |           })); | 
					
						
							| 
									
										
										
										
											2019-01-06 22:28:15 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-05-20 20:36:47 +02:00
										 |  |  |     auto document = hbox({ | 
					
						
							|  |  |  |         vbox(std::move(entries)) | border, | 
					
						
							|  |  |  |         filler(), | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2019-01-26 21:52:55 +01:00
										 |  |  |     auto screen = Screen::Create(Dimension::Full(), Dimension::Fit(document)); | 
					
						
							| 
									
										
										
										
											2020-05-20 21:23:59 +02:00
										 |  |  |     Render(screen, document); | 
					
						
							| 
									
										
										
										
											2021-03-21 22:54:39 +01:00
										 |  |  |     std::cout << reset_position; | 
					
						
							|  |  |  |     screen.Print(); | 
					
						
							| 
									
										
										
										
											2019-01-06 22:28:15 +01:00
										 |  |  |     reset_position = screen.ResetPosition(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     std::this_thread::sleep_for(0.1s); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   std::cout << std::endl; | 
					
						
							|  |  |  | } |