1 /****************************************************************************
2 **
3 ** Copyright (C) 2006-2009 fullmetalcoder <fullmetalcoder@hotmail.fr>
4 **
5 ** This file is part of the Edyuk project <http://edyuk.org>
6 **
7 ** This file may be used under the terms of the GNU General Public License
8 ** version 3 as published by the Free Software Foundation and appearing in the
9 ** file GPL.txt included in the packaging of this file.
10 **
11 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13 **
14 ****************************************************************************/
15 
16 #ifndef Header_QLanguage_Factory
17 #define Header_QLanguage_Factory
18 
19 #include "mostQtHeaders.h"
20 
21 /*!
22 	\file qlanguagefactory.h
23 	\brief Definition of the QLanguageFactory class.
24 
25 	\see QLanguageFactory
26 */
27 
28 /*!
29 	\defgroup language Language framework
30 */
31 
32 #include "qce-config.h"
33 
34 class QEditor;
35 class QFormatScheme;
36 class QLanguageDefinition;
37 class QCodeCompletionEngine;
38 
39 class QCE_EXPORT QLanguageFactory : public QObject
40 {
41 	Q_OBJECT
42 
43 	public:
44 		struct LangData
45 		{
46 			QString lang, mime;
47 			QStringList extensions;
48 
49 			QFormatScheme *s;
50 
51 			QLanguageDefinition *d;
52 			QCodeCompletionEngine *e;
53 		};
54 
55 		QLanguageFactory(QFormatScheme *fmt, QObject *p = 0);
56 		virtual ~QLanguageFactory();
57 
58 		QStringList languages() const;
59 		QStringList fileFilters() const;
60 
61 		const LangData& languageData(const QString& lang);
62 
63 		void addDefinitionPath(const QString& path);
64 
defaultFormatScheme()65 		inline QFormatScheme* defaultFormatScheme() const { return m_defaultFormatScheme; }
66 
67 	public slots:
68 		void addLanguage(const LangData& d);
69 		void addLanguageDefinition(QLanguageDefinition *l);
70 		void addCompletionEngine(QCodeCompletionEngine *e);
71 
72 		virtual bool setLanguage(QEditor *e, const QString& f);
73 		virtual bool setLanguageFromName(QEditor *e, const QString& lang);
74 
75 	private:
76 		QStringList m_languages;
77 		QHash<QString, LangData> m_data;
78 		QList<QCodeCompletionEngine*> m_unusedEngines;
79 
80 		QFormatScheme *m_defaultFormatScheme;
81 		void deleteLangData(const LangData& d);
82 };
83 
84 #endif // _QLANGUAGE_FACTORY_H_
85