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