GLFWとOpenGLの上にGUIを書くためのライブラリを探しています。これを行うのは、必須であると感じる一般的なUIライブラリバインディングに不満があるためです。また、UIのルックアンドフィールを厳密に制御したいと考えています。UIを定義するための宣言型アプローチが欲しいのですが。私はreactive-banana(および一時的にreactive-banana-wx)を試し、それが私のニーズを満たしているかどうかを確認しています。再帰ウィジェットの定義に問題があります。これが私の最も単純なテストケースです:
- カウンターを表示するテキストウィジェット。
- カウンターをインクリメントするボタンウィジェット。
- カウンターが0の場合は非アクティブ(つまり、グレー表示され、入力にまったく応答しない)のボタンウィジェット。それ以外の場合はアクティブで、カウンターを0にリセットします。
1番目と3番目のウィジェットには再帰的な関係があります。最初のウィジェットは、2つのボタンからフィードされた一連のイベントstepper
の直感的なものです。union
ただし、リセットボタンはfmap
カウンターの1つであり、イベントストリームはリセットボタンに依存しています。やるべきこと?
この質問以外に、イベント処理について懸念があります。フレームワークに依存するのではなく、コード内でデバイス入力と入力フォーカスを処理したいので、スケーラブルな方法でイベントを正しくディスパッチするのは難しいと思います。理想的にはdata
、ウィジェットの階層構造をカプセル化するを定義し、要素間にイベントコールバックをインストールする方法を定義し、デバイスの入力処理とグラフィカル出力を定義するためにそのデータ構造をトラバースする関数を記述します。イベントストリームをマージするのと同じくらい簡単にイベントストリームを取得して分割する方法がわかりません。