00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _QCOMPLETION_ENGINE_H_
00017 #define _QCOMPLETION_ENGINE_H_
00018
00019 #include "qce-config.h"
00020
00026 #include "qdocumentcursor.h"
00027
00028 #include <QObject>
00029 #include <QPointer>
00030 #include <QStringList>
00031
00032 class QEditor;
00033 class QAction;
00034 class QKeyEvent;
00035 class QCodeModel;
00036 class QCodeStream;
00037
00038 class QCE_EXPORT QCodeCompletionEngine : public QObject
00039 {
00040 Q_OBJECT
00041
00042 public:
00043 QCodeCompletionEngine(QObject *p = 0);
00044 virtual ~QCodeCompletionEngine();
00045
00046 virtual QCodeCompletionEngine* clone() = 0;
00047
00048 virtual QString language() const = 0;
00049 virtual QStringList extensions() const = 0;
00050
00051 QAction* triggerAction() const;
00052
00053 QEditor* editor() const;
00054 void setEditor(QEditor *e);
00055
00056 QStringList triggers() const;
00057
00058 void addTrigger(const QString& s);
00059 void removeTrigger(const QString& s);
00060
00061 virtual void setCodeModel(QCodeModel *m);
00062
00063 virtual void retranslate();
00064
00065 signals:
00066 void popup();
00067 void cloned(QCodeCompletionEngine *e);
00068 void completionTriggered(const QString& s);
00069
00070 public slots:
00071 void complete();
00072 void textEdited(QKeyEvent *e);
00073
00074 protected:
00075 virtual void run();
00076 virtual bool eventFilter(QObject *o, QEvent *e);
00077
00078 virtual void complete(QCodeStream *s, const QString& trigger);
00079 virtual void complete(const QDocumentCursor& c, const QString& trigger);
00080
00081 private:
00082 int m_max;
00083 QString m_trig;
00084 QDocumentCursor m_cur;
00085 QAction *pForcedTrigger;
00086
00087 QStringList m_triggers;
00088
00089 QPointer<QEditor> pEdit;
00090 };
00091
00092 #endif // _QCOMPLETION_ENGINE_H_