From 45c388b77e7bf3608554eac4baf64ae80a33f787 Mon Sep 17 00:00:00 2001 From: Andrew Eidsness Date: Wed, 23 Oct 2013 07:12:25 -0400 Subject: [PATCH] Bug 418406: Qt4 and Qt5 specific HelloWorld project wizards This replaces the QtQuick2 project wizard with Qt4 and Qt5 wizards that include the old content as well as: 1) Make targets to build and clean the project 2) Sample interaction between C++ and QML 3) A Qt header path provider so that paths from the Qt installation are properly resolved in the project. Item 3 is particularly important for using the 'New Class' wizard with QObject as the base class. Unless the Qt paths are pre-populated the QObject base class will not be found and the New Class wizard's Finish button will be disabled. The Qt headers are resolved by running `qmake -query QT_INSTALL_HEADERS` and then creating IncludePath entries for all sub-folders. This list of include paths is persisted with other shared language settings into a file in the workspace metadata area. The persisted data is reloaded when any of the following change: - the modification time of the qmake binary - the modification time of the reported QT_INSTALL_HEADERS folder The persisted node is ignored when the target qmake binary no longer exists. The node is removed from the persisted form the next time that the shared settings are persisted. Change-Id: Ic82fdb147e6a69060f93e2e9aed2e919139a0ae9 Signed-off-by: Andrew Eidsness Reviewed-on: https://git.eclipse.org/r/16909 Reviewed-by: Doug Schaefer IP-Clean: Doug Schaefer Tested-by: Doug Schaefer --- qt/org.eclipse.cdt.qt.core/plugin.properties | 7 + qt/org.eclipse.cdt.qt.core/plugin.xml | 34 ++- .../src/org/eclipse/cdt/qt/core/QtPlugin.java | 30 +- .../cdt/qt/internal/core/QtIncludePaths.java | 282 ++++++++++++++++++ .../internal/core/QtIncludePathsProvider.java | 133 +++++++++ .../templates/project/Qt4/DateTime.cpp | 17 ++ .../templates/project/Qt4/DateTime.hh | 22 ++ .../templates/project/Qt4/Makefile | 29 ++ .../templates/project/Qt4/baseName.cpp | 22 ++ .../templates/project/Qt4/baseName.pro | 7 + .../templates/project/Qt4/baseName.qml | 38 +++ .../templates/project/Qt4/template.properties | 14 + .../templates/project/Qt4/template.xml | 103 +++++++ .../templates/project/Qt5/DateTime.cpp | 17 ++ .../templates/project/Qt5/DateTime.hh | 22 ++ .../templates/project/Qt5/Makefile | 29 ++ .../templates/project/Qt5/baseName.cpp | 20 ++ .../templates/project/Qt5/baseName.pro | 5 + .../templates/project/Qt5/baseName.qml | 38 +++ .../templates/project/Qt5/template.properties | 14 + .../templates/project/Qt5/template.xml | 103 +++++++ .../project/helloWorld/qtQuick2/Basename.cpp | 12 - .../project/helloWorld/qtQuick2/Basename.pro | 3 - .../project/helloWorld/qtQuick2/Basename.qml | 16 - .../project/helloWorld/qtQuick2/Makefile | 25 -- .../helloWorld/qtQuick2/template.properties | 18 -- .../project/helloWorld/qtQuick2/template.xml | 65 ---- 27 files changed, 968 insertions(+), 157 deletions(-) create mode 100644 qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/internal/core/QtIncludePaths.java create mode 100644 qt/org.eclipse.cdt.qt.core/src/org/eclipse/cdt/qt/internal/core/QtIncludePathsProvider.java create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt4/DateTime.cpp create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt4/DateTime.hh create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt4/Makefile create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt4/baseName.cpp create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt4/baseName.pro create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt4/baseName.qml create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt4/template.properties create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt4/template.xml create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt5/DateTime.cpp create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt5/DateTime.hh create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt5/Makefile create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt5/baseName.cpp create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt5/baseName.pro create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt5/baseName.qml create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt5/template.properties create mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/Qt5/template.xml delete mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/helloWorld/qtQuick2/Basename.cpp delete mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/helloWorld/qtQuick2/Basename.pro delete mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/helloWorld/qtQuick2/Basename.qml delete mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/helloWorld/qtQuick2/Makefile delete mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/helloWorld/qtQuick2/template.properties delete mode 100644 qt/org.eclipse.cdt.qt.core/templates/project/helloWorld/qtQuick2/template.xml diff --git a/qt/org.eclipse.cdt.qt.core/plugin.properties b/qt/org.eclipse.cdt.qt.core/plugin.properties index 9f9360a2955..322b6ca7011 100644 --- a/qt/org.eclipse.cdt.qt.core/plugin.properties +++ b/qt/org.eclipse.cdt.qt.core/plugin.properties @@ -1,3 +1,10 @@ +# Copyright (c) 2013 QNX Software Systems and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html + qtProjectFile.name = Qt Project File qmlFile.name = QML File qmakeEnvProvider.name = QMake Environment Provider +QtInstallHeaders.pathProvider.name = Qt Installed Headers \ No newline at end of file diff --git a/qt/org.eclipse.cdt.qt.core/plugin.xml b/qt/org.eclipse.cdt.qt.core/plugin.xml index 7b3ebd7ffcb..e1e3cc1de54 100644 --- a/qt/org.eclipse.cdt.qt.core/plugin.xml +++ b/qt/org.eclipse.cdt.qt.core/plugin.xml @@ -7,22 +7,33 @@ point="org.eclipse.cdt.core.templates"> + id="org.eclipse.cdt.qt.core.template.helloWorld.Qt4" + location="templates/project/Qt4/template.xml" + projectType="org.eclipse.cdt.build.makefile.projectType"/> +