mirror of
				https://github.com/ArthurSonzogni/FTXUI.git
				synced 2025-11-04 13:38:14 +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 */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user