Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
FOX құралдар жиынтығы – ашық кодты, платформааралық виджеттер жиынтығы, яғни графикалық пайдаланушы интерфейсін (GUI) құруға арналған негізгі элементтердің кітапханасы. FOX дегеніміз – X үшін еркін нысандар. Ол Microsoft Windows жүйесінің өзінде де, X Window System жүйесінде де (ол көптеген UNIX және UNIX-қа ұқсас операциялық жүйелерде қолданылады) қолжетімді Windows 95 стиліндегі белгілі бір көрініс схемасын қамтиды. FOX құралдар жиынтығы GNU Lesser General Public License лицензиясымен шығарылды. Оның дамуы 1997 жылы Jeroen van der Zijp CFDRC ұйымында жұмыс істеген кезде басталды. Содан бері Jeroen van der Zijp пайдаланушылар қауымдастығының көмегімен негізгі кітапхананы және сынақ қосымшаларын күтіп келді. FOX құралдар жиынтығы 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.