WxWidgets

19-09-2023

wxWidgets
Тип

библиотека элементов интерфейса (виджетов)

Разработчик

Разработчики и участники

Написана на

C++, Perl, Python

Операционная система

UNIX-подобные, Windows

Языки интерфейса

На 37-ми языках, включая русский

Последняя версия

2.8.12 (22 марта 2011)

Тестовая версия

2.9.3 (15 декабря 2011)

Состояние

Активное

Лицензия

wxWidgets License (совместима с GPL[1])

Сайт

www.wxwidgets.org

wxWidgets (ранее известная как wxWindows) — это кросс-платформенная библиотека инструментов с открытым исходным кодом для разработки кроссплатформенных на уровне исходного кода приложений, в частности для построения графического интерфейса пользователя (GUI).

wxWidgets разработана не только для того, чтобы создавать GUI. Она также имеет набор классов для работы с графическими изображениями, HTML, XML документами, архивами, файловыми системами, процессами, подсистемами печати, мультимедиа, сетями, классы для организации многопоточности, отладки, отправки дампов и множество других инструментов.

Некоторые примеры приложений, построенных с использованием библиотеки wxWidgets: Code::Blocks (IDE), audacity, BitWise IM, Kirix Strata, Valentina Studio, UnrealEd, wxMaxima и многие другие.

wxWidgets выпущен под «разрешающей изменения (но явно одобренной OSI) LGPL». Проект был запущен в 1992 Юлианом Смартом (Julian Smart), который до сих пор остаётся главным разработчиком.

Содержание

Поддерживаемые платформы и языки

wxWidgets позволяет компилировать программы на множестве компьютерных платформ с минимальными изменениями в исходном коде, либо вообще без них. Она поддерживает системы Microsoft Windows, Apple Macintosh, UNIX-подобные (для X11, Motif и GTK+), OpenVMS и OS/2. Встраиваемая (Embedded) версия находится в разработке.

Библиотека разработана на wxHaskell).

Среди компиляторов C++ поддерживаются:

Инструментальные средства wxWidgets

wxWidgets — это инструмент разработчика для написания настольных или мобильных приложений с графическим интерфейсом (GUI). Этот фреймворк экономит много времени на написание кроссплатформенных приложений и обеспечивает их стандартное поведение.

Приложения обычно показывают пользователю окна со стандартными элементами управления, изображениями и графиками; реагируют на события от мыши, клавиатуры и других источников; общаются с другими приложениями, запускают другие программы — подобные стандартные блоки отходят на второй план при использовании wxWidgets, позволяя программисту сосредоточить свои усилия на функционале приложения.

Пока wxWidgets называют инструментарием разработки графических интерфейсов пользователя, он действительно им является. Однако на самом деле он не ограничивается этим — фреймворк реализует многие аспекты программирования. И это не является избыточностью, так как от wxWidgets требуется, чтобы приложения целиком были переносимыми на разные платформы, а не только их графическая часть. wxWidgets предоставляет классы для файлов, потоков, многопоточности, конфигурирования приложений, межпроцессного взаимодействия, доступа к базам данных и многое другое.

Преимущества wxWidgets

Особенность, которая отличает wxWidgets от многих других фреймворков, таких как MFC и OWL, — это многоплатформенная природа. wxWidgets имеет API, который одинаков или почти одинаков на всех поддерживаемых платформах. Это означает, что вы можете написать приложение, к примеру, под Windows и затем с очень немногими (если они вообще понадобятся) изменениями перекомпилировать его под Linux или Mac OS X. Это дает огромное преимущество по сравнению с раздельным программированием под каждую платформу: вам не придется изучать специализированный API для каждой платформы. Кроме того, при выпуске новых версий операционных систем и версий wxWidgets уже написанные приложения всегда будут выглядеть актуально и использовать последние графические версии элементов управления.

Другая отличительная особенность — wxWidgets использует графические элементы интерфейса операционной системы. Многие фреймворки, такие, как Swing и Qt, используют собственные графические элементы управления, снабжая их сменяемыми темами для каждой платформы. Напротив, wxWidgets использует родные графические элементы пользовательского интерфейса всюду, где это возможно. В результате, они не только выглядят как родные для операционной системы — они на самом деле родные. Это очень важно для пользователей, привыкших работать в конкретной среде, поскольку любое, даже самое незначительное, изменение интерфейса сказывается на их способности свободно использовать свой опыт управления в стиле стандарта их ОС. Вместо этого wxWidgets предоставляет тонкую абстракцию к существующим компонентам системы.

wxWidgets использует C++. Почему не Java? Java отлично подходит для web-приложений, но не является удачным выбором для десктопа. Прежде всего, C++ приложения, работающие с wxWidgets, быстрее, имеют более естественный вид. Они проще в установке, поскольку не требуется специальная виртуальная машина. C++, к тому же, предоставляет простой доступ к низкоуровневой функциональности, и написанный код может быть легко интегрирован с уже имеющимся C/C++ кодом.

wxWidgets — бесплатная свободная платформа. Это важный психологический и стратегический момент. Создавая исходный код с использованием бесплатных свободных библиотек, всегда можно решить свои задачи, редактируя исходный код; это гораздо практичнее, чем отправлять запрос на требуемую функциональность производителю библиотеки и дожидаться обновления.

Многие аспекты создания приложений, которые иначе пришлось бы решать самостоятельно, в wxWidgets уже инкапсулированы в готовые к применению классы. wxWidgets имеет широкий спектр пользователей — от программистов-энтузиастов до крупных корпораций, от отделов научного программирования до медицинских исследовательских групп, от экологических исследователей до телекоммуникационной индустрии.

Разработчики используют wxWidgets по разным причинам: от замены MFC на одной платформе до обеспечения возможности быстрого портирования приложения с, к примеру, Windows на Unix и Mac OS X. wxWidgets также позволяет переносить приложения на мобильные платформы, такие, как встраиваемый Linux, Pocket PC или Palm OS.

Краткая история wxWidgets

Проект wxWidgets был основан в 1992 году, когда Джулиан Смарт работал в Эдинбургском Университете над инструментом диаграммирования под названием «Hardy». Он не пожелал выбирать между разработкой его для рабочей станции Sun или для платформы PC, он предпочел написать кросс-платформенный фреймворк.

Поскольку мощность существующих кросс-платформенных фреймворков была ограничена, а отделение не имело необходимого бюджета для написания такового в любом случае, то он решил написать такой самостоятельно. Университет предоставил ему доступ для закачки wxWidgets 1.0 на FTP-сервер отделения в сентябре 1992 и другие разработчики начали использовать его код. Вначале wxWidgets был нацелен на Xview и MFC 1.0. Пользователи Borland С++ , жаловавшиеся на привязку к MFC, таким образом, стали переписывать программы на чистый Win32. Поскольку XView открывал путь на Motif, то перенос на Motif был запущен весьма оперативно. Тем временем маленькое, однако, полное энтузиазма сообщество wxWidgets-программистов уже появилось и обзавелось своей почтовой рассылкой. Добавления и исправления получали распространение в рассылке. wxWidgets постепенно расширял круг своей пользовательской аудитории по всему миру: индивидуальные программисты, академические группы, государственные учреждения, и те кто нашел, что wxWidgets — более удобный продукт с лучшей поддержкой, чем коммерческие продукты, которые они до этого видели или использовали.

В 1997 году новая версия wxWidgets 2 API была спроектирована при помощи Маркуса Холзема (который ещё во времена создания рассылки создал Xt направление wxWidgets). Вольфрам Глогер предложил идею портирования wxWidgets на GTK+ и Роберт Роблинг создал необходимые графические элементы пользователя, адаптированные для GNOME. Он стал основоположником разработки wxGTK, и поныне оставаясь главным специалистом в разработке Unix/Linux-порта wxWidgets. В 1998 году порт для Windows и порт для GTK+ были совмещены и выложены под управлением CVS системы. Вадим Зейтлин присоединился к проекту, чтобы поспособоствовать огромной части дизайна и кода, а также Стефан Ксомор начал создание MAC OS порта, тоже в 1998. 1999 обозначен приходом программиста с именем Vaclav Slavik. Он создал внушительные wxHTML классы и основанный на HTML просмотрщик справочных файлов.

В 2000 году фирма SciTech Inc. профинансировала начало разработки wxUniversal — собственный для wxWidgets набор графических элементов пользователя для использования на платформах, у которых пока что нет никаких графических элементов пользователя. wxUniversal стал первым используемым в этой фирме портом для MGL, их низкоуровневому графическому слою.

В 2002 году Джулиан Смарт и Роберт Ройблинг добавил wxX11 порт, используя wxUniversal графические элементы пользовательского интерфейса.

В июле 2003 года wxWidgets начал запускаться на Windows CE, а Роберт Ройблинг продемонстрировал wxGTK приложение, запущенное на встраиваемой платформе GPE Linux.

20 февраля 2004 г. разработчики wxWindows предупредили, что проект будет переименован в wxWidgets как результат переговоров Майкрософт и Юлиана Смарта в связи с зарезервированной Майкрософт торговой маркой Windows (за смену имени разработчики wxWidgets и других связанных проектов получили денежную компенсацию).[2]

Также в 2004 Стефан Чомор и другие его помощники успешно завершили перенос wxWidgets (wxMac) на MAC OS X., значительно улучшив функциональные возможности приложений для OS X. Порт, использующий Cocoa, был заметно улучшен (направление возглавляли Дэвид Еллиот и Виллиам Осборн).

Виллиам Осборн выиграл конкурс по созданию версии wxWidgets для Palm OS 6, задачей ставилась минимальная поддержка платформы.

В апреле 2005 года была выпущена версия 2.6, в которой было осуществлено слияние всех основных портов фреймворка.

Недостатки wxWidgets

Основным недостатком wxWidgets был недостаток документации. Так, на официальном сайте в разделе «Документация» по многим классам не было справки вообще[цитата не приведена 249 дней], либо справка ограничивалась одной-двумя строками.[3]. Но начиная с версии 2.9.0 документация была переведена на использование Doxygen[4] и была радикально переработана [5]

Исходный код примеров плохо оформлен и трудно читается[цитата не приведена 249 дней]. Некоторые технические нюансы вообще не освещены справочными материалами[цитата не приведена 249 дней].

См. также

Примечания

  1. http://www.wxwidgets.org/about/newlicen.htm  (англ.) — Разъяснение лицензии
  2. wxWidgets Name Change  (англ.). — Смена имени на wxWidgets. Архивировано из первоисточника 27 августа 2011. Проверено 29 октября 2008.
  3. wxGridTableBase documentation  (англ.). — пример справки. Архивировано из первоисточника 27 августа 2011. Проверено 31 мая 2010.
  4. wxWidgets: wxWidgets: Documentation
  5. wxWidgets: wxWidgets: wxGridTableBase Class Reference

Литература

  • Боровский А. wxWidgets. Часть 1: Живая история // Linux Format : Журнал. — ноябрь 2007. — № 11 (98). — С. 84—87.
  • Боровский А. wxWidgets. Часть 2: Основы применения // Linux Format : Журнал. — декабрь 2007. — № 12 (99). — С. 90—93.

Ссылки

  • Официальный сайт
  • Неофициальный форум
  • Проекты поддержки языков программирования:
  • wxGlade — графический редактор форм для wxWidgets.
  • wxDev-C++ — Dev-C++ IDE с редактором форм для wxWidgets
  • visualwx — Еще один редактор форм и генератор кода для wxWidgets
  • wxFormBuilder — OpenSource дизайнер форм, и RAD инструмент для wxWidgets
  • DialogBlocks - ShareWare конструктор диалогов 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


WxWidgets.

© 2011–2023 stamp-i-k.ru, Россия, Барнаул, ул. Анатолия 32, +7 (3852) 15-49-47