diff --git a/.gitignore b/.gitignore index 4d12e758..71797e17 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,12 @@ out/ !src/ftxui/**/*.hpp !src/ftxui/**/*.cpp +# modules directory: +!modules/*.txt +!modules/ftxui/*.cppm +!modules/ftxui/*.txt +!modules/ftxui/**/*.cppm + # tools directory: !tools/**/*.sh !tools/**/*.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 8816a582..9a73f6a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -179,3 +179,10 @@ include(cmake/ftxui_package.cmake) add_subdirectory(examples) add_subdirectory(doc) + +if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.28) + message(STATUS "Building C++ modules (CMake ${CMAKE_VERSION} supports modules)") + add_subdirectory(modules) +else() + message(STATUS "Skipping C++ modules (requires CMake 3.28+, found ${CMAKE_VERSION})") +endif() \ No newline at end of file diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt new file mode 100644 index 00000000..b12821f3 --- /dev/null +++ b/modules/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(ftxui) \ No newline at end of file diff --git a/modules/ftxui/CMakeLists.txt b/modules/ftxui/CMakeLists.txt new file mode 100644 index 00000000..1449f0aa --- /dev/null +++ b/modules/ftxui/CMakeLists.txt @@ -0,0 +1,48 @@ +file(GLOB_RECURSE FTXUI_MODULES *.cppm) + +add_library(ftxui_modules) + +cmake_minimum_required(VERSION 3.28) + +if(NOT COMMAND configure_cpp_module_target) + function(configure_cpp_module_target target) + if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.28) + target_sources(${target} PUBLIC FILE_SET CXX_MODULES FILES ${FTXUI_MODULES}) + else() + message(WARNING "C++ modules require CMake 3.28+. Using standard compilation.") + target_sources(${target} PRIVATE ${FTXUI_MODULES}) + endif() + endfunction() +endif() + +configure_cpp_module_target(ftxui_modules) + +target_link_libraries(ftxui_modules + PUBLIC + ftxui::screen + ftxui::dom + ftxui::component +) + +target_include_directories(ftxui_modules + PRIVATE + ${ftxui_SOURCE_DIR}/include +) + +set_target_properties(ftxui_modules PROPERTIES + CXX_STANDARD 23 + CXX_STANDARD_REQUIRED ON + CXX_EXTENSIONS OFF + CXX_MODULE_DYNDEP OFF +) + +add_library(ftxui::modules ALIAS ftxui_modules) + +if(FTXUI_ENABLE_INSTALL) + install(TARGETS ftxui_modules + EXPORT ftxui-targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + FILE_SET CXX_MODULES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftxui/modules + ) +endif() \ No newline at end of file diff --git a/modules/ftxui/component.cppm b/modules/ftxui/component.cppm new file mode 100644 index 00000000..2d69a3e3 --- /dev/null +++ b/modules/ftxui/component.cppm @@ -0,0 +1,18 @@ +/** + * @file component.cppm + * @brief Module file for FTXUI component operations. + */ + +export module ftxui.component; + +export import ftxui.component.Animation; +export import ftxui.component.CapturedMouse; +export import ftxui.component.Component; +export import ftxui.component.ComponentBase; +export import ftxui.component.ComponentOptions; +export import ftxui.component.Event; +export import ftxui.component.Loop; +export import ftxui.component.Mouse; +export import ftxui.component.Receiver; +export import ftxui.component.ScreenInteractive; +export import ftxui.component.Task; \ No newline at end of file diff --git a/modules/ftxui/component/Animation.cppm b/modules/ftxui/component/Animation.cppm new file mode 100644 index 00000000..e624196b --- /dev/null +++ b/modules/ftxui/component/Animation.cppm @@ -0,0 +1,66 @@ +/** + * @file Animation.cppm + * @brief Module file for the Animation namespace of the Component module + */ + +module; + +#include + +export module ftxui.component.Animation; + +/** + * @namespace ftxui::animation + * @brief The FTXUI ftxui::animation:: namespace + */ +export namespace ftxui::animation { + using ftxui::animation::RequestAnimationFrame; + + using ftxui::animation::Clock; + using ftxui::animation::TimePoint; + using ftxui::animation::Duration; + + using ftxui::animation::Params; + + /** + * @namespace easing + * @brief The FTXUI sf::animation::easing:: namespace + */ + namespace easing { + using ftxui::animation::easing::Function; + + using ftxui::animation::easing::Linear; + using ftxui::animation::easing::QuadraticIn; + using ftxui::animation::easing::QuadraticOut; + using ftxui::animation::easing::QuadraticInOut; + using ftxui::animation::easing::CubicIn; + using ftxui::animation::easing::CubicOut; + using ftxui::animation::easing::CubicInOut; + using ftxui::animation::easing::QuarticIn; + using ftxui::animation::easing::QuarticOut; + using ftxui::animation::easing::QuarticInOut; + using ftxui::animation::easing::QuinticIn; + using ftxui::animation::easing::QuinticOut; + using ftxui::animation::easing::QuinticInOut; + using ftxui::animation::easing::SineIn; + using ftxui::animation::easing::SineOut; + using ftxui::animation::easing::SineInOut; + using ftxui::animation::easing::CircularIn; + using ftxui::animation::easing::CircularOut; + using ftxui::animation::easing::CircularInOut; + using ftxui::animation::easing::ExponentialIn; + using ftxui::animation::easing::ExponentialOut; + using ftxui::animation::easing::ExponentialInOut; + using ftxui::animation::easing::ElasticIn; + using ftxui::animation::easing::ElasticOut; + using ftxui::animation::easing::ElasticInOut; + using ftxui::animation::easing::BackIn; + using ftxui::animation::easing::BackOut; + using ftxui::animation::easing::BackInOut; + using ftxui::animation::easing::BounceIn; + using ftxui::animation::easing::BounceOut; + using ftxui::animation::easing::BounceInOut; + } + + using ftxui::animation::Animator; +} \ No newline at end of file diff --git a/modules/ftxui/component/CapturedMouse.cppm b/modules/ftxui/component/CapturedMouse.cppm new file mode 100644 index 00000000..fbff999f --- /dev/null +++ b/modules/ftxui/component/CapturedMouse.cppm @@ -0,0 +1,18 @@ +/** + * @file CapturedMouse.cppm + * @brief Module file for the CapturedMouseInterface class of the Component module + */ + +module; + +#include + +export module ftxui.component.CapturedMouse; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::CapturedMouseInterface; +} \ No newline at end of file diff --git a/modules/ftxui/component/Component.cppm b/modules/ftxui/component/Component.cppm new file mode 100644 index 00000000..06ae5826 --- /dev/null +++ b/modules/ftxui/component/Component.cppm @@ -0,0 +1,61 @@ +/** + * @file Component.cppm + * @brief Module file for the Component classes of the Component module + */ + +module; + +#include + +export module ftxui.component.Component; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::ButtonOption; + using ftxui::CheckboxOption; + using ftxui::Event; + using ftxui::InputOption; + using ftxui::MenuOption; + using ftxui::RadioboxOption; + using ftxui::MenuEntryOption; + + using ftxui::Make; + + using ftxui::ComponentDecorator; + using ftxui::ElementDecorator; + + using ftxui::operator|; + using ftxui::operator|=; + + namespace Container { + using ftxui::Container::Vertical; + using ftxui::Container::Horizontal; + using ftxui::Container::Tab; + using ftxui::Container::Stacked; + } + + using ftxui::Button; + using ftxui::Checkbox; + using ftxui::Input; + using ftxui::Menu; + using ftxui::MenuEntry; + using ftxui::Radiobox; + using ftxui::Dropdown; + using ftxui::Toggle; + using ftxui::Slider; + using ftxui::ResizableSplit; + using ftxui::ResizableSplitLeft; + using ftxui::ResizableSplitRight; + using ftxui::ResizableSplitTop; + using ftxui::ResizableSplitBottom; + using ftxui::Renderer; + using ftxui::CatchEvent; + using ftxui::Maybe; + using ftxui::Modal; + using ftxui::Collapsible; + using ftxui::Hoverable; + using ftxui::Window; +} \ No newline at end of file diff --git a/modules/ftxui/component/ComponentBase.cppm b/modules/ftxui/component/ComponentBase.cppm new file mode 100644 index 00000000..55d0c62c --- /dev/null +++ b/modules/ftxui/component/ComponentBase.cppm @@ -0,0 +1,28 @@ +/** + * @file ComponentBase.cppm + * @brief Module file for the ComponentBase class of the Component module + */ + +module; + +#include + +export module ftxui.component.ComponentBase; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Delegate; + using ftxui::Focus; + using ftxui::Event; + + namespace animation { + using ftxui::animation::Params; + } + + using ftxui::ComponentBase; + using ftxui::Component; + using ftxui::Components; +} \ No newline at end of file diff --git a/modules/ftxui/component/ComponentOptions.cppm b/modules/ftxui/component/ComponentOptions.cppm new file mode 100644 index 00000000..fe8877f1 --- /dev/null +++ b/modules/ftxui/component/ComponentOptions.cppm @@ -0,0 +1,33 @@ +/** + * @file ComponentOptions.cppm + * @brief Module file for options for the Component class of the Component module + */ + +module; + +#include + +export module ftxui.component.ComponentOptions; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::EntryState; + using ftxui::UnderlineOption; + using ftxui::AnimatedColorOption; + using ftxui::AnimatedColorsOption; + using ftxui::MenuEntryOption; + using ftxui::MenuOption; + using ftxui::ButtonOption; + using ftxui::CheckboxOption; + using ftxui::InputState; + using ftxui::InputOption; + using ftxui::RadioboxOption; + using ftxui::ResizableSplitOption; + using ftxui::SliderOption; + using ftxui::WindowRenderState; + using ftxui::WindowOptions; + using ftxui::DropdownOption; +} \ No newline at end of file diff --git a/modules/ftxui/component/Event.cppm b/modules/ftxui/component/Event.cppm new file mode 100644 index 00000000..d6a53d2b --- /dev/null +++ b/modules/ftxui/component/Event.cppm @@ -0,0 +1,21 @@ +/** + * @file Event.cppm + * @brief Module file for the Event struct of the Component module + */ + +module; + +#include + +export module ftxui.component.Event; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::ScreenInteractive; + using ftxui::ComponentBase; + + using ftxui::Event; +} \ No newline at end of file diff --git a/modules/ftxui/component/Loop.cppm b/modules/ftxui/component/Loop.cppm new file mode 100644 index 00000000..ae4caf26 --- /dev/null +++ b/modules/ftxui/component/Loop.cppm @@ -0,0 +1,22 @@ +/** + * @file Loop.cppm + * @brief Module file for the Loop class of the Component module + */ + +module; + +#include + +export module ftxui.component.Loop; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::ComponentBase; + using ftxui::Component; + using ftxui::ScreenInteractive; + + using ftxui::Loop; +} \ No newline at end of file diff --git a/modules/ftxui/component/Mouse.cppm b/modules/ftxui/component/Mouse.cppm new file mode 100644 index 00000000..086772ab --- /dev/null +++ b/modules/ftxui/component/Mouse.cppm @@ -0,0 +1,18 @@ +/** + * @file Mouse.cppm + * @brief Module file for the Mouse struct of the Component module + */ + +module; + +#include + +export module ftxui.component.Mouse; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Mouse; +} \ No newline at end of file diff --git a/modules/ftxui/component/Receiver.cppm b/modules/ftxui/component/Receiver.cppm new file mode 100644 index 00000000..69a6eb28 --- /dev/null +++ b/modules/ftxui/component/Receiver.cppm @@ -0,0 +1,22 @@ +/** + * @file Receiver.cppm + * @brief Module file for the Receiver class of the Component module + */ + +module; + +#include + +export module ftxui.component.Receiver; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::SenderImpl; + using ftxui::ReceiverImpl; + using ftxui::Sender; + using ftxui::Receiver; + using ftxui::MakeReceiver; +} \ No newline at end of file diff --git a/modules/ftxui/component/ScreenInteractive.cppm b/modules/ftxui/component/ScreenInteractive.cppm new file mode 100644 index 00000000..61282c63 --- /dev/null +++ b/modules/ftxui/component/ScreenInteractive.cppm @@ -0,0 +1,25 @@ +/** + * @file ScreenInteractive.cppm + * @brief Module file for the ScreenInteractive class of the Component module + */ + +module; + +#include + +export module ftxui.component.ScreenInteractive; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::ComponentBase; + using ftxui::Loop; + using ftxui::Event; + using ftxui::Component; + + using ftxui::Screen; + using ftxui::ScreenInteractivePrivate; + using ftxui::ScreenInteractive; +} \ No newline at end of file diff --git a/modules/ftxui/component/Task.cppm b/modules/ftxui/component/Task.cppm new file mode 100644 index 00000000..359b9ffe --- /dev/null +++ b/modules/ftxui/component/Task.cppm @@ -0,0 +1,20 @@ +/** + * @file Task.cppm + * @brief Module file for the Task class of the Component module + */ + +module; + +#include + +export module ftxui.component.Task; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::AnimationTask; + using ftxui::Closure; + using ftxui::Task; +} \ No newline at end of file diff --git a/modules/ftxui/dom.cppm b/modules/ftxui/dom.cppm new file mode 100644 index 00000000..db73c0dc --- /dev/null +++ b/modules/ftxui/dom.cppm @@ -0,0 +1,17 @@ +/** + * @file dom.cppm + * @brief Module file for FTXUI main operations. + */ + +export module ftxui.dom; + +export import ftxui.dom.Canvas; +export import ftxui.dom.Deprecated; +export import ftxui.dom.Direction; +export import ftxui.dom.Elements; +export import ftxui.dom.FlexboxConfig; +export import ftxui.dom.LinearGradient; +export import ftxui.dom.Node; +export import ftxui.dom.Requirement; +export import ftxui.dom.Selection; +export import ftxui.dom.Table; diff --git a/modules/ftxui/dom/Canvas.cppm b/modules/ftxui/dom/Canvas.cppm new file mode 100644 index 00000000..48a381c9 --- /dev/null +++ b/modules/ftxui/dom/Canvas.cppm @@ -0,0 +1,18 @@ +/** + * @file Canvas.cppm + * @brief Module file for the Canvas struct of the Dom module + */ + +module; + +#include + +export module ftxui.dom.Canvas; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Canvas; +} diff --git a/modules/ftxui/dom/Deprecated.cppm b/modules/ftxui/dom/Deprecated.cppm new file mode 100644 index 00000000..f0c5b6d8 --- /dev/null +++ b/modules/ftxui/dom/Deprecated.cppm @@ -0,0 +1,20 @@ +/** + * @file Deprecated.cppm + * @brief Module file for deprecated parts of the Dom module + */ + +module; + +#include + +export module ftxui.dom.Deprecated; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::text; + using ftxui::vtext; + using ftxui::paragraph; +} diff --git a/modules/ftxui/dom/Direction.cppm b/modules/ftxui/dom/Direction.cppm new file mode 100644 index 00000000..f7ff1743 --- /dev/null +++ b/modules/ftxui/dom/Direction.cppm @@ -0,0 +1,18 @@ +/** + * @file Direction.cppm + * @brief Module file for the Direction enum of the Dom module + */ + +module; + +#include + +export module ftxui.dom.Direction; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Direction; +} diff --git a/modules/ftxui/dom/Elements.cppm b/modules/ftxui/dom/Elements.cppm new file mode 100644 index 00000000..438d767e --- /dev/null +++ b/modules/ftxui/dom/Elements.cppm @@ -0,0 +1,130 @@ +/** + * @file Canvas.cppm + * @brief Module file for the Element classes and functions of the Dom module + */ + +module; + +#include + +export module ftxui.dom.Elements; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Node; + using ftxui::Element; + using ftxui::Elements; + using ftxui::Decorator; + using ftxui::GraphFunction; + + using ftxui::BorderStyle; + + using ftxui::operator|; + using ftxui::operator|=; + + using ftxui::text; + using ftxui::vtext; + using ftxui::separator; + using ftxui::separatorLight; + using ftxui::separatorDashed; + using ftxui::separatorHeavy; + using ftxui::separatorDouble; + using ftxui::separatorEmpty; + using ftxui::separatorStyled; + using ftxui::separatorCharacter; + using ftxui::separatorHSelector; + using ftxui::separatorVSelector; + using ftxui::gauge; + using ftxui::gaugeLeft; + using ftxui::gaugeRight; + using ftxui::gaugeUp; + using ftxui::gaugeDown; + using ftxui::gaugeDirection; + using ftxui::border; + using ftxui::borderLight; + using ftxui::borderDashed; + using ftxui::borderHeavy; + using ftxui::borderDouble; + using ftxui::borderRounded; + using ftxui::borderEmpty; + using ftxui::borderStyled; + using ftxui::borderWith; + using ftxui::window; + using ftxui::spinner; + using ftxui::paragraph; + using ftxui::paragraphAlignLeft; + using ftxui::paragraphAlignRight; + using ftxui::paragraphAlignCenter; + using ftxui::paragraphAlignJustify; + using ftxui::graph; + using ftxui::emptyElement; + using ftxui::canvas; + + using ftxui::bold; + using ftxui::dim; + using ftxui::inverted; + using ftxui::underlined; + using ftxui::underlinedDouble; + using ftxui::blink; + using ftxui::strikethrough; + using ftxui::color; + using ftxui::bgcolor; + using ftxui::focusPosition; + using ftxui::focusPositionRelative; + using ftxui::automerge; + using ftxui::hyperlink; + using ftxui::selectionStyleReset; + using ftxui::selectionColor; + using ftxui::selectionBackgroundColor; + using ftxui::selectionForegroundColor; + using ftxui::selectionStyle; + + using ftxui::hbox; + using ftxui::vbox; + using ftxui::dbox; + using ftxui::flexbox; + using ftxui::gridbox; + using ftxui::hflow; + using ftxui::vflow; + + using ftxui::flex; + using ftxui::flex_grow; + using ftxui::flex_shrink; + using ftxui::xflex; + using ftxui::xflex_grow; + using ftxui::xflex_shrink; + using ftxui::yflex; + using ftxui::yflex_grow; + using ftxui::yflex_shrink; + using ftxui::notflex; + using ftxui::filler; + + using ftxui::WidthOrHeight; + using ftxui::Constraint; + using ftxui::size; + + using ftxui::focusCursorBlock; + using ftxui::focusCursorBlockBlinking; + using ftxui::focusCursorBar; + using ftxui::focusCursorBarBlinking; + using ftxui::focusCursorUnderline; + using ftxui::focusCursorUnderlineBlinking; + + using ftxui::vscroll_indicator; + using ftxui::hscroll_indicator; + using ftxui::reflect; + using ftxui::clear_under; + + using ftxui::hcenter; + using ftxui::vcenter; + using ftxui::center; + using ftxui::align_right; + using ftxui::nothing; + + namespace Dimension { + using ftxui::Dimension::Fit; + } +} diff --git a/modules/ftxui/dom/FlexboxConfig.cppm b/modules/ftxui/dom/FlexboxConfig.cppm new file mode 100644 index 00000000..f346405f --- /dev/null +++ b/modules/ftxui/dom/FlexboxConfig.cppm @@ -0,0 +1,18 @@ +/** + * @file FlexboxConfig.cppm + * @brief Module file for the FlexboxConfig struct of the Dom module + */ + +module; + +#include + +export module ftxui.dom.FlexboxConfig; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::FlexboxConfig; +} diff --git a/modules/ftxui/dom/LinearGradient.cppm b/modules/ftxui/dom/LinearGradient.cppm new file mode 100644 index 00000000..f61b12c4 --- /dev/null +++ b/modules/ftxui/dom/LinearGradient.cppm @@ -0,0 +1,18 @@ +/** + * @file LinearGradient.cppm + * @brief Module file for the LinearGradient struct of the Dom module + */ + +module; + +#include + +export module ftxui.dom.LinearGradient; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::LinearGradient; +} diff --git a/modules/ftxui/dom/Node.cppm b/modules/ftxui/dom/Node.cppm new file mode 100644 index 00000000..4fcf86b0 --- /dev/null +++ b/modules/ftxui/dom/Node.cppm @@ -0,0 +1,25 @@ +/** + * @file Node.cppm + * @brief Module file for the Node class of the Dom module + */ + +module; + +#include + +export module ftxui.dom.Node; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Node; + using ftxui::Screen; + + using ftxui::Element; + using ftxui::Elements; + + using ftxui::Render; + using ftxui::GetNodeSelectedContent; +} diff --git a/modules/ftxui/dom/Requirement.cppm b/modules/ftxui/dom/Requirement.cppm new file mode 100644 index 00000000..9a51fcf1 --- /dev/null +++ b/modules/ftxui/dom/Requirement.cppm @@ -0,0 +1,18 @@ +/** + * @file Requirement.cppm + * @brief Module file for the Requirement struct of the Dom module + */ + +module; + +#include + +export module ftxui.dom.Requirement; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Requirement; +} diff --git a/modules/ftxui/dom/Selection.cppm b/modules/ftxui/dom/Selection.cppm new file mode 100644 index 00000000..d305720b --- /dev/null +++ b/modules/ftxui/dom/Selection.cppm @@ -0,0 +1,18 @@ +/** + * @file Selection.cppm + * @brief Module file for the Selection class of the Dom module + */ + +module; + +#include + +export module ftxui.dom.Selection; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Selection; +} diff --git a/modules/ftxui/dom/Table.cppm b/modules/ftxui/dom/Table.cppm new file mode 100644 index 00000000..c9d30670 --- /dev/null +++ b/modules/ftxui/dom/Table.cppm @@ -0,0 +1,19 @@ +/** + * @file Table.cppm + * @brief Module file for the Table class of the Dom module + */ + +module; + +#include + +export module ftxui.dom.Table; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Table; + using ftxui::TableSelection; +} diff --git a/modules/ftxui/screen.cppm b/modules/ftxui/screen.cppm new file mode 100644 index 00000000..d9659f71 --- /dev/null +++ b/modules/ftxui/screen.cppm @@ -0,0 +1,16 @@ +/** + * @file screen.cppm + * @brief Module file for FTXUI screen operations. + */ + +export module ftxui.screen; + +export import ftxui.screen.Box; +export import ftxui.screen.Color; +export import ftxui.screen.ColorInfo; +export import ftxui.screen.Deprecated; +export import ftxui.screen.Image; +export import ftxui.screen.Pixel; +export import ftxui.screen.Screen; +export import ftxui.screen.String; +export import ftxui.screen.Terminal; \ No newline at end of file diff --git a/modules/ftxui/screen/Box.cppm b/modules/ftxui/screen/Box.cppm new file mode 100644 index 00000000..0e249b64 --- /dev/null +++ b/modules/ftxui/screen/Box.cppm @@ -0,0 +1,18 @@ +/** + * @file Box.cppm + * @brief Module file for the Box struct of the Screen module + */ + +module; + +#include + +export module ftxui.screen.Box; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Box; +} diff --git a/modules/ftxui/screen/Color.cppm b/modules/ftxui/screen/Color.cppm new file mode 100644 index 00000000..31c7d87c --- /dev/null +++ b/modules/ftxui/screen/Color.cppm @@ -0,0 +1,22 @@ +/** + * @file Color.cppm + * @brief Module file for the Color class of the Screen module + */ + +module; + +#include + +export module ftxui.screen.Color; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Color; + + inline namespace literals { + using ftxui::literals::operator""_rgb; + } +} diff --git a/modules/ftxui/screen/ColorInfo.cppm b/modules/ftxui/screen/ColorInfo.cppm new file mode 100644 index 00000000..96f6145d --- /dev/null +++ b/modules/ftxui/screen/ColorInfo.cppm @@ -0,0 +1,20 @@ +/** + * @file ColorInfo.cppm + * @brief Module file for the ColorInfo struct of the Screen module + */ + +module; + +#include + +export module ftxui.screen.ColorInfo; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::ColorInfo; + + using ftxui::GetColorInfo; +} diff --git a/modules/ftxui/screen/Deprecated.cppm b/modules/ftxui/screen/Deprecated.cppm new file mode 100644 index 00000000..e325731e --- /dev/null +++ b/modules/ftxui/screen/Deprecated.cppm @@ -0,0 +1,19 @@ +/** + * @file Box.cppm + * @brief Module file for the deprecated parts of the Screen module + */ + +module; + +#include + +export module ftxui.screen.Deprecated; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::wchar_width; + using ftxui::wstring_width; +} diff --git a/modules/ftxui/screen/Image.cppm b/modules/ftxui/screen/Image.cppm new file mode 100644 index 00000000..7f432b49 --- /dev/null +++ b/modules/ftxui/screen/Image.cppm @@ -0,0 +1,18 @@ +/** + * @file Image.cppm + * @brief Module file for the Image class of the Screen module + */ + +module; + +#include + +export module ftxui.screen.Image; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Image; +} diff --git a/modules/ftxui/screen/Pixel.cppm b/modules/ftxui/screen/Pixel.cppm new file mode 100644 index 00000000..a2d4ef90 --- /dev/null +++ b/modules/ftxui/screen/Pixel.cppm @@ -0,0 +1,18 @@ +/** + * @file Pixel.cppm + * @brief Module file for the Pixel struct of the Screen module + */ + +module; + +#include + +export module ftxui.screen.Pixel; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Pixel; +} diff --git a/modules/ftxui/screen/Screen.cppm b/modules/ftxui/screen/Screen.cppm new file mode 100644 index 00000000..eb549e5f --- /dev/null +++ b/modules/ftxui/screen/Screen.cppm @@ -0,0 +1,24 @@ +/** + * @file Screen.cppm + * @brief Module file for the Screen class of the Screen module + */ + +module; + +#include + +export module ftxui.screen.Screen; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + namespace Dimension { + using ftxui::Dimension::Fixed; + using ftxui::Dimension::Full; + } + + using ftxui::Image; + using ftxui::Screen; +} diff --git a/modules/ftxui/screen/String.cppm b/modules/ftxui/screen/String.cppm new file mode 100644 index 00000000..035fe94c --- /dev/null +++ b/modules/ftxui/screen/String.cppm @@ -0,0 +1,22 @@ +/** + * @file String.cppm + * @brief Module file for string functions of the Screen module + */ + +module; + +#include + +export module ftxui.screen.String; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::to_string; + using ftxui::to_wstring; + using ftxui::string_width; + using ftxui::Utf8ToGlyphs; + using ftxui::CellToGlyphIndex; +} diff --git a/modules/ftxui/screen/Terminal.cppm b/modules/ftxui/screen/Terminal.cppm new file mode 100644 index 00000000..557efb7c --- /dev/null +++ b/modules/ftxui/screen/Terminal.cppm @@ -0,0 +1,26 @@ +/** + * @file Terminal.cppm + * @brief Module file for the Terminal namespace of the Screen module + */ + +module; + +#include + +export module ftxui.screen.Terminal; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::Dimensions; + + namespace Terminal { + using ftxui::Terminal::Size; + using ftxui::Terminal::SetFallbackSize; + using ftxui::Terminal::Color; + using ftxui::Terminal::ColorSupport; + using ftxui::Terminal::SetColorSupport; + } +} diff --git a/modules/ftxui/util.cppm b/modules/ftxui/util.cppm new file mode 100644 index 00000000..c55daa44 --- /dev/null +++ b/modules/ftxui/util.cppm @@ -0,0 +1,9 @@ +/** + * @file util.cppm + * @brief Module file for FTXUI utility operations. + */ + +export module ftxui.util; + +export import ftxui.util.AutoReset; +export import ftxui.util.Ref; \ No newline at end of file diff --git a/modules/ftxui/util/AutoReset.cppm b/modules/ftxui/util/AutoReset.cppm new file mode 100644 index 00000000..05089746 --- /dev/null +++ b/modules/ftxui/util/AutoReset.cppm @@ -0,0 +1,18 @@ +/** + * @file AutoReset.cppm + * @brief Module file for the AutoReset class of the Util module + */ + +module; + +#include + +export module ftxui.util.AutoReset; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::AutoReset; +} diff --git a/modules/ftxui/util/Ref.cppm b/modules/ftxui/util/Ref.cppm new file mode 100644 index 00000000..a6e19ccb --- /dev/null +++ b/modules/ftxui/util/Ref.cppm @@ -0,0 +1,22 @@ +/** + * @file Ref.cppm + * @brief Module file for the Ref classes of the Util module + */ + +module; + +#include + +export module ftxui.util.Ref; + +/** + * @namespace ftxui + * @brief The FTXUI ftxui:: namespace + */ +export namespace ftxui { + using ftxui::ConstRef; + using ftxui::Ref; + using ftxui::StringRef; + using ftxui::ConstStringRef; + using ftxui::ConstStringListRef; +}