mirror of
				https://github.com/ArthurSonzogni/FTXUI.git
				synced 2025-11-01 02:58:12 +08:00 
			
		
		
		
	Feature: Slider in any directions. (#468)
Add the `SliderOption` option supporting:
```cpp
{
  Ref<T> value;
  ConstRef<T> min = T(0);
  ConstRef<T> max = T(100);
  ConstRef<T> increment = (max() - min()) / 20;
  GaugeDirection direction = GaugeDirection::Right;
  Color color_active = Color::White;
  Color color_inactive = Color::GrayDark;
};
```
In particular, this supports multiple direction. This resolves:
https://github.com/ArthurSonzogni/FTXUI/issues/467
This one do not support adding a label. The old constructors can still
be used to have a label.
			
			
This commit is contained in:
		| @@ -10,7 +10,7 @@ | ||||
| #include "ftxui/component/component_base.hpp"  // for Component, Components | ||||
| #include "ftxui/component/component_options.hpp"  // for ButtonOption, CheckboxOption, MenuOption | ||||
| #include "ftxui/dom/elements.hpp"  // for Element | ||||
| #include "ftxui/util/ref.hpp"  // for Ref, ConstStringRef, ConstStringListRef, StringRef | ||||
| #include "ftxui/util/ref.hpp"  // for ConstRef, Ref, ConstStringRef, ConstStringListRef, StringRef | ||||
|  | ||||
| namespace ftxui { | ||||
| struct ButtonOption; | ||||
| @@ -82,6 +82,9 @@ Component Slider(ConstStringRef label, | ||||
|                  ConstRef<long> min = 0l, | ||||
|                  ConstRef<long> max = 100l, | ||||
|                  ConstRef<long> increment = 5l); | ||||
| // General slider type without support for a `label`. | ||||
| template <typename T>  // T = {int, float, long} | ||||
| Component Slider(SliderOption<T> options = {}); | ||||
|  | ||||
| Component ResizableSplitLeft(Component main, Component back, int* main_size); | ||||
| Component ResizableSplitRight(Component main, Component back, int* main_size); | ||||
|   | ||||
| @@ -3,11 +3,11 @@ | ||||
|  | ||||
| #include <chrono>                         // for milliseconds | ||||
| #include <ftxui/component/animation.hpp>  // for Duration, QuadraticInOut, Function | ||||
| #include <ftxui/dom/elements.hpp>         // for Element | ||||
| #include <ftxui/util/ref.hpp>             // for Ref | ||||
| #include <functional>                     // for function | ||||
| #include <optional>                       // for optional | ||||
| #include <string>                         // for string | ||||
| #include <ftxui/dom/elements.hpp>  // for Element, GaugeDirection, GaugeDirection::Right | ||||
| #include <ftxui/util/ref.hpp>  // for Ref, ConstRef | ||||
| #include <functional>          // for function | ||||
| #include <optional>            // for optional | ||||
| #include <string>              // for string | ||||
|  | ||||
| #include "ftxui/screen/color.hpp"  // for Color, Color::GrayDark, Color::White | ||||
|  | ||||
| @@ -164,6 +164,19 @@ struct RadioboxOption { | ||||
|   Ref<int> focused_entry = 0; | ||||
| }; | ||||
|  | ||||
| // @brief Option for the `Slider` component. | ||||
| // @ingroup component | ||||
| template <typename T> | ||||
| struct SliderOption { | ||||
|   Ref<T> value; | ||||
|   ConstRef<T> min = T(0); | ||||
|   ConstRef<T> max = T(100); | ||||
|   ConstRef<T> increment = (max() - min()) / 20; | ||||
|   GaugeDirection direction = GaugeDirection::Right; | ||||
|   Color color_active = Color::White; | ||||
|   Color color_inactive = Color::GrayDark; | ||||
| }; | ||||
|  | ||||
| }  // namespace ftxui | ||||
|  | ||||
| #endif /* end of include guard: FTXUI_COMPONENT_COMPONENT_OPTIONS_HPP */ | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
| #define FTXUI_SCREEN_SCREEN_HPP | ||||
|  | ||||
| #include <memory> | ||||
| #include <string>  // for string, allocator, basic_string | ||||
| #include <string>  // for allocator, string, basic_string | ||||
| #include <vector>  // for vector | ||||
|  | ||||
| #include "ftxui/screen/box.hpp"       // for Box | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Arthur Sonzogni
					Arthur Sonzogni