知識ベース

Foxツールキット

FOXツールキットは、オープンソースのクロスプラットフォームウィジェットツールキット、つまり、グラフィカルユーザーインターフェイス(GUI)を構築するための基本要素のライブラリです。 FOXはFree Objects for Xの略です。

Microsoft Windows自体とX Window System(多くのUNIXおよびUNIXライクなオペレーティングシステムで使用される)の両方で利用可能な、ハードワイヤードのWindows 95スタイルのテーマを備えています。

FOXツールキットはGNU Lesser General Public Licenceの下でリリースされました。 1997年にCFDRCに所属していたJeroen van der Zijpによって開発が始まりました。それ以来、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プラットフォームのグラフィックプリミティブのみを使用して、画面にグラフィカルユーザーインターフェイスを表示するために、Java Swingスタイルのアプローチと同様の手法を使用します。これは、プラットフォーム間でアプリケーションの外観が似ていることを意味します。理論的には、FOXを新しいプラットフォームに移植することは、ネイティブウィジェットのサポートを実装するよりも簡単なはずです。

マイナス面としては、通常、FOXアプリケーションは、一部のユーザーが混乱を招く可能性のあるプラットフォームのネイティブアプリケーションとは外観や雰囲気が異なることを意味します。また、包括的な印刷サポートや国際化された入力処理など、特定のネイティブプラットフォーム機能は、FOXで使用する前にクロスプラットフォームで再実装する必要があるため、すぐに利用できない場合があります。 Xfe File Managerなどの一部のアプリケーションでは、配色を変更して、システムのテーマの色とよりよく統合することができます。 Arch Linuxでは、FOXコントロールパネルと呼ばれるアプリを使用して、システム全体のすべてのFOXアプリケーションの配色を変更できます。メインのFOX Toolkitパッケージに同梱されています。

メッセージングシステム

FOXは、透過的な双方向メッセージングシステムを提供します。各ウィジェットは、特定のターゲットにメッセージを送信します。各メッセージは、その種類と、ウィジェットの列挙によって提供される一意のIDを識別するセレクターで構成されます。利点は、メソッドが存在しない場合でも、各ウィジェットがターゲットウィジェットのメソッドを透過的に呼び出すことができることです。逆に、個々のメッセージハンドラの実装では、送信者がわかっているため、ターゲットは送信者にメッセージをディスパッチすることもできます。これは、コンポーネント指向のソフトウェアでは特に重要な機能であり、コンポーネントはさまざまな人々やさまざまな組織によって記述される場合があります。

FOXメッセージングシステムは、GUI更新戦略を簡素化します。ウィジェットの更新中に、ウィジェットはターゲットに更新を要求できます。これは、通常のように、コマンドメッセージでウィジェットを明示的に更新する必要がないことを意味します。アプリケーションがそれぞれM個のウィジェットを更新するN個のコマンドメッセージを実装する場合、M * N個の更新を実行し、最大でM * N個のメッセージを実装する必要があります。一方、ウィジェットが更新を要求した場合、N個のコマンドメッセージと最大でM個の更新メッセージのみが実装されます。この戦略は、GUIの更新をデータの変更から分離し、GUIを基になるデータ構造のリアルタイムの反映にします。

こんにちは世界

次の例では、FOXアプリケーションと、C ++のボタンを含むダイアログを作成します。

#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 python from FXPy.fox import * import sys def runme():app = FXApp( 'Hello'、 'Test')app.init(sys.argv)main = FXMainWindow(app、 'Hello'、なし、なし、DECOR_ALL)button = FXButton(main、 '&Hello、World!'、None、app、FXApp.ID_QUIT); app.create()main.show(PLACEMENT_SCREEN)app.run()if __name__ == '__main__':runme()

FXRuby

'fox16'が必要です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 Groupが開発した後処理です。
  • Abaqus / CAEは、Abaqus有限要素スイートのプリポストプロセッサです。
  • bdStudioは、SAICが開発した複雑なリアルタイム航空宇宙シミュレーション用の正確で使いやすい視覚化ツールです。
  • Intel Modular Test Architecture(IMTA)
  • PVRShaman – Imagination Technologiesの無料シェーダー開発スタジオ
  • LinkCADは、さまざまなCAD形式用の商用形式変換アプリケーションです。
  • TMP VisionとSLIMは、複雑なFEAモデルのニーズを満たすように設計されました。
  • Kerkythea、マルチメソッドレンダリングシステム
  • Acronis True Imageおよびその他のAcronis製品
  • Goggles Music Manager、音楽コレクションマネージャーおよびプレーヤー
  • xfe、X Window Systemのグラフィカルファイルマネージャー
  • TnFOX、FOXライブラリーのフォーク
  • SUMO、都市移動のシミュレーション、GUIエディターを備えた交通シミュレーター