Введение

Графический виджет (также графический элемент управления или управляющий элемент) в графическом пользовательском интерфейсе — это элемент взаимодействия, такой как кнопка или полоса прокрутки. Управляющие элементы — это программные компоненты, с которыми пользователь взаимодействует посредством непосредственного манипулирования для чтения или редактирования информации о приложении. Библиотеки пользовательского интерфейса, такие как Windows Presentation Foundation, Qt, GTK и Cocoa, содержат набор управляющих элементов и логику для их отрисовки. Каждый виджет обеспечивает определенный тип взаимодействия пользователя с компьютером и отображается как видимая часть графического интерфейса приложения, определяемая темой и отрисовываемая движком рендеринга. Тема обеспечивает единый эстетический дизайн для всех виджетов и создает ощущение общей согласованности. Некоторые виджеты поддерживают взаимодействие с пользователем, например, надписи, кнопки и флажки. Другие выступают в качестве контейнеров, группирующих добавленные в них виджеты, например, окна, панели и вкладки. Структурирование пользовательского интерфейса с помощью наборов инструментов виджетов позволяет разработчикам повторно использовать код для схожих задач и предоставляет пользователям общий язык взаимодействия, обеспечивая единообразие во всей информационной системе. Конструкторы графических пользовательских интерфейсов облегчают создание графических интерфейсов в режиме WYSIWYG с использованием языка разметки пользовательского интерфейса. Они автоматически генерируют весь исходный код виджета на основе общих описаний, предоставленных разработчиком, обычно посредством непосредственного манипулирования.

История

Около 1920 года термин "виджет" вошел в американский английский язык как обобщающее название для любого полезного устройства, особенно продукта, предназначенного для продажи; гаджета. В 1988 году термин "виджет" засвидетельствован в контексте проекта Athena и системы X Window System. В обзоре набора инструментов X, написанном Джоэлом МакКормаком и Полом Асенте, говорится: "Набор инструментов предоставляет библиотеку компонентов пользовательского интерфейса ("виджетов"), таких как текстовые метки, полосы прокрутки, кнопки команд и меню; позволяет программистам создавать новые виджеты; и обеспечивает средства для сборки виджетов в полноценный пользовательский интерфейс". В том же году в руководстве X Toolkit Widgets – C Language X Interface, написанном Ральфом Р. Свиком и Терри Вайсманом, сказано: "В X Toolkit виджет представляет собой комбинацию окна или под-окна X и связанных с ним семантик ввода-вывода". Наконец, также в 1988 году, Ральф Р. Свик и Марк С. Акерман объясняют происхождение термина "виджет": "Мы выбрали этот термин, поскольку все другие распространенные термины были перегружены нежелательными коннотациями. Однако мы предлагаем скептикам обратить внимание на то, что основная реализация виджета – это связанное с ним окно X, и общая начальная буква не лишена смысла".

Использование

Любой виджет отображает компоновку информации, изменяемую пользователем, например, окно или текстовое поле. Определяющей характеристикой виджета является предоставление единой точки взаимодействия для непосредственной манипуляции данными определенного типа. Иными словами, виджеты – это базовые визуальные строительные блоки, которые, объединенные в приложении, содержат все данные, обрабатываемые приложением, и доступные действия с этими данными. Виджеты графического интерфейса (GUI) – это графические элементы, используемые для создания человеко-машинного интерфейса программы. Виджеты графического интерфейса реализуются как программные компоненты. Наборы инструментов виджетов и программные фреймворки, такие как GTK+ или Qt, содержат их в программных библиотеках, чтобы программисты могли использовать их для создания графических интерфейсов для своих программ. Семейство общих многократно используемых виджетов сформировалось для хранения общей информации на основе исследований, проведенных Palo Alto Research Center Inc. для пользовательского интерфейса Xerox Alto. Различные реализации этих универсальных виджетов часто поставляются вместе в наборах инструментов виджетов, которые программисты используют для создания графических пользовательских интерфейсов (GUI). Большинство операционных систем включают набор готовых к настройке виджетов, которые программист может интегрировать в приложение, определяя их поведение. Каждый тип виджета обычно определяется как класс в объектно-ориентированном программировании (ООП). Следовательно, многие виджеты являются производными от наследования классов. В контексте приложения виджет может быть активирован или деактивирован в определенный момент времени. Активированный виджет способен реагировать на события, такие как нажатия клавиш или действия мыши. Виджет, который не может реагировать на такие события, считается деактивированным. Внешний вид виджета обычно меняется в зависимости от его состояния – активирован он или деактивирован; в деактивированном состоянии виджет может отображаться более светлым цветом («затемненным») или быть визуально скрыт иным способом. Пример представлен на соседнем изображении. Преимущество деактивации недоступных элементов управления, а не их полного скрытия, заключается в том, что пользователю показывается, что элемент управления существует, но в данный момент недоступен (с подразумеваемым условием, что изменение другого элемента управления может сделать его доступным), вместо того, чтобы пользователь мог потерять представление о том, где вообще находится этот элемент управления. Во всплывающих диалоговых окнах кнопки могут быть затемнены вскоре после появления, чтобы предотвратить случайные нажатия или непреднамеренные двойные касания. Виджеты иногда называют виртуальными, чтобы отличить их от физических аналогов, например, виртуальные кнопки, на которые можно нажать указателем, от физических кнопок, которые можно нажать пальцем (например, на компьютерной мыши). Связанной (но отличной) концепцией является виджет рабочего стола – небольшое специализированное графическое приложение, которое предоставляет некоторую визуальную информацию и/или легкий доступ к часто используемым функциям, таким как часы, календари, агрегаторы новостей, калькуляторы и заметки для рабочего стола. Эти виджеты размещаются в виджетном движке.