Введение

Presentation Manager (PM) — графический пользовательский интерфейс (GUI), представленный компаниями IBM и Microsoft в версии 1.1 своей операционной системы OS/2 в конце 1988 года.

История

Microsoft начала разрабатывать графический пользовательский интерфейс (GUI) в 1981 году. Убедив IBM в необходимости графического интерфейса и для неё, Microsoft и лаборатория Hursley Lab компании IBM совместно разработали Presentation Manager (PM; кодовое название Winthorn) в 1987–1988 годах. Он представлял собой нечто среднее между Microsoft Windows и графической системой IBM (GDDM). Как и Windows, он был основан на обмене сообщениями, причем многие из этих сообщений были даже идентичны, но существовали и значительные различия. Хотя Presentation Manager был спроектирован таким образом, чтобы быть очень похожим на предстоящую Windows 2.0 с точки зрения пользователя, а структура приложений Presentation Manager почти полностью совпадала со структурой приложений Windows, совместимость исходного кода с Windows не ставилась целью. Для Microsoft разработка Presentation Manager стала возможностью исправить некоторые недостатки в дизайне Windows. Обе компании заявляли, что Presentation Manager и Windows 2.0 останутся практически идентичными. Одним из наиболее существенных различий между Windows и PM была система координат: в Windows координата 0,0 располагалась в верхнем левом углу, а в PM – в нижнем левом. Другим отличием было то, что в Windows все операции рисования выполнялись в контексте устройства (DC), в то время как PM также использовал DC, но с добавленным уровнем абстракции, называемым пространством представления (PS). OS/2 также обладала более мощными функциями рисования в своем графическом программном интерфейсе (GPI). Некоторые концепции GPI (например, преобразования просмотра) впоследствии были включены в Windows NT. Модель программирования OS/2 считалась более элегантной, поскольку не требовала явного экспорта процедуры окна, отсутствия функции WinMain, а также нестандартных прологов и эпилогов функций.

Расставание

Одной из наиболее часто упоминаемых причин разделения IBM и Microsoft было расхождение API между Presentation Manager и Windows, которое, вероятно, было инициировано IBM. Изначально Presentation Manager был основан на коде графического интерфейса Windows и часто опережал его в разработках, например, в поддержке пропорциональных шрифтов (которые появились в Windows только в 1990 году). Одно из расхождений касалось положения координаты (0,0), которая в Windows находилась в верхнем левом углу, а в Presentation Manager – в нижнем левом (как в декартовой системе координат). На практике стало невозможно перекомпилировать программу графического интерфейса для работы на другой системе; в какой-то момент обещали автоматизированный инструмент для преобразования исходного кода. Обе компании надеялись, что пользователи в конечном итоге перейдут на OS/2. В 1990 году версия 3.0 Windows начала продаваться в больших объемах, и Microsoft стала терять интерес к OS/2, особенно учитывая, что даже ранее рыночный интерес к OS/2 всегда был значительно меньше, чем к Windows. Компании разошлись, и IBM взяла на себя всю дальнейшую разработку. Microsoft взяла OS/2 3.0 и переименовала её в Windows NT, таким образом, унаследовав некоторые особенности Presentation Manager. IBM продолжила разрабатывать Presentation Manager. В последующих версиях OS/2 и её производных, таких как ArcaOS, он использовался в качестве основы для объектно-ориентированного интерфейса Workplace Shell. Графический интерфейс тесно интегрирован с остальной системой, но всё ещё возможно запускать некоторые части OS/2 из текстовой консоли или окна X, а также загружать OS/2 в командную строку без Presentation Manager (например, с помощью TSHELL).

Менеджер презентаций для Unix

В конце 1980-х годов компании Hewlett Packard и Microsoft сотрудничали в реализации Presentation Manager для Unix-систем, использующих оконную систему X11. Этот порт состоял из двух отдельных программных компонентов: набора инструментов, менеджера окон и руководства по стилю под названием CXI (Common X Interface) и реализации API Presentation Manager для Unix, известной как PM/X. И CXI, и PM/X были предложены в Open Software Foundation для рассмотрения в качестве нового стандарта пользовательского интерфейса OSF для Unix, который впоследствии стал Motif. OSF в конечном итоге выбрала CXI, но вместо PM/X использовала API XUI от Digital Equipment Corporation. Microsoft и HP продолжали разработку PM/X некоторое время после выпуска Motif, при этом Microsoft интегрировала продукт в совместную стратегию разработки с SCO для создания единого пользовательского интерфейса для OS/2 и Unix-продуктов SCO, однако в конечном итоге проект был заброшен.

Технические детали

PM следует соглашениям интерфейса Common User Access. Он также поддерживает одновременное нажатие кнопок мыши (mouse chording) для копирования и вставки текста. Важной проблемой была проблема единой очереди ввода: не отвечающее приложение могло блокировать обработку сообщений пользовательского интерфейса, что приводило к зависанию графического интерфейса. Эта проблема была решена в Windows NT, где такое приложение просто превращалось в "мертвый прямоугольник" на экране; в более поздних версиях стало возможным переместить или скрыть его. В OS/2 это было решено с помощью FixPack, использующего таймер для определения, когда приложение перестает отвечать на события.