summaryrefslogtreecommitdiffstats
path: root/kate/part/katecodecompletion.h
diff options
context:
space:
mode:
Diffstat (limited to 'kate/part/katecodecompletion.h')
-rw-r--r--kate/part/katecodecompletion.h164
1 files changed, 164 insertions, 0 deletions
diff --git a/kate/part/katecodecompletion.h b/kate/part/katecodecompletion.h
new file mode 100644
index 000000000..81279d929
--- /dev/null
+++ b/kate/part/katecodecompletion.h
@@ -0,0 +1,164 @@
+/* This file is part of the KDE libraries
+
+ Copyright (C) 2001 Joseph Wenninger <jowenn@kde.org>
+ Copyright (C) 2002 John Firebaugh <jfirebaugh@kde.org>
+ Copyright (C) 2001 by Victor Röder <Victor_Roeder@GMX.de>
+ Copyright (C) 2002 by Roberto Raggi <roberto@kdevelop.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+/******** Partly based on the ArgHintWidget of Qt3 by Trolltech AS *********/
+/* Trolltech doesn't mind, if we license that piece of code as LGPL, because there isn't much
+ * left from the desigener code */
+
+
+#ifndef __KateCodeCompletion_H__
+#define __KateCodeCompletion_H__
+
+#include <ktexteditor/codecompletioninterface.h>
+
+#include <qvaluelist.h>
+#include <qstringlist.h>
+#include <qlabel.h>
+#include <qframe.h>
+#include <qmap.h>
+#include <qintdict.h>
+
+class KateView;
+class KateArgHint;
+class KateCCListBox;
+
+class QLayout;
+class QVBox;
+
+class KateCodeCompletionCommentLabel : public QLabel
+{
+ Q_OBJECT
+
+ public:
+ KateCodeCompletionCommentLabel( QWidget* parent, const QString& text) : QLabel( parent, "toolTipTip",
+ WStyle_StaysOnTop | WStyle_Customize | WStyle_NoBorder | WStyle_Tool | WX11BypassWM )
+ {
+ setMargin(1);
+ setIndent(0);
+ setAutoMask( false );
+ setFrameStyle( QFrame::Plain | QFrame::Box );
+ setLineWidth( 1 );
+ setAlignment( AlignAuto | AlignTop );
+ polish();
+ setText(text);
+ adjustSize();
+ }
+};
+
+class KateCodeCompletion : public QObject
+{
+ Q_OBJECT
+
+ friend class KateViewInternal;
+
+ public:
+ KateCodeCompletion(KateView *view);
+ ~KateCodeCompletion();
+
+ bool codeCompletionVisible ();
+
+ void showArgHint(
+ QStringList functionList, const QString& strWrapping, const QString& strDelimiter );
+ void showCompletionBox(
+ QValueList<KTextEditor::CompletionEntry> entries, int offset = 0, bool casesensitive = true );
+ bool eventFilter( QObject* o, QEvent* e );
+
+ void handleKey (QKeyEvent *e);
+
+ public slots:
+ void slotCursorPosChanged();
+ void showComment();
+ void updateBox () { updateBox(false); }
+
+ signals:
+ void completionAborted();
+ void completionDone();
+ void argHintHidden();
+ void completionDone(KTextEditor::CompletionEntry);
+ void filterInsertString(KTextEditor::CompletionEntry*,QString *);
+
+ private:
+ void doComplete();
+ void abortCompletion();
+ void complete( KTextEditor::CompletionEntry );
+ void updateBox( bool newCoordinate );
+
+ KateArgHint* m_pArgHint;
+ KateView* m_view;
+ QVBox* m_completionPopup;
+ KateCCListBox* m_completionListBox;
+ QValueList<KTextEditor::CompletionEntry> m_complList;
+ uint m_lineCursor;
+ uint m_colCursor;
+ int m_offset;
+ bool m_caseSensitive;
+ KateCodeCompletionCommentLabel* m_commentLabel;
+};
+
+class KateArgHint: public QFrame
+{
+ Q_OBJECT
+
+ public:
+ KateArgHint( KateView* =0, const char* =0 );
+ virtual ~KateArgHint();
+
+ virtual void setCurrentFunction( int );
+ virtual int currentFunction() const { return m_currentFunction; }
+
+ void setArgMarkInfos( const QString&, const QString& );
+
+ virtual void addFunction( int, const QString& );
+ QString functionAt( int id ) const { return m_functionMap[ id ]; }
+
+ virtual void show();
+ virtual void adjustSize();
+ virtual bool eventFilter( QObject*, QEvent* );
+
+ signals:
+ void argHintHidden();
+ void argHintCompleted();
+ void argHintAborted();
+
+ public slots:
+ virtual void reset( int, int );
+ virtual void cursorPositionChanged( KateView*, int, int );
+
+ private slots:
+ void slotDone(bool completed);
+
+ private:
+ QMap<int, QString> m_functionMap;
+ int m_currentFunction;
+ QString m_wrapping;
+ QString m_delimiter;
+ bool m_markCurrentFunction;
+ int m_currentLine;
+ int m_currentCol;
+ KateView* editorView;
+ QIntDict<QLabel> labelDict;
+ QLayout* layout;
+};
+
+#endif
+
+// kate: space-indent on; indent-width 2; replace-tabs on;