Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
FOX Toolkit – это инструментарий виджетов с открытым исходным кодом и кроссплатформенной поддержкой, то есть библиотека базовых элементов для создания графического пользовательского интерфейса (GUI). Аббревиатура FOX расшифровывается как Free Objects for X. Он включает в себя встроенную тему оформления в стиле Windows 95, доступную как для самой Microsoft Windows, так и для X Window System (которая используется во многих UNIX и UNIX-подобных операционных системах). FOX Toolkit распространяется под лицензией GNU Lesser General Public License. Разработка началась в 1997 году Йеруном ван дер Зийпом во время его работы в CFDRC. С тех пор Йерун ван дер Зийп поддерживает основную библиотеку и тестовые приложения при поддержке пользовательского сообщества. FOX Toolkit написан на C++, с доступными привязками для языков Python, Ruby и Eiffel. Распространяемый исходный код FOX поддерживает компиляцию с использованием множества различных (коммерческих и бесплатных) C++ компиляторов.
The FOX toolkit is an open source, cross platform widget toolkit, i. e. a library of basic elements for building a graphical user interface (GUI). FOX stands for Free Objects for X. It features a hard wired Windows 95 style theme available for both Microsoft Windows itself as well as the X Window System (which is used on many UNIX and UNIX like operating systems). The FOX toolkit has been released under the GNU Lesser General Public Licence. Development began 1997 by Jeroen van der Zijp while he was affiliated at CFDRC. Since then, Jeroen van der Zijp maintains the core library and test applications, with the help of user community. The FOX toolkit is written in C++, with language bindings available for Python, Ruby and Eiffel. The FOX source code distribution supports building with many different (commercial and free) C++ compilers.
Система передачи сообщений
FOX предлагает прозрачную двунаправленную систему обмена сообщениями. Каждый виджет отправляет свое сообщение определенному получателю. Каждое сообщение состоит из селектора, идентифицирующего его тип, и уникального идентификатора, предоставляемого перечислением виджета. Преимущество заключается в том, что каждый виджет может вызывать метод целевого виджета прозрачным образом, даже если этот метод не существует. В свою очередь, при реализации обработчика сообщения, поскольку отправитель известен, получатель также может отправить сообщение обратно отправителю. Это особенно важно в компонентно-ориентированном программном обеспечении, где компоненты могут быть разработаны разными разработчиками или даже разными организациями. Система обмена сообщениями FOX упрощает стратегию обновления графического интерфейса: во время обновления виджеты могут запрашивать у своих получателей обновление. Это означает, что командное сообщение не обязано явно обновлять какие-либо виджеты, как это обычно происходит. Если приложение реализует N командных сообщений, каждое из которых обновляет M виджетов, то потребуется выполнить M*N обновлений и реализовать не более M*N сообщений. Однако, если виджеты запрашивают обновление, необходимо реализовать только N командных сообщений и не более M сообщений об обновлении. Эта стратегия отделяет обновление графического интерфейса от изменений данных, обеспечивая отображение графического интерфейса в реальном времени, соответствующее базовым структурам данных.
FOX offers a transparent bi directional messaging system. Each widget sends its message to a certain target. Each message is composed by a selector that identifies its kind and an id that is unique and provided by the widget's enumeration. The advantage is that each widget can call a target widget's method in a transparent manner, even if the method does not exist. Vice versa, in the implementation of the individual message handler, since the sender is known, the target can also dispatch a message to the sender. This is a particularly important feature in component oriented software, where components may be written by different people, or even different organizations. The FOX messaging system simplifies the GUI update strategy: during widget update, the widgets can ask from their targets to update them. This means that a command message does not also have to explicitly update any widgets as it is typical. In case an application implements N command messages each updating M widgets, then M*N updates must be executed and at most M*N messages must be implemented. On the other hand, if widgets request for update, only N command messages and at most M update messages are implemented. This strategy separates the GUI update from data changes, making the GUI a real time reflection of the underlying data structures.