Russian Qt Forum
Ноябрь 22, 2024, 22:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сборка QtScriptGenerator  (Прочитано 8767 раз)
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« : Апрель 10, 2014, 09:22 »

Скачал из репозитория.
Инструкция:
Цитировать
Qt Script Generator labs package, version 0.2

The Qt Script Generator is a tool that generates Qt bindings for Qt Script.

---

Instructions:

1) Build the generator: cd path/to/this/project/generator, qmake && make

2) Run the generator (without arguments)
   This will generate C++ files in path/to/this/project/generated_cpp
   and documentation in path/to/this/project/doc

3) Build the bindings plugins: cd path/to/this/project/qtbindings, qmake && make
   The plugins will be put under path/to/this/project/plugins

4) To use the plugins in your application, add the plugins path to the library paths
   (QCoreApplication::setLibraryPaths()), then call QScriptEngine::importExtension()
   (plugin keys are "qt.core", "qt.gui", etc).

There is a simple script interpreter / launcher in path/to/this/project/qtbindings/qs_eval
that imports all the bindings. You can use it to run the examples found in
path/to/this/project/examples. E.g., with the examples directory being the working directory:

../qtbindings/qs_eval/qs_eval CollidingMice.js


See the generated doc/index.html for more information.

Have fun!
Первый пункт - сборка генератора прошла успешно.
А вот во втором остановился и не ясно что делать Грустный
« Последнее редактирование: Апрель 11, 2014, 06:29 от gil9red » Записан

Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #1 : Апрель 10, 2014, 11:53 »

Если не ошибаюсь это было актуально для Qt 4. В свое время использовал.
Записан
AlexEx
Чайник
*
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #2 : Апрель 10, 2014, 13:48 »

М.б. проблема в QtCreator 3.0.1. Помнится, под 2.6 собирался без проблем.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Апрель 10, 2014, 14:56 »

Так ведь, компилится нормально, проблемы возникают при запуске генератора. Я и из консоли запускал генератор - тот же результат, что и под запуском из креатора
Т.е. запускается генератор без параметров (как в инструкции) и появляются ошибки при парсинге файла генератора (в файле описано, что нужно генерировать)
« Последнее редактирование: Апрель 12, 2014, 17:22 от gil9red » Записан

gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Апрель 12, 2014, 17:22 »

Есть идеи в чем проблема? Улыбающийся Может кто то с подобной ошибкой встречался?
Записан

gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #5 : Апрель 16, 2014, 22:29 »

Я не одинок со своей проблемой. Только вот и тут нет ответа Грустный
http://comments.gmane.org/gmane.comp.lib.qt.general/42718
Записан

gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #6 : Апрель 16, 2014, 23:23 »

Подправив код генератора смог продвинуться, теперь ошибки такие:

Please wait while source files are being generated...
WARNING(MetaJavaBuilder) :: ClassGenerator: no java classes, skipping
WARNING(MetaJavaBuilder) :: ShellImplGenerator: no java classes, skipping
WARNING(MetaJavaBuilder) :: ShellHeaderGenerator: no java classes, skipping
WARNING(MetaJavaBuilder) :: Generator: no java classes, skipping
Classes in typesystem: 0
Generated:
  - classes...: 0 (0)
  - header....: 0 (0)
  - impl......: 0 (0)
  - modules...: 0 (0)
  - pri.......: 0 (0)

Done, 4 warnings (1116 known issues)
Записан

Bepec
Гость
« Ответ #7 : Апрель 16, 2014, 23:38 »

Ты правки приводи) Кто нить захочет помочь - будет продолжать твоё дело, а не с начала начинать.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #8 : Апрель 16, 2014, 23:39 »

Ты правки приводи) Кто нить захочет помочь - будет продолжать твоё дело, а не с начала начинать.
Как раз собирался Улыбающийся
Исправил последний баг (все оказалось очень просто) и получил вот такой во лог:
Код:
Please wait while source files are being generated... 
WARNING(MetaJavaBuilder) :: enum 'QGraphicsItem::PanelModality' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'QTextDocument::Stacks' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'QStyle::RequestSoftwareInputPanel' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: Unable to decide type of property: 'Qt::InputMethodHints' in class 'QWidget'
WARNING(MetaJavaBuilder) :: Unable to decide type of property: 'SoftKeyRole' in class 'QAction'
WARNING(MetaJavaBuilder) :: Unable to decide type of property: 'Priority' in class 'QAction'
WARNING(MetaJavaBuilder) :: enum 'QAction::Priority' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'QAction::SoftKeyRole' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'QXmlStreamReader::ReadElementTextBehaviour' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'QDataStream::FloatingPointPrecision' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'QPainter::PixmapFragmentHint' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'QGradient::InterpolationMode' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: Unable to decide type of property: 'QEasingCurve' in class 'QTimeLine'
WARNING(MetaJavaBuilder) :: enum 'Qt::GestureType' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'Qt::GestureFlag' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'Qt::GestureState' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'Qt::CoordinateSystem' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'Qt::TileRule' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'Qt::Initialization' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'Qt::AnchorPoint' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'Qt::NavigationMode' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'Qt::InputMethodHint' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'Qt::TouchPointState' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'QtValidLicenseForOpenVGModule' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'QtValidLicenseForDeclarativeModule' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'enum_2' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'enum_3' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: enum 'QtValidLicenseForMultimediaModule' does not have a type entry or is not an enum
WARNING(MetaJavaBuilder) :: class 'QGraphicsWidget' inherits from unknown base class 'QGraphicsObject'
WARNING(MetaJavaBuilder) :: class not found for setup inheritance 'QGraphicsObject'
WARNING(MetaJavaBuilder) :: class 'QGraphicsTextItem' inherits from unknown base class 'QGraphicsObject'
QProgressBar.invertedAppearance() const mostly equal to QProgressBar.invertedAppearance()
QProgressBar.invertedAppearance() mostly equal to QProgressBar.invertedAppearance() const
QProgressBar.textDirection() const mostly equal to QProgressBar.textDirection()
QProgressBar.textDirection() mostly equal to QProgressBar.textDirection() const
QPainter.drawLines(const QVector<QLineF > & lines) mostly equal to QPainter.drawLines(const QVector<QLine > & lines)
QPainter.drawLines(const QVector<QPoint > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QLine > & lines)
QPainter.drawLines(const QVector<QPointF > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QLine > & lines)
QPainter.drawLines(const QVector<QLine > & lines) mostly equal to QPainter.drawLines(const QVector<QLineF > & lines)
QPainter.drawLines(const QVector<QPoint > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QLineF > & lines)
QPainter.drawLines(const QVector<QPointF > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QLineF > & lines)
QPainter.drawLines(const QVector<QLine > & lines) mostly equal to QPainter.drawLines(const QVector<QPoint > & pointPairs)
QPainter.drawLines(const QVector<QLineF > & lines) mostly equal to QPainter.drawLines(const QVector<QPoint > & pointPairs)
QPainter.drawLines(const QVector<QPointF > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QPoint > & pointPairs)
QPainter.drawLines(const QVector<QLine > & lines) mostly equal to QPainter.drawLines(const QVector<QPointF > & pointPairs)
QPainter.drawLines(const QVector<QLineF > & lines) mostly equal to QPainter.drawLines(const QVector<QPointF > & pointPairs)
QPainter.drawLines(const QVector<QPoint > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QPointF > & pointPairs)
QPainter.drawRects(const QVector<QRectF > & rectangles) mostly equal to QPainter.drawRects(const QVector<QRect > & rectangles)
QPainter.drawRects(const QVector<QRect > & rectangles) mostly equal to QPainter.drawRects(const QVector<QRectF > & rectangles)
QPainter.drawLines(const QVector<QLineF > & lines) mostly equal to QPainter.drawLines(const QVector<QLine > & lines)
QPainter.drawLines(const QVector<QPoint > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QLine > & lines)
QPainter.drawLines(const QVector<QPointF > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QLine > & lines)
QPainter.drawLines(const QVector<QLine > & lines) mostly equal to QPainter.drawLines(const QVector<QLineF > & lines)
QPainter.drawLines(const QVector<QPoint > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QLineF > & lines)
QPainter.drawLines(const QVector<QPointF > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QLineF > & lines)
QPainter.drawLines(const QVector<QLine > & lines) mostly equal to QPainter.drawLines(const QVector<QPoint > & pointPairs)
QPainter.drawLines(const QVector<QLineF > & lines) mostly equal to QPainter.drawLines(const QVector<QPoint > & pointPairs)
QPainter.drawLines(const QVector<QPointF > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QPoint > & pointPairs)
QPainter.drawLines(const QVector<QLine > & lines) mostly equal to QPainter.drawLines(const QVector<QPointF > & pointPairs)
QPainter.drawLines(const QVector<QLineF > & lines) mostly equal to QPainter.drawLines(const QVector<QPointF > & pointPairs)
QPainter.drawLines(const QVector<QPoint > & pointPairs) mostly equal to QPainter.drawLines(const QVector<QPointF > & pointPairs)
QPainter.drawRects(const QVector<QRectF > & rectangles) mostly equal to QPainter.drawRects(const QVector<QRect > & rectangles)
QPainter.drawRects(const QVector<QRect > & rectangles) mostly equal to QPainter.drawRects(const QVector<QRectF > & rectangles)
QPixmapCache.find(const QString & key, QPixmap * pixmap) mostly equal to QPixmapCache.find(const QString & key, QPixmap & pixmap)
QPixmapCache.find(const QString & key, QPixmap & pixmap) mostly equal to QPixmapCache.find(const QString & key, QPixmap * pixmap)
QFuture.QFuture(const QFuture & otheWARNING(MetaJavaBuilder) :: duplicate enum values: QDataStream::Version, Qt_4_7 and Qt_4_6 are 12, already rejected: (Qt_4_1, Qt_4_5)
WARNING(MetaJavaBuilder) :: duplicate enum values: Qt::Modifier, SHIFT and META are 0, already rejected: ()
WARNING(MetaJavaBuilder) :: duplicate enum values: Qt::Modifier, CTRL and META are 0, already rejected: ()
WARNING(MetaJavaBuilder) :: duplicate enum values: Qt::Modifier, ALT and META are 0, already rejected: ()
WARNING(MetaJavaBuilder) :: duplicate enum values: Qt::Modifier, MODIFIER_MASK and META are 0, already rejected: ()
WARNING(MetaJavaBuilder) :: duplicate enum values: Qt::Modifier, UNICODE_ACCEL and META are 0, already rejected: ()
WARNING(MetaJavaBuilder) :: duplicate enum values: Qt::MouseButton, MiddleButton and MidButton are 4, already rejected: ()
WARNING(MetaJavaBuilder) :: unhandled enum value: static_cast<Qt::MatchFlags>(Qt::MatchExactly in Qt::MatchFlag
WARNING(MetaJavaBuilder) :: unhandled enum value: Qt::MatchCaseSensitive) in Qt::MatchFlag
WARNING(MetaJavaBuilder) :: unmatched enum static_cast<Qt::MatchFlags>(Qt::MatchExactly|Qt::MatchCaseSensitive) when parsing default value of 'findData' in class 'QComboBox'
WARNING(MetaJavaBuilder) :: unmatched enum static_cast<Qt::MatchFlags>(Qt::MatchExactly|Qt::MatchCaseSensitive) when parsing default value of 'findText' in class 'QComboBox'
r) mostly equal to QFuture.QFuture(const QFuture & other)
QFuture.QFuture(const QFuture & other) mostly equal to QFuture.QFuture(const QFuture & other)
QFuture.QFuture(const QFuture & other) mostly equal to QFuture.QFuture(const QFuture & other)
QFuture.QFuture(const QFuture & other) mostly equal to QFuture.QFuture(const QFuture & other)
Classes in typesystem: 406
Generated:
  - classes...: 394 (394)
  - header....: 280 (280)
  - impl......: 280 (280)
  - modules...: 2 (2)
  - pri.......: 2 (2)

Done, 42 warnings (694 known issues)

Даже создались нужные папки и файлики, но я пока не испытывал их.
« Последнее редактирование: Апрель 16, 2014, 23:42 от gil9red » Записан

gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #9 : Апрель 16, 2014, 23:50 »

Как происходит работа генератора? Просто - когда при запуске нет параметров, он использует сборку build_all:
QString default_system = ":/trolltech/generator/build_all.txt";
Как вы видите это файлик, а точнее xml, в котором описывается какие xml файлы с конкретной сборкой нужно сгенерировать (core, gui, sql и прочие модули Qt)
Этот файлик находится в ресурсах, а также в ресурсах находятся файлики, которые он будет генерировать.

build_all.txt:
Код:
<typesystem>
  <load-typesystem name="typesystem_core.xml" generate="yes" />
  <load-typesystem name="typesystem_gui.xml" generate="yes" />
  <load-typesystem name="typesystem_sql.xml" generate="yes" />
  <load-typesystem name="typesystem_opengl.xml" generate="yes" />
  <load-typesystem name="typesystem_svg.xml" generate="yes" />
  <load-typesystem name="typesystem_network.xml" generate="yes" />
  <load-typesystem name="typesystem_xml.xml" generate="yes" />
  <load-typesystem name="typesystem_phonon.xml" generate="yes" />
  <load-typesystem name="typesystem_webkit.xml" generate="yes" />
  <load-typesystem name="typesystem_xmlpatterns.xml" generate="yes" />
  <load-typesystem name="typesystem_uitools.xml" generate="yes" />
</typesystem>

Ошибка возникала из-за путей к typesystem_*.xml, добавив к ним префикс файлика ресурсов (:/trolltech/generator/) -> <load-typesystem name=":/trolltech/generator/typesystem_core.xml" generate="yes" /> парсер будет находить файлик в ресурсах и парсить его - ура!

В main.cpp есть также строчка QString pp_file = ".preprocessed.tmp"; думаю, будет ясно, что этот файл не найдется никогда, только если не добавить его в ресурсы (он кст лежит в папке с исходниками генератора) и не забыть бы указать префикс.
Если не подредактировать его, то будет такое вываливаться в лог:
Подправив код генератора смог продвинуться, теперь ошибки такие:

Please wait while source files are being generated...
WARNING(MetaJavaBuilder) :: ClassGenerator: no java classes, skipping
WARNING(MetaJavaBuilder) :: ShellImplGenerator: no java classes, skipping
WARNING(MetaJavaBuilder) :: ShellHeaderGenerator: no java classes, skipping
WARNING(MetaJavaBuilder) :: Generator: no java classes, skipping
Classes in typesystem: 0
Generated:
  - classes...: 0 (0)
  - header....: 0 (0)
  - impl......: 0 (0)
  - modules...: 0 (0)
  - pri.......: 0 (0)

Done, 4 warnings (1116 known issues)



Вот и все, в чем смог разобраться Улыбающийся
« Последнее редактирование: Апрель 16, 2014, 23:52 от gil9red » Записан

Bepec
Гость
« Ответ #10 : Апрель 16, 2014, 23:54 »

Таки работает или таки не работает? Веселый
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #11 : Апрель 22, 2016, 10:20 »

А я бы пощупал бы.
Есть у кого-нить собранная версия?
Можете намылить?
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #12 : Апрель 22, 2016, 12:21 »

Я тогда, похоже обошелся QScriptEngine Улыбающийся
гуглением нашел даже кое-что из проекта

Вот: https://github.com/gil9red/NotesManager/tree/master/ScriptModule
Для подсветки использовал QScintilla

Найденный пример использования:
Код
C++ (Qt)
void ScriptsManager::runScript( const QString & script )
{
   const QString & result = Script::ScriptEngine::instance()->evaluate( script ).toString();
   ui->lEditLog->setText( result );
}
 

Проект можно и не собирать -- там довольно мудрено было, может не получиться Улыбающийся
Записан

panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #13 : Апрель 22, 2016, 16:01 »

Жаль, не помешал бы знакомый скриптовый двиг в системе.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.08 секунд. Запросов: 22.