What JS objects are available in Qt Creator JS: variable expansion?

Qt Creator's wizard and configuration settings support variable expansion , including evaluating JavaScript expressions such as. C ++ Class Wizard file template contains:

%{JS: Cpp.openNamespaces('%{Class}')}

      

Cpp

appears to be a global object. Where in the sources of Qt Creator are those defined and what is available?

They are not documented anywhere.

+4


source to share


2 answers


JavaScript variable expansion is done JsExpander

in the main plugin. The extender can register instances QObject

and expose them as properties of the global JS object.

To find all of these globals, look for method calls registerQObjectForJs

. See the github search results for this method .

Since Qt Creator 4.2.1 and until 4.6, only the following objects will be registered:

Method parameter types are mapped to JavaScript types using QJSEngine

. For example. to get Qt includes the following substitution:

%{JS: QtSupport.qtIncludes([ '%{Base}' ], [ '%{Base}' ])}

      

given the signature

QString qtIncludes(const QStringList &qt4, const QStringList &qt5)

      

The following is a list of methods.

Util



QString toNativeSeparators(const QString &in) const;
QString fromNativeSeparators(const QString &in) const;

QString baseName(const QString &in) const;
QString fileName(const QString &in) const;
QString completeBaseName(const QString &in) const;
QString suffix(const QString &in) const;
QString completeSuffix(const QString &in) const;
QString path(const QString &in) const;
QString absoluteFilePath(const QString &in) const;

QString relativeFilePath(const QString &path, const QString &base) const;

// File checks:
bool exists(const QString &in) const;
bool isDirectory(const QString &in) const;
bool isFile(const QString &in) const;

// MimeDB:
QString preferredSuffix(const QString &mimetype) const;

// Generate filename:
QString fileName(const QString &path,
                             const QString &extension) const;

// Generate temporary file:
QString mktemp(const QString &pattern) const;

// Generate a ascii-only string:
QString asciify(const QString &input) const;

      

Cpp

// Generate header guard:
QString headerGuard(const QString &in) const;

// Fix the filename casing as configured in C++/File Naming:
QString fileName(const QString &path, const QString &extension) const;

// Work with classes:
QStringList namespaces(const QString &klass) const;
QString className(const QString &klass) const;
QString classToFileName(const QString &klass,
                                    const QString &extension) const;
QString classToHeaderGuard(const QString &klass, const QString &extension) const;
QString openNamespaces(const QString &klass) const;
QString closeNamespaces(const QString &klass) const;

      

Modeling

QString fileNameToElementName(const QString &file);
QString elementNameToFileName(const QString &element);

      

QtSupport

// Ui file related:
// Change the class name in a UI XML form
QString changeUiClassName(const QString &uiXml, const QString &newUiClassName);

QString uiClassName(const QString &uiXml);

// Generic Qt:
QString qtIncludes(const QStringList &qt4, const QStringList &qt5);

      

Vcs

bool isConfigured(const QString &vcsId) const;
QString displayName(const QString &vcsId) const;

      

+5


source


It is also useful to note that several variables JS, provided via makroekspandera, cm. At : https://github.com/qt-creator/qt-creator/blob/master/src/plugins/coreplugin/coreplugin.cpp#L169 ...



0


source







All Articles