Разработчик ( s) | Йерун ван дер Зиджп, сообщество FOX |
---|---|
Стабильный выпуск | 1.6.57 / 3 апреля 2018 г.;. 2 года назад (03.04.2018) |
Предварительный выпуск | 1.7.72 / 14 июля 2020 г.;. 2 месяца назад (2020-07-14) |
Написано на | C ++ |
Операционная система | Кросс-платформенная |
Тип | Разработка Библиотека |
Лицензия | Стандартная общественная лицензия ограниченного применения GNU с приложением к лицензии, позволяющим статическое связывание fox-toolkit.org / l icense.html |
Веб-сайт | fox-toolkit.org |
FOX toolkit - это open-source, cross- платформа инструментарий виджетов, то есть библиотека основных элементов для построения графического пользовательского интерфейса (GUI). FOX расшифровывается как Free Objects for X.
Он имеет жестко запрограммированную Windows 95 -style тему, доступную как для самой Microsoft Windows, так и для а также X Window System (которая используется во многих UNIX и UNIX-подобных операционных системах).
Инструментарий FOX был выпущен под Стандартной общественной лицензией ограниченного применения GNU. Разработка началась в 1997 году Йеруном ван дер Зейпом, когда он работал в CFDRC. С тех пор Йерун ван дер Зейп поддерживает основную библиотеку и тестовые приложения с помощью растущего сообщества пользователей.
Инструментарий FOX написан на C ++, с языковыми привязками, доступными для Python, Ruby и Эйфель. Дистрибутив FOX с исходным кодом поддерживает сборку с использованием множества различных (коммерческих и бесплатных) компиляторов C ++.
FOX отличается от других кросс-платформенных инструментов следующим образом:
Все эти наборы инструментов имеют некоторую поддержку для программирования изначально на классической Mac OS и / или платформы macOS, которые FOX в настоящее время не поддерживает.
FOX использует технику, аналогичную подходу в стиле Java Swing для отображения y графический пользовательский интерфейс для экрана, использующий только графические примитивы, доступные на этой платформе, в отличие от оригинального подхода в стиле Java AWT, который использовал собственные виджеты. Это означает, что приложения будут иметь одинаковый внешний вид на разных платформах. Теоретически перенос FOX на новую платформу также должен быть проще, чем реализация поддержки собственных виджетов.
С другой стороны, это обычно означает, что приложения FOX будут отличаться от собственных приложений для этих платформ, что может сбить с толку некоторых пользователей. Кроме того, некоторые встроенные функции платформы могут быть недоступны сразу, например, всесторонняя поддержка печати или интернационализированная обработка ввода, потому что их нужно будет повторно реализовать кроссплатформенным способом, прежде чем их можно будет использовать в FOX. Некоторые приложения, такие как Xfe File Manager, позволяют изменять цветовую схему для лучшей интеграции с цветами темы системы. В Arch Linux доступно приложение FOX Control Panel для изменения цветовой схемы всех приложений FOX в масштабе всей системы. Он поставляется с основным пакетом FOX Toolkit.
FOX предлагает прозрачную двунаправленную систему обмена сообщениями. Каждый виджет отправляет свое сообщение определенной цели. Каждое сообщение состоит из селектора, который определяет его тип, и идентификатора, который является уникальным и предоставляется перечислением виджета. Преимущество состоит в том, что каждый виджет может прозрачным образом вызывать метод целевого виджета, даже если этот метод не существует. И наоборот, в реализации отдельного обработчика сообщений, поскольку отправитель известен, цель также может отправить сообщение отправителю. Это особенно важная особенность компонентно-ориентированного программного обеспечения, где компоненты могут быть написаны разными людьми или даже разными организациями.
Система обмена сообщениями FOX упрощает стратегию обновления графического интерфейса пользователя: во время обновления виджета виджеты могут запрашивать у своих целей обновить их. Это означает, что командное сообщение также не должно явно обновлять какие-либо виджеты, как это обычно бывает. Если приложение реализует N командных сообщений, каждое из которых обновляет M виджетов, тогда должно быть выполнено M * N обновлений и должно быть реализовано не более M * N сообщений. С другой стороны, если виджеты запрашивают обновление, реализуются только N командных сообщений и не более M сообщений обновления. Эта стратегия отделяет обновление графического интерфейса от изменений данных, делая графический интерфейс в реальном времени отражением базовых структур данных.
В следующем примере создается приложение FOX и диалоговое окно с кнопкой на C ++:
#include "fx.h" int main (int argc, char * argv) {Приложение FXApp («Привет», «FoxTest»); application.init (argc, argv); FXMainWindow * main = new FXMainWindow (application, "Hello", NULL, NULL, DECOR_ALL); новый FXButton (main, «Hello, World!», NULL, application, FXApp :: ID_QUIT); application.create (); main->показать (PLACEMENT_SCREEN); вернуть application.run (); }
Также возможно создавать диалоги с Python 2.2 и Ruby :
FXPy
#! / usr / bin / env python3 из 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
требует '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 ()