WxWidgets: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Новая версия
м викификация
 
(не показано 85 промежуточных версий 45 участников)
Строка 1: Строка 1:
{{заголовок со строчной буквы}}
{{DISPLAYTITLE:wxWidgets}}
{{Карточка программы
{{Карточка программы
|name = wxWidgets
| name = wxWidgets
|logo = [[Файл:WxWidgets.svg|220 px]]
| logo = WxWidgets.svg
| developer = [https://wxwidgets.org/about/team/ Разработчики и участники]
|screenshot =
| genre = [[Библиотека (программирование)|библиотека]] [[элемент интерфейса|элементов интерфейса (виджетов)]]
|caption =
| programming_language = [[C++]], [[Perl]], [[Python]]
|author =
| language = На 37 языках, включая русский
|developer = [http://wxwidgets.org/whowhat.htm Разработчики и участники]
| operating_system = [[UNIX-подобная операционная система|UNIX-подобные]], [[Microsoft Windows|Windows]]
|genre = [[Библиотека (программирование)|библиотека]] [[элемент интерфейса|элементов интерфейса (виджетов)]]
| released =
|programming_language = [[C++]], [[Perl]], [[Python]]
| status = Активное
|language = На 37-ми языках, включая русский
| license = [https://wxwidgets.org/about/licence/ wxWidgets License] (совместима с [[GNU General Public License|GPL]])
|operating_system = [[UNIX-подобная операционная система|UNIX-подобные]], [[Microsoft Windows|Windows]]
| website = https://www.wxwidgets.org
|released =
| тестовая версия =
|platform =
|latest_release_version = 3.0.0
|latest_release_date = [[11 ноября]] [[2013]]
|latest_preview_version = 2.9.5
|latest_preview_date = [[16 июля]] [[2013]]
|latest_rc_version =
|latest_rc_date =
|latest_beta_version =
|latest_beta_date =
|latest_alpha_version =
|latest_alpha_date =
|status = Активное
|license = [http://wxwidgets.org/licence.htm wxWidgets License] (совместима с [[GNU General Public License|GPL]]<ref>http://www.wxwidgets.org/about/newlicen.htm {{ref-en}} — Разъяснение лицензии</ref>)
|website = [http://www.wxwidgets.org www.wxwidgets.org]
}}
}}


'''wxWidgets''' (ранее известная как '''wxWindows''') — это [[кросс-платформенное программное обеспечение|кросс-платформенная]] [[библиотека (программирование)|библиотека инструментов]] с [[открытое программное обеспечение|открытым исходным кодом]] для разработки [[Кроссплатформенное программное обеспечение|кроссплатформенных]] на уровне исходного кода приложений, в частности для построения [[графический интерфейс пользователя|графического интерфейса пользователя]] (GUI).
'''wxWidgets''' (ранее известная как '''wxWindows''') — [[кроссплатформенное программное обеспечение|кроссплатформенная]] [[библиотека (программирование)|библиотека инструментов]] с [[открытое программное обеспечение|открытым исходным кодом]] для разработки [[Кроссплатформенное программное обеспечение|кроссплатформенных]] на уровне исходного кода приложений.
Основным применением wxWidgets является построение [[графический интерфейс пользователя|графического интерфейса пользователя]] (GUI), однако библиотека включает большое количество других функций и используется для создания весьма разнообразного ПО. wxWidgets выпущена под лицензией, базирующейся на [[LGPL]]. Проект был начат в [[1992 год]]у Джулианом Смартом (Julian Smart), который до сих пор является членом основной группы разработчиков и уделяет ему внимание, в частности, разрабатывая среду построения графических интерфейсов на wxWidgets — DialogBlocks<ref>[http://www.juliansmart.com/about JulianSmart.com] {{webarchive|url=https://web.archive.org/web/20141126181844/http://www.juliansmart.com/about |date=2014-11-26 }}</ref>.


== Технические особенности и преимущества ==
wxWidgets разработана не только для того, чтобы создавать GUI. Она также имеет набор [[класс (программирование)|классов]] для работы с графическими изображениями, [[HTML]], [[XML]] документами, архивами, файловыми системами, [[Процесс (информатика)|процессами]], подсистемами печати, мультимедиа, [[компьютерная сеть|сетями]], классы для организации [[Многопоточность|многопоточности]], отладки, отправки дампов и множество других инструментов.
wxWidgets — это инструмент разработчика для написания настольных или мобильных приложений с [[графический интерфейс пользователя|графическим интерфейсом]] (GUI), который экономит много времени на написание [[Кроссплатформенное программное обеспечение|кроссплатформенных приложений]] и обеспечивает их стандартное поведение.


Приложения обычно показывают пользователю окна со стандартными [[Элемент интерфейса|элементами управления]], изображениями и графиками; реагируют на события от [[Компьютерная мышь|мыши]], [[Клавиатура компьютера|клавиатуры]] и других источников — эти стандартные интерфейсные функции легко реализуются при использовании wxWidgets и отходят на второй план, позволяя программисту сосредоточить свои усилия на функциональности приложения. Более того, поскольку на разных операционных системах и устройствах по-разному могут быть реализованы и другие функции, wxWidgets включает высокоуровневые средства (наборы классов) для работы с графическими изображениями, документами в форматах [[XML]] и [[HTML]], архивами, файловыми системами, [[Процесс (информатика)|процессами]], подсистемами печати, мультимедиа, [[компьютерная сеть|сетями]], классы для организации [[Многопоточность|многопоточности]], конфигурирования приложений, межпроцессного взаимодействия, доступа к [[база данных|базам данных]], отладки, отправки дампов и множество других инструментов.
Некоторые примеры приложений, построенных с использованием библиотеки wxWidgets: [[Code::Blocks]] (IDE), [[CodeLite]] (IDE), [[audacity]], [[BitWise IM]], [[Kirix Strata]], [[Valentina Studio]], [[UnrealEd]], [[Maxima|wxMaxima]], [[1С:Предприятие]] и многие другие.


Такие развитые средства библиотеки wxWidgets позволяют писать программы на базе единого [[API]] и [[Компиляция (программирование)|компилировать]] на множестве компьютерных платформ с минимальными изменениями в [[исходный код|исходном коде]] либо вообще без них. Она поддерживает системы [[Windows|Microsoft Windows]], [[Mac OS|Apple Macintosh]], [[UNIX]]-подобные (для [[X11]], [[Motif]] и [[GTK]]), [[OpenVMS]] и [[OS/2]]. [[Встраиваемая система|Встраиваемая (Embedded)]] версия находится в разработке.
wxWidgets выпущен под «разрешающей изменения (но явно одобренной [[Open Source Initiative|OSI]]) [[LGPL]]». <!-- WTF is this?? --> Проект был запущен в [[1992]] Юлианом Смартом (Julian Smart), который до сих пор остаётся главным разработчиком.


Библиотека написана на [[C++]], но может подключаться ко множеству других распространённых [[язык программирования|языков]], таких, как [[Ruby]] ([[wxRuby]], [[Anvil (GUI)|Anvil]]), [[Python]] ([[wxPython]]), [[Smalltalk]] ([[wxSqueak]]), [[Perl]], [[Erlang]], [[Haskell]]<ref>{{Cite web |url=http://www.haskell.org/haskellwiki/WxHaskell |title=wxHaskell |access-date=2009-10-01 |archive-date=2009-04-23 |archive-url=https://web.archive.org/web/20090423023110/http://haskell.org/haskellwiki/WxHaskell |deadlink=no }}</ref>, [[Lua]]<ref>{{Cite web |url=http://wxlua.sourceforge.net/ |title=wxLua |accessdate=2008-02-22 |archiveurl=https://web.archive.org/web/20100817175822/http://wxlua.sourceforge.net/ |archivedate=2010-08-17 |deadlink=yes }}</ref>.
== Поддерживаемые платформы и языки ==
wxWidgets позволяет [[компиляция|компилировать]] программы на множестве компьютерных платформ с минимальными изменениями в [[исходный код|исходном коде]], либо вообще без них. Она поддерживает системы [[Windows|Microsoft Windows]], [[Mac OS|Apple Macintosh]], [[UNIX]]-подобные (для [[X11]], [[Motif]] и [[GTK+]]), [[OpenVMS]] и [[OS/2]]. [[Встраиваемая система|Встраиваемая (Embedded)]] версия находится в разработке.

Библиотека разработана на [[C++]], но может подключаться ко множеству других распространённых [[язык программирования|языков]], таких, как [[Ruby]] ([[wxRuby]], [[Anvil (GUI)|Anvil]]), [[Python]] ([[wxPython]]), [[Smalltalk]] ([[wxSqueak]]), [[Perl]], [[Erlang]], [[Haskell]] ([http://www.haskell.org/haskellwiki/WxHaskell wxHaskell]).


Среди компиляторов [[C++]] поддерживаются:
Среди компиляторов [[C++]] поддерживаются:
Строка 50: Строка 36:
* [[Digital Mars]] C++
* [[Digital Mars]] C++


Важная особенность wxWidgets: в отличие от некоторых других библиотек ([[Swing]], [[Qt]] и др.), она максимально использует «родные» графические элементы интерфейса [[операционная система|операционной системы]] всюду, где это возможно. Это существенное преимущество для многих пользователей, поскольку они привыкают работать в конкретной среде, и изменения интерфейса программ часто вызывают затруднения в их работе.
== Инструментальные средства wxWidgets ==


Также wxWidgets обладает всеми преимуществами, присущими бесплатной свободной платформе:
wxWidgets — это инструмент разработчика для написания настольных или мобильных приложений с [[графический интерфейс пользователя|графическим интерфейсом]] (GUI). Этот фреймворк экономит много времени на написание [[Кроссплатформенное программное обеспечение|кроссплатформенных приложений]] и обеспечивает их стандартное поведение.
* нулевая стоимость позволяет легко использовать её небогатым малым фирмам и индивидуальным разработчикам и экономить бюджет крупным организациям;
* открытый исходный код обеспечивает чрезвычайно долгий срок жизни проекта даже при отходе от него первоначальных создателей, что позволяет гарантировать долгосрочное развитие и всех производных проектов;
* открытый код позволяет свободно производить его аудит (что важно для приложений, использующихся в критических сферах) и при необходимости самостоятельно модифицировать с добавлением нужных функций, не полагаясь на добрую волю исходного разработчика. Этот момент особенно ценен для внутрикорпоративного применения.


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


Все вышеперечисленные особенности способствовали популярности библиотеки у самых разных разработчиков — от программистов-энтузиастов до крупных корпораций и государственных учреждений (в числе которых [[Xerox]], [[AMD]], [[NASA]] и многие другие).
Пока wxWidgets называют инструментарием разработки [[графический интерфейс пользователя|графических интерфейсов пользователя]], он действительно им является. Однако на самом деле он не ограничивается этим — фреймворк реализует многие аспекты программирования. И это не является избыточностью, так как от wxWidgets требуется, чтобы приложения целиком были переносимыми на разные платформы, а не только их графическая часть. wxWidgets предоставляет классы для [[файл]]ов, [[поток]]ов, [[многопоточность|многопоточности]], конфигурирования приложений, межпроцессного взаимодействия, доступа к [[база данных|базам данных]] и многое другое.

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

Особенность, которая отличает wxWidgets от многих других фреймворков, таких как [[MFC]] и [[ObjectWindows Library|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 ==
Проект под названием wxWindows (w от [[Windows]], x от [[X Window System]])<ref>{{Cite web|url=https://www.wxwidgets.org/about/history/|title=History - wxWidgets|website=www.wxwidgets.org|access-date=2023-03-31|archive-date=2023-03-31|archive-url=https://web.archive.org/web/20230331235632/https://www.wxwidgets.org/about/history/|deadlink=no}}</ref> был основан в 1992 году, когда Джулиан Смарт работал в [[Эдинбургский университет|Эдинбургском Университете]] над инструментом [[Диаграмма|диаграммирования]] под названием «Hardy». Вместо того, чтобы выбирать между разработкой его для рабочей станции [[Sun Microsystems|Sun]] или для платформы PC, Джулиан предпочёл применить кроссплатформенный фреймворк. Поскольку мощность существующих кроссплатформенных фреймворков была ограничена, а отделение не имело необходимого бюджета для написания такового, то он решил написать его самостоятельно. Университет предоставил Джулиану доступ для закачки wxWindows 1.0 на [[FTP-сервер]] отделения в сентябре 1992, и другие разработчики начали использовать его код.


Быстро появилось маленькое, однако полное энтузиазма сообщество программистов на wxWindows и обзавелось своей [[Список рассылки|почтовой рассылкой]]. Добавления и исправления получали распространение в рассылке. Постепенно расширялся круг пользовательской аудитории библиотеки по всему миру: индивидуальные программисты, академические группы, государственные учреждения и те, кто нашёл, что wxWindows — более удобный продукт с лучшей поддержкой, чем коммерческие продукты, которые они до этого видели или использовали.
Проект wxWidgets был основан в 1992 году, когда Джулиан Смарт работал в Эдинбургском Университете над инструментом диаграммирования под названием «Hardy». Он не пожелал выбирать между разработкой его для рабочей станции Sun или для платформы PC, он предпочел написать кросс-платформенный фреймворк.


Вначале wxWindows был нацелен на [[Xview]] и MFC 1.0. Пользователи [[Borland C++ Builder|Borland C++]], жаловавшиеся на привязку к MFC, таким образом, стали переписывать программы на чистый [[Win32]]. Поскольку XView открывал путь на [[Motif]], то перенос на Motif был запущен весьма оперативно.
Поскольку мощность существующих кросс-платформенных фреймворков была ограничена, а отделение не имело необходимого бюджета для написания такового в любом случае, то он решил написать такой самостоятельно. Университет предоставил ему доступ для закачки 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.
В 1997 году новая версия wxWindows 2 API была спроектирована при помощи Маркуса Холзема (который ещё во времена создания рассылки создал Xt-направление wxWindows). Вольфрам Глогер предложил идею портирования wxWindows на [[GTK]], и Роберт Роблинг создал необходимые графические элементы пользователя, адаптированные для [[GNOME]]. Он стал основоположником разработки wxGTK, и поныне оставаясь главным специалистом в разработке Unix/Linux-порта wxWidgets.
В 1998 году порт для Windows и порт для GTK+ были совмещены и выложены под управлением CVS системы. Вадим Зейтлин присоединился к проекту, чтобы поспособоствовать огромной части дизайна и кода, а также Стефан Ксомор начал создание MAC OS порта, тоже в 1998.
1999 обозначен приходом программиста с именем Vaclav Slavik. Он создал внушительные wxHTML классы и основанный на HTML просмотрщик справочных файлов.


В 1998 году порт для Windows и порт для GTK были совмещены и выложены под управлением системы [[CVS]]. Вадим Цейтлин присоединился к проекту, чтобы поспособствовать разработке огромной части дизайна и кода. Штефан Чомор также в 1998 начал создание порта на MacOS.
В 2000 году фирма SciTech Inc. профинансировала начало разработки wxUniversal — собственный для wxWidgets набор графических элементов пользователя для использования на платформах, у которых пока что нет никаких графических элементов пользователя. wxUniversal стал первым используемым в этой фирме портом для [[MGL]], их низкоуровневому графическому слою.


1999 год обозначен приходом программиста с именем Вацлав Славик (Vaclav Slavik). Он создал внушительные wxHTML-классы и основанный на HTML просмотрщик [[Справочная система|справочных файлов]].
В 2002 году Джулиан Смарт и Роберт Ройблинг добавил wxX11 порт, используя wxUniversal графические элементы пользовательского интерфейса.


В 2000 году фирма [[SciTech Inc.]] профинансировала начало разработки wxUniversal — собственный для wxWindows набор графических элементов пользователя для использования на платформах, у которых пока что нет никаких графических элементов пользователя.
В июле 2003 года wxWidgets начал запускаться на Windows CE, а Роберт Ройблинг продемонстрировал wxGTK приложение, запущенное на встраиваемой платформе GPE Linux.


В 2002 году Джулиан Смарт и Роберт Ройблинг добавили порт wxX11, используя wxUniversal.
[[20 февраля]] [[2004]] г. разработчики wxWindows предупредили, что проект будет переименован в ''wxWidgets'' как результат переговоров [[Майкрософт]] и Юлиана Смарта в связи с зарезервированной Майкрософт [[торговая марка|торговой маркой]] [[Windows]] (за смену имени разработчики wxWidgets и других связанных проектов получили денежную компенсацию).<ref>{{cite web|url=http://wxwidgets.org/name.htm|title=wxWidgets Name Change|lang=en|description=Смена имени на wxWidgets|accessdate=29 октября 2008|archiveurl=http://www.webcitation.org/61FiSLnKf|archivedate=2011-08-27}}</ref>


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


[[20 февраля]] [[2004]] г. разработчики wxWindows предупредили, что проект будет переименован в ''wxWidgets'' как результат переговоров «[[Майкрософт]]» и Джулиана Смарта в связи с зарезервированной «Майкрософт» [[торговая марка|торговой маркой]] [[Windows]] (за смену имени разработчики wxWidgets и других связанных проектов получили денежную компенсацию)<ref>{{cite web|url=https://www.wxwidgets.org/about/name-change/|title=wxWidgets Name Change|lang=en|description=Смена имени на wxWidgets|accessdate=2008-10-29|archiveurl=https://www.webcitation.org/61FiSLnKf?url=http://wxwidgets.org/about/name.htm|archivedate=2011-08-27}}</ref>. Также в 2004 Штефан Чомор и его помощники успешно завершили перенос wxWidgets (wxMac) на MAC OS X, значительно расширив функциональные возможности приложений для OS X. Порт, использующий Cocoa, был заметно улучшен (направление возглавляли Дэвид Эллиот и Уильям Осборн). Уильям Осборн выиграл конкурс по созданию версии wxWidgets для [[Palm OS|Palm OS 6]], задачей ставилась минимальная поддержка платформы.
Виллиам Осборн выиграл конкурс по созданию версии wxWidgets для Palm OS 6, задачей ставилась минимальная поддержка платформы.


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

== Недостатки wxWidgets ==
Основным недостатком wxWidgets был недостаток документации. Так, на официальном сайте в разделе «Документация» по многим классам не было справки вообще{{привести цитату|29|01|2012}}, либо справка ограничивалась одной-двумя строками.<ref>{{cite web|url=http://docs.wxwidgets.org/stable/wx_wxgridtablebase.html|title=wxGridTableBase documentation|lang=en|description=пример справки|accessdate=31 мая 2010|archiveurl=http://www.webcitation.org/61FiSoeJC|archivedate=2011-08-27}}</ref>. Но начиная с версии 2.9.0 документация была переведена на использование [[Doxygen]]<ref>[http://docs.wxwidgets.org/trunk/index.html wxWidgets: wxWidgets: Documentation<!-- Заголовок добавлен ботом -->]</ref> и была радикально переработана<ref>[http://docs.wxwidgets.org/trunk/classwx_grid_table_base.html wxWidgets: wxWidgets: wxGridTableBase Class Reference<!-- Заголовок добавлен ботом -->]</ref>
{{достоверность}}
Исходный код примеров плохо оформлен и трудно читается{{привести цитату|29|01|2012}}. Некоторые технические нюансы вообще не освещены справочными материалами{{привести цитату|29|01|2012}}.


== Распространённое ПО, написанное на wxWidgets ==
== Распространённое ПО, написанное на wxWidgets ==

: ''См. также [[:Категория:Приложения, использующие WxWidgets]]''
: ''См. также [[:Категория:Приложения, использующие WxWidgets]]''


* [[Amaya]] — веб-браузер и редактор
* [[Amaya]] — веб-браузер и редактор
* [[aMule]] — клиент файлообменной сети
* [[aMule]] — клиент файлообменной сети
* [[Aegisub]] — кроссплатформенный редактор субтитров
* [[Audacity]] — звуковой редактор
* [[Audacity]] — звуковой редактор
* [[BitTorrent (программа)|BitTorrent]] — клиент файлообменной сети
* [[BitTorrent (программа)|BitTorrent]] — клиент файлообменной сети
Строка 117: Строка 84:
* [[KiCad]] — программа разводки печатных плат
* [[KiCad]] — программа разводки печатных плат
* [[RapidSVN]] — клиент [[Subversion]]
* [[RapidSVN]] — клиент [[Subversion]]
* [[TrueCrypt]] — программа для шифрования
* [[TortoiseCVS]] — клиент [[CVS]]
* [[Maxima|wxMaxima]] — система компьютерной алгебры
* [[UnrealEd]] — редактор для [[Unreal Engine]]
* и многие другие.


== См. также ==
== См. также ==
* [[Qt]]
* [[Qt]]
* [[GTK+]]
* [[GTK]]
* [[FLTK]]
* [[FLTK]]
* [[Juce]]
* [[Juce]]
Строка 129: Строка 99:


== Литература ==
== Литература ==
* ''Боровский А.'' [http://wiki.linuxformat.ru/index.php/LXF98:wxWidgets wxWidgets. Часть 1: Живая история] // [[Linux Format]] : Журнал. — ноябрь 2007. — № 11 (98). — С. 84—87.
* ''Боровский А.'' [http://wiki.linuxformat.ru/wiki/LXF98:wxWidgets wxWidgets. Часть 1: Живая история] // [[Linux Format]] : Журнал. — ноябрь 2007. — № 11 (98). — С. 84—87.
* ''Боровский А.'' [http://wiki.linuxformat.ru/index.php/LXF99:wxWidgets wxWidgets. Часть 2: Основы применения] // [[Linux Format]] : Журнал. — декабрь 2007. — № 12 (99). — С. 90—93.
* ''Боровский А.'' [http://wiki.linuxformat.ru/wiki/LXF99:wxWidgets wxWidgets. Часть 2: Основы применения] // [[Linux Format]] : Журнал. — декабрь 2007. — № 12 (99). — С. 90—93.


== Ссылки ==
== Ссылки ==
{{Викиучебник|WxWidgets Hello World в Visual C++ и wxFormBuilder}}
* [http://wxwidgets.org/ Официальный сайт]
* [http://forums.wxwidgets.org Неофициальный форум]
* [https://web.archive.org/web/20171024122235/http://wxwidgets.org/ Официальный сайт]
* [https://forums.wxwidgets.org Неофициальный форум]
* Проекты поддержки языков программирования:
* Проекты поддержки языков программирования:
** [http://wxbasic.net/ wxBasic] — для [[Бейсик]]
** [http://wxbasic.net/ wxBasic] — для [[Бейсик]]
** [http://wxperl.sourceforge.net/ wxPerl] — для [[Perl]]
** [http://wxperl.sourceforge.net/ wxPerl] — для [[Perl]]
** [http://www.wxpython.org/ wxPython] — для [[Python]]
** [http://www.wxpython.org/ wxPython] — для [[Python]]
** [http://wxruby.rubyforge.org/ wxRuby] — для [[Ruby|Руби]]
** [http://webarchive.loc.gov/all/20090306104451/http%3A//wxruby.rubyforge.org/ wxRuby] — для [[Ruby]]
** [http://rubyforge.org/projects/anvil/ Anvil] — для [[Ruby|Руби]], на базе wxRuby, с улучшеным синтаксисом
** [https://web.archive.org/web/20090222235853/http://rubyforge.org/projects/anvil Anvil] — для Ruby, на базе wxRuby, с улучшеным синтаксисом
** [http://www.wxsqueak.org/ wxSqueak] — для [[Smalltalk]]
** [https://web.archive.org/web/20100913031514/http://www.wxsqueak.org/ wxSqueak] — для [[Smalltalk]]
** [http://wxlua.sourceforge.net/ wxLua] — для [[Lua]]
** [https://web.archive.org/web/20100817175822/http://wxlua.sourceforge.net/ wxLua] — для [[Lua]]
** [http://jwx.sourceforge.net/ wx4j] — для [[Java]]
** [http://jwx.sourceforge.net/ wx4j] — для [[Java]]
** [http://wxjs.sourceforge.net/ wxJS] — для [[JavaScript]]
** [http://wxjs.sourceforge.net/ wxJS] {{Wayback|url=http://wxjs.sourceforge.net/ |date=20060206060948 }} — для [[JavaScript]]
** [http://wxhaskell.sourceforge.net/ wxHaskell] — для [[Haskell]]
** [http://wxhaskell.sourceforge.net/ wxHaskell] — для [[Haskell]]
** [http://elj.sourceforge.net/projects/gui/ewxw/ wxEiffel] — для [[Эйфель (язык программирования)|Эйфель]]
** [http://elj.sourceforge.net/projects/gui/ewxw/ wxEiffel] — для [[Эйфель (язык программирования)|Эйфель]]
** [http://wxd.sourceforge.net/ wxD] — для [[D (язык программирования)|D]]
** [https://web.archive.org/web/20100820021606/http://wxd.sourceforge.net/ wxD] — для [[D (язык программирования)|D]]
** [http://wxnet.sourceforge.net/ wx.NET] — для [[Microsoft .NET|.NET]]
** [https://web.archive.org/web/20100825110129/http://wxnet.sourceforge.net/ wx.NET] — для [[Microsoft .NET|.NET]]
** [http://wxerlang.sourceforge.net/ wxErlang] — для [[Erlang]]
** [https://web.archive.org/web/20070812010111/http://wxerlang.sourceforge.net/ wxErlang] — для [[Erlang]]
** [http://wxeuphoria.sourceforge.net/ wxEuphoria] — для [[Euphoria (язык программирования)|Euphoria]]
** [http://wxeuphoria.sourceforge.net/ wxEuphoria] — для [[Euphoria (язык программирования)|Euphoria]]
* [http://wxglade.sourceforge.net/ wxGlade] — графический редактор форм для wxWidgets.
* [http://sourceforge.net/projects/wxglade/ wxGlade] — графический редактор форм для wxWidgets.
* [http://wxdsgn.sourceforge.net wxDev-C++] — [[Dev-C++]] [[Среда разработки программного обеспечения|IDE]] с редактором форм для wxWidgets
* [http://wxdsgn.sourceforge.net wxDev-C++] — [[Dev-C++]] [[Среда разработки программного обеспечения|IDE]] с редактором форм для wxWidgets
* [http://visualwx.altervista.org/ visualwx] — Ещё один редактор форм и генератор кода для wxWidgets
* [http://visualwx.altervista.org/ visualwx] — Ещё один редактор форм и генератор кода для wxWidgets
* [http://www.wxformbuilder.org/ wxFormBuilder] — OpenSource дизайнер форм, и RAD инструмент для wxWidgets
* [http://www.wxformbuilder.org/ wxFormBuilder] — OpenSource дизайнер форм, и RAD инструмент для wxWidgets
* [http://www.dialogblocks.com/ DialogBlocks] — ShareWare конструктор диалогов wxWidgets с удобным визуальным интерфейсом
* [http://www.dialogblocks.com/ DialogBlocks] — ShareWare конструктор диалогов wxWidgets с удобным визуальным интерфейсом
* [http://codeblocks.org Code::Blocks] — OpenSource C++ IDE (на базе wxWidgets) c RAD средством разработки wxSmith. Включает конструктор GUI, управление проектом и кодом C++, визуализированы практически все возможности wxWidgets.


== Справочная документация ==
== Справочная документация ==
* [http://wxwidgets.info Всё о кросс-платформенном программировании с wxWidgets ]{{ref-en}} — Тематический сайт о кросс-платформенной разработке программного обеспечения с использованием библиотеки wxWidgets. Статьи, руководства, видеоуроки, дополнительные компоненты и библиотеки.
* [http://wxwidgets.info Всё о кроссплатформенном программировании с wxWidgets ]{{ref-en}} — Тематический сайт о кроссплатформенной разработке программного обеспечения с использованием библиотеки wxWidgets. Статьи, руководства, видеоуроки, дополнительные компоненты и библиотеки.
* [http://www.realcoding.net/article/rubric/wxwidgets wxWidgets на RealCoding ]{{ref-ru}} — Серия статей по wxWidgets на русском языке.
* [http://www.realcoding.net/article/rubric/wxwidgets wxWidgets на RealCoding ]{{ref-ru}} — Серия статей по wxWidgets на русском языке.
* [http://www.informit.com/title/0131473816 ''Cross-Platform GUI Programming with wxWidgets'']{{ref-en}} — первая опубликованная книга, описывающая работу с wxWidgets.
* [http://www.informit.com/title/0131473816 ''Cross-Platform GUI Programming with wxWidgets'']{{ref-en}} — первая опубликованная книга, описывающая работу с wxWidgets.
* [http://www.informit.com/articles/article.asp?p=405047&rl=1 Drawing and Printing in C++ with wxWidgets]{{ref-en}} — статья описывает идею контекста устройства, разъясняет концепцию области рисования вроде окна или печатаемой страницы. Она обсуждает доступные классы контекстов устройств и набор «инструментов рисования», которые wxWidgets предоставляет для работы со [[шрифт]]ами, [[цвет]]ом, рисованием примитивов, и закраски областей.
* [http://www.informit.com/articles/article.asp?p=405047&rl=1 Drawing and Printing in C++ with wxWidgets]{{ref-en}} — статья описывает идею контекста устройства, разъясняет концепцию области рисования вроде окна или печатаемой страницы. Она обсуждает доступные классы контекстов устройств и набор «инструментов рисования», которые wxWidgets предоставляет для работы со [[шрифт]]ами, [[цвет]]ом, рисованием примитивов, и закраски областей.
* [http://www.ibm.com/developerworks/ru/library/l-wxwidgets/index.html Создание кросс-платформенных GUI-приложений с использованием wxWidgets]{{ref-ru}} — основы создания GUI-приложений на базе wxWidgets.
* [http://www.ibm.com/developerworks/ru/library/l-wxwidgets/index.html Создание кроссплатформенных GUI-приложений с использованием wxWidgets]{{ref-ru}} — основы создания GUI-приложений на базе wxWidgets.
* [http://wxdevcpp-book.sourceforge.net/ Programming with wxDev-C++]{{ref-en}} — книга на английском языке, в которой описывается программирование с использованием wxWidgets в среде wxDev-C++.
* [http://wxdevcpp-book.sourceforge.net/ Programming with wxDev-C++]{{ref-en}} — книга на английском языке, в которой описывается программирование с использованием wxWidgets в среде wxDev-C++.
* [http://begemotov.net/wxwidgets/ Использование wxWidgets]{{ref-ru}} — Блог, посвященный программированию с использованием wxWidgets
* [http://begemotov.net/wxwidgets/ Использование wxWidgets]{{ref-ru}} — Блог, посвященный программированию с использованием wxWidgets
Строка 168: Строка 140:
<!-- * [http://www.mechta34.com/it/wx/index.html Ю. В. Земсков. Программирование на C++ с использованием библиотеки wxWidgets]{{ref-ru}} — книга на русском языке, посвященная программированию с применением библиотеки wxWidgets на C++. ссылка мертва -->
<!-- * [http://www.mechta34.com/it/wx/index.html Ю. В. Земсков. Программирование на C++ с использованием библиотеки wxWidgets]{{ref-ru}} — книга на русском языке, посвященная программированию с применением библиотеки wxWidgets на C++. ссылка мертва -->


{{compu-prog-stub}}
{{compu-soft-stub}}
{{WxWidgets}}
{{WxWidgets}}
{{Инструментарии виджетов}}
{{Инструментарии виджетов}}
Строка 179: Строка 149:
[[Категория:Программное обеспечение для Windows]]
[[Категория:Программное обеспечение для Windows]]
[[Категория:Программное обеспечение для Linux]]
[[Категория:Программное обеспечение для Linux]]
[[Категория:Программное обеспечение для Mac OS X]]
[[Категория:Программное обеспечение для macOS]]
[[Категория:Библиотеки C++]]
[[Категория:Библиотеки C++]]
[[Категория:Свободное программное обеспечение, написанное на C++]]
[[Категория:Свободное программное обеспечение, написанное на C++]]

Текущая версия от 19:11, 16 августа 2024

wxWidgets
Логотип программы wxWidgets
Тип библиотека элементов интерфейса (виджетов)
Разработчик Разработчики и участники
Написана на C++, Perl, Python
Операционные системы UNIX-подобные, Windows
Языки интерфейса На 37 языках, включая русский
Последняя версия
Репозиторий github.com/wxWidgets/wxW…
Состояние Активное
Лицензия 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++ поддерживаются:

Важная особенность wxWidgets: в отличие от некоторых других библиотек (Swing, Qt и др.), она максимально использует «родные» графические элементы интерфейса операционной системы всюду, где это возможно. Это существенное преимущество для многих пользователей, поскольку они привыкают работать в конкретной среде, и изменения интерфейса программ часто вызывают затруднения в их работе.

Также wxWidgets обладает всеми преимуществами, присущими бесплатной свободной платформе:

  • нулевая стоимость позволяет легко использовать её небогатым малым фирмам и индивидуальным разработчикам и экономить бюджет крупным организациям;
  • открытый исходный код обеспечивает чрезвычайно долгий срок жизни проекта даже при отходе от него первоначальных создателей, что позволяет гарантировать долгосрочное развитие и всех производных проектов;
  • открытый код позволяет свободно производить его аудит (что важно для приложений, использующихся в критических сферах) и при необходимости самостоятельно модифицировать с добавлением нужных функций, не полагаясь на добрую волю исходного разработчика. Этот момент особенно ценен для внутрикорпоративного применения.

Более того, крайне «либеральная» лицензия wxWidgets допускает линковку с несвободными фрагментами кода, что позволяет использовать её и в закрытых коммерческих проектах.

Все вышеперечисленные особенности способствовали популярности библиотеки у самых разных разработчиков — от программистов-энтузиастов до крупных корпораций и государственных учреждений (в числе которых Xerox, AMD, NASA и многие другие).

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

[править | править код]

Проект под названием wxWindows (w от Windows, x от X Window System)[5] был основан в 1992 году, когда Джулиан Смарт работал в Эдинбургском Университете над инструментом диаграммирования под названием «Hardy». Вместо того, чтобы выбирать между разработкой его для рабочей станции Sun или для платформы PC, Джулиан предпочёл применить кроссплатформенный фреймворк. Поскольку мощность существующих кроссплатформенных фреймворков была ограничена, а отделение не имело необходимого бюджета для написания такового, то он решил написать его самостоятельно. Университет предоставил Джулиану доступ для закачки wxWindows 1.0 на FTP-сервер отделения в сентябре 1992, и другие разработчики начали использовать его код.

Быстро появилось маленькое, однако полное энтузиазма сообщество программистов на wxWindows и обзавелось своей почтовой рассылкой. Добавления и исправления получали распространение в рассылке. Постепенно расширялся круг пользовательской аудитории библиотеки по всему миру: индивидуальные программисты, академические группы, государственные учреждения и те, кто нашёл, что wxWindows — более удобный продукт с лучшей поддержкой, чем коммерческие продукты, которые они до этого видели или использовали.

Вначале wxWindows был нацелен на Xview и MFC 1.0. Пользователи Borland C++, жаловавшиеся на привязку к 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 и других связанных проектов получили денежную компенсацию)[6]. Также в 2004 Штефан Чомор и его помощники успешно завершили перенос wxWidgets (wxMac) на MAC OS X, значительно расширив функциональные возможности приложений для OS X. Порт, использующий Cocoa, был заметно улучшен (направление возглавляли Дэвид Эллиот и Уильям Осборн). Уильям Осборн выиграл конкурс по созданию версии wxWidgets для Palm OS 6, задачей ставилась минимальная поддержка платформы.

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

Распространённое ПО, написанное на wxWidgets

[править | править код]
См. также Категория:Приложения, использующие WxWidgets
  • Amaya — веб-браузер и редактор
  • aMule — клиент файлообменной сети
  • Aegisub — кроссплатформенный редактор субтитров
  • Audacity — звуковой редактор
  • BitTorrent — клиент файлообменной сети
  • Code::Blocks — интегрированная среда разработки
  • CodeLite — редактор для программистов
  • Dolphin — эмулятор игровых приставок
  • FileZilla — FTP-клиент
  • KiCad — программа разводки печатных плат
  • RapidSVN — клиент Subversion
  • TrueCrypt — программа для шифрования
  • wxMaxima — система компьютерной алгебры
  • UnrealEd — редактор для Unreal Engine
  • и многие другие.

Примечания

[править | править код]
  1. Release 3.2.6 — 2024.
  2. JulianSmart.com Архивировано 26 ноября 2014 года.
  3. wxHaskell. Дата обращения: 1 октября 2009. Архивировано 23 апреля 2009 года.
  4. wxLua. Дата обращения: 22 февраля 2008. Архивировано из оригинала 17 августа 2010 года.
  5. History - wxWidgets. www.wxwidgets.org. Дата обращения: 31 марта 2023. Архивировано 31 марта 2023 года.
  6. wxWidgets Name Change (англ.). — Смена имени на wxWidgets. Дата обращения: 29 октября 2008. Архивировано 27 августа 2011 года.

Литература

[править | править код]

Справочная документация

[править | править код]