Используя традиционные графические среды UNIX

Основанные на UNIX операционные системы росли для включения многих сред для обеспечения графического интерфейса пользователям. X-оконная система, также известная как X11, является, вероятно, самой известной. Поскольку более определенные потребности возникли, другая архитектура была разработана, которые принимают реализацию X11.

OS X не использует X-оконную систему по умолчанию, но реализации X11 доступны от Apple и от сторонних разработчиков. Это означает, что основанные на X-оконной системе приложения могут быть запущены, как может многие альтернативные графические среды стиля UNIX. Этот раздел предоставляет более подробную информацию на некоторых из этих сред.

Если Ваше приложение использует X-оконную систему, необходимо или портировать пользовательский интерфейс на собственную среду OS X, предоставить реализации X-оконной системы приложение или потребовать, чтобы пользователи установили пакет Apple X11 (опция инсталляции в установщике OS X, начинающемся в версии 10.3 OS X).

Если Вы - коммерческий разработчик программного обеспечения или если Ваше программное обеспечение будет использоваться традиционными конечными пользователями (включая текстовые процессоры, веб-браузеры, и т.д.), можно хотеть рассмотреть портирование на собственную графическую среду вместо того, чтобы требовать X11. Однако для внутренних инструментов или для инструментов со специализированной базой пользователей, может быть более разумно продолжать использовать X11. Разделы в этой главе помогут Вам решить, как выбрать надлежащую основанную на X11 среду для Вашего приложения.

Выбор графической среды UNIX

Много приложений UNIX разработаны с помощью высокоуровневых инструментариев виджета, таких как Tcl/Tk, Мотив (или OpenMotif или Lesstif), и QT. Эти среды работают хорошо через многие платформы. Однако та межплатформенная природа идет с ценой в гибкости. В сущности, чтобы быть межплатформенными, они могут только возможности поддержки, которые универсальны ко всем потенциальным операционным средам и как таковы, они имеют тенденцию обеспечивать только наименьший общий знаменатель с точки зрения функциональности.

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

Если они обеспечивают все, в чем Вы нуждаетесь, то они - хороший выбор. Иначе, более гибкая альтернатива, такая как необработанное программирование Xlib или более настроенная на Mac альтернатива, такая как Углерод или Какао может быть более надлежащей.

Другие решения UNIX существуют для более экстремальных межплатформенных сред. Одним примером является MicroWindows, разработанный для разрешения простоты совместного использования кода между X11 и Windows путем реализации подмножества графики Win32 APIs на X11. Поскольку это - действительно просто приложение X11, должно быть возможно использовать его на OS X. Однако вследствие суммы включенной абстракции, такое решение не выполнит, а также исходное приложение.

При попытке разработать приложение для такой среды, обычно лучше повторно спроектировать Ваш код для имения многократных фронтэндов — один для Windows, один для OS X, и один для UNIX (X11). Посмотрите (Ре) разрабатывать для Мобильности для получения дополнительной информации о создании графического уровня абстракции.

X11R6

OS X не включает реализацию X11R6 по умолчанию. Если Вы полны решимости относительно только портирования Вашего приложения, не добавляя функциональности OS X, можно все еще выполнить X11 на OS X. Вместе с Вашим приложением необходимо сообщить пользователям о том, как установить тот.

Самый простой способ получить реализацию X11 состоит в том, чтобы установить реализацию Apple X11. Начинаясь в OS X v10.3, пакет X11 является дополнительной установкой, прибывающей в установку DVD или CD.

Для более старых версий OS X (перед v10.4), можно загрузить X11 с http://www .apple.com/downloads/macosx/apple/macosx_updates/x11formacosx.html.

Кроме того, несколько других коммерческих и свободных альтернатив существуют.

XTools Межсистемами Шипа (http://www .tenon.com) и массовое бегство из США Powerlan оба обеспечивают серверы X11, сосуществующие с Водой.

Если Вам не нужна коммерческая реализация X11, XFree86 предлагает очень устойчивую свободную реализацию X11R6. Версия OS X XFree86 является активным проектом с интегральной поддержкой со стороны XQuartz (раньше XDarwin) проект. Больше информации о проекте XQuartz включая подсказки для установки X11 доступно в http://xquartz .macosforge.org/trac/wiki. Сам XFree86 может быть загружен с http://xfree86 .org/.

С реализацией X-оконной системы Вы теперь свободны использовать инструментарии, что Вы уже знакомы с — например, GTK + или KDE.

Преимущества разработки X11R6

  • Фактический стандарт в технологии дисплея для основанных на UNIX операционных систем

  • Реализация с открытым исходным кодом доступна

  • Несколько переносимый на определенные встроенные системы

Недостатки разработки X11R6

  • Сложная среда разработки

  • Требует существенного дискового пространства для полной установки

  • Не является собственным к OS X. Это означает, что Ваше приложение обрабатывается как второразрядный гражданин в некоторой степени, особенно в областях перетаскивания и системных служб.

Tcl/Tk

Существует собственная версия Воды Tk, доступного в http://tcl .sourceforge.net. С этим можно легко добавить графические элементы к существующему Perl, Python или сценариям Tcl.

Преимущества разработки Tk

  • Среда кросс-платформенной разработки

  • Легко интегрируется с Tcl, Perl и сценариями Python

  • Реализация с открытым исходным кодом доступна

Недостатки разработки Tk

  • Не поддерживаемый по умолчанию в OS X

  • Как с большинством высокоуровневых инструментариев, ограничивается гибкость

QT

QT является инструментарием C++ для создания графических интерфейсов пользователя. Это очень популярно в мире UNIX, поскольку это используется очень популярной Настольной средой K, KDE. Trolltech имеет собственную версию QT, Qt/Mac, доступного для OS X. Если Вы уже имеете приложение C++ или рассматриваете создание того, QT позволяет Вам создать приложения, работающие исходно в OS X, а также Linux и Windows. Информация о Qt/Mac доступна в http://www .qt.nokia.com. Qt/Mac не работает поверх X11 в OS X, но исходный код совместим с реализацией QT X11.

Преимущества спокойной разработки

  • Среда кросс-платформенной разработки

  • Интегрируется легко с кодом C++

  • Устойчивый набор функций

Недостатки в спокойной разработке

  • Требует лицензирования для коммерческой разработки

  • Как с большинством высокоуровневых инструментариев, ограничивается гибкость

GTK +/GTKmm

GTK + и GTKmm являются C и интерфейсами C++ (соответственно) к другому инструментарию для создания графических интерфейсов пользователя. Это популярно в сообществах разработчиков Gnome и Канители. Существует бета собственная версия GTK + 2.x инструментарии, доступные для OS X. Если Вы уже имеете C или приложение C++ или рассматриваете создание того, GTK + позволяет Вам создать приложения, работающие исходно в OS X, а также Linux и Windows.

Информация о Gtk-MacOSX (реализация GTK + 2.x инструментарий) доступна в http://gtk-osx .sourceforge.net/.

Эти инструментарии не работают поверх X11 в OS X, но совместимы с исходным кодом с эквивалентными реализациями X11.

Преимущества GTK +/GTKmm Разработка

  • Среда кросс-платформенной разработки

  • Интегрируется легко с кодом C/C++

  • Устойчивый набор функций

Недостатки в GTK +/GTKmm Разработка

  • Лицензия LGPL, перепроектирующая пункт, может поставить вопросы для некоторых коммерческих разработчиков

  • Как с большинством высокоуровневых инструментариев, ограничивается гибкость

wxWidgets

wxWidgets инструментарий является другим инструментарием для создания графических интерфейсов пользователя. Это - платформа C++ для того, чтобы создать собственные приложения стили межплатформенным способом. Это в настоящее время поддерживает UNIX/Linux (X11), Windows и OS X. Поддержка других платформ находится в разработке.

Больше информации о wxWidgets может быть найдено в http://www .wxwidgets.org.

Обертывание приложения командной строки с графическим интерфейсом

Приложения командной строки являются хорошим первым шагом в записи программного обеспечения для OS X. Однако большинство пользователей OS X склонно уклоняться от командной строки (прежний UNIX и пользователи Linux несмотря на это). Поэтому, если Вы хотите, чтобы Ваше приложение командной строки имело любовь масс, необходимо рассмотреть обертывание его в графическом интерфейсе.

OS X обеспечивает много методов для обертывания приложения командной строки с графическим интерфейсом. Они включают:

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

Этот раздел прежде всего предназначается для разработчиков ПО с открытым исходным кодом, разработчиков условно-бесплатного программного обеспечения/бесплатного программного обеспечения и внутренних разработчиков приложений UNIX, поскольку эти методы не предлагают того же уровня функциональности, что можно пройти через более трудную интеграцию между GUI и расположенным ниже приложением.

Выбор метода обертывания

Если просто необходимо выполнить сценарий оболочки путем двойного щелчка по нему и не иметь никакой потребности в GUI, можно просто переименовать сценарий оболочки для окончания .command и это откроется в Терминале автоматически.

Если Вам будет нужно больше управления параметрами, но инструмент командной строки является неинтерактивным — то т.е. обертка GUI просто запустит его и выведет на экран результаты — тогда также NSTask или “Do Shell Script” приемлемо, и необходимо использовать, какой бы ни каждый является самым удобным.

Если приложение должно взаимодействовать с инструментом всегда, необходимо использовать функцию NSTask. С ним можно объединить произвольные числа в цепочку задач с помощью NSPipe функция.

Соображения доступа к файлу

Углерод, Какао, AppleScript и другие среды разработки OS X имеют дело с файлами при помощи ссылок на файл вместо того, чтобы относиться к ним их путем. В результате можно переместить файлы куда угодно в диск, и ссылка на файл все еще будет допустима даже при том, что изменился путь.

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

Из-за потенциальных побочных эффектов необходимо всегда использовать заключенную в кавычки форму пути POSIX при передаче пути к сценарию оболочки. Это описано подробно в Technote № 2065: Выдача Команд.

Проблемой пробелов в путях является также небольшая проблема для разработчиков Какао, использующих NSTask API, обычно из-за ошибок в самом сценарии оболочки. (Вы не должны выходить из строк, переданных как использование параметров NSTask.)

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

Для получения дополнительной информации

Для получения дополнительной информации о AppleScript Do Shell Script команда, посмотрите Technote № 2065: Выдача Команд, в http://developer .apple.com/technotes/tn2002/tn2065.html или “простой лист” пример в AppleScript Studio.

Для получения дополнительной информации о Какао NSTask API, посмотрите Взаимодействие с Операционной системой.