| #pragma once |
| |
| #ifndef EXPRESSIONFIELD_H |
| #define EXPRESSIONFIELD_H |
| |
| #include "tgrammar.h" |
| #include <QWidget> |
| #include <QTextEdit> |
| |
| #undef DVAPI |
| #undef DVVAR |
| #ifdef TOONZQT_EXPORTS |
| #define DVAPI DV_EXPORT_API |
| #define DVVAR DV_EXPORT_VAR |
| #else |
| #define DVAPI DV_IMPORT_API |
| #define DVVAR DV_IMPORT_VAR |
| #endif |
| |
| |
| class QPushButton; |
| class QCompleter; |
| class QListView; |
| class QModelIndex; |
| |
| |
| |
| namespace DVGui |
| { |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| class DVAPI ExpressionField : public QTextEdit |
| { |
| Q_OBJECT |
| bool m_editing; |
| const TSyntax::Grammar *m_grammar; |
| |
| class SyntaxHighlighter; |
| SyntaxHighlighter *m_syntaxHighlighter; |
| |
| QListView *m_completerPopup; |
| int m_completerStartPos; |
| TSyntax::Grammar::Suggestions m_suggestions; |
| |
| public: |
| ExpressionField(QWidget *parent = 0); |
| ~ExpressionField(); |
| |
| void setExpression(std::string expression); |
| std::string getExpression() const; |
| |
| void setGrammar(const TSyntax::Grammar *grammar); |
| const TSyntax::Grammar *getGrammar() const { return m_grammar; } |
| |
| private: |
| void openCompleterPopup(); |
| bool updateCompleterPopup(); |
| void insertCompletion(); |
| int computeSuggestions(); |
| |
| protected: |
| bool event(QEvent *e); |
| void keyPressEvent(QKeyEvent *e); |
| void focusInEvent(QFocusEvent *e); |
| void focusOutEvent(QFocusEvent *e); |
| void showEvent(QShowEvent *); |
| void hideEvent(QHideEvent *); |
| bool eventFilter(QObject *obj, QEvent *e); |
| |
| private slots: |
| void onTextChanged(); |
| void onCursorPositionChanged(); |
| void insertCompletion(const QModelIndex &index); |
| |
| signals: |
| void expressionChanged(); |
| }; |
| |
| |
| } |
| |
| |
| #endif |