1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-24 01:15:29 +02:00
Commit graph

32 commits

Author SHA1 Message Date
Doug Schaefer
03051c91ab Implement Qt build tab for the launch config dialog.
Make sure Core Build handles the properties set by these tabs
correctly. A bunch of string externalization too.

Change-Id: I54a61b4d2520a0952c43608169747e792826062e
2016-11-11 16:24:40 -05:00
Doug Schaefer
955c971682 Bug 500080 - Add listeners for Qt Install removals
Add the Qt Build Configs as listeners so that they can disassociate
from removed Qt Installs.

Change-Id: Ia26ebfa4ece4ca7f22248b49ffbb88c858757f97
2016-08-22 13:45:42 -04:00
Doug Schaefer
6e1b9b408d Tighter integration of new build system with cdt.core.
Move the new build system to cdt.core and remove the previous
plugins. Hook the new system into scanner info and environment
variable manager.

Clean up API in preparation for Neon and API lockdown. Hook up
Qt to the new APIs.

Add discovery of MSYS2's toolchain and Qt and Qt's MinGW toolchain.

Change-Id: I85b1a91da4a44e86f0e9da9310f8106c894623e0
2016-04-14 16:19:37 -04:00
Doug Schaefer
d1dda291d9 New Qt templates using new templates framework. Arduino fixes.
Change-Id: Ib50fb439ba248965286242e476728bb9f36ac18b
2016-02-22 22:55:06 -05:00
Doug Schaefer
192bfff688 Bug 486509 - Add support for debugging local Qt apps.
We reuse GDBLaunch but need to override some settings that are
normally in the launch configuration. These things are calculated
at launch time.

Note there is also an added dependency to the launch bar core
to make GDBLaunch a targeted launch so we can set the target properly.
At some point we'll move this launch target stuff lower down, maybe
to the debug platform.

Change-Id: Ibbf6b794a9ecf25b79d46093cc624ea69dc04641
2016-01-28 11:05:34 -05:00
Matthew Bastien
a43976b882 Bug 481126 - Convert Acorn AST into Java
Added the class QmlASTNodeHandler that creates and manages Proxy
instances of the QML AST node interfaces.  The proxies are created
dynamically based on what methods are called on the interface.  That
way, the AST is loaded as needed rather than all at once.  Added a few
tests to verify behavior (however, they are not comprehensive; there are
a lot more cases that should be verified in the future).

Change-Id: I64038f9668942a67e1f1b7dceac6c7dbed2d46d7
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
2015-12-16 11:40:14 -05:00
Matthew Bastien
84b5f4bfd2 Bug 480238 - QML AST in Java
Created a set of Interfaces to represent the JavaScript and QML Ast in
plain Java.  Updated acorn-qml to be able to parse the entirety of QML
syntax as specified by the QML grammar.  Also modified the QML AST to
represent the added syntax and modified tern-qml to handle the new AST
elements.

Changed the way that the QMLAnalyzer handles path resolution.  Paths are
now relative to the local file system.

Note: the normal acorn-qml parser cannot parse the full range of QML
syntax due to ambiguities.  However, the loose parser can.  We're still
waiting on Acorn to bring lookahead to the normal parser in order to
resolve this.

Change-Id: I77c820ad46301975b2a91969a656d428ad9409c1
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
2015-12-14 11:13:52 -05:00
Matthew Bastien
1d36f36ef8 Bug 481126 - QML Directory File Parsing
Added a new parser that is able to construct an AST for a given qmldir
file.  Added tests to ensure the parser works for standard qmldir files.

Change-Id: I292aace3cdec8b4a544033f80812df965fef50b8
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
2015-12-09 14:58:22 -05:00
Doug Schaefer
f1a21f5c64 Bug 481126 - Hook up QML content assist to tern.js-based analyzer
Also renames Activator.

Change-Id: I58161a40b0caa2930e4fb2a5b2a70748fbe552ae
2015-12-02 22:23:16 -05:00
Doug Schaefer
68b8c98473 Start to hook up tern-qml to Java and port some tests.
Change-Id: Ibee411855ffc78e1c183a6c845072ab1eac2b7df
2015-12-01 10:53:43 -05:00
Doug Schaefer
e3496e1246 Bug 481978 - Big overhaul of new build system to work with Qt.
Moved new build system to it's own plug-ins. Cleaned up the root
build configuration and toolchain classes and use them for Qt local
run builds. Also hooks Qt local run launch delegate to launch target
manager and associated delegate interface.

Change-Id: I0c0f711ee53005edd399f6d24ba96658d606e1e5
2015-11-24 22:11:33 -05:00
Doug Schaefer
2e6c6216fb Bug 481978 - UI to add Qt installs. Installs are now persisted.
Change-Id: I1fa75b71615959df314a9aaca5f01e17069ec35f
2015-11-12 10:18:37 -05:00
Doug Schaefer
67f78c8094 Remove the ANTLR based QML parser. We're planning on tern.js instead.
The prototyping of a tern.js based QML parser and semantic analyzer
is working out well. We are proceeding with that for now and are
removing the ANTLR based QML parser we were thinking of to clean
things up.

Change-Id: I5b9894ade1904d017709542ef23d1f80c4886e45
2015-11-06 15:26:37 -05:00
Doug Schaefer
7cf2a14cc9 Move QML stuff to qt.core plug-in. Add deps for ANTLR, FreeMarker.
Moves to the cdt 4.6 platform where the new ANTLR and Freemarker deps
will be. Also properly names the qt test plug-ins.

Change-Id: I026873583c6e6ca7602cb983ab04f99acd700a4b
2015-09-30 08:22:59 -04:00
Doug Schaefer
64bf3c4f69 Starting to put Qt onto the new build system and launch.
Change-Id: I3e65f5d69bfb35d16b2d1135f99517c7a2b2c437
2015-09-28 13:24:41 -04:00
Doug Schaefer
eb8d3cad86 Start of work on doing Qt the new way.
Change-Id: Icc891538549485f9ad99614f36262ed218fb0609
2015-08-27 00:20:55 -04:00
Doug Schaefer
1681eb8676 Revert "Bug 451929 - Leverage p2 ability to express native packages"
This is breaking downstream builds.

This reverts commit 18e6101a53.

Change-Id: I5dd2ee129518757866ab832c683b648d13b07b83
Reviewed-on: https://git.eclipse.org/r/38594
Tested-by: Hudson CI
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
2014-12-23 00:05:47 -05:00
Pascal Rapicault
18e6101a53 Bug 451929 - Leverage p2 ability to express native packages
Change-Id: I0d2d4b5088a0148d3f0dc7690448fe231ae45103
Signed-off-by: Pascal Rapicault <pascal@rapicorp.com>
Reviewed-on: https://git.eclipse.org/r/38272
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
Tested-by: Doug Schaefer <dschaefer@qnx.com>
2014-12-16 17:28:33 -05:00
Sergey Prigogin
5d7a19fa6c Enabled JDK 1.7.
Change-Id: Ic2a161ea3c318dc1e8ba01c271c936bf5ed8763d
Reviewed-on: https://git.eclipse.org/r/21020
Reviewed-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
IP-Clean: Sergey Prigogin <eclipse.sprigogin@gmail.com>
Tested-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
2014-01-24 13:38:55 -05:00
David Kaspar
5927d7ea30 Bug 422797 - API for retrieving QMake information from Qt project
Adding a new IQMakeInfo getter:
* getQMakeQueryMap()
* getQtDocPath()
* getResourceFiles()
* getFormFiles()

Fixing incorrect parsing of OTHER_FILES variable.

Adding QMakeTests.testQMakeInfo() JUnit test for qmake output parser.

Change-Id: Ic4e0180381967e2a96455d6a3411fe51ce1cef91
Signed-off-by: David Kaspar <dkaspar@blackberry.com>
Reviewed-on: https://git.eclipse.org/r/20500
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
IP-Clean: Doug Schaefer <dschaefer@qnx.com>
Tested-by: Doug Schaefer <dschaefer@qnx.com>
2014-01-13 09:47:43 -05:00
Andrew Eidsness
030bfc50fb Bug 425102 QObject::connect content assist broken
The QObject::connect content assistant does not work when the receiver
of the function call is an implicit this.  E.g.,

class Q : public QObject { Q_OBJECT
    f()
    {
        this->connect( ... );   // works
        connect( ... );         // does not work
        QObject::connect( ... ) // does not work
    }
};

I've changed the Qt's ASTUtil.getReceiverType to navigate to the
ICPPClassType through the IScope's.  The previous implementation was
relying on the connect function call being an IASTField

I've also added a test case for this problem.

Change-Id: I96c29a9a452280068bda39a63414c50008bfad37
Signed-off-by: Andrew Eidsness <eclipse@jfront.com>
Reviewed-on: https://git.eclipse.org/r/20399
Tested-by: Hudson CI
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
IP-Clean: Doug Schaefer <dschaefer@qnx.com>
2014-01-10 10:38:13 -05:00
Andrew Eidsness
70f50274b4 Bug 424824: Codan checker for Qt
This implements a Codan checker for QObject::connect and disconnect
function calls.  There are several overloads for each function, but the
basic call looks like:

    Q * q;
    QObject::connect( q, SIGNAL( sign() ), q, SLOT( slot() ) );

This function calls requires that Q have a Qt signal called sign and a
Qt slot called slot, e.g.,

    class Q : public QObject
    {
    Q_OBJECT
    Q_SIGNAL void sign();
    Q_SLOT   void slot();
    };

The Qt checker raises a warning if either condition is not true.

It also raises a warning for SIGNAL or SLOT expansions without a
parameter.

Change-Id: If68a5bcdabb3f118801675e46ae926e6a250378a
Signed-off-by: Andrew Eidsness <eclipse@jfront.com>
Reviewed-on: https://git.eclipse.org/r/20231
Tested-by: Hudson CI
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
IP-Clean: Doug Schaefer <dschaefer@qnx.com>
2014-01-02 21:53:46 -05:00
Andrew Eidsness
ff690ab953 Content assistant for Qt elements
This adds content assistants for QObject::connect function calls and
Q_PROPERTY expansions.

QObject::connect function calls look like:

    QObject::connect(
        sender,   SIGNAL(someSignalFunction(int),
        receiver, SLOT(someSlotFunction(int));

The assistant provides proposals in the SIGNAL and SLOT expansions.  The
QObject for the corresponding type is used to create a list of signal or
slot function signatures.

Q_PROPERTY expansions look like:

    Q_PROPERTY( type name READ someFunction ... )

[The ... is a list of optional attributes.]  The assistant proposes
attribute names that have not yet been added.  It also proposals
appropriate values for the attribute.

This patch also adds test cases for this feature.

Change-Id: I0eb25235bb423c1cfcd743075331f90f269afea7
Signed-off-by: Andrew Eidsness <eclipse@jfront.com>
Reviewed-on: https://git.eclipse.org/r/19721
Tested-by: Hudson CI
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
IP-Clean: Doug Schaefer <dschaefer@qnx.com>
2013-12-12 14:05:53 -05:00
Andrew Eidsness
c6c1ef94fc Fix Qt plugin's project structure
The Qt plugins have been naming internal packages using two different
prefixes:

    cdt.qt.internal
    cdt.internal.qt

This renames all packages to cdt.internal.qt, which seems to be the
convention for other projects.

I've increased the Qt plugin versions because alot of new API has been
added, especially to the qt.core plugin.  I increased the version in the
MANIFEST.MF and pom.xml files.

I've also fixed the MANIFEST.MF files to take CDT out of the plugin
names.

I've also replaced a call to CCorePlugin.log(Exception) with a call to
QtUIPlugin.log (and added the logging functions to QtUIPlugin.

Change-Id: I1e3e7b2a42c2eb79fe33608c14a1abcf013a9f2c
Signed-off-by: Andrew Eidsness <eclipse@jfront.com>
Reviewed-on: https://git.eclipse.org/r/19698
Tested-by: Hudson CI
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
IP-Clean: Doug Schaefer <dschaefer@qnx.com>
2013-12-12 11:12:13 -05:00
David Kaspar
dc746352a3 Bug 422797 - API for retrieving QMake information from Qt project
Adding ...cdt.qt.tests/SimpleTests JUnit tests

Change-Id: I68d8e56d6b81a65eb1b6823cf7f1df63f00c1a15
Signed-off-by: David Kaspar <dkaspar@blackberry.com>
Reviewed-on: https://git.eclipse.org/r/19145
Tested-by: Hudson CI
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
IP-Clean: Doug Schaefer <dschaefer@qnx.com>
2013-12-03 08:58:10 -05:00
David Kaspar
026b9325f0 Bug 422797 - API for retrieving QMake information from Qt project
API is located at org.eclipse.cdt.qt.core.index package.
Entry point is QMakeProjectInfoFactory.getForActiveConfigurationIn method
that provides ability to retrieve QMake information (IQMakeInfo interface)
for active project configuration of a specified project.
Also allows to listen on changes of such information.

qmakeEnvProvider extensions allows CDT build-system to provide environment
for QMake runs within their build-system.

Information is gather by parsing output of:
1) qmake -query
2) qmake -E file.pro // only for QMake version 3.0

Change-Id: Iae569bdbc89dc26d60530596b66b5227f36dfae6
Signed-off-by: David Kaspar <dkaspar@blackberry.com>
Reviewed-on: https://git.eclipse.org/r/19082
Reviewed-by: Andrew Eidsness <eclipse@jfront.com>
Tested-by: Hudson CI
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
IP-Clean: Doug Schaefer <dschaefer@qnx.com>
2013-11-28 23:33:42 -05:00
Andrew Eidsness
1908efec38 qt slot/signal auto-complete
Tags signal and slot methods when the index is created.  Uses these tags
to suggest values inside of SIGNAL and SLOT macro expansions.  Enabled
only for projects with the QtNature.

Recognizes QObject::connect function calls and suggests SIGNAL(a) and
SLOT(a) for the 2nd and 4th parameters.

When expanding the SIGNAL and SLOT macros within a call to
QObject::connect, suggests signals and slots based on the type of the
previous parameter.

E.g. in

    QObjectA a;
    QObjectB b;
    QObject::connect( &a, SIGNAL(*), &b, SLOT(**) );

The content assistant will suggest the methods of type QObjectA that
have been marked as signals at *, and the methods of QObjectB that have
been marked as slots at **.

Change-Id: Ia6aaa71724547b0977e322399a500f072004767a
Reviewed-on: https://git.eclipse.org/r/10532
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
IP-Clean: Doug Schaefer <dschaefer@qnx.com>
Tested-by: Doug Schaefer <dschaefer@qnx.com>
2013-02-20 16:13:49 -05:00
Doug Schaefer
9c88bbc509 Fix overly strict dependency in qt.core. 2013-02-19 10:50:58 -05:00
Andrew Eidsness
862099aa7a Bug 399985: Semantic highlighting for qt signals/slots
The signals, slots, Q_SIGNALS, and Q_SLOTS macros are
used as 'keywords' when developing Qt applications.  This
patch adds a semantic highlighter for these keywords in
projects with a qtnature.

Change-Id: I7a5906aa69e6d7dab4ce20a16b425ae177f9bd25
Reviewed-on: https://git.eclipse.org/r/10179
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
IP-Clean: Doug Schaefer <dschaefer@qnx.com>
Tested-by: Doug Schaefer <dschaefer@qnx.com>
2013-02-05 10:37:02 -05:00
Doug Schaefer
98e5959c90 Added template process to add nature. Added Qt nature. 2013-01-17 15:27:47 -05:00
Doug Schaefer
f5030e3533 Added content types for .pro and .qml files for Qt. 2013-01-12 16:10:21 -05:00
Doug Schaefer
09357c4df6 Added support for Qt. Extended AddFiles template to change start/end
patterns.
2013-01-12 00:57:49 -05:00