| 開発者 | Jeroen van der Zijp、FOX コミュニティ |
|---|---|
| 安定リリース | 1.6.58 / 2024年5月13日 |
| プレビューリリース | 1.7.86 / 2024年8月15日 |
| 書かれた | C++ |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | 開発ライブラリ |
| ライセンス | 静的リンクを許可するライセンス補遺付きのGNU Lesser General Public License [1] |
| Webサイト | フォックスツールキット |
FOXツールキットは、オープンソースのクロスプラットフォーム ウィジェット ツールキット、つまりグラフィカル ユーザー インターフェイス(GUI)を構築するための基本要素のライブラリです。FOX は Free Objects for X の略です。
これは、 Microsoft Windows自体とX Window System(多くのUNIXおよびUNIX系オペレーティングシステムで使用されている)の両方で使用できる、ハードワイヤードなWindows 95スタイルのテーマを備えています。 [2]
FOX ツールキットは、GNU Lesser General Public Licenceに基づいてリリースされています。開発は、CFDRC に所属していた Jeroen van der Zijp によって 1997 年に開始されました。それ以来、Jeroen van der Zijp は、ユーザー コミュニティの支援を受けて、コア ライブラリとテスト アプリケーションを保守しています。
FOX ツールキットはC++で書かれており、Python、Ruby、Eiffelの言語バインディングが利用可能です。FOXソースコード配布は、さまざまな (商用および無料) C++ コンパイラを使用したビルドをサポートしています。
クロスプラットフォームの互換性
FOX は、他のクロスプラットフォーム ツールキットと次の点で差別化されています。
- Tkはクロスプラットフォーム ツールキットですが、FOX が望ましいと考えるウィジェットがすべて備わっているわけではありません。
- バージョン 4.5 までのQtでは、FOX では必要ない場合に商用ライセンスが必要となるライセンス モデルが使用されていました。
- wxWidgets は、サポートされている各プラットフォームでのネイティブ ウィジェットの使用を促進します。
- FLTK は、迅速なアプリケーション開発をサポートする高速でフットプリントの小さいライブラリであり、使用に必要なコードが少なくて済みますが、高度なウィジェットがありません。
これらのツールキットはすべて、従来の Mac OSやmacOSプラットフォームでのネイティブ プログラミングをサポートしていますが、FOX は現在これをサポートしていません。[引用が必要]
FOX は、ネイティブ ウィジェットを使用する元の Java AWTスタイルのアプローチとは対照的に、そのプラットフォームで使用可能なグラフィカル プリミティブのみを使用して、画面にグラフィカル ユーザー インターフェイスを表示するJava Swingスタイルのアプローチに似た手法を使用します。つまり、アプリケーションはプラットフォーム間で同様の外観と操作性を持つことになります。理論的には、FOX を新しいプラットフォームに移植することは、ネイティブ ウィジェットのサポートを実装するよりも簡単なはずです。
欠点としては、FOXアプリケーションの外観と操作性がそれらのプラットフォームのネイティブアプリケーションとは異なっていることが通常あり、一部のユーザーは混乱するかもしれません。また、包括的な印刷サポートや国際化された入力処理など、特定のネイティブプラットフォーム機能は、FOXで使用する前にクロスプラットフォーム方式で再実装する必要があるため、すぐには利用できない場合があります。Xfe File Managerなどの一部のアプリケーションでは、システムのテーマカラーとよりよく統合するために配色を変更できます。[3] Arch Linuxでは、FOX Control Panelというアプリを使用して、システム全体ですべてのFOXアプリケーションの配色を変更できます。これは、メインのFOX Toolkitパッケージに同梱されています。
メッセージングシステム
FOX は、透過的な双方向メッセージング システムを提供します。各ウィジェットは、特定のターゲットにメッセージを送信します。各メッセージは、その種類を識別するセレクタと、ウィジェットの列挙によって提供される一意の ID で構成されます。利点は、各ウィジェットが、メソッドが存在しない場合でも、ターゲット ウィジェットのメソッドを透過的に呼び出すことができることです。逆に、個々のメッセージ ハンドラーの実装では、送信者がわかっているため、ターゲットも送信者にメッセージを送信できます。これは、コンポーネントが異なる人、または異なる組織によって作成される可能性があるコンポーネント指向ソフトウェアでは特に重要な機能です。
FOX メッセージング システムは、GUI 更新戦略を簡素化します。ウィジェットの更新中、ウィジェットはターゲットに更新を要求できます。つまり、コマンド メッセージは、通常のようにウィジェットを明示的に更新する必要はありません。アプリケーションが N 個のコマンド メッセージを実装し、それぞれが M 個のウィジェットを更新する場合、M*N 個の更新を実行する必要があり、最大で M*N 個のメッセージを実装する必要があります。一方、ウィジェットが更新を要求する場合は、N 個のコマンド メッセージと最大で M 個の更新メッセージのみが実装されます。この戦略により、GUI の更新がデータの変更から分離され、GUI は基礎となるデータ構造をリアルタイムに反映するようになります。
内部
依存関係
内部的には、次のようなクロスプラットフォームライブラリに依存しています。[4]
こんにちは世界
次の例では、C++ で FOX アプリケーションとボタン付きのダイアログを作成します。
#include "fx.h"
int main ( int argc , char * argv []) { FXApp application ( "Hello" , "FoxTest" ); application . init ( argc , argv ); FXMainWindow * main = new FXMainWindow ( & application , "Hello" , NULL , NULL , DECOR_ALL ); new FXButton ( main , "&Hello, World!" , NULL , & application , FXApp :: ID_QUIT ); application . create (); main -> show ( PLACEMENT_SCREEN ); return application . run (); }
Python 2.2 とRuby を使用してダイアログを作成することも可能です。
FXPy
#!/usr/bin/env python3
FXPy.fox からインポート *
sysをインポート
def runme ( ):
app = FXApp ( "Hello" 、 "Test " )
app.init ( sys.argv ) main = FXMainWindow ( app , " Hello " 、None 、None 、DECOR_ALL ) button = FXButton ( main , " & Hello , World ! " 、None 、app 、FXApp.ID_QUIT ) app.create ( ) main.show ( PLACEMENT_SCREEN ) app.run ( )
__name__ == "__main__"の場合:
runme ()
FXルビー
require ' fox16' include Fox application = FXApp.new ( " Hello " 、" FoxTest" ) main = FXMainWindow.new ( application , "Hi" 、nil 、nil 、DECOR_ALL ) FXButton.new ( main 、" & Hello , World ! " 、nil 、application 、FXApp :: ID_QUIT 、LAYOUT_FILL_X | BUTTON_TOOLBAR | FRAME_RAISED | FRAME_THICK ) application.create ( ) main.show ( PLACEMENT_SCREEN ) application.run ( )
FOX上に構築されたソフトウェア
- CFD-View – ESIグループが開発したポストプロセス
- Abaqus/CAE – Abaqus有限要素スイートのプリ・ポストプロセッサ[5]
- bdStudio – SAICが開発した、複雑なリアルタイム航空宇宙シミュレーションのための正確で使いやすい視覚化ツール
- インテルモジュラー テスト アーキテクチャ (IMTA)
- PVRShaman – Imagination Technologiesの無料シェーダー開発スタジオ
- LinkCAD – さまざまな CAD 形式に対応する商用形式変換アプリケーション
- TMP VisionとSLIM – 複雑なFEAモデルのニーズを満たすように設計
- Kerkythea – マルチメソッドレンダリングシステム
- Acronis True Imageおよびその他のAcronis製品[6]
- Goggles Music Manager – 音楽コレクションの管理と再生
- xfe – X Window System用のグラフィカル ファイル マネージャー
- TnFOX – FOXライブラリのフォーク
- SUMO (Simulation of Urban MObility) – GUI エディタを備えた交通シミュレータ
参照
- FLTK – 軽量、クロスプラットフォーム、非ネイティブウィジェットツールキット
- fpGUI – ビジュアルフォームデザイナーとカスタムヘルプドキュメントリーダーを備えたクロスプラットフォームGUIツールキット
- GTK – GNOMEアプリケーションで使用されるウィジェットツールキット
- gtkmm – GTK への公式 C++ インターフェース
- IUP – ネイティブ グラフィカル ユーザー インターフェイスを構築するためのマルチプラットフォーム ツールキット
- ジュース
- Qt – KDEで使用されるウィジェット ツールキット
- アルティメット++
- ウィジェットツールキット
- wxWidgets – ネイティブウィジェットツールキットをラップするクロスプラットフォームのオープンソースC++ウィジェットライブラリ
- ウィジェットツールキットのリスト
参考文献
- ^ 「FOX ライブラリライセンス」。fox-toolkit.org 。2024年 9 月 1 日閲覧。
- ^ FOX Toolkit、X Window System 用 GUI ツールキット、Leslie Polzer 著、2003 年 7 月 27 日、freshmeat.net
- ^ 「XFEホームページ」.
- ^ 「インストール手順」. fox-toolkit.org . 2021年8月4日閲覧。
- ^ 「Abaqus FEA / バージョン 6.7 オープン ソース プログラム」。2007 年 11 月 9 日時点のオリジナルよりアーカイブ。2007年 12 月 9 日閲覧。
- ^ 「Acronis ライセンス情報」 。2007年 12 月 8 日閲覧。
外部リンク
- 公式サイト
