mirror of
				https://github.com/ArthurSonzogni/FTXUI.git
				synced 2025-10-31 10:38:09 +08:00 
			
		
		
		
	Add focusable Renderer. (#173)
This commit is contained in:
		| @@ -12,12 +12,13 @@ example(menu2) | ||||
| example(menu_multiple) | ||||
| example(menu_style) | ||||
| example(modal_dialog) | ||||
| example(print_key_press) | ||||
| example(radiobox) | ||||
| example(radiobox_in_frame) | ||||
| example(renderer) | ||||
| example(resizable_split) | ||||
| example(slider) | ||||
| example(slider_rgb) | ||||
| example(tab_horizontal) | ||||
| example(tab_vertical) | ||||
| example(toggle) | ||||
| example(resizable_split) | ||||
| example(print_key_press) | ||||
|   | ||||
| @@ -1,11 +1,12 @@ | ||||
| #include <memory>  // for allocator, __shared_ptr_access | ||||
| #include <string>  // for operator+, char_traits, wstring | ||||
| #include <string>  // for char_traits, operator+, wstring, basic_string | ||||
|  | ||||
| #include "ftxui/component/captured_mouse.hpp"  // for ftxui | ||||
| #include "ftxui/component/component.hpp"       // for Input, Renderer, Vertical | ||||
| #include "ftxui/component/component_base.hpp"  // for ComponentBase | ||||
| #include "ftxui/component/component_options.hpp"  // for InputOption | ||||
| #include "ftxui/component/screen_interactive.hpp"  // for Component, ScreenInteractive | ||||
| #include "ftxui/dom/elements.hpp"  // for text, hbox, Element, separator, operator|, vbox, border | ||||
| #include "ftxui/dom/elements.hpp"  // for text, hbox, separator, Element, operator|, vbox, border | ||||
|  | ||||
| int main(int argc, const char* argv[]) { | ||||
|   using namespace ftxui; | ||||
| @@ -14,7 +15,6 @@ int main(int argc, const char* argv[]) { | ||||
|   std::wstring last_name; | ||||
|   std::wstring password; | ||||
|  | ||||
|  | ||||
|   Component input_first_name = Input(&first_name, "first name"); | ||||
|   Component input_last_name = Input(&last_name, "last name"); | ||||
|  | ||||
|   | ||||
							
								
								
									
										49
									
								
								examples/component/renderer.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								examples/component/renderer.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| #include <memory>  // for shared_ptr, allocator, __shared_ptr_access | ||||
|  | ||||
| #include "ftxui/component/captured_mouse.hpp"  // for ftxui | ||||
| #include "ftxui/component/component.hpp"       // for Renderer, Button, Vertical | ||||
| #include "ftxui/component/component_base.hpp"  // for ComponentBase | ||||
| #include "ftxui/component/screen_interactive.hpp"  // for ScreenInteractive | ||||
| #include "ftxui/dom/elements.hpp"  // for operator|, Element, text, bold, border, center, color | ||||
| #include "ftxui/screen/color.hpp"  // for Color, Color::Red | ||||
|  | ||||
| int main(int argc, const char* argv[]) { | ||||
|   using namespace ftxui; | ||||
|   auto screen = ScreenInteractive::FitComponent(); | ||||
|  | ||||
|   // A Renderer() is a component using a lambda function as a parameter to | ||||
|   // render itself. | ||||
|  | ||||
|   // 1. Example of focusable renderer: | ||||
|   auto renderer_focusable = Renderer([](bool focused) { | ||||
|     if (focused) | ||||
|       return text(L"FOCUSABLE RENDERER()") | center | bold | border; | ||||
|     else | ||||
|       return text(L" Focusable renderer() ") | center | border; | ||||
|   }); | ||||
|  | ||||
|   // 2. Examples of a non focusable renderer. | ||||
|   auto renderer_non_focusable = Renderer([&] { | ||||
|     return text(L"~~~~~ Non Focusable renderer() ~~~~~");  // | ||||
|   }); | ||||
|  | ||||
|   // 3. Renderer can wrap other components to redefine their Render() function. | ||||
|   auto button = Button(L"Wrapped quit button", screen.ExitLoopClosure()); | ||||
|   auto renderer_wrap = Renderer(button, [&] { | ||||
|     if (button->Focused()) | ||||
|       return button->Render() | bold | color(Color::Red); | ||||
|     else | ||||
|       return button->Render(); | ||||
|   }); | ||||
|  | ||||
|   // Let's renderer everyone: | ||||
|   screen.Loop(Container::Vertical({ | ||||
|       renderer_focusable, | ||||
|       renderer_non_focusable, | ||||
|       renderer_wrap, | ||||
|   })); | ||||
| } | ||||
|  | ||||
| // 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. | ||||
		Reference in New Issue
	
	Block a user
	 Arthur Sonzogni
					Arthur Sonzogni