Введение
Графический виджет (также графический элемент управления или управляющий элемент) в графическом пользовательском интерфейсе — это элемент взаимодействия, такой как кнопка или полоса прокрутки. Управляющие элементы — это программные компоненты, с которыми пользователь взаимодействует посредством непосредственного манипулирования для чтения или редактирования информации о приложении. Библиотеки пользовательского интерфейса, такие как Windows Presentation Foundation, Qt, GTK и Cocoa, содержат набор управляющих элементов и логику для их отрисовки. Каждый виджет обеспечивает определенный тип взаимодействия пользователя с компьютером и отображается как видимая часть графического интерфейса приложения, определяемая темой и отрисовываемая движком рендеринга. Тема обеспечивает единый эстетический дизайн для всех виджетов и создает ощущение общей согласованности. Некоторые виджеты поддерживают взаимодействие с пользователем, например, надписи, кнопки и флажки. Другие выступают в качестве контейнеров, группирующих добавленные в них виджеты, например, окна, панели и вкладки. Структурирование пользовательского интерфейса с помощью наборов инструментов виджетов позволяет разработчикам повторно использовать код для схожих задач и предоставляет пользователям общий язык взаимодействия, обеспечивая единообразие во всей информационной системе. Конструкторы графических пользовательских интерфейсов облегчают создание графических интерфейсов в режиме WYSIWYG с использованием языка разметки пользовательского интерфейса. Они автоматически генерируют весь исходный код виджета на основе общих описаний, предоставленных разработчиком, обычно посредством непосредственного манипулирования.
A graphical widget (also graphical control element or control) in a graphical user interface is an element of interaction, such as a button or a scroll bar. Controls are software components that a computer user interacts with through direct manipulation to read or edit information about an application. User interface libraries such as Windows Presentation Foundation, Qt, GTK, and Cocoa, contain a collection of controls and the logic to render these. Each widget facilitates a specific type of user computer interaction, and appears as a visible part of the application's GUI as defined by the theme and rendered by the rendering engine. The theme makes all widgets adhere to a unified aesthetic design and creates a sense of overall cohesion. Some widgets support interaction with the user, for example labels, buttons, and check boxes. Others act as containers that group the widgets added to them, for example windows, panels, and tabs. Structuring a user interface with widget toolkits allows developers to reuse code for similar tasks, and provides users with a common language for interaction, maintaining consistency throughout the whole information system. Graphical user interface builders facilitate the authoring of GUIs in a WYSIWYG manner employing a user interface markup language. They automatically generate all the source code for a widget from general descriptions provided by the developer, usually through direct manipulation.
История
Около 1920 года термин "виджет" вошел в американский английский язык как обобщающее название для любого полезного устройства, особенно продукта, предназначенного для продажи; гаджета. В 1988 году термин "виджет" засвидетельствован в контексте проекта Athena и системы X Window System. В обзоре набора инструментов X, написанном Джоэлом МакКормаком и Полом Асенте, говорится: "Набор инструментов предоставляет библиотеку компонентов пользовательского интерфейса ("виджетов"), таких как текстовые метки, полосы прокрутки, кнопки команд и меню; позволяет программистам создавать новые виджеты; и обеспечивает средства для сборки виджетов в полноценный пользовательский интерфейс". В том же году в руководстве X Toolkit Widgets – C Language X Interface, написанном Ральфом Р. Свиком и Терри Вайсманом, сказано: "В X Toolkit виджет представляет собой комбинацию окна или под-окна X и связанных с ним семантик ввода-вывода". Наконец, также в 1988 году, Ральф Р. Свик и Марк С. Акерман объясняют происхождение термина "виджет": "Мы выбрали этот термин, поскольку все другие распространенные термины были перегружены нежелательными коннотациями. Однако мы предлагаем скептикам обратить внимание на то, что основная реализация виджета – это связанное с ним окно X, и общая начальная буква не лишена смысла".
The toolkit provides a library of user interface components ("widgets") like text labels, scroll bars, command buttons, and menus; enables programmers to write new widgets; and provides the glue to assemble widgets into a complete user interface. The same year, in the manual X Toolkit Widgets C Language X Interface by Ralph R. Swick and Terry Weissman, it says:
In the X Toolkit, a widget is the combination of an X window or sub window and its associated input and output semantics. Finally, still in the same year, Ralph R. Swick and Mark S. Ackerman explain where the term widget came from:
We chose this term since all other common terms were overloaded with inappropriate connotations. We offer the observation to the skeptical, however, that the principal realization of a widget is its associated X window and the common initial letter is not un useful.
Использование
Любой виджет отображает компоновку информации, изменяемую пользователем, например, окно или текстовое поле. Определяющей характеристикой виджета является предоставление единой точки взаимодействия для непосредственной манипуляции данными определенного типа. Иными словами, виджеты – это базовые визуальные строительные блоки, которые, объединенные в приложении, содержат все данные, обрабатываемые приложением, и доступные действия с этими данными. Виджеты графического интерфейса (GUI) – это графические элементы, используемые для создания человеко-машинного интерфейса программы. Виджеты графического интерфейса реализуются как программные компоненты. Наборы инструментов виджетов и программные фреймворки, такие как GTK+ или Qt, содержат их в программных библиотеках, чтобы программисты могли использовать их для создания графических интерфейсов для своих программ. Семейство общих многократно используемых виджетов сформировалось для хранения общей информации на основе исследований, проведенных Palo Alto Research Center Inc. для пользовательского интерфейса Xerox Alto. Различные реализации этих универсальных виджетов часто поставляются вместе в наборах инструментов виджетов, которые программисты используют для создания графических пользовательских интерфейсов (GUI). Большинство операционных систем включают набор готовых к настройке виджетов, которые программист может интегрировать в приложение, определяя их поведение. Каждый тип виджета обычно определяется как класс в объектно-ориентированном программировании (ООП). Следовательно, многие виджеты являются производными от наследования классов. В контексте приложения виджет может быть активирован или деактивирован в определенный момент времени. Активированный виджет способен реагировать на события, такие как нажатия клавиш или действия мыши. Виджет, который не может реагировать на такие события, считается деактивированным. Внешний вид виджета обычно меняется в зависимости от его состояния – активирован он или деактивирован; в деактивированном состоянии виджет может отображаться более светлым цветом («затемненным») или быть визуально скрыт иным способом. Пример представлен на соседнем изображении. Преимущество деактивации недоступных элементов управления, а не их полного скрытия, заключается в том, что пользователю показывается, что элемент управления существует, но в данный момент недоступен (с подразумеваемым условием, что изменение другого элемента управления может сделать его доступным), вместо того, чтобы пользователь мог потерять представление о том, где вообще находится этот элемент управления. Во всплывающих диалоговых окнах кнопки могут быть затемнены вскоре после появления, чтобы предотвратить случайные нажатия или непреднамеренные двойные касания. Виджеты иногда называют виртуальными, чтобы отличить их от физических аналогов, например, виртуальные кнопки, на которые можно нажать указателем, от физических кнопок, которые можно нажать пальцем (например, на компьютерной мыши). Связанной (но отличной) концепцией является виджет рабочего стола – небольшое специализированное графическое приложение, которое предоставляет некоторую визуальную информацию и/или легкий доступ к часто используемым функциям, таким как часы, календари, агрегаторы новостей, калькуляторы и заметки для рабочего стола. Эти виджеты размещаются в виджетном движке.