• Skip to content
  • Skip to link menu
KDE 4.6 API Reference
  • KDE API Reference
  • kdelibs
  • KDE Home
  • Contact Us
 

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

Kate

Skip menu "Kate"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.7.3
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal