00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _QLANGUAGE_FACTORY_H_
00017 #define _QLANGUAGE_FACTORY_H_
00018
00030 #include "qce-config.h"
00031
00032 #include <QHash>
00033 #include <QObject>
00034 #include <QStringList>
00035
00036 class QEditor;
00037 class QFormatScheme;
00038 class QLanguageDefinition;
00039 class QCodeCompletionEngine;
00040
00041 class QCE_EXPORT QLanguageFactory : public QObject
00042 {
00043 Q_OBJECT
00044
00045 public:
00046 struct LangData
00047 {
00048 QString lang, mime;
00049 QStringList extensions;
00050
00051 QFormatScheme *s;
00052
00053 QLanguageDefinition *d;
00054 QCodeCompletionEngine *e;
00055 };
00056
00057 QLanguageFactory(QFormatScheme *fmt, QObject *p = 0);
00058 virtual ~QLanguageFactory();
00059
00060 QStringList languages() const;
00061 QStringList fileFilters() const;
00062
00063 const LangData& languageData(const QString& lang);
00064
00065 void addDefinitionPath(const QString& path);
00066
00067 inline QFormatScheme* defaultFormatScheme() const { return m_defaultFormatScheme; }
00068
00069 public slots:
00070 void addLanguage(const LangData& d);
00071 void addLanguageDefinition(QLanguageDefinition *l);
00072 void addCompletionEngine(QCodeCompletionEngine *e);
00073
00074 virtual void setLanguage(QEditor *e, const QString& f);
00075
00076 private:
00077 QStringList m_languages;
00078 QHash<QString, LangData> m_data;
00079 QList<QCodeCompletionEngine*> m_unusedEngines;
00080
00081 QFormatScheme *m_defaultFormatScheme;
00082 };
00083
00084 #endif // _QLANGUAGE_FACTORY_H_