Ada_Ru форум

Обсуждение языка Ада

Анонс: QtAda 2.1.0

Оставить новое сообщение

Сообщения

Vadim Godunko
Анонс: QtAda 2.1.0
2009-01-14 09:14:37

Доброго времени суток!

 

Хочу предложить Вашему вниманию новую версию QtAda 2.1.0, доступную для скачивания в виде мультиплатформенного пакета исходного текста и

бинарного дистрибутива для Microsoft Windows

 

http://www.qtada.com/ru/download.html

 

Основные изменения в версии:

 

- добавлена документация в формате Qt Assistant;

 

- добавлена интеграция с компилятором GNAT и средой разработки GPS;

- добавлена поддержка модуля QtXml;

 

- расширена поддержка модулей QtCore, QtGui;

 

- добавлена поддержка безопасных указателей на объекты подклассов QObject;

- добавлена поддержка печати.

 

Замечания и предложения приветствуются! :-)

Версия Qt 4.5 будет доступна под LGPL :

http://www.osnews.com/story/20769/Nokia_To_Add_LGPL_to_Qt_Licensing_Model

Нокия молодец!

 

День добрый!

Где можно посмотреть проект примера использования QtAda под GPS в MS Windows. Все примеры, которые я нашел, под Linux и без привязки к GPS.

 

With best regards

Sergey Kirkorov www.mediascan.by

Email: ksiby@...

Sergey Kirkorov wrote:

 

День добрый!

Где можно посмотреть проект примера использования QtAda под GPS в MS Windows.

Все примеры, которые я нашел, под Linux и без привязки к GPS.

 

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

соответствующими gpr файлами?

 

Описание использования gprbuild и GPS можно найти в документации, из GPS это Help->QtAda->Qt Reference Documentation. Там в левом стороне будет оглавление, ныжно ткнуть на раздел Ustin GNAT toolchain.

 

Если вкратце, то нужно рассматривать два класса приложений: совсем простые, только использующие готовые классы; и более сложные,

использующие собственные классы.

 

В первом случае файл проекта один и ничем не примечательный, например:

with "qt_gui";

 

project Example is

for Main use ("example.adb");

end Example;

 

Всё что нужно: подключить проекты для используемых модулей QtAda и задать имя файла главной подпрограммы. Остальное - на любителя, лично мне нравится убрать объектные файлы в отдельный каталог, и я дописываю:

for Object_Dir use ".objs";

 

(Как создать такое мастером проектов в GPS я к сожалению не знаю, буду благодарен если кто-то подскажет)

 

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

 

Проект для запуска amoc будет выглядеть где-то так:

 

with "qt_gui";

 

project Example_Moc is

for Languages use ("Amoc");

for Source_Files use ("my_widgets-impl.ads");

for Object_Dir use ".amoc";

end Main_Moc;

 

Аналогично простейшему случаю здесь важно подключить проекты

используемых модулей QtAda, указать "amoc" в качестве используемого языка и указать список файлов для обработки amoc-ом. Так же

рекомендуется оказать отдельный каталог для сохранения "объектных" файлов - там будут сохраняться сгенерированные файлы.

 

Проект для сборки программы выглядит так:

 

with "qt_gui";

with "example_moc";

 

project Example is

for Main use ("example.adb");

for Source_Dirs use (".", ".amoc");

end Example;

 

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

PS. Отмечу так же некоторые "тонкости" использования совместно с GNAT GPL 2008.

 

Первое, ставить и GNAT и QtAda обязательно в каталоги по умолчанию, т.е. C:\GNAT\2008.

 

Второе, если есть возможность, то написать Makefile вида:

 

all:

gprbuild -p -Pexample_moc

gprbuild -p -Pexample

 

и убрать строку 'with "example_moc";' из файла проекта.

 

День добрый!

Спасибо, первый вариант прошел на "УРА". Ко второму еще пока не приступил.

----- Original Message -----

From: Vadim Godunko

To: ada_ru@yahoogroups.com

Sent: Wednesday, January 14, 2009 6:24 PM

Subject: Re: [ada_ru] Анонс: QtAda 2.1.0

 

>В первом случае файл проекта один и ничем не примечательный, например:

 

>with "qt_gui";

 

>project Example is

>for Main use ("example.adb");

>end Example;

 

>Всё что нужно: подключить проекты для используемых модулей QtAda и >задать имя файла главной подпрограммы. Остальное - на любителя, лично >мне нравится убрать объектные файлы в отдельный каталог, и я дописываю:

 

>for Object_Dir use ".objs";

 

>(Как создать такое мастером проектов в GPS я к сожалению не знаю, буду >благодарен если кто-то подскажет)

 

Если я правильно понял вопрос, то в закладке "Objects" (в GPS "мастере" это тоже какой-то шаг, единственно что мне приходится делать - создавать этот каталог вручную) нужно задать каталог "Build directory", а для исполняющего файла я указываю каталог "Exec directory". У меня типичный проект выглядит примерно так:

 

with "qt_gui";

 

project Main is

 

for Main use ("main.adb");

for Source_Dirs use (".");

for Object_Dir use "Build";

for Exec_Dir use ".";

for Library_Interface use ();

for Languages use ("Ada");

 

package Compiler is

for Default_Switches ("ada") use ("-gnat05");

end Compiler;

 

end Main;

 

Все создавалось "мастером" за исключением первой строчки.

 

У меня вопрос: какую кодировку назначить в GPS/программе чтобы отображался русский шрифт под GUI Windows? До этого использовал в настройках GPS шрифт для редактора => Windows-1251.

 

With best regards

Sergey Kirkorov www.mediascan.by

Email: ksiby@...

Sergey Kirkorov wrote:

 

Если я правильно понял вопрос, то в закладке "Objects" (в GPS "мастере" это тоже какой-то шаг, единственно что мне приходится делать - создавать этот каталог вручную) нужно задать каталог "Build directory", а для исполняющего файла я указываю каталог "Exec directory". У меня типичный проект выглядит примерно так:

 

Все создавалось "мастером" за исключением первой строчки.

 

Вот про то, как создать первую строку я и спрашивал...

 

У меня вопрос: какую кодировку назначить в GPS/программе чтобы

отображался русский шрифт под GUI Windows? До этого использовал в настройках GPS шрифт для редактора => Windows-1251.

 

Тут несколько путей есть.

 

Можно использовать UTF-8. Тогда открывается две возможности:

преобразовывать литералы с помощью Qt4.Strings.From_Utf_8; или же указать компилятору ключ -gnatW8 и использовать From_Utf_16/From_Ucs_4.

Можно оставить кодировку CP1251, и мудрить с QTextCodec.

 

И наконец, можно в программе использовать только англоязычные строки и использовать Qt Linguist для локализации программы.

 

Последние два способа сейчас не поддерживаются, но их можно добавить.

 

День добрый!

Что можете посоветовать для новых разработок применительно к ОС Linux (потребители в перспективе) при этом основные пользователи на текущий момент русскоязычные пользователи Windows.

 

With best regards

Sergey Kirkorov www.mediascan.by

Email: ksiby@...

----- Original Message -----

From: Vadim Godunko

To: ada_ru@yahoogroups.com

Sent: Thursday, January 22, 2009 8:11 PM

Subject: Re: [ada_ru] Анонс: QtAda 2.1.0

 

 

Тут несколько путей есть.

 

Можно использовать UTF-8. Тогда открывается две возможности:

преобразовывать литералы с помощью Qt4.Strings.From_Utf_8; или же указать компилятору ключ -gnatW8 и использовать From_Utf_16/From_Ucs_4.

Можно оставить кодировку CP1251, и мудрить с QTextCodec.

 

И наконец, можно в программе использовать только англоязычные строки и использовать Qt Linguist для локализации программы.

 

Последние два способа сейчас не поддерживаются, но их можно добавить.

.

Sergey Kirkorov wrote:

 

День добрый!

Что можете посоветовать для новых разработок применительно к ОС Linux (потребители в перспективе) при этом основные пользователи на текущий момент русскоязычные пользователи Windows.

 

Применительно к Linux я думаю выбор небольшой - UTF-8 есть стандарт де-факто. Использовать или нет в этом случае -gnatW8 - решение на любителя.

Если ориентироваться не только на "локальный" рынок, то использование локализации полезно.

 

День добрый!

Уточняю вопрос, может кто знает о планах развития GPS в части интеграции с MS Windows.

Кто раньше поддержит CP1251, или QtAda или GPS?

Будет ли это сделано вообще?

Простите за назойливость, но для меня это очень важные вопросы.

 

With best regards

Sergey Kirkorov www.mediascan.by

Email: ksiby@...

----- Original Message -----

From: Sergey Kirkorov

To: ada_ru@yahoogroups.com

Sent: Friday, January 23, 2009 9:01 AM

Subject: Re: [ada_ru] Анонс: QtAda 2.1.0

 

 



 

 

День добрый!

Что можете посоветовать для новых разработок применительно к ОС Linux (потребители в перспективе) при этом основные пользователи на текущий момент русскоязычные пользователи Windows.

 

With best regards

Sergey Kirkorov www.mediascan.by

Email: ksiby@...

----- Original Message -----

From: Vadim Godunko

To: ada_ru@yahoogroups.com

Sent: Thursday, January 22, 2009 8:11 PM

Subject: Re: [ada_ru] Анонс: QtAda 2.1.0

 

 

Тут несколько путей есть.

 

Можно использовать UTF-8. Тогда открывается две возможности:

преобразовывать литералы с помощью Qt4.Strings.From_Utf_8; или же указать компилятору ключ -gnatW8 и использовать From_Utf_16/From_Ucs_4.

Можно оставить кодировку CP1251, и мудрить с QTextCodec.

 

И наконец, можно в программе использовать только англоязычные строки и использовать Qt Linguist для локализации программы.

 

Последние два способа сейчас не поддерживаются, но их можно добавить.

 

 

 

 

 

__________ NOD32 3353 (20080813) Information __________

 

This message was checked by NOD32 antivirus system.

http://www.eset.com

Sergey Kirkorov wrote:

 

 



 

 

День добрый!

Уточняю вопрос, может кто знает о планах развития GPS в части интеграции с MS Windows.

Кто раньше поддержит CP1251, или QtAda или GPS?

Будет ли это сделано вообще?

Простите за назойливость, но для меня это очень важные вопросы.

 

Хм... Как не странно, но мой вариант GPS не поддерживает CP1251, никогда бы не подумал! тут нужно написать bug-report на report@..., не

забыв включить в заголовок слово gnat.

 

Qt и QtAda внутри всегда используют UTF-16, этого изменить нельзя. Но наружный интерфейс поддерживает UTF-8, UTF-16, UCS-4 и local 8-bit. Подозреваю, что local 8-bit для русской редакции MS Windows будет CP1251. (Вечером постараюсь проверить)

 

Или же я снова не понял вопроса?

 

День добрый!

Этак лет 6 назад еще во времена gnat 3.15p и GPS 1.2 для того чтобы поддержать русский я и мои сотоварищи начали вводить строчку напрямую в Preferences=>General=>Character set=>Windows-1251. После этого необходимо обязательно закрыть GPS и по новой загрузке русские буквы нормально работают в комментариях и в String. Правда там где нужно использовать Unicode или OEM приходится использовать соответствующие функции OS Windows. Все это обросло большим количеством наработок и программ которые не хотелось бы терять. Беда состоит в том что если установить например UTF-8 то GPS просто выбрасывает куски кода где встречается русский. Отсюда и вопрос "Что делать?".

 

With best regards

Sergey Kirkorov www.mediascan.by

Email: ksiby@...

----- Original Message -----

From: Vadim Godunko

To: ada_ru@yahoogroups.com

Sent: Friday, January 23, 2009 1:29 PM

Subject: Re: [ada_ru] Анонс: QtAda 2.1.0

 

 

Sergey Kirkorov wrote:

>

>

> 

>

>

> День добрый!

> Уточняю вопрос, может кто знает о планах развития GPS в части интеграции > с MS Windows.

> Кто раньше поддержит CP1251, или QtAda или GPS?

> Будет ли это сделано вообще?

> Простите за назойливость, но для меня это очень важные вопросы. >

Хм... Как не странно, но мой вариант GPS не поддерживает CP1251, никогда бы не подумал! тут нужно написать bug-report на report@..., не

забыв включить в заголовок слово gnat.

 

Qt и QtAda внутри всегда используют UTF-16, этого изменить нельзя. Но наружный интерфейс поддерживает UTF-8, UTF-16, UCS-4 и local 8-bit. Подозреваю, что local 8-bit для русской редакции MS Windows будет CP1251. (Вечером постараюсь проверить)

 

Или же я снова не понял вопроса?

 

 

 

__________ NOD32 3353 (20080813) Information __________

 

This message was checked by NOD32 antivirus system.

http://www.eset.com

Sergey Kirkorov wrote:

 

Этак лет 6 назад еще во времена gnat 3.15p и GPS 1.2 для того чтобы поддержать русский я и мои сотоварищи начали вводить строчку напрямую в Preferences=>General=>Character set=>Windows-1251. После этого

необходимо обязательно закрыть GPS и по новой загрузке русские буквы нормально работают в комментариях и в String. Правда там где нужно использовать Unicode или OEM приходится использовать соответствующие функции OS Windows. Все это обросло большим количеством наработок и программ которые не хотелось бы терять. Беда состоит в том что если установить например UTF-8 то GPS просто выбрасывает куски кода где встречается русский. Отсюда и вопрос "Что делать?".

 

Т.е. есть некоторый "унаследованный" код, предполагающий, что String использует кодировку CP1251? И корректировать весь этот код не

представляется возможным? Так? Ну или где-то так?

 

И в то же время хочется использовать этот код в программах, использующих QtAda?

 

День добрый!

Совершенно правильно. Можно добавить еще что необходимо этот код сопровождать-- значит иметь два профиля пользователя один настроенный на CP1251 а другой например UTF-8 и не дай бог перепутать GPS не простит.

 

With best regards

Sergey Kirkorov www.mediascan.by

Email: ksiby@...

----- Original Message -----

From: Vadim Godunko

To: ada_ru@yahoogroups.com

Sent: Friday, January 23, 2009 4:32 PM

Subject: Re: [ada_ru] Анонс: QtAda 2.1.0

 

 

Sergey Kirkorov wrote:

>

> Этак лет 6 назад еще во времена gnat 3.15p и GPS 1.2 для того чтобы > поддержать русский я и мои сотоварищи начали вводить строчку напрямую в > Preferences=>General=>Character set=>Windows-1251. После этого > необходимо обязательно закрыть GPS и по новой загрузке русские буквы > нормально работают в комментариях и в String. Правда там где нужно > использовать Unicode или OEM приходится использовать соответствующие > функции OS Windows. Все это обросло большим количеством наработок и > программ которые не хотелось бы терять. Беда состоит в том что если > установить например UTF-8 то GPS просто выбрасывает куски кода где > встречается русский. Отсюда и вопрос "Что делать?".

>

Т.е. есть некоторый "унаследованный" код, предполагающий, что String использует кодировку CP1251? И корректировать весь этот код не

представляется возможным? Так? Ну или где-то так?

 

И в то же время хочется использовать этот код в программах, использующих QtAda?

 

 

 

__________ NOD32 3353 (20080813) Information __________

 

This message was checked by NOD32 antivirus system.

http://www.eset.com

Sergey Kirkorov wrote:

 

Совершенно правильно. Можно добавить еще что необходимо этот код сопровождать-- значит иметь два профиля пользователя один настроенный на CP1251 а другой например UTF-8 и не дай бог перепутать GPS не простит.

Тяжёлый случай ;-)

 

Вот что получилось у меня на GNAT GPL 2008:

 

1. При использовании в строках CP1251 и Qt4.Strings.From_Loal_8_bit текст прекрасно отображается.

 

2. Если задать по умолчанию CP1251, то потом для индивидуального файла можно её поменять на UTF-8, текст автоматически перекодируется и не теряется (обратное - не верно! из CP1251 без потерь UTF-8 не сделать).

3. Если нигде в унаследованном коде в спецификациях обычных пакетов и спецификациях и телах настраиваемых пакетов не используются строковые константы в CP1251, то оптимально использовать UTF-8 и Wide_String с ключом -gnatW8, для индивидуальных же файлов этот ключ отменять.

Сомнительно, что такое будет...

 

Если же нет, то вполне можно использовать UTF-8 и CP1251 в строках, но ясное дело это будет постоянно приводить к недоразумениям и разруливать их придётся вручную.

 

Для предотвращения несуразностей возможно создать обёртку к имеющемуся коду, которая будет переводить String/CP1251 в Wide_String/UTF-16, например так:

 

function To_Wide_String (Y : String) return Wide_String is

begin

return Qt4.Strings.From_Local_8_Bit (Y).To_Utf_16;

end To_Wide_String;

 

А при объявлении констант в файлах с UTF-8 делать так:

 

X : constant Wide_String

:= Qt4.Strings.From_Utf_8 ("Это текст в UTF-8").To_Utf_16;

 

Потом постепенно от этого можно будет избавляться и в конце концов включить -gnatW8...

 

PS. Когда то очень давно мы проделывали такой трюк... Заменяли String на Wide_String везде, но поэтапно. Мороки хватило, но по окончанию перехода не пожалели ;-)

 

День добрый!

Спасибо, пойдем Вашим путем.

 

With best regards

Sergey Kirkorov www.mediascan.by

Email: ksiby@...

----- Original Message -----

From: Vadim Godunko

To: ada_ru@yahoogroups.com

Sent: Friday, January 23, 2009 6:11 PM

Subject: Re: [ada_ru] Анонс: QtAda 2.1.0

 

 

Sergey Kirkorov wrote:

>

> Совершенно правильно. Можно добавить еще что необходимо этот код > сопровождать-- значит иметь два профиля пользователя один настроенный на > CP1251 а другой например UTF-8 и не дай бог перепутать GPS не простит. >

Тяжёлый случай ;-)

 

Вот что получилось у меня на GNAT GPL 2008:

 

1. При использовании в строках CP1251 и Qt4.Strings.From_Loal_8_bit текст прекрасно отображается.

 

2. Если задать по умолчанию CP1251, то потом для индивидуального файла можно её поменять на UTF-8, текст автоматически перекодируется и не теряется (обратное - не верно! из CP1251 без потерь UTF-8 не сделать).

3. Если нигде в унаследованном коде в спецификациях обычных пакетов и спецификациях и телах настраиваемых пакетов не используются строковые константы в CP1251, то оптимально использовать UTF-8 и Wide_String с ключом -gnatW8, для индивидуальных же файлов этот ключ отменять. Сомнительно, что такое будет...

 

Если же нет, то вполне можно использовать UTF-8 и CP1251 в строках, но ясное дело это будет постоянно приводить к недоразумениям и разруливать их придётся вручную.

 

Для предотвращения несуразностей возможно создать обёртку к имеющемуся коду, которая будет переводить String/CP1251 в Wide_String/UTF-16, например так:

 

function To_Wide_String (Y : String) return Wide_String is

begin

return Qt4.Strings.From_Local_8_Bit (Y).To_Utf_16;

end To_Wide_String;

 

А при объявлении констант в файлах с UTF-8 делать так:

 

X : constant Wide_String

:= Qt4.Strings.From_Utf_8 ("Это текст в UTF-8").To_Utf_16;

 

Потом постепенно от этого можно будет избавляться и в конце концов включить -gnatW8...

 

PS. Когда то очень давно мы проделывали такой трюк... Заменяли String на Wide_String везде, но поэтапно. Мороки хватило, но по окончанию перехода не пожалели ;-)

 

 

 

__________ NOD32 3353 (20080813) Information __________

 

This message was checked by NOD32 antivirus system.

http://www.eset.com

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти