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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Спасено источников — 1, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ. #IABot (v2.0beta15)
м викификация
 
(не показана 31 промежуточная версия 16 участников)
Строка 1: Строка 1:
{{заголовок со строчной буквы}}
{{заголовок со строчной буквы}}
{{Карточка программы
{{Карточка программы
|name = wxWidgets
| name = wxWidgets
|logo = WxWidgets.svg
| logo = WxWidgets.svg
| developer = [https://wxwidgets.org/about/team/ Разработчики и участники]
|screenshot =
| genre = [[Библиотека (программирование)|библиотека]] [[элемент интерфейса|элементов интерфейса (виджетов)]]
|caption =
| programming_language = [[C++]], [[Perl]], [[Python]]
|author =
| language = На 37 языках, включая русский
|developer = [https://wxwidgets.org/about/team/ Разработчики и участники]
| 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_preview_version =
|latest_preview_date =
|latest_rc_version =
|latest_rc_date =
|latest_beta_version =
|latest_beta_date =
|latest_alpha_version =
|latest_alpha_date =
|status = Активное
|license = [https://www.wxwidgets.org/about/licence/ wxWidgets License] (совместима с [[GNU General Public License|GPL]])
|website = https://www.wxwidgets.org
}}
}}


'''wxWidgets''' (ранее известная как '''wxWindows''') — [[кроссплатформенное программное обеспечение|кроссплатформенная]] [[библиотека (программирование)|библиотека инструментов]] с [[открытое программное обеспечение|открытым исходным кодом]] для разработки [[Кроссплатформенное программное обеспечение|кроссплатформенных]] на уровне исходного кода приложений.
'''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), однако библиотека включает большое количество других функций и используется для создания весьма разнообразного ПО. 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>.


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


Такие развитые средства библиотеки wxWidgets позволяют писать программы на базе единого [[API]] и [[Компиляция (программирование)|компилировать]] на множестве компьютерных платформ с минимальными изменениями в [[исходный код|исходном коде]] либо вообще без них. Она поддерживает системы [[Windows|Microsoft Windows]], [[Mac OS|Apple Macintosh]], [[UNIX]]-подобные (для [[X11]], [[Motif]] и [[GTK+]]), [[OpenVMS]] и [[OS/2]]. [[Встраиваемая система|Встраиваемая (Embedded)]] версия находится в разработке.
Такие развитые средства библиотеки wxWidgets позволяют писать программы на базе единого [[API]] и [[Компиляция (программирование)|компилировать]] на множестве компьютерных платформ с минимальными изменениями в [[исходный код|исходном коде]] либо вообще без них. Она поддерживает системы [[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]]<ref>[http://www.haskell.org/haskellwiki/WxHaskell wxHaskell]</ref>, [[Lua]]<ref>[http://wxlua.sourceforge.net/ wxLua]</ref>.
Библиотека написана на [[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>.


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


== Краткая история wxWidgets ==
== Краткая история wxWidgets ==
Проект под названием wxWindows был основан в 1992 году, когда Джулиан Смарт работал в [[Эдинбургский университет|Эдинбургском Университете]] над инструментом [[Диаграмма|диаграммирования]] под названием «Hardy». Вместо того, чтобы выбирать между разработкой его для рабочей станции [[Sun Microsystems|Sun]] или для платформы PC, Джулиан предпочёл применить кроссплатформенный фреймворк. Поскольку мощность существующих кроссплатформенных фреймворков была ограничена, а отделение не имело необходимого бюджета для написания такового, то он решил написать его самостоятельно. Университет предоставил Джулиану доступ для закачки wxWindows 1.0 на [[FTP-сервер]] отделения в сентябре 1992, и другие разработчики начали использовать его код.
Проект под названием 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 — более удобный продукт с лучшей поддержкой, чем коммерческие продукты, которые они до этого видели или использовали.
Быстро появилось маленькое, однако полное энтузиазма сообщество программистов на wxWindows и обзавелось своей [[Список рассылки|почтовой рассылкой]]. Добавления и исправления получали распространение в рассылке. Постепенно расширялся круг пользовательской аудитории библиотеки по всему миру: индивидуальные программисты, академические группы, государственные учреждения и те, кто нашёл, что wxWindows — более удобный продукт с лучшей поддержкой, чем коммерческие продукты, которые они до этого видели или использовали.


Вначале wxWindows был нацелен на [[Xview]] и MFC 1.0. Пользователи [[Borland C++ Builder|Borland С++]], жаловавшиеся на привязку к MFC, таким образом, стали переписывать программы на чистый [[Win32]]. Поскольку XView открывал путь на [[Motif]], то перенос на Motif был запущен весьма оперативно.
Вначале wxWindows был нацелен на [[Xview]] и MFC 1.0. Пользователи [[Borland C++ Builder|Borland C++]], жаловавшиеся на привязку к MFC, таким образом, стали переписывать программы на чистый [[Win32]]. Поскольку XView открывал путь на [[Motif]], то перенос на Motif был запущен весьма оперативно.


В 1997 году новая версия wxWindows 2 API была спроектирована при помощи Маркуса Холзема (который ещё во времена создания рассылки создал Xt-направление wxWindows). Вольфрам Глогер предложил идею портирования wxWindows на [[GTK]]+, и Роберт Роблинг создал необходимые графические элементы пользователя, адаптированные для [[GNOME]]. Он стал основоположником разработки wxGTK, и поныне оставаясь главным специалистом в разработке Unix/Linux-порта wxWidgets.
В 1997 году новая версия wxWindows 2 API была спроектирована при помощи Маркуса Холзема (который ещё во времена создания рассылки создал Xt-направление wxWindows). Вольфрам Глогер предложил идею портирования wxWindows на [[GTK]], и Роберт Роблинг создал необходимые графические элементы пользователя, адаптированные для [[GNOME]]. Он стал основоположником разработки wxGTK, и поныне оставаясь главным специалистом в разработке Unix/Linux-порта wxWidgets.


В 1998 году порт для Windows и порт для GTK+ были совмещены и выложены под управлением системы [[CVS]]. Вадим Цейтлин присоединился к проекту, чтобы поспособствовать разработке огромной части дизайна и кода. Штефан Чомор также в 1998 начал создание порта на MacOS.
В 1998 году порт для Windows и порт для GTK были совмещены и выложены под управлением системы [[CVS]]. Вадим Цейтлин присоединился к проекту, чтобы поспособствовать разработке огромной части дизайна и кода. Штефан Чомор также в 1998 начал создание порта на MacOS.


1999 год обозначен приходом программиста с именем Вацлав Славик (Vaclav Slavik). Он создал внушительные wxHTML-классы и основанный на HTML просмотрщик [[Справочная система|справочных файлов]].
1999 год обозначен приходом программиста с именем Вацлав Славик (Vaclav Slavik). Он создал внушительные wxHTML-классы и основанный на HTML просмотрщик [[Справочная система|справочных файлов]].
Строка 77: Строка 66:
В июле 2003 года wxWindows начала запускаться на [[Windows CE]], а Роберт Ройблинг продемонстрировал wxGTK-приложение, запущенное на встраиваемой платформе GPE Linux.
В июле 2003 года wxWindows начала запускаться на [[Windows CE]], а Роберт Ройблинг продемонстрировал wxGTK-приложение, запущенное на встраиваемой платформе GPE Linux.


[[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=29 октября 2008|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]], задачей ставилась минимальная поддержка платформы.
[[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]], задачей ставилась минимальная поддержка платформы.


В апреле 2005 года была выпущена версия 2.6, в которой было осуществлено слияние всех основных портов фреймворка.
В апреле 2005 года была выпущена версия 2.6, в которой было осуществлено слияние всех основных портов фреймворка.
Строка 102: Строка 91:
== См. также ==
== См. также ==
* [[Qt]]
* [[Qt]]
* [[GTK+]]
* [[GTK]]
* [[FLTK]]
* [[FLTK]]
* [[Juce]]
* [[Juce]]
Строка 114: Строка 103:


== Ссылки ==
== Ссылки ==
{{Викиучебник|WxWidgets Hello World в Visual C++ и wxFormBuilder}}
{{Навигация
* [https://web.archive.org/web/20171024122235/http://wxwidgets.org/ Официальный сайт]
|Портал = Компьютерные технологии
|Портал2 = Свободное программное обеспечение
|Викисловарь =
|Викиучебник = ru:WxWidgets Hello World в Visual C++ и wxFormBuilder
|Викицитатник =
|Викитека =
|Викиновости =
|Метавики =
|Викисклад =
|Проект =
}}
* [https://www.wxwidgets.org/ Официальный сайт]
* [https://forums.wxwidgets.org Неофициальный форум]
* [https://forums.wxwidgets.org Неофициальный форум]
* Проекты поддержки языков программирования:
* Проекты поддержки языков программирования:
Строка 132: Строка 110:
** [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://webarchive.loc.gov/all/20090306104451/http%3A//wxruby.rubyforge.org/ wxRuby] — для [[Ruby|Руби]]
** [http://webarchive.loc.gov/all/20090306104451/http%3A//wxruby.rubyforge.org/ wxRuby] — для [[Ruby]]
** [https://web.archive.org/web/20090222235853/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]]
** [https://web.archive.org/web/20070812010111/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]]
Строка 149: Строка 127:
* [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, управление проектом и кодом С++, визуализирован практически весь функционал 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: Строка 146:
[[Категория:Библиотеки на основе X]]
[[Категория:Библиотеки на основе X]]
[[Категория:Свободные библиотеки программ]]
[[Категория:Свободные библиотеки программ]]
[[Категория:Кросс-платформенное программное обеспечение]]
[[Категория:Кроссплатформенное программное обеспечение]]
[[Категория:Программное обеспечение для Windows]]
[[Категория:Программное обеспечение для Windows]]
[[Категория:Программное обеспечение для Linux]]
[[Категория:Программное обеспечение для Linux]]

Текущая версия от 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 года.

Литература

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

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

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