Окно (информатика)


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

История

Впервые концепцию перекрывающихся окон, как и многие другие концепции пользовательских интерфейсов, разработали в исследовательском центре Xerox PARC для системы Xerox Alto, а точнее для среды разработки языка smalltalk в 1974 году. В этой среде у окон уже были границы и заголовки, но ещё не появилось кнопок управления окнами. Дальнейшее развитие оконный интерфейс получил в среде Xerox Star, но первым коммерчески успешным компьютером, использующим окна стал вышедший в 1984 году Apple Macintosh.

Основные части окна

  • содержимое окна;
  • рамка окна — отделяет содержимое одного окна от другого, лежащего ниже. Кроме того, в современных оконных менеджерах рамка окна позволяет изменять размер окна, путём перетаскивания границы окна, либо угла. Для компактности и уменьшения визуального шума может быть заменена тенью от окна;
  • уголок изменения размеров — располагается в правом нижнем углу окна и предоставляет дополнительную площадь для изменения размеров окна (см. закон Фиттса). Присутствует не во всех окнах;
  • Заголовок окна — располагается обычно в верхней части окна и содержит название окна, а также кнопки управления окном. Если окно не поддерживает свободного перетаскивания, именно заголовок является областью, позволяющей перетаскивать окно. Иногда название окна может скрываться, а в заголовок выводиться другие элементы управления, такие как вкладки браузера;
  • Кнопки управления окном — начиная с Windows 95, типичным является следующий набор кнопок:
    • меню окна — одновременно является значком приложения. Располагается в левой части заголовка;
    • свернуть (▬) — в ранних ОС превращала окно приложения в значок на рабочем столе, в более новых — скрывает окно, оставляя кнопку на панели задач;
    • развернуть (□) — позволяет развернуть окно на весь экран, или переключить приложение в полноэкранный режим;
    • закрыть ( ☒ ) — позволяет завершить работу с приложением, либо закрыть конкретное окно. Символ «×» для закрытия окна впервые появился в системе Atari TOS в 1985, позже — независимо от неё в NeXTSTEP, но широкое распространение получил с выходом Windows 95.
    • восстановить (❏) — возвращает прежние размеры и размещение окна на экране.

В некоторых системах, например в OS X, кнопки управления окном располагаются слева. Кроме того, в OS X до версии 10.7 отсутствовала кнопка полноэкранного режима.

Особенности поведения окон

Перемещение окон

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

Появление новых окон обычно не регламентируется системой, и они занимают место посередине экрана, либо заданное при разработке программы. Некоторые оконные менеджеры, например входящие в состав среды KDE, располагают вновь открывающиеся диалоговые окна и окна предупреждений так, чтобы они не перекрывали уже открытые. Другой способ — располагать вновь открытые диалоговые окна «каскадом», то есть с небольшим смещением от предыдущего, чтобы оставался виден заголовок окна.

При перемещении окон может использоваться эффект «прилипания». Возле границы такого окна появляется область, и если в этой области находится граница другого окна, перемещаемое окно становится вплотную к другому, и остаётся неподвижным до тех пор, пока пользователь, перемещая курсор, не попытается вывести окно за пределы этой области. Примером такого подхода может служить проигрыватель Winamp, в котором эффект прилипания реализует ещё одну функцию: дочерние окна программы после прилипания к главному окну могут перемещаться вместе с ним как одно окно. Слипшиеся друг с другом дочерние окна того же плеера такого эффекта не имеют.

Управление размером окон

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

При уменьшении размеров окна могут стать недоступными некоторые важные элементы управления. Чтобы этого избежать, задаётся минимальный размер окна. Если элементов управления слишком много, то при уменьшении окна они либо попадают в специальное меню, либо в окне появляются полосы прокрутки. Некоторые окна не позволяют изменять размер, среди них — большинство диалоговых окон.

Некоторые оконные менеджеры сохраняют размеры и положение окон после их закрытия для последующего восстановления при повторном открытии, другие, в том числе оконный менеджер ОС Windows, перекладывает эту работу на само приложение.

Полноэкранный режим

В ОС семейства Windows большинство оконных приложений может использовать «псевдополноэкранный режим». При нажатии на кнопку «развернуть», окно занимает всю доступную площадь экрана, кроме панели задач. При этом все элементы окна, кроме рамки, остаются. Для некоторых видов приложений, например, воспроизводящих видео, такой режим неприемлем, и такие приложения обычно закрывают экран полностью, не отображая в таком режиме большинства элементов управления, либо отображая упрощённую их версию. Похожий режим доступен в операционной системе OS X, начиная с версии 10.7 «Lion».

Скрытие окна

В большинстве современных операционных систем и оконных менеджеров в окнах присутствует кнопка «свернуть». При нажатии на эту кнопку окно приложения скрывается, но само приложение не прекращает работу. В разных операционных системах поведение этой кнопки по умолчанию может различаться. В системах, имеющих панель задач, окно приложения можно вызвать нажатием на кнопку приложения на панели задач. При отсутствии панели задач, свёрнутое окно либо уменьшается до одного заголовка, либо на рабочем столе (в старых версиях Windows — в окне диспетчера программ) появляется значок, и раскрыть окно можно нажатием на него. То же самое работает и для дочерних окон приложения, которые не отображаются в панели задач, но имеют кнопку «свернуть».

Закрытие окна

Для главного окна приложения закрытие окна обычно предполагает выход из приложения, либо документа (при использовании многодокументного интерфейса). Некоторые приложения, например Skype, не завершают работу при нажатии на кнопку «закрыть», а имеют для этой цели специальную функцию в меню приложения. Кнопка «закрыть» в них работает почти так же, как кнопка «свернуть».

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

В диалоговых окнах закрытие окна обычно работает аналогично нажатию на кнопку «отмена». Некоторые окна могут блокировать возможность закрытия, например, если выполняется действие, для отмены которого нужно выполнить какие-то другие операции. Также, при работе с документами, при отсутствии функции автосохранения документов, применяется режим, когда при нажатии на кнопку закрытия появляется диалог, предлагающий сохранить внесённые изменения. При использовании таких утилит резервного копирования, как Time Machine, подобные диалоги считаются антипаттернами.

Наложение окон

В большинстве случаев, окна перекрывают друг друга так, что активное в текущий момент окно располагается поверх остальных, за ним идёт окно, которое было активно предыдущим, и так далее. Однако, для некоторых окон можно включить режим «поверх всех окон», при котором окно не может быть перекрыто другими, даже если оно неактивно. В некоторых оконных менеджерах, например Openbox, возможность расположить окно поверх остальных доступна из меню окна, а также есть возможность вывести кнопку с этой функцией рядом со стандартными кнопками управления окном.

Дочерние окна приложений, в том числе панели и палитры, а также диалоговые окна, обычно перекрывают основное окно приложения, даже если фокус ввода находится не в нём, при этом для других приложений эти окна равнозначны главному окну приложения, и перекрываются ими так же как и главное.

Разновидности окон

Диалоговые окна

Диалоговые окна обычно не являются главными окнами приложения, не отображаются в панели задач и не могут быть развёрнуты на весь экран, а часто даже не позволяют изменять размер окна. Диалоговое окно должно быть закрыто после выполнения действия или прочтения сообщения, для этого в диалоговом окне имеются кнопки, нажатие на которые приводит к закрытию окна. Поэтому диалоговое окно не нуждается также в кнопке «закрыть». Особняком стоит OS X, где диалоги в большинстве случаев являются не окнами, а специальными элементами управления, которые появляются из-под заголовка родительского окна.

Модальное окно

Модальное окно — окно, обычно диалоговое, открытие которого блокирует доступ к элементам родительского окна.

Панели, палитры и плавающие окна

Панели, палитры и плавающие окна, как правило, располагаются поверх основного окна приложения или окна документа, даже если в нём фокус ввода. При использовании MDI, либо многооконного интерфейса, панели, как правило, остаются общими для всех документов. Обычно, панели и палитры имеют упрощённый вид окна с уменьшенным заголовком и без кнопок «развернуть» и «свернуть». При использовании технологии Drag and Dock, панель, если её подвести к краю окна, превращается в панель инструментов.

Окна документов в многодокументных приложениях

В многодокументных приложениях поведение окон зависит от того, какая разновидность многодокументного интерфейса используется.

В SDI окно документа по сути является главным окном приложения. Если документов несколько, все окна приложения равнозначны. Выход из приложения происходит при закрытии всех окон приложения. Переключение между окнами приложения происходит так же, как и переключение между приложениями: например, через панель задач.

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

MDI предполагает существование основного окна приложения и окон документов, располагающихся внутри основного окна. Закрытие всех окон документов не приводит к выходу из программы — в этом случае лишь отображается пустая область для окон. Если окно документа развёрнуто, оно теряет заголовок и рамку, а кнопки управления окном и значок приложения переносится в строку меню. Если окно свёрнуто, оно ведёт себя так же, как обычное окно при отсутствии панели задач. Если открыто несколько окон документов, и они развёрнуты на весь экран, переключение между ними происходит через пункт «окно» в строке меню.

Многооконный интерфейс обычно предполагает использование общих для всех документов панелей и плавающих окон. Одна из таких панелей может являться одновременно главным окном, закрытие которого приводит к закрытию приложения но некоторые приложения также могут закрываться при закрытии всех окон документов (как при SDI).

  • Inkscape в режиме SDI. У каждого окна документа есть панели инструментов

  • GIMP со вкладками. В каждой вкладке — уменьшенное изображение документа

  • Qt Designer в режиме MDI. Правый край окна документа вылез за пределы области MDI — видна полоса прокрутки

  • GIMP в многооконном режиме. Слева, справа и снизу от окна документа — плавающие окна

Стилизованные окна

Некоторые программы, такие как медиаплееры могут использовать стилизованные окна, самостоятельно управляющие отображением и поведением всех элементов управления. Такие программы часто позволяют использовать настраиваемый по желанию пользователя внешний вид. Часто в таких программах привычные элементы управления имеют несколько другое назначение, либо располагаются в другом месте. Например, в проигрывателе Winamp, и других, использующих тот же интерфейс обложек, кнопка между «закрыть» и «свернуть» не разворачивает плеер на весь экран, а уменьшает его окно до размера заголовка, при этом некоторые виджеты переносятся в заголовок, позволяя управлять плеером в минимизированном состоянии.

Альтернативы

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

На больших экранах наоборот удобнее может оказаться фреймовый оконный менеджер, где приложения располагаются в непересекающихся областях. Фреймы позволяют свести к минимуму использование мыши.

Некоторые приложения вообще могут не требовать окон для отображения элементов интерфейса. Интерфейс программы может отображаться в пределах значка, живой плитки или гаджета.