4#ifndef FTXUI_COMPONENT_SCREEN_INTERACTIVE_HPP
5#define FTXUI_COMPONENT_SCREEN_INTERACTIVE_HPP
24using Component = std::shared_ptr<ComponentBase>;
25class ScreenInteractivePrivate;
93 void RunOnceBlocking(
Component component);
96 bool HandleSelection(
bool handled,
Event event);
97 void RefreshSelection();
99 void ResetCursorPosition();
101 void InstallPipedInputHandling();
103 void Signal(
int signal);
105 void FetchTerminalEvents();
107 void PostAnimationTask();
119 bool use_alternative_screen);
122 const bool use_alternative_screen_;
124 bool track_mouse_ =
true;
126 std::string set_cursor_position;
127 std::string reset_cursor_position;
129 std::atomic<bool> quit_{
false};
130 bool animation_requested_ =
false;
136 std::uint64_t frame_count_ = 0;
137 bool mouse_captured =
false;
138 bool previous_frame_resized_ =
false;
140 bool frame_valid_ =
false;
142 bool force_handle_ctrl_c_ =
true;
143 bool force_handle_ctrl_z_ =
true;
146 bool handle_piped_input_ =
true;
151 int cursor_reset_shape_ = 1;
155 struct SelectionData {
161 bool operator==(
const SelectionData& other)
const;
162 bool operator!=(
const SelectionData& other)
const;
164 SelectionData selection_data_;
165 SelectionData selection_data_previous_;
166 std::unique_ptr<Selection> selection_;
167 std::function<void()> selection_on_change_;
171 std::unique_ptr<Internal> internal_;
static void Signal(ScreenInteractive &s, int signal)
static ScreenInteractive TerminalOutput()
ターミナル出力の幅に一致し、描画されるコンポーネントの高さに一致するScreenInteractiveを作成します。
void HandlePipedInput(bool enable=true)
自動パイプ入力処理を有効または無効にします。 有効にすると、FTXUIはパイプ入力を検出し、キーボード入力のためにstdinを/dev/ttyからリダイレクトし、アプリケーションがパイプデータを読み取り...
static ScreenInteractive FixedSize(int dimx, int dimy)
void PostEvent(Event event)
メインループにイベントを追加します。 これは、他のすべてのスケジュールされたイベントの後に実行されます。
void Post(Task task)
メインループにタスクを追加します。 これは、他のすべてのスケジュールされたタスクの後に実行されます。
static ScreenInteractive FitComponent()
描画されるコンポーネントの幅と高さに一致するScreenInteractiveを作成します。
static ScreenInteractive Fullscreen()
static ScreenInteractive FullscreenPrimaryScreen()
ターミナルサイズの全体を使用するScreenInteractiveを作成します。プライマリスクリーンバッファが使用されます。これは、ターミナルがリサイズされた場合、以前のコンテンツがターミナルコンテンツ...
static ScreenInteractive * Active()
現在アクティブな画面を返します。アクティブな画面がない場合はヌルを返します。
CapturedMouse CaptureMouse()
マウスをキャプチャできることに関するユニークロックを取得しようとします。
std::string GetSelection()
現在の選択内容を返します
static ScreenInteractive FullscreenAlternateScreen()
ターミナルサイズの全体を使用するScreenInteractiveを作成します。これは、ターミナルコンテンツを乱すことを避けるために、代替スクリーンバッファを使用します。
void TrackMouse(bool enable=true)
マウスが追跡され、イベントが報告されるかどうかを設定します。 メインループの外側で呼び出されます。例: ScreenInteractive::Loop(...)。
void SelectionChange(std::function< void()> callback)
void RequestAnimationFrame()
すべてのアニメーションが完了するまで、画面をもう一度描画するタスクを追加します。
Closure ExitLoopClosure()
メインループを終了する関数を返します。
void ForceHandleCtrlC(bool force)
コンポーネントがEvent::CtrlCをキャッチした場合でも、FTXUIにCtrl-Cを処理させるか処理させないかを強制します。
~ScreenInteractive() override
void ForceHandleCtrlZ(bool force)
コンポーネントがEvent::CtrlZをキャッチした場合でも、FTXUIにCtrl-Zを処理させるか処理させないかを強制します。
Closure WithRestoredIO(Closure)
関数を装飾します。それは同じように実行されますが、実行中に現在アクティブなスクリーンターミナルフックは一時的にアンインストールされます。
Loopは、コンポーネントのイベントループを管理するクラスです。
ScreenInteractive はイベントを処理し、メインループを実行し、コンポーネントを管理できる Screen です。
イベントを表します。キープレスイベント、ターミナルのリサイズなど、さまざまなイベントがあります。
FTXUI ftxui::Dimension::名前空間
std::chrono::time_point< Clock > TimePoint
std::unique_ptr< CapturedMouseInterface > CapturedMouse
std::variant< Event, Closure, AnimationTask > Task
std::function< void()> Closure
std::shared_ptr< ComponentBase > Component