#include "Core/IoContext.h" #include "Core/Singleton.h" #include "NngClient.h" #include #include int main() { using namespace Core; auto ioContext = Singleton::construct(std::thread::hardware_concurrency()); auto nng = Singleton::construct(*ioContext->ioContext()); nng->start("127.0.0.1", 8000); auto zeroCheckButton = ftxui::Button("零点校正", [&]() { nng->requestZeroCheck(); }, ftxui::ButtonOption::Animated()); auto zoomButtons = ftxui::Container::Horizontal({ ftxui::Button( "+", [&]() { nng->requestZoom(false); }, ftxui::ButtonOption::Animated()), ftxui::Button( "-", [&]() { nng->requestZoom(true); }, ftxui::ButtonOption::Animated()), }); auto zoomItem = ftxui::Renderer(zoomButtons, [&]() { return ftxui::hbox({ ftxui::text("zoom:") | ftxui::vcenter, zoomButtons->Render(), }); }); auto focusButtons = ftxui::Container::Horizontal({ ftxui::Button( "+", [&]() { nng->requestFocus(true); }, ftxui::ButtonOption::Animated()), ftxui::Button( "-", [&]() { nng->requestFocus(false); }, ftxui::ButtonOption::Animated()), }); auto focusItem = ftxui::Renderer(focusButtons, [&]() { return ftxui::hbox({ ftxui::text("focus:") | ftxui::vcenter, focusButtons->Render(), }); }); auto controls = ftxui::Container::Vertical({ zeroCheckButton, zoomItem, focusItem, }); // Modify the way to render them on screen: auto component = ftxui::Renderer(controls, [&] { return ftxui::vbox({ ftxui::text("Nng 控制端"), controls->Render(), }); }); ioContext->run(false); auto screen = ftxui::ScreenInteractive::FitComponent(); screen.Loop(component); return 0; }