Kate
autobrace.h
Go to the documentation of this file.
00001 00020 #ifndef AUTOBRACE_H 00021 #define AUTOBRACE_H 00022 00023 #include <ktexteditor/plugin.h> 00024 #include <ktexteditor/view.h> 00025 #include <ktexteditor/document.h> 00026 #include <kpluginfactory.h> 00027 00028 #include <QtCore/QEvent> 00029 #include <QtCore/QObject> 00030 #include <QtCore/QHash> 00031 #include <QtCore/QVariantList> 00032 00033 class AutoBracePlugin 00034 : public KTextEditor::Plugin 00035 { 00036 Q_OBJECT 00037 00038 public: 00039 explicit AutoBracePlugin(QObject *parent = 0, const QVariantList &args = QVariantList()); 00040 virtual ~AutoBracePlugin(); 00041 00042 static AutoBracePlugin *self() { return plugin; } 00043 00044 void addView (KTextEditor::View *view); 00045 void removeView (KTextEditor::View *view); 00046 00047 void readConfig(); 00048 void writeConfig(); 00049 00050 virtual void readConfig (KConfig *) {} 00051 virtual void writeConfig (KConfig *) {} 00052 00054 bool autoBrackets() const { return m_autoBrackets; } 00055 void setAutoBrackets(bool y) { m_autoBrackets = y; } 00056 bool autoQuotations() const { return m_autoQuotations; } 00057 void setAutoQuotations(bool y) { m_autoQuotations = y; } 00058 private: 00059 static AutoBracePlugin *plugin; 00060 QHash<class KTextEditor::View*, class KTextEditor::Document*> m_documents; 00061 QHash<class KTextEditor::Document*, class AutoBracePluginDocument*> m_docplugins; 00062 bool m_autoBrackets; 00063 bool m_autoQuotations; 00064 }; 00065 00066 class AutoBracePluginDocument 00067 : public QObject, public KXMLGUIClient 00068 { 00069 Q_OBJECT 00070 00071 public: 00072 explicit AutoBracePluginDocument(KTextEditor::Document *document, const bool& autoBrackets, const bool& autoQuotations); 00073 ~AutoBracePluginDocument(); 00074 00075 private Q_SLOTS: 00076 void slotTextChanged(KTextEditor::Document *document); 00077 void slotTextInserted(KTextEditor::Document *document, const KTextEditor::Range& range); 00078 void slotTextRemoved(KTextEditor::Document *document, const KTextEditor::Range& range); 00079 00080 void connectSlots(KTextEditor::Document* document); 00081 void disconnectSlots(KTextEditor::Document* document); 00082 00083 private: 00084 bool isInsertionCandidate(KTextEditor::Document *document, int openingBraceLine); 00085 00086 Q_SIGNALS: 00087 void indent(); 00088 00089 private: 00090 void insertAutoBracket(KTextEditor::Document *document,const KTextEditor::Range& range, 00091 const QString& brace); 00092 const QString previousToken(KTextEditor::Document *document,const KTextEditor::Range& range); 00093 const QString nextToken(KTextEditor::Document *document,const KTextEditor::Range& range); 00094 00095 int m_insertionLine; 00096 QString m_indentation; 00097 bool m_withSemicolon; 00098 QMap<QString,QString> m_brackets; 00099 KTextEditor::Range m_lastRange; 00100 const bool& m_autoBrackets; 00101 const bool& m_autoQuotations; 00102 }; 00103 00104 K_PLUGIN_FACTORY_DECLARATION(AutoBracePluginFactory) 00105 00106 #endif // AUTOBRACE_H
KDE 4.6 API Reference