mirror of
https://github.com/CachyOS/New-Cli-Installer.git
synced 2025-01-23 22:42:31 +08:00
Refactor tui related code
This commit is contained in:
parent
bc4f3c2dd0
commit
7c1aa8e473
@ -58,7 +58,7 @@ add_executable(${PROJECT_NAME}
|
|||||||
src/definitions.hpp
|
src/definitions.hpp
|
||||||
src/utils.cpp src/utils.hpp
|
src/utils.cpp src/utils.hpp
|
||||||
src/main.cpp
|
src/main.cpp
|
||||||
)
|
src/tui.cpp src/tui.hpp)
|
||||||
|
|
||||||
# Link this 'library' to use the warnings specified in CompilerWarnings.cmake
|
# Link this 'library' to use the warnings specified in CompilerWarnings.cmake
|
||||||
add_library(project_warnings INTERFACE)
|
add_library(project_warnings INTERFACE)
|
||||||
|
50
src/main.cpp
50
src/main.cpp
@ -1,17 +1,9 @@
|
|||||||
#include "definitions.hpp"
|
#include "definitions.hpp"
|
||||||
|
#include "tui.hpp"
|
||||||
#include "utils.hpp"
|
#include "utils.hpp"
|
||||||
|
|
||||||
#include <regex>
|
#include <regex>
|
||||||
|
|
||||||
#include <ftxui/component/captured_mouse.hpp>
|
|
||||||
#include <ftxui/component/component.hpp>
|
|
||||||
#include <ftxui/component/component_options.hpp>
|
|
||||||
#include <ftxui/component/screen_interactive.hpp>
|
|
||||||
#include <ftxui/dom/elements.hpp>
|
|
||||||
#include <ftxui/screen/screen.hpp>
|
|
||||||
|
|
||||||
using namespace ftxui;
|
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
const auto& tty = utils::exec("tty");
|
const auto& tty = utils::exec("tty");
|
||||||
const std::regex tty_regex("/dev/tty[0-9]*");
|
const std::regex tty_regex("/dev/tty[0-9]*");
|
||||||
@ -34,43 +26,5 @@ int main() {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto screen = ScreenInteractive::Fullscreen();
|
tui::init();
|
||||||
|
|
||||||
auto button_ok = Button("Ok", screen.ExitLoopClosure());
|
|
||||||
auto button_quit = Button("Quit", screen.ExitLoopClosure());
|
|
||||||
|
|
||||||
auto component = Container::Horizontal({
|
|
||||||
button_ok,
|
|
||||||
button_quit,
|
|
||||||
});
|
|
||||||
|
|
||||||
auto dialog = vbox({
|
|
||||||
text("TODO!!"),
|
|
||||||
separator(),
|
|
||||||
hbox({
|
|
||||||
button_ok->Render(),
|
|
||||||
button_quit->Render(),
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
// -------- Center Menu --------------
|
|
||||||
/* clang-format off */
|
|
||||||
auto center_dialog = hbox({
|
|
||||||
filler(),
|
|
||||||
border(dialog),
|
|
||||||
filler(),
|
|
||||||
}) | vcenter;
|
|
||||||
/* clang-format on */
|
|
||||||
|
|
||||||
auto renderer = Renderer(component, [&] {
|
|
||||||
return vbox({
|
|
||||||
text("New CLI Installer") | bold,
|
|
||||||
filler(),
|
|
||||||
// -------- Center Menu --------------
|
|
||||||
center_dialog | hcenter,
|
|
||||||
filler(),
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
screen.Loop(renderer);
|
|
||||||
}
|
}
|
||||||
|
53
src/tui.cpp
Normal file
53
src/tui.cpp
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#include "tui.hpp"
|
||||||
|
#include <ftxui/component/captured_mouse.hpp>
|
||||||
|
#include <ftxui/component/component.hpp>
|
||||||
|
#include <ftxui/component/component_options.hpp>
|
||||||
|
#include <ftxui/component/screen_interactive.hpp>
|
||||||
|
#include <ftxui/dom/elements.hpp>
|
||||||
|
#include <ftxui/screen/screen.hpp>
|
||||||
|
|
||||||
|
using namespace ftxui;
|
||||||
|
|
||||||
|
namespace tui {
|
||||||
|
void init() noexcept {
|
||||||
|
auto screen = ScreenInteractive::Fullscreen();
|
||||||
|
|
||||||
|
auto button_ok = Button("Ok", screen.ExitLoopClosure());
|
||||||
|
auto button_quit = Button("Quit", screen.ExitLoopClosure());
|
||||||
|
|
||||||
|
auto component = Container::Horizontal({
|
||||||
|
button_ok,
|
||||||
|
button_quit,
|
||||||
|
});
|
||||||
|
|
||||||
|
auto dialog = vbox({
|
||||||
|
text("TODO!!"),
|
||||||
|
separator(),
|
||||||
|
hbox({
|
||||||
|
button_ok->Render(),
|
||||||
|
button_quit->Render(),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
// -------- Center Menu --------------
|
||||||
|
/* clang-format off */
|
||||||
|
auto center_dialog = hbox({
|
||||||
|
filler(),
|
||||||
|
border(dialog),
|
||||||
|
filler(),
|
||||||
|
}) | vcenter;
|
||||||
|
/* clang-format on */
|
||||||
|
|
||||||
|
auto renderer = Renderer(component, [&] {
|
||||||
|
return vbox({
|
||||||
|
text("New CLI Installer") | bold,
|
||||||
|
filler(),
|
||||||
|
// -------- Center Menu --------------
|
||||||
|
center_dialog | hcenter,
|
||||||
|
filler(),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
screen.Loop(renderer);
|
||||||
|
}
|
||||||
|
} // namespace tui
|
8
src/tui.hpp
Normal file
8
src/tui.hpp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef TUI_HPP
|
||||||
|
#define TUI_HPP
|
||||||
|
|
||||||
|
namespace tui {
|
||||||
|
void init() noexcept;
|
||||||
|
} // namespace tui
|
||||||
|
|
||||||
|
#endif // TUI_HPP
|
Loading…
Reference in New Issue
Block a user