Новый Glade 3 увидел свет!
Исходная статья по адресу:
http://www.gnomejournal.org/article/50/glade-3-sees-the-light-of-day
15 августа 2006, Тристан ван Берком (Tristan Van Berkom)
Популярный дизайнер интерфейсов, используемый для создания приложений GTK+, переродился, в нем сделано много усовершенствований и реализована поддержка всех виджетов gtk+ 2.8, виджетов gnomeui и виджета gnome canvas. Его просто нельзя обойти вниманием!
До последнего времени идея Glade 3 витала в воздухе словно миф. Изначально он был задуман и разрабатывался Чемо Селорио (Chema Celorio), Дэймоном Чаплином (Damon Chaplin) (автором первого Glade), еще до того, как появился GTK+ 2.0. Над проектом много трудились Чемо, Карлос Перелло Марин (Carlos Perello Marin) и другие разработчики. Чемо был выдающимся участником этого и многих других проектов GNOME, но к нашему великому сожалению в ноябре 2003 в результате неудачного прыжка с парашютом он погиб. Этот выпуск Glade посвящен ему.
Джокуин Абела(Joaquin Cuenca Abela), работавший над проектом
edalg, с 2002 г присоединился к работе над новым Glade. Вместе с ним на протяжении нескольких лет над Glade усердно трудился Паоло Борелли (Paolo Borelli) и многие другие разработчики. Тем временем вышел GTK+ 2.0 и стало видно, что создание нового Glade затягивается, старый Glade был портирован на новый GTK+ без особых изменений. «В конце концов, – говорит Паоло, – предполагалось, что это будет временное решение на несколько месяцев.» Дэймон отнёсся к нам терпеливо и стал поддерживать порт, постоянно добавляя туда новые виджеты GTK+, в которых мы так нуждались.
Когда у меня возникли трудности с Glade 3 (по некоторым техническим причинам), куда-то потерялся Джокуин и в почтовой рассылке никто не отвечал несколько месяцев, тогда я послал письма в другие рассылки, крича и умоляя, и этими усилиями в сентябре 2004 проект был возвращен к жизни.
Дэвид Хувер (David Hoover) взял на себя обязанности мэйнтейнера и начал помещать заголовки gtk-doc на все функции, которые находил. Мы все считали, что это через-чур, но теперь это дало результат. Благодаря Дэвиду у нас появилась великолепная документация. Я бы сказал, что у нас было трудное начало из-за того, что мы все согласились в качестве парсера для Glade использовать libglade, это были слишком существенные изменения, которые окончательно загнали нас в угол (все это получилось очень сложным и были проблемы с пространством имен).
С тех пор потихоньку Glade, так сказать, варился под моим наблюдением, временами я работал над ним в одиночку, но чаще в компании с Хуаном Угарте (Juan Pablo Ugarte) и Айвоном Вонгом (Ivan Wong).
Спасибо все тем замечательным людям, которые пронесли Glade через все эти годы, спасибо присылавшим патчи, переводчикам, мэйнтейнерам, тем людям на IRC, которые задавали вопросы типа «Почему у меня Glade падает при добавлении поля ввода?» и сообщали об ошибках. Благодаря им всем нам удалось претворить в жизнь этот замечательный проект, который долгое время оставался лишь мечтой.
Так что же хорошего в новом Glade?
Хотя, Glade не приготовит обед и не выгуляет собаку, все же появился ряд вещей, которые он научился делать:
- появилась возможность отменять и возвращать все действия с виджетами, так что теперь можно не беспокоиться об ошибках: удаленные виджеты возвращаются на место;
- в многооконных проектах стало возможным таскать виджеты между окнами;
- появилась возможность переключатся между проектами;
- список недавно открытых проектов так же добавляет удобства;
- новый Glade поддерживает все виджеты 2.8, полностью совместим с форматом libglade и запросто читает файлы, созданные в Glade 2.
- теперь в Glade можно добавить собственный каталог виджетов (документацию по добавлению виджетов можно найти по адресу
http://glade.gnome.org/docs/index.html );
- новая палитра виджетов просто великолепна:
- для классов виджетов GtkFixed, GtkLayout, GtkTable и GtkBox появилась возможность перетаскивания и изменения их размера прямо в окне редактора:
- появилась контекстная справка, использующая Devhelp:
- и, как всегда, Glade работает везде, где работает GTK+.
Под капотом...
Немного о том, как устроен новый Glade. Новая версия Glade использует максимум преимуществ, предоставляемых механизмами самонаблюдения (introspection mechanisms) GObject. Они позволяют значительно сократить работу по интеграции виджета и, в целом, предусматривают более общий путь поддержки виджетов, свойств и сигналов.
Эту версия Glade можно использовать как простой компонент; отсутствие автоматической генерации кода позволяет встраивать дизайнер интерфейсов в любую интегрированную среду разработки:
Интегрированная среда разработки – это как раз то место, куда, если есть необходимость, нужно добавлять плагины генерации кода.
Теперь Glade работает с динамическим каталогам виджетов, который предоставляет полный контроль над тем, как будет обработан новый виджет. Glade просмотрит тип, инициализирует класс объекта и проанализирует все сигналы и свойства нового виджета. После этого внутреннее представление классов виджетов обновится из каталога. Во время загрузки Glade читает эти каталоги по порядку, определяющемуся по их зависимостям, так что каждый загруженный каталог унаследует функциональность своего родителя. Например, любой производный класс от GtkBox унаследует поддержку перетаскивания в него других объектов. Мы реализовали виджеты libgnomeui и gnome-canvas как отдельные каталоги и они будут поставляться отдельно.
В Glade 3 существует слой абстракции контейнеров, что позволяет особым образом рассматривать определенные иерархические отношения. Так, любой объект может стать родительским для любого другого объекта, более того, для единственного класса может быть определено множество отношений контейнера, причем каждое из них реализует функции контейнера (добавление, удаление) через разный код. Благодаря этой абстракции, treeview как объект может представлять собой обычный контейнер, куда можно добавлять другие виджеты, в то же время остается возможность добавлять в него новые колонки. Мы надеемся, что используя этот прием, мы сможем обработать все возможные иерархии объектов. Эта функциональность уже реализована (она используется в TouchTunes уже около года), и вы можете использовать её, применив к libglade специальный патч. В настоящее время использование нестандартных иерархических отношений в libglade потребуется написание специального кода, чтобы собрать и добавить дочерние элементы к родительским. Будем надеется, что GTK+ builder сможет возложить эту проблему непосредственно на код виджета.
Будущее
Для тех, кто еще не знает, GTK+ 2.12 будет поддерживать формат файлов Glade. В новом GTK+ builder будет поддерживаться построение объектов gobjects, кроме того, будут предусмотрены иерархические отношения. При этом главным приоритетом для Glade является поддержка нового формата, так как он откроет дверь ко множеству новых возможностей. Это означает то, что пользователи наконец-то получат доступ к колонкам treeview, к объектам treemodel, sizegroup, adjustment, action, pixbuf и, вообще, ко всем объектам gobject. Мы планируем поддерживать совместимость с обоими форматами Glade, а так же заботиться о легком конвертировании между ними.
В проекте появился новый участник, заслуживающий упоминания. Это разработчик из PalmSource Tools Development Джеф Вестерайнен (Jeff Westerinen):
«PalmSource всегда обеспечивала своих разработчиков мощными инструментами, чтобы создавать лучшие приложения. Так что, когда мы решили перевести нашу платформу с проприетарных компонентов на компоненты с открытыми исходными кодами, мы столкнулись с задачей поиска средств разработки, которые бы удовлетворяли наших разработчиков. Одним из таких инструментов являлся редактор интерфейсов. Приняв решение об использовании в качестве графического инструментария GTK+, мы стали искать редактор интерфейсов для GTK+.»
После непродолжительных поисков и общения в списках рассылки, Джефф наткнулся на новый Glade:
«Вскоре я загрузил программу, прочитал документацию. И с небольшой помощью со стороны Тристана, Хуана и др., я и наш дизайнер за неделю смогли добавить туда свои виджеты.»
Недавно Джеф изъявил желание присоединиться к проекту Glade 3, заявив:
«Честно говоря, с самого начала вся эта работа принесла мне только положительный опыт, и по этому я надеюсь стать членом команды разработчиков Glade 3».
Добро пожаловать Джефф! Вместе мы сделаем GTK+ еще более привлекательным!
Винсент Джедес (Vincent Geddes ) – автор замечательной панели инструментов – продолжает работать над новыми, еще более захватывающими и зрелищными функциями Glade. Первая версия однооконной версии Glade UI уже доступна.
Конечно еще многое предстоит сделать! Интересно, кто же будет тем счастливчиком, кому предстоит реализовать вкладку «стиль» в редакторе свойств (намек)?