Инструментарий Фокса
![]() | Тема этой статьи может не соответствовать рекомендациям Википедии по известности продуктов и услуг . ( май 2014 г. ) |
![]() | |
Разработчик(и) | Йерун ван дер Зийп, сообщество FOX |
---|---|
Стабильная версия | 1.6.57 / 3 апреля 2018 г |
Предварительный выпуск | 1.7.84 / 10 сентября 2023 г [1] |
Написано в | С++ |
Операционная система | Кросс-платформенный |
Тип | Библиотека разработки |
Лицензия | GNU Lesser General Public License с дополнением к лицензии, позволяющим статическое связывание fox-toolkit |
Веб-сайт | лиса-инструментарий ![]() |
Инструментарий FOX — это открытым исходным кодом с кроссплатформенный набор инструментов виджетов , то есть библиотека базовых элементов для создания графического пользовательского интерфейса (GUI). FOX означает «Свободные объекты для X».
Он имеет встроенную Windows 95, в стиле тему доступную как для самой Microsoft Windows , так и для системы X Window (которая используется во многих UNIX и UNIX-подобных операционных системах). [2]
Инструментарий FOX выпущен под лицензией GNU Lesser General Public License . Разработка началась в 1997 году Йеруном ван дер Зийпом, когда он был сотрудником CFDRC. С тех пор Йерун ван дер Зийп поддерживает основную библиотеку и тестовые приложения с помощью сообщества пользователей.
Инструментарий FOX написан на C++ , с языковыми привязками, доступными для Python , Ruby и Eiffel . FOX Распространение исходного кода поддерживает сборку с использованием множества различных (коммерческих и бесплатных) компиляторов C++.
Кроссплатформенная совместимость
[ редактировать ]FOX отличается от других кроссплатформенных наборов инструментов следующим образом:
- Tk — это кроссплатформенный набор инструментов, но он не содержит всех виджетов, которые FOX считает желательными.
- В Qt до версии 4.5 использовалась модель лицензирования, которая требовала коммерческой лицензии в некоторых случаях, когда FOX не требовала.
- wxWidgets продвигает использование собственных виджетов на каждой поддерживаемой платформе.
- FLTK — это быстрая и компактная библиотека, которая поддерживает быструю разработку приложений и требует меньшего количества кода для использования, но в ней отсутствуют расширенные виджеты.
Все эти наборы инструментов имеют некоторую поддержку программирования на классических платформах Mac OS и/или macOS , которые FOX в настоящее время не поддерживает. [ нужна ссылка ]
FOX использует технику, аналогичную подходу в стиле Java Swing , для отображения графического пользовательского интерфейса на экране, используя только графические примитивы, доступные на этой платформе, в отличие от исходного подхода в стиле Java AWT , в котором использовались собственные виджеты. Это означает, что приложения будут иметь одинаковый внешний вид на разных платформах. Теоретически портирование FOX на новую платформу также должно быть проще, чем реализация поддержки собственных виджетов.
С другой стороны, это обычно означает, что приложения FOX будут выглядеть и работать иначе, чем собственные приложения для этих платформ, что может сбить с толку некоторых пользователей. Кроме того, некоторые встроенные функции платформы могут быть недоступны сразу, например комплексная поддержка печати или интернациональная обработка ввода, поскольку их необходимо будет повторно реализовать кросс-платформенным способом, прежде чем их можно будет использовать в FOX. Некоторые приложения, такие как Xfe File Manager , позволяют изменять цветовую схему для лучшей интеграции с цветами темы системы. [3] В Arch Linux доступно приложение под названием FOX Control Panel, позволяющее изменить цветовую схему всех приложений FOX в масштабе всей системы. Он поставляется с основным пакетом FOX Toolkit.
Система обмена сообщениями
[ редактировать ]FOX предлагает прозрачную двунаправленную систему обмена сообщениями. Каждый виджет отправляет свое сообщение определенной цели. Каждое сообщение состоит из селектора, который определяет его тип и уникальный идентификатор, предоставляемый перечислением виджета. Преимущество состоит в том, что каждый виджет может вызывать метод целевого виджета прозрачным образом, даже если этот метод не существует. И наоборот, в реализации отдельного обработчика сообщений, поскольку отправитель известен, цель также может отправить сообщение отправителю. Это особенно важная особенность компонентно-ориентированного программного обеспечения, где компоненты могут быть написаны разными людьми или даже разными организациями.
Система обмена сообщениями FOX упрощает стратегию обновления графического пользовательского интерфейса: во время обновления виджетов виджеты могут запрашивать у своих целей обновление их. Это означает, что командное сообщение не требует явного обновления каких-либо виджетов, как это обычно бывает. Если приложение реализует N командных сообщений, каждое из которых обновляет M виджетов, то должно быть выполнено M*N обновлений и должно быть реализовано не более M*N сообщений. С другой стороны, если виджеты запрашивают обновление, реализуются только N командных сообщений и не более M сообщений обновления. Эта стратегия отделяет обновление графического интерфейса от изменений данных, делая графический интерфейс отражением базовых структур данных в реальном времени.
Внутренности
[ редактировать ]Зависимости
[ редактировать ]Внутри это зависит от кроссплатформенных библиотек, которые включают в себя следующее: [4]
- Открыть ГК
- Библиотека утилит OpenGL
- libjpeg
- libpng
- LibTIFF
- злиб (лз)
- bzip2 для сжатия файлов
Привет, мир
[ редактировать ]В следующем примере создается приложение 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 python3from FXPy.fox import *import sysdef 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()
Программное обеспечение, созданное на FOX
[ редактировать ]- CFD-View — постобработка, разработанная ESI Group.
- Abaqus/CAE – пре- и постпроцессор пакета Abaqus конечных элементов [5]
- bdStudio — точный и простой в использовании инструмент визуализации для сложного аэрокосмического моделирования в реальном времени, разработанный SAIC.
- Модульная тестовая архитектура Intel (IMTA)
- PVRShaman — бесплатная студия разработки шейдеров от Imagination Technologies.
- LinkCAD - коммерческое приложение для преобразования различных форматов САПР.
- TMP Vision и SLIM – созданы для удовлетворения потребностей сложных моделей FEA.
- Kerkythea — многометодная система рендеринга.
- Acronis True Image и другие Acronis продукты [6]
- Goggles Music Manager – менеджер и проигрыватель музыкальной коллекции
- xfe — графический файловый менеджер для системы X Window.
- TnFOX — форк библиотеки FOX.
- SUMO (Simulation of Urban MObility) – симулятор дорожного движения с графическим редактором.
См. также
[ редактировать ]- FLTK — легкий, кроссплатформенный, неродной набор инструментов для виджетов.
- fpGUI — кроссплатформенный набор инструментов для графического пользовательского интерфейса с визуальным дизайнером форм и настраиваемой программой чтения справочных документов.
- GTK — набор инструментов виджетов, используемый GNOME . приложениями
- gtkmm — официальный интерфейс C++ для GTK.
- IUP — многоплатформенный набор инструментов для создания собственных графических пользовательских интерфейсов.
- Вчера
- Qt — набор инструментов виджетов, используемый KDE.
- Ultimate++
- Набор инструментов для виджетов
- wxWidgets — кроссплатформенная библиотека виджетов C++ с открытым исходным кодом, включающая собственные наборы инструментов для виджетов.
- Список наборов виджетов
Ссылки
[ редактировать ]- ^ «Новости» . fox-toolkit.org . Проверено 28 апреля 2024 г.
- ^ FOX Toolkit , Наборы инструментов GUI для системы X Window, Лесли Полцер, 27 июля 2003 г., Freshmeat.net
- ^ «Домашняя страница XFE» .
- ^ «Инструкция по установке» . fox-toolkit.org . Проверено 4 августа 2021 г.
- ^ «Abaqus FEA / Программы с открытым исходным кодом версии 6.7» . Архивировано из оригинала 9 ноября 2007 г. Проверено 9 декабря 2007 г.
- ^ «Информация о лицензировании Acronis» . Проверено 8 декабря 2007 г.