Славянская RAD-IDE

"Посмотрел перед сном Ultimate++. Испугался..."

(Из форумов на Linux.ru)

Я продолжил поиски подходящей бесплатной кроссплатформенной RAD-среды для C++. Такие разработки, как Anjuta, DialogBlocks и MonoDevelop, пришлось отставить: или среда не кроссплатформенная, или платная, или язык не тот. И вот, наконец...

Удивительно, но в маленькой Чехии нашлись классные программисты, которые не только разработали ряд специализированного софта для своего отечества, но и "выдали на гора" и RAD-среду, и приличный фреймворк. Позже к команде авторов присоединился поляк. После недели плотного изучения их продукта я осознал, что не только "Борланд" горшки обжигает. Кстати, среди контрибьютеров есть и русские фамилии. Знакомьтесь: фреймворк Ultimate++ и RAD-IDE с прикольным названием TheIDE (ultimatepp.org). Проект развивается уже 10 лет, на форумах несколько десятков тысяч сообщений. Лицензия BSD - самая свободная из всех свободных, т.е. можно смело писать и коммерческий, и некоммерческий софт. Но обо всём по порядку.


Устанавливаем TheIDE

Это очень просто. Доступен августовский стабильный релиз. Заходим на вышеупомянутый сайт, скачиваем пакет под имеющийся компьютер и версию "Линукса". У меня "Убунту-8.10" и интеловский двухядерник, поэтому я взял пакет upp_2008.1_i386.deb (кому-то, возможно, потребуется другой пакет). Далее в привод вставляем диск с дистрибутивом установленного "Линукса", подключаемся к Интернету и штатным установщиком инсталлируем скачанный пакет. Одновременно из репозиториев подтягивается компиляционная поддержка: gcc-4.1, libstdc++6-4.1-dev, cpp-4.1, gcc-4.1-base и g++-4.1, всего около 7 Мб, остальное берётся из дистрибутива "Линукса". Несколько обескураживает "даунгрейд" компилятора, но это касается только TheIDE. Стало? Тогда идём в системное меню "Линукса" в раздел "Программирование" и тащим иконку TheIDE на рабочий стол. Перезагружаемся.


Создаём проект

TheIDE не имеет мастера создания проектов, да он и не нужен. После первого запуска TheIDE скромно просит указать, где ей держать рабочие файлы. Указываем предварительно созданную папку, в которой среда создаст ещё 6 папок, наполнит их содержимым, высветит их и их начинку. Но высветит несколько своеобразно - в виде так называемых пакетов, собрав их в 7 групп под общим названием Assembly. Пакет в среде TheIDE - это в первом приближении папка со всеми файлами приложения. Пользовательская группа пакетов называется MyApps, сначала она пустая. Дважды кликаем по MyApps и жмём кнопку NewPackage. В новом окне TheIDE попросит вас ввести имя будущего приложения и выбрать его тип. Вводим любое имя, например, myf3, и, так как будем работать со встроенным GUI-редактором, то выбираем тип CtrLib application with main window. Жмём кнопку Create. Всё, заготовка проекта есть (рис. 1).

Рис. 1

Эта заготовка сразу же содержит 3 файла: заголовочник, главный файл и особый GUI-файл под названием myf3.lay. Дважды щёлкаем по этому файлу, и открывается GIU-редактор с пустой формой.


Наполняем проект

Идея тестового приложения прежняя: пользователь вводит текст в строку редактирования, жмёт кнопку, и этот текст добавляется к тексту в списке. "Матерьялу" всего-то ничего: строка, кнопка и выпадающий список.

Палитра виджетов в TheIDE скрытая. Она вызывается правым кликом по форме. Вытаскиваем на форму из палитры следующие виджеты: Button, EditString и DropList, которые поименуем в инспекторе объектов как button, Edit и List, соответственно. Кнопке button в инспекторе объектов присваиваем лейбл "Нажми!". Должно получиться как на рисунке 2.

Рис. 2

Если русские буквы лейбла кнопки не набираются - щёлкаем правой кнопкой по файлу myf3.lay и меняем кодировку файла на юникод.

Из главного меню командуем Build->Build. Через несколько секунд приложение скомпилировано. Но это мёртвое приложение: кнопка не работает, и нужно перекрыть событие её нажатия. Никакие двойные щелчки по изображению кнопки тут не помогут. Также бесполезно искать раздел Events в инспекторе объектов. В TheIDE этот момент не автоматизирован, но, возможно, это и к лучшему.


Пишем код

Сначала озаглавим форму приложения. Для этого в файле main.cpp в функции CtrlLayout между кавычками текстовым редактором вручную впишем: "Это тест". Не получается по-русски? Тогда щёлкаем правой кнопкой по файлу main.cpp и тоже меняем кодировку на юникод.

Условимся, каким будет прототип функции обработчика клика по кнопке, например, void Сlicked(). Щёлкаем по файлу myf3.h и вручную текстовым редактором добавляем в автоматически созданный средой класс myf3 новый член в виде прототипа обработчика.

Щёлкаем по файлу main.cpp и внутри функции-инициатора приложения myf3() сообщаем кнопке, что её коллбэком (а по-русски - отзывом) на нажатие будет функция Clicked, то есть вручную вписываем строку: button <<=THISBACK(Clicked);.

Наконец, в файл main.cpp добавляем тело обработчика:

void myf3::Clicked()
{
 String text = (String)Edit.GetData();
 if(text != "")
 {
  List.Add(text);
  Edit.Clear();
  button.SetFocus();
 }
}

Обработчик простой, комментировать тут нечего. Следует обратить внимание, что обработчик мог бы называться не Clicked, а как угодно, например, Pressed. Компилируем, запускаем, тестируем. Должно получиться примерно так, как изображено на рисунке 3.

Рис. 3

Выключим отладчик (по умолчанию он был включён). Для этого из главного меню скомандуем Build->Output Mode, в открывшейся форме щёлкнем по радиокнопке "Optimize size", щёлкнем ОК и пересоберём. С прилинкованными библиотеками размер исполняемого файла получается около 1,6 Мб. Это хуже, чем в борландовском "Билдере", зато будет работать во всех релизах "Убунту" с учётом темы стола - проверено.


Подытожим

Достоинства. Универсальность, простота, малый объём, развитый фреймворк (имеется работа с графикой, базами данных, гипертекстом, многопоточность), автокомплит кода, бесплатность, 100% открытость, простота пополнения палитры виджетов собственными виджетами. Во многих случаях исходник приложения с использованием фреймворка Ultimate++ оказывается короче, по сравнению с фреймворками wxWidgets и QT4. Проект снабжён внушительным количеством простых примеров, которые охватывают практически все виджеты. Неплохая онлайновая помощь. По сравнению с Кьютом и Code::Blocks, среда TheIDE больше удовлетворяет концепции визуального программирования.

Недостатки. Чересчур простой текстовый редактор: нет фолдинга кода, настройки цветов и шрифтов, хотя подсветка синтаксиса есть. Чрезмерно простой инспектор объектов: многие свойства надо настраивать вручную. Совершенно не автоматизировано перекрытие событий. Медленная компиляция - раза в 3 медленнее, чем в борландовском "Билдере". Довольно большие размеры исполняемых файлов. Имеются баги в некоторых примерах, правда, проявляющиеся только под "Линуксом". Самое слабое место - документация: нет детального описания классов, хотя все исходные коды имеются.

Но пугаться не надо. В общем, спартанская, но вполне рабочая RAD-среда для программистов, пишущих на C++. Законченные разработки можно найти, например, на dgs.pac.pl/dgs.php?page=downloads. В настоящее время проект держится на плаву благодаря частным пожертвованиям и энтузиазму команды. И, как ни странно, продолжает развиваться. Присмотритесь к нему, а вдруг это то, что вам нужно?

Михаил ГУРЧИК,
gor-mike@tut.by

Версия для печатиВерсия для печати

Номер: 

06 за 2009 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!