Fox-Toolkit - Fox toolkit

FOX-Toolkit
FOX-Toolkit
Foxlogo klein.jpg
Entwickler Jeroen van der Zijp, FOX-Community
Stabile Version
1.6.57 / 3. April 2018 ;
Vor 3 Jahren
 ( 2018-04-03 )
Vorschauversion
1.7.75 / 2. März 2021 ;
vor 5 Monaten
 ( 2021-03-02 )
Geschrieben in C++
Betriebssystem Plattformübergreifend
Typ Entwicklungsbibliothek
Lizenz GNU Lesser General Public License mit Lizenzzusatz für statisches Verlinken fox-toolkit .org /license .html
Webseite Fox-Toolkit .org Bearbeiten Sie dies auf Wikidata

Das FOX-Toolkit ist ein Open-Source- , plattformübergreifendes Widget-Toolkit , dh eine Bibliothek mit grundlegenden Elementen zum Erstellen einer grafischen Benutzeroberfläche (GUI). FOX steht für Free Objects for X.

Es bietet ein fest verdrahtetes Thema im Stil von Windows 95, das sowohl für Microsoft Windows selbst als auch für das X Window System (das auf vielen UNIX- und UNIX-ähnlichen Betriebssystemen verwendet wird) verfügbar ist.

Das FOX-Toolkit wurde unter der GNU Lesser General Public License veröffentlicht . Die Entwicklung begann 1997 von Jeroen van der Zijp, während er bei CFDRC angestellt war. Seitdem pflegt Jeroen van der Zijp die Kernbibliothek und Testanwendungen mit Hilfe der Benutzergemeinschaft.

Das FOX-Toolkit ist in C++ geschrieben , mit Sprachbindungen für Python , Ruby und Eiffel . Die FOX- Quellcode- Distribution unterstützt das Erstellen mit vielen verschiedenen (kommerziellen und kostenlosen) C++-Compilern.

Plattformübergreifende Kompatibilität

FOX unterscheidet sich folgendermaßen von anderen plattformübergreifenden Toolkits:

  • Tk ist ein plattformübergreifendes Toolkit, verfügt jedoch nicht über alle Widgets, die FOX für wünschenswert hält.
  • Qt bis Version 4.5 hatte früher ein Lizenzmodell, das in einigen Fällen eine kommerzielle Lizenz erforderte, in denen FOX dies nicht tat.
  • wxWidgets fördert die Verwendung nativer Widgets auf jeder unterstützten Plattform.
  • FLTK ist eine schnelle Bibliothek mit geringem Platzbedarf, die eine schnelle Anwendungsentwicklung unterstützt und weniger Code benötigt, jedoch keine erweiterten Widgets bietet.

Alle diese Toolkits bieten eine gewisse Unterstützung für die native Programmierung auf den klassischen Mac OS- und/oder macOS- Plattformen, die FOX derzeit nicht unterstützt.

FOX verwendet eine dem Java-Swing- Stil-Ansatz ähnliche Technik , um eine grafische Benutzeroberfläche auf dem Bildschirm anzuzeigen, wobei nur grafische Primitive verwendet werden, die auf dieser Plattform verfügbar sind, im Gegensatz zum ursprünglichen Java- AWT- Stil-Ansatz, der native Widgets verwendet. Das bedeutet, dass Anwendungen auf allen Plattformen ein ähnliches Erscheinungsbild haben . Theoretisch sollte die Portierung von FOX auf eine neue Plattform auch einfacher sein, als die Unterstützung für native Widgets zu implementieren.

Auf der anderen Seite bedeutet dies normalerweise, dass FOX-Anwendungen anders aussehen und sich von nativen Anwendungen für diese Plattformen unterscheiden, was für einige Benutzer verwirrend sein kann. Außerdem sind bestimmte native Plattformfunktionen möglicherweise nicht sofort verfügbar, wie beispielsweise eine umfassende Druckunterstützung oder eine internationalisierte Eingabeverarbeitung, da sie plattformübergreifend neu implementiert werden müssen, bevor sie in FOX verwendet werden können. Einige Anwendungen, wie Xfe File Manager , ermöglichen das Ändern des Farbschemas, um es besser in die Designfarben des Systems zu integrieren. Unter Arch Linux ist eine App namens FOX Control Panel verfügbar, um das Farbschema aller FOX-Anwendungen systemweit zu ändern. Es wird mit dem Hauptpaket FOX Toolkit geliefert.

Nachrichtensystem

FOX bietet ein transparentes bidirektionales Nachrichtensystem. Jedes Widget sendet seine Nachricht an ein bestimmtes Ziel. Jede Nachricht besteht aus einem Selektor, der ihre Art identifiziert, und einer ID, die eindeutig ist und von der Aufzählung des Widgets bereitgestellt wird. Der Vorteil besteht darin, dass jedes Widget die Methode eines Ziel-Widgets transparent aufrufen kann, auch wenn die Methode nicht existiert. Umgekehrt kann bei der Implementierung des individuellen Message-Handlers, da der Absender bekannt ist, auch das Ziel eine Nachricht an den Absender versenden. Dies ist ein besonders wichtiges Merkmal in komponentenorientierter Software, bei der Komponenten von verschiedenen Personen oder sogar verschiedenen Organisationen geschrieben werden können.

Das FOX-Messaging-System vereinfacht die GUI-Aktualisierungsstrategie: Während der Widget-Aktualisierung können die Widgets ihre Ziele bitten, sie zu aktualisieren. Dies bedeutet, dass eine Befehlsnachricht nicht wie üblich explizit irgendwelche Widgets aktualisieren muss. Falls eine Anwendung N Befehlsnachrichten implementiert, wobei jedes M Widgets aktualisiert, müssen M*N Aktualisierungen ausgeführt werden und höchstens M*N Nachrichten müssen implementiert werden. Wenn andererseits Widgets eine Aktualisierung anfordern, werden nur N Befehlsnachrichten und höchstens M Aktualisierungsnachrichten implementiert. Diese Strategie trennt die GUI-Aktualisierung von Datenänderungen und macht die GUI zu einer Echtzeit-Reflexion der zugrunde liegenden Datenstrukturen.

Einbauten

Abhängigkeiten

Unter der Haube hängt es von den plattformübergreifenden Bibliotheken ab, die Folgendes umfassen:

Hallo Welt

Das folgende Beispiel erstellt eine FOX-Anwendung und einen Dialog mit einer Schaltfläche in 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();
}

Es ist auch möglich, Dialoge mit Python 2.2 und Ruby zu erstellen :

FXPy

#! /usr/bin/env python3

from FXPy.fox import *
import 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()


if __name__ == "__main__":
    runme()

FXRuby

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()

Software basierend auf FOX

  • CFD-View – eine von der ESI Group entwickelte Nachbearbeitung
  • Abaqus/CAE – der Pre- und Postprozessor der Finite-Elemente-Suite von Abaqus
  • bdStudio – ein genaues und einfach zu bedienendes Visualisierungstool für komplexe Echtzeitsimulationen der Luft- und Raumfahrt, entwickelt von SAIC
  • Modulare Testarchitektur von Intel (IMTA)
  • PVRShaman – ein kostenloses Shader-Entwicklungsstudio von Imagination Technologies
  • LinkCAD – eine kommerzielle Formatkonvertierungsanwendung für verschiedene CAD-Formate
  • TMP Vision und SLIM – entwickelt für die Anforderungen komplexer FEM-Modelle
  • Kerkythea – ein Multimethoden-Rendersystem
  • Acronis True Image und andere Acronis- Produkte
  • Goggles Music Manager – ein Musiksammlungs-Manager und -Player
  • xfe – ein grafischer Dateimanager für das X Window System
  • TnFOX – ein Fork der FOX-Bibliothek
  • SUMO (Simulation of Urban MObility) – ein Verkehrssimulator mit GUI-Editor

Siehe auch

  • FLTK – ein leichtes, plattformübergreifendes, nicht-natives Widget-Toolkit
  • fpGUI – ein plattformübergreifendes GUI-Toolkit mit einem Visual Form Designer und einem benutzerdefinierten Hilfedokument -Reader
  • GTK – ein Widget-Toolkit, das von GNOME- Anwendungen verwendet wird
  • gtkmm – die offizielle C++-Schnittstelle zu GTK
  • IUP – ein Multi-Plattform-Toolkit zum Erstellen nativer grafischer Benutzeroberflächen
  • Saft
  • Qt – ein von KDE verwendetes Widget-Toolkit
  • TnFOX
  • Ultimativ++
  • VCF
  • Widget-Toolkit
  • wxWidgets – eine plattformübergreifende Open-Source-C++-Widget-Bibliothek, die native Widget-Toolkits umschließt
  • Liste der Widget-Toolkits

Verweise

Externe Links