| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | /**************************************************************************
 | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** This file is part of Qt Creator | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-01-11 16:28:15 +01:00
										 |  |  | ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-04-13 08:42:33 +02:00
										 |  |  | ** Contact: Nokia Corporation (info@qt.nokia.com) | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | ** | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** GNU Lesser General Public License Usage | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-04-13 08:42:33 +02:00
										 |  |  | ** This file may be used under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  | ** License version 2.1 as published by the Free Software Foundation and | 
					
						
							|  |  |  | ** appearing in the file LICENSE.LGPL included in the packaging of this file. | 
					
						
							|  |  |  | ** Please review the following information to ensure the GNU Lesser General | 
					
						
							|  |  |  | ** Public License version 2.1 requirements will be met: | 
					
						
							|  |  |  | ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** In addition, as a special exception, Nokia gives you certain additional | 
					
						
							| 
									
										
										
										
											2011-04-13 08:42:33 +02:00
										 |  |  | ** rights. These rights are described in the Nokia Qt LGPL Exception | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-04-13 08:42:33 +02:00
										 |  |  | ** Other Usage | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** Alternatively, this file may be used in accordance with the terms and | 
					
						
							|  |  |  | ** conditions contained in a signed written agreement between you and Nokia. | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** If you have questions regarding the use of this file, please contact | 
					
						
							| 
									
										
										
										
											2011-05-06 15:05:37 +02:00
										 |  |  | ** Nokia at info@qt.nokia.com. | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | ** | 
					
						
							|  |  |  | **************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-15 13:49:00 +01:00
										 |  |  | #ifndef QMLJSMODELMANAGERINTERFACE_H
 | 
					
						
							|  |  |  | #define QMLJSMODELMANAGERINTERFACE_H
 | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-09 15:56:03 +02:00
										 |  |  | #include "qmljs_global.h"
 | 
					
						
							|  |  |  | #include "qmljsdocument.h"
 | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-26 15:39:37 +02:00
										 |  |  | #include <utils/environment.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-20 14:03:07 +01:00
										 |  |  | #include <QtCore/QObject>
 | 
					
						
							|  |  |  | #include <QtCore/QStringList>
 | 
					
						
							|  |  |  | #include <QtCore/QPointer>
 | 
					
						
							| 
									
										
										
										
											2010-06-22 12:54:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace ProjectExplorer { | 
					
						
							|  |  |  |     class Project; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-23 15:09:06 +02:00
										 |  |  | QT_QML_BEGIN_NAMESPACE | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-18 16:15:23 +01:00
										 |  |  | namespace QmlJS { | 
					
						
							| 
									
										
										
										
											2010-01-14 16:22:43 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-09 15:56:03 +02:00
										 |  |  | class Snapshot; | 
					
						
							| 
									
										
										
										
											2010-01-14 16:22:43 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-09 15:56:03 +02:00
										 |  |  | class QMLJS_EXPORT ModelManagerInterface: public QObject | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | { | 
					
						
							|  |  |  |     Q_OBJECT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-22 12:54:19 +02:00
										 |  |  | public: | 
					
						
							|  |  |  |     class ProjectInfo | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |     public: | 
					
						
							|  |  |  |         ProjectInfo() | 
					
						
							|  |  |  |         { } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ProjectInfo(QPointer<ProjectExplorer::Project> project) | 
					
						
							|  |  |  |             : project(project) | 
					
						
							|  |  |  |         { } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         operator bool() const | 
					
						
							|  |  |  |         { return ! project.isNull(); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         bool isValid() const | 
					
						
							|  |  |  |         { return ! project.isNull(); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         bool isNull() const | 
					
						
							|  |  |  |         { return project.isNull(); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public: // attributes
 | 
					
						
							|  |  |  |         QPointer<ProjectExplorer::Project> project; | 
					
						
							|  |  |  |         QStringList sourceFiles; | 
					
						
							|  |  |  |         QStringList importPaths; | 
					
						
							| 
									
										
										
										
											2010-09-27 17:22:57 +02:00
										 |  |  |         QString qmlDumpPath; | 
					
						
							| 
									
										
										
										
											2010-10-26 15:39:37 +02:00
										 |  |  |         Utils::Environment qmlDumpEnvironment; | 
					
						
							| 
									
										
										
										
											2011-06-28 12:01:56 +02:00
										 |  |  |         QString qtImportsPath; | 
					
						
							|  |  |  |         QString qtVersionString; | 
					
						
							| 
									
										
										
										
											2010-06-22 12:54:19 +02:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-24 14:05:34 +02:00
										 |  |  |     class WorkingCopy | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |     public: | 
					
						
							|  |  |  |         typedef QHash<QString, QPair<QString, int> > Table; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         void insert(const QString &fileName, const QString &source, int revision = 0) | 
					
						
							|  |  |  |         { _elements.insert(fileName, qMakePair(source, revision)); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         bool contains(const QString &fileName) const | 
					
						
							|  |  |  |         { return _elements.contains(fileName); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         QString source(const QString &fileName) const | 
					
						
							|  |  |  |         { return _elements.value(fileName).first; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         QPair<QString, int> get(const QString &fileName) const | 
					
						
							|  |  |  |         { return _elements.value(fileName); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Table all() const | 
					
						
							|  |  |  |         { return _elements; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private: | 
					
						
							|  |  |  |         Table _elements; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-06 10:01:45 +01:00
										 |  |  |     typedef QHash<QString, QList<LanguageUtils::FakeMetaObject::ConstPtr> > CppQmlTypeHash; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2010-02-15 13:49:00 +01:00
										 |  |  |     ModelManagerInterface(QObject *parent = 0); | 
					
						
							|  |  |  |     virtual ~ModelManagerInterface(); | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-08 14:38:47 +02:00
										 |  |  |     static ModelManagerInterface *instance(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-24 14:05:34 +02:00
										 |  |  |     virtual WorkingCopy workingCopy() const = 0; | 
					
						
							| 
									
										
										
										
											2011-08-16 14:11:30 +02:00
										 |  |  |     virtual QmlJS::Snapshot snapshot(bool preferValid = true) const = 0; | 
					
						
							| 
									
										
										
										
											2010-09-24 14:05:34 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-16 13:08:59 +02:00
										 |  |  |     virtual void updateSourceFiles(const QStringList &files, | 
					
						
							|  |  |  |                                    bool emitDocumentOnDiskChanged) = 0; | 
					
						
							| 
									
										
										
										
											2010-04-16 12:42:12 +02:00
										 |  |  |     virtual void fileChangedOnDisk(const QString &path) = 0; | 
					
						
							| 
									
										
										
										
											2010-05-18 13:40:35 +02:00
										 |  |  |     virtual void removeFiles(const QStringList &files) = 0; | 
					
						
							| 
									
										
										
										
											2010-03-16 16:34:33 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-22 12:54:19 +02:00
										 |  |  |     virtual QList<ProjectInfo> projectInfos() const = 0; | 
					
						
							| 
									
										
										
										
											2010-09-27 11:16:43 +01:00
										 |  |  |     virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const = 0; | 
					
						
							|  |  |  |     virtual void updateProjectInfo(const ProjectInfo &pinfo) = 0; | 
					
						
							| 
									
										
										
										
											2010-06-22 12:54:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-16 16:34:33 +01:00
										 |  |  |     virtual QStringList importPaths() const = 0; | 
					
						
							| 
									
										
										
										
											2009-11-11 10:10:00 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-08 13:29:21 +01:00
										 |  |  |     virtual void loadPluginTypes(const QString &libraryPath, const QString &importPath, | 
					
						
							|  |  |  |                                  const QString &importUri, const QString &importVersion) = 0; | 
					
						
							| 
									
										
										
										
											2010-08-25 14:15:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-06 10:01:45 +01:00
										 |  |  |     virtual CppQmlTypeHash cppQmlTypes() const = 0; | 
					
						
							| 
									
										
										
										
											2011-06-28 12:01:56 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     virtual LibraryInfo builtins(const Document::Ptr &doc) const = 0; | 
					
						
							| 
									
										
										
										
											2011-01-06 10:01:45 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-12 11:11:26 +02:00
										 |  |  |     // Blocks until all parsing threads are done. Used for testing.
 | 
					
						
							|  |  |  |     virtual void joinAllThreads() = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-23 15:12:03 +02:00
										 |  |  | public slots: | 
					
						
							|  |  |  |     virtual void resetCodeModel() = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-11 10:10:00 +01:00
										 |  |  | signals: | 
					
						
							| 
									
										
										
										
											2010-01-18 16:15:23 +01:00
										 |  |  |     void documentUpdated(QmlJS::Document::Ptr doc); | 
					
						
							| 
									
										
										
										
											2010-04-16 12:42:12 +02:00
										 |  |  |     void documentChangedOnDisk(QmlJS::Document::Ptr doc); | 
					
						
							|  |  |  |     void aboutToRemoveFiles(const QStringList &files); | 
					
						
							| 
									
										
										
										
											2010-10-15 10:09:40 +02:00
										 |  |  |     void libraryInfoUpdated(const QString &path, const QmlJS::LibraryInfo &info); | 
					
						
							| 
									
										
										
										
											2011-04-21 11:09:29 +02:00
										 |  |  |     void projectInfoUpdated(const ProjectInfo &pinfo); | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-09 15:56:03 +02:00
										 |  |  | } // namespace QmlJS
 | 
					
						
							| 
									
										
										
										
											2009-09-04 16:51:11 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-23 15:09:06 +02:00
										 |  |  | QT_QML_END_NAMESPACE | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-15 13:49:00 +01:00
										 |  |  | #endif // QMLJSMODELMANAGERINTERFACE_H
 |