wxWidgets
wxWidgets | |
---|---|
Тип | библиотека элементов интерфейса (виджетов) |
Разработчик | Разработчики и участники |
Написана на | C++, Perl, Python |
Операционная система | UNIX-подобные, Windows |
Языки интерфейса | На 37 языках, включая русский |
Последняя версия | 3.2.1 (9 сентября 2022)[1] |
Состояние | Активное |
Лицензия | wxWidgets License (совместима с GPL) |
Сайт | wxwidgets.org |
wxWidgets (ранее известная как wxWindows) — кроссплатформенная библиотека инструментов с открытым исходным кодом для разработки кроссплатформенных на уровне исходного кода приложений. Основным применением wxWidgets является построение графического интерфейса пользователя (GUI), однако библиотека включает большое количество других функций и используется для создания весьма разнообразного ПО. wxWidgets выпущена под лицензией, базирующейся на LGPL. Проект был начат в 1992 Джулианом Смартом (Julian Smart), который до сих пор является членом основной группы разработчиков и уделяет ему внимание, в частности, разрабатывая среду построения графических интерфейсов на wxWidgets — DialogBlocks[2].
Технические особенности и преимущества
wxWidgets — это инструмент разработчика для написания настольных или мобильных приложений с графическим интерфейсом (GUI), который экономит много времени на написание кроссплатформенных приложений и обеспечивает их стандартное поведение.
Приложения обычно показывают пользователю окна со стандартными элементами управления, изображениями и графиками; реагируют на события от мыши, клавиатуры и других источников — эти стандартные интерфейсные функции легко реализуются при использовании wxWidgets и отходят на второй план, позволяя программисту сосредоточить свои усилия на функциональности приложения. Более того, поскольку на разных операционных системах и устройствах по-разному могут быть реализованы и другие функции, wxWidgets включает высокоуровневые средства (наборы классов) для работы с графическими изображениями, документами в форматах XML и HTML, архивами, файловыми системами, процессами, подсистемами печати, мультимедиа, сетями, классы для организации многопоточности, конфигурирования приложений, межпроцессного взаимодействия, доступа к базам данных, отладки, отправки дампов и множество других инструментов.
Такие развитые средства библиотеки wxWidgets позволяют писать программы на базе единого API и компилировать на множестве компьютерных платформ с минимальными изменениями в исходном коде либо вообще без них. Она поддерживает системы Microsoft Windows, Apple Macintosh, UNIX-подобные (для X11, Motif и GTK), OpenVMS и OS/2. Встраиваемая (Embedded) версия находится в разработке.
Библиотека написана на C++, но может подключаться ко множеству других распространённых языков, таких, как Ruby (wxRuby, Anvil), Python (wxPython), Smalltalk (wxSqueak), Perl, Erlang, Haskell[3], Lua[4].
Среди компиляторов C++ поддерживаются:
- GCC и его портированные варианты Cygwin, MinGW и emx+gcc
- Microsoft Visual C++
- Borland C++
- Watcom C++
- VisualAge
- Symantec C++
- Digital Mars C++
Важная особенность wxWidgets: в отличие от некоторых других библиотек (Swing, Qt и др.), она максимально использует «родные» графические элементы интерфейса операционной системы всюду, где это возможно. Это существенное преимущество для многих пользователей, поскольку они привыкают работать в конкретной среде, и изменения интерфейса программ часто вызывают затруднения в их работе.
Также wxWidgets обладает всеми преимуществами, присущими бесплатной свободной платформе:
- нулевая стоимость позволяет легко использовать её небогатым малым фирмам и индивидуальным разработчикам и экономить бюджет крупным организациям;
- открытый исходный код обеспечивает чрезвычайно долгий срок жизни проекта даже при отходе от него первоначальных создателей, что позволяет гарантировать долгосрочное развитие и всех производных проектов;
- открытый код позволяет свободно производить его аудит (что важно для приложений, использующихся в критических сферах) и при необходимости самостоятельно модифицировать с добавлением нужных функций, не полагаясь на добрую волю исходного разработчика. Этот момент особенно ценен для внутрикорпоративного применения.
Более того, крайне «либеральная» лицензия wxWidgets допускает линковку с несвободными фрагментами кода, что позволяет использовать её и в закрытых коммерческих проектах.
Все вышеперечисленные особенности способствовали популярности библиотеки у самых разных разработчиков — от программистов-энтузиастов до крупных корпораций и государственных учреждений (в числе которых Xerox, AMD, NASA и многие другие).
Краткая история wxWidgets
Проект под названием wxWindows был основан в 1992 году, когда Джулиан Смарт работал в Эдинбургском Университете над инструментом диаграммирования под названием «Hardy». Вместо того, чтобы выбирать между разработкой его для рабочей станции Sun или для платформы PC, Джулиан предпочёл применить кроссплатформенный фреймворк. Поскольку мощность существующих кроссплатформенных фреймворков была ограничена, а отделение не имело необходимого бюджета для написания такового, то он решил написать его самостоятельно. Университет предоставил Джулиану доступ для закачки wxWindows 1.0 на FTP-сервер отделения в сентябре 1992, и другие разработчики начали использовать его код.
Быстро появилось маленькое, однако полное энтузиазма сообщество программистов на wxWindows и обзавелось своей почтовой рассылкой. Добавления и исправления получали распространение в рассылке. Постепенно расширялся круг пользовательской аудитории библиотеки по всему миру: индивидуальные программисты, академические группы, государственные учреждения и те, кто нашёл, что wxWindows — более удобный продукт с лучшей поддержкой, чем коммерческие продукты, которые они до этого видели или использовали.
Вначале wxWindows был нацелен на Xview и MFC 1.0. Пользователи Borland С++, жаловавшиеся на привязку к MFC, таким образом, стали переписывать программы на чистый Win32. Поскольку XView открывал путь на Motif, то перенос на Motif был запущен весьма оперативно.
В 1997 году новая версия wxWindows 2 API была спроектирована при помощи Маркуса Холзема (который ещё во времена создания рассылки создал Xt-направление wxWindows). Вольфрам Глогер предложил идею портирования wxWindows на GTK, и Роберт Роблинг создал необходимые графические элементы пользователя, адаптированные для GNOME. Он стал основоположником разработки wxGTK, и поныне оставаясь главным специалистом в разработке Unix/Linux-порта wxWidgets.
В 1998 году порт для Windows и порт для GTK были совмещены и выложены под управлением системы CVS. Вадим Цейтлин присоединился к проекту, чтобы поспособствовать разработке огромной части дизайна и кода. Штефан Чомор также в 1998 начал создание порта на MacOS.
1999 год обозначен приходом программиста с именем Вацлав Славик (Vaclav Slavik). Он создал внушительные wxHTML-классы и основанный на HTML просмотрщик справочных файлов.
В 2000 году фирма SciTech Inc. профинансировала начало разработки wxUniversal — собственный для wxWindows набор графических элементов пользователя для использования на платформах, у которых пока что нет никаких графических элементов пользователя.
В 2002 году Джулиан Смарт и Роберт Ройблинг добавили порт wxX11, используя wxUniversal.
В июле 2003 года wxWindows начала запускаться на Windows CE, а Роберт Ройблинг продемонстрировал wxGTK-приложение, запущенное на встраиваемой платформе GPE Linux.
20 февраля 2004 г. разработчики wxWindows предупредили, что проект будет переименован в wxWidgets как результат переговоров «Майкрософт» и Джулиана Смарта в связи с зарезервированной «Майкрософт» торговой маркой Windows (за смену имени разработчики wxWidgets и других связанных проектов получили денежную компенсацию)[5]. Также в 2004 Штефан Чомор и его помощники успешно завершили перенос wxWidgets (wxMac) на MAC OS X, значительно расширив функциональные возможности приложений для OS X. Порт, использующий Cocoa, был заметно улучшен (направление возглавляли Дэвид Эллиот и Уильям Осборн). Уильям Осборн выиграл конкурс по созданию версии wxWidgets для Palm OS 6, задачей ставилась минимальная поддержка платформы.
В апреле 2005 года была выпущена версия 2.6, в которой было осуществлено слияние всех основных портов фреймворка.
Распространённое ПО, написанное на wxWidgets
- Amaya — веб-браузер и редактор
- aMule — клиент файлообменной сети
- Aegisub — кроссплатформенный редактор субтитров
- Audacity — звуковой редактор
- BitTorrent — клиент файлообменной сети
- Code::Blocks — интегрированная среда разработки
- CodeLite — редактор для программистов
- Dolphin — эмулятор игровых приставок
- FileZilla — FTP-клиент
- KiCad — программа разводки печатных плат
- RapidSVN — клиент Subversion
- TrueCrypt — программа для шифрования
- wxMaxima — система компьютерной алгебры
- UnrealEd — редактор для Unreal Engine
- и многие другие.
См. также
Примечания
- ↑ wxWidgets 3.2.1 Released .
- ↑ JulianSmart.com Архивировано 26 ноября 2014 года.
- ↑ wxHaskell . Дата обращения: 1 октября 2009. Архивировано 23 апреля 2009 года.
- ↑ wxLua (недоступная ссылка). Дата обращения: 22 февраля 2008. Архивировано 17 августа 2010 года.
- ↑ wxWidgets Name Change (англ.). — Смена имени на wxWidgets. Дата обращения: 29 октября 2008. Архивировано 27 августа 2011 года.
Литература
- Боровский А. wxWidgets. Часть 1: Живая история // Linux Format : Журнал. — ноябрь 2007. — № 11 (98). — С. 84—87.
- Боровский А. wxWidgets. Часть 2: Основы применения // Linux Format : Журнал. — декабрь 2007. — № 12 (99). — С. 90—93.
Ссылки
- Официальный сайт
- Неофициальный форум
- Проекты поддержки языков программирования:
- wxBasic — для Бейсик
- wxPerl — для Perl
- wxPython — для Python
- wxRuby — для Ruby
- Anvil — для Ruby, на базе wxRuby, с улучшеным синтаксисом
- wxSqueak — для Smalltalk
- wxLua — для Lua
- wx4j — для Java
- wxJS Архивная копия от 6 февраля 2006 на Wayback Machine — для JavaScript
- wxHaskell — для Haskell
- wxEiffel — для Эйфель
- wxD — для D
- wx.NET — для .NET
- wxErlang — для Erlang
- wxEuphoria — для Euphoria
- wxGlade — графический редактор форм для wxWidgets.
- wxDev-C++ — Dev-C++ IDE с редактором форм для wxWidgets
- visualwx — Ещё один редактор форм и генератор кода для wxWidgets
- wxFormBuilder — OpenSource дизайнер форм, и RAD инструмент для wxWidgets
- DialogBlocks — ShareWare конструктор диалогов wxWidgets с удобным визуальным интерфейсом
- Code::Blocks — OpenSource C++ IDE (на базе wxWidgets) c RAD средством разработки wxSmith. Включает конструктор GUI, управление проектом и кодом С++, визуализированы практически все возможности wxWidgets.
Справочная документация
- Всё о кроссплатформенном программировании с wxWidgets (англ.) — Тематический сайт о кроссплатформенной разработке программного обеспечения с использованием библиотеки wxWidgets. Статьи, руководства, видеоуроки, дополнительные компоненты и библиотеки.
- wxWidgets на RealCoding (рус.) — Серия статей по wxWidgets на русском языке.
- Cross-Platform GUI Programming with wxWidgets (англ.) — первая опубликованная книга, описывающая работу с wxWidgets.
- Drawing and Printing in C++ with wxWidgets (англ.) — статья описывает идею контекста устройства, разъясняет концепцию области рисования вроде окна или печатаемой страницы. Она обсуждает доступные классы контекстов устройств и набор «инструментов рисования», которые wxWidgets предоставляет для работы со шрифтами, цветом, рисованием примитивов, и закраски областей.
- Создание кроссплатформенных GUI-приложений с использованием wxWidgets (рус.) — основы создания GUI-приложений на базе wxWidgets.
- Programming with wxDev-C++ (англ.) — книга на английском языке, в которой описывается программирование с использованием wxWidgets в среде wxDev-C++.
- Использование wxWidgets (рус.) — Блог, посвященный программированию с использованием wxWidgets
- Программное обеспечение по алфавиту
- Библиотеки виджетов
- Библиотеки на основе X
- Свободные библиотеки программ
- Кроссплатформенное программное обеспечение
- Программное обеспечение для Windows
- Программное обеспечение для Linux
- Программное обеспечение для macOS
- Библиотеки C++
- Свободное программное обеспечение, написанное на C++
- WxWidgets