Zestaw narzędzi Foxa
Deweloperzy | Jeroen van der Zijp, społeczność FOX |
---|---|
Wersja stabilna | 1.6.57 / 3 kwietnia 2018
|
Wersja podglądu | 1.7.79 / 11 marca 2022
|
Napisane w | C++ |
System operacyjny | Międzyplatformowe |
Typ | Biblioteka rozwoju |
Licencja |
GNU Lesser General Public License z dodatkiem do licencji umożliwiającym statyczne łączenie |
Strona internetowa |
|
FOX toolkit to wieloplatformowy zestaw narzędzi typu open source , czyli biblioteka podstawowych elementów do budowy graficznego interfejsu użytkownika (GUI). FOX oznacza Free Objects for X.
Zawiera motyw w stylu systemu Windows 95 , dostępny zarówno dla samego systemu Microsoft Windows, jak i systemu X Window (który jest używany w wielu systemach operacyjnych typu UNIX i UNIX).
Zestaw narzędzi FOX został udostępniony na licencji GNU Lesser General Public License . Rozwój rozpoczął w 1997 roku Jeroen van der Zijp, kiedy był związany z CFDRC. Od tego czasu Jeroen van der Zijp utrzymuje podstawową bibliotekę i aplikacje testowe z pomocą społeczności użytkowników.
Zestaw narzędzi FOX jest napisany w C++ , z powiązaniami językowymi dostępnymi dla Python , Ruby i Eiffel . Dystrybucja kodu źródłowego FOX obsługuje budowanie z wieloma różnymi (komercyjnymi i darmowymi) kompilatorami C++.
Kompatybilność między platformami
FOX różni się w następujący sposób od innych wieloplatformowych zestawów narzędzi:
- Tk to wieloplatformowy zestaw narzędzi, ale nie ma wszystkich widżetów, które FOX uważa za pożądane.
- Qt do wersji 4.5 miał model licencjonowania, który wymagał licencji komercyjnej w niektórych przypadkach, gdy FOX tego nie robił.
- wxWidgets promuje korzystanie z natywnych widżetów na każdej obsługiwanej platformie.
- FLTK to szybka biblioteka zajmująca niewiele miejsca, która obsługuje szybkie tworzenie aplikacji i wymaga mniej kodu do użycia, ale brakuje jej zaawansowanych widżetów.
Wszystkie te zestawy narzędzi mają pewne wsparcie dla programowania natywnego na klasycznych platformach Mac OS i/lub macOS , których FOX obecnie nie obsługuje. [ potrzebne źródło ]
FOX wykorzystuje technikę podobną do podejścia w stylu Java Swing do wyświetlania graficznego interfejsu użytkownika na ekranie, używając tylko graficznych elementów podstawowych dostępnych na tej platformie, w przeciwieństwie do oryginalnego podejścia w stylu Java AWT , które wykorzystywało natywne widżety. Oznacza to, że aplikacje będą miały podobny wygląd i działanie na różnych platformach. Teoretycznie przeniesienie FOX na nową platformę powinno być również łatwiejsze niż wdrożenie obsługi natywnych widżetów.
Z drugiej strony zazwyczaj oznacza to, że aplikacje FOX będą wyglądać i zachowywać się inaczej niż natywne aplikacje dla tych platform, co może być mylące dla niektórych użytkowników. Ponadto niektóre natywne funkcje platformy mogą nie być dostępne od razu, takie jak kompleksowa obsługa drukowania lub umiędzynarodowiona obsługa danych wejściowych, ponieważ będą musiały zostać ponownie zaimplementowane na wielu platformach, zanim będą mogły być używane w FOX. Niektóre aplikacje, takie jak Menedżer plików Xfe , umożliwiają zmianę schematu kolorów w celu lepszej integracji z kolorami motywu systemowego. Na Arch Linuxie , dostępna jest aplikacja o nazwie Panel sterowania FOX, która umożliwia zmianę schematu kolorów wszystkich aplikacji FOX w całym systemie. Jest dostarczany z głównym pakietem FOX Toolkit.
System wiadomości
FOX oferuje przejrzysty dwukierunkowy system przesyłania wiadomości. Każdy widżet wysyła swoją wiadomość do określonego celu. Każda wiadomość składa się z selektora, który identyfikuje jej rodzaj oraz unikalnego identyfikatora, który jest dostarczany przez wyliczenie widżetu. Zaletą jest to, że każdy widżet może wywołać metodę docelowego widżetu w przejrzysty sposób, nawet jeśli metoda nie istnieje. I odwrotnie, przy implementacji indywidualnego programu obsługi wiadomości, ponieważ nadawca jest znany, cel może również wysłać wiadomość do nadawcy. Jest to szczególnie ważna cecha w oprogramowaniu zorientowanym na komponenty, gdzie komponenty mogą być pisane przez różne osoby, a nawet różne organizacje.
System przesyłania wiadomości FOX upraszcza strategię aktualizacji GUI: podczas aktualizacji widżetów widżety mogą prosić swoje cele o ich aktualizację. Oznacza to, że komunikat polecenia nie musi jawnie aktualizować żadnych widżetów, co jest typowe. W przypadku, gdy aplikacja implementuje N komunikatów poleceń, z których każdy aktualizuje M widżetów, należy wykonać M*N aktualizacji i zaimplementować co najwyżej M*N komunikatów. Z drugiej strony, jeśli widżety żądają aktualizacji, implementowanych jest tylko N komunikatów poleceń i co najwyżej M komunikatów aktualizujących. Ta strategia oddziela aktualizację GUI od zmian danych, dzięki czemu GUI odzwierciedla w czasie rzeczywistym podstawowe struktury danych.
Wewnętrzne
Zależności
Pod maską zależy to od bibliotek międzyplatformowych, które obejmują:
Witaj świecie
Poniższy przykład tworzy aplikację FOX i okno dialogowe z przyciskiem w C++:
#include "fx.h" int main ( int argc , char * argv []) { Aplikacja FXApp ( "Witaj" , "FoxTest" ); aplikacja . init ( argc , argv ); FXMainWindow * main = new FXMainWindow ( & aplikacja , "Cześć" ,
NULL , NULL , DECOR_ALL ); new FXButton ( main , "&Hello, World!" , NULL , & application , FXApp :: ID_QUIT ); aplikacja . utwórz (); główny -> pokaż ( PLACEMENT_SCREEN ); wniosek zwrotny . biegnij (); }
Możliwe jest również tworzenie okien dialogowych w Pythonie 2.2 i Ruby :
FXPy
#! /usr/bin/env python3 z FXPy.fox import * import sys def runme (): app = FXApp ( "Hello" , "Test" ) app . init ( sys . argv ) main = FXMainWindow ( app , "Cześć" , Brak , Brak , DECOR_ALL ) przycisk =
FXButton ( main , "&Hello, World!" , Brak , app , FXApp . ID_QUIT ) app . utwórz () główny . pokaż ( PLACEMENT_SCREEN ) aplikację . uruchom () if __name__ == "__main__" : runme ()
FXRuby
wymagają „fox16” obejmują aplikację Fox = FXApp . nowy ( "Witaj" , "FoxTest" ) main = FXMainWindow . nowy ( aplikacja , "Cześć" , nil , nil , DECOR_ALL ) FXButton . new ( main , "&Hello, World!" , nil ,
aplikacja , FXApp :: ID_QUIT , LAYOUT_FILL_X | BUTTON_PASEK NARZĘDZI | FRAME_RAISED | FRAME_THICK ) aplikacji . utwórz () główny . pokaż ( PLACEMENT_SCREEN ) aplikację . biegnij ()
Oprogramowanie zbudowane na FOX
- CFD-View – post-processing opracowany przez ESI Group
- Abaqus/CAE – preprocesor i postprocesor pakietu elementów skończonych Abaqus
- bdStudio – dokładne i łatwe w użyciu narzędzie do wizualizacji złożonych symulacji lotniczych w czasie rzeczywistym opracowane przez SAIC
- Modułowa architektura testów firmy Intel (IMTA)
- PVRShaman – darmowe studio deweloperskie shaderów od Imagination Technologies
- LinkCAD – komercyjna aplikacja do konwersji formatów dla różnych formatów CAD
- TMP Vision i SLIM – zaprojektowane z myślą o potrzebach złożonych modeli FEA
- Kerkythea – wielometodowy system renderowania
- Acronis True Image i inne produkty Acronis
- Goggles Music Manager – menedżer i odtwarzacz kolekcji muzyki
- xfe – graficzny menedżer plików dla systemu X Window
- TnFOX – rozwidlenie biblioteki FOX
- SUMO (Simulation of Urban MObility) – symulator ruchu z edytorem GUI
Zobacz też
- FLTK – lekki, wieloplatformowy, nienatywny zestaw narzędzi do widżetów
- fpGUI – wieloplatformowy zestaw narzędzi GUI z Visual Form Designer i niestandardowym czytnikiem dokumentów pomocy
- GTK – zestaw narzędzi widżetów używany przez aplikacje GNOME
- gtkmm – oficjalny interfejs C++ do GTK
- IUP – wieloplatformowy zestaw narzędzi do budowania natywnych graficznych interfejsów użytkownika
- sok
- Qt – zestaw narzędzi widgetów używany przez KDE
- TnFOX
- Ostateczny ++
- VCF
- Zestaw narzędzi widżetów
- wxWidgets – wieloplatformowa biblioteka widżetów typu open source C++, obejmująca natywne zestawy narzędzi widżetów
- Lista zestawów narzędzi widżetów