kate Library API Documentation

katecodecompletion.h

00001 /* This file is part of the KDE libraries
00002 
00003    Copyright (C) 2001 Joseph Wenninger <jowenn@kde.org>
00004    Copyright (C) 2002 John Firebaugh <jfirebaugh@kde.org>
00005    Copyright (C) 2001 by Victor Röder <Victor_Roeder@GMX.de>
00006    Copyright (C) 2002 by Roberto Raggi <roberto@kdevelop.org>
00007 
00008    This library is free software; you can redistribute it and/or
00009    modify it under the terms of the GNU Library General Public
00010    License version 2 as published by the Free Software Foundation.
00011 
00012    This library is distributed in the hope that it will be useful,
00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015    Library General Public License for more details.
00016 
00017    You should have received a copy of the GNU Library General Public License
00018    along with this library; see the file COPYING.LIB.  If not, write to
00019    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00020    Boston, MA 02111-1307, USA.
00021 */
00022 
00023 /******** Partly based on the ArgHintWidget of Qt3 by Trolltech AS *********/
00024 /* Trolltech doesn't mind, if we license that piece of code as LGPL, because there isn't much
00025  * left from the desigener code */
00026 
00027 
00028 #ifndef __KateCodeCompletion_H__
00029 #define __KateCodeCompletion_H__
00030 
00031 #include <ktexteditor/codecompletioninterface.h>
00032 
00033 #include <qvaluelist.h>
00034 #include <qstringlist.h>
00035 #include <qlabel.h>
00036 #include <qframe.h>
00037 #include <qmap.h>
00038 #include <qintdict.h>
00039 
00040 class KateView;
00041 class KateArgHint;
00042 class KateCCListBox;
00043 
00044 class QLayout;
00045 
00046 class KateCodeCompletionCommentLabel : public QLabel
00047 {
00048   Q_OBJECT
00049   
00050   public:
00051     KateCodeCompletionCommentLabel( QWidget* parent, const QString& text) : QLabel( parent, "toolTipTip",
00052              WStyle_StaysOnTop | WStyle_Customize | WStyle_NoBorder | WStyle_Tool | WX11BypassWM )
00053     {
00054         setMargin(1);
00055         setIndent(0);
00056         setAutoMask( false );
00057         setFrameStyle( QFrame::Plain | QFrame::Box );
00058         setLineWidth( 1 );
00059         setAlignment( AlignAuto | AlignTop );
00060         polish();
00061         setText(text);
00062         adjustSize();
00063     }
00064 };
00065 
00066 class KateCodeCompletion : public QObject
00067 {
00068   Q_OBJECT
00069 
00070   public:
00071     KateCodeCompletion(KateView *view);
00072   
00073     bool codeCompletionVisible ();
00074   
00075     void showArgHint(
00076         QStringList functionList, const QString& strWrapping, const QString& strDelimiter );
00077     void showCompletionBox(
00078         QValueList<KTextEditor::CompletionEntry> entries, int offset = 0, bool casesensitive = true );
00079     bool eventFilter( QObject* o, QEvent* e );
00080   
00081   public slots:
00082     void slotCursorPosChanged();
00083     void showComment();
00084   
00085   signals:
00086     void completionAborted();
00087     void completionDone();
00088     void argHintHidden();
00089     void completionDone(KTextEditor::CompletionEntry);
00090     void filterInsertString(KTextEditor::CompletionEntry*,QString *);
00091   
00092   private:
00093     void doComplete();
00094     void abortCompletion();
00095     void complete( KTextEditor::CompletionEntry );
00096     void updateBox( bool newCoordinate = false );
00097   
00098     KateArgHint*    m_pArgHint;
00099     KateView*       m_view;
00100     class QVBox*          m_completionPopup;
00101     KateCCListBox*       m_completionListBox;
00102     QValueList<KTextEditor::CompletionEntry> m_complList;
00103     uint            m_lineCursor;
00104     uint            m_colCursor;
00105     int             m_offset;
00106     bool            m_caseSensitive;
00107     KateCodeCompletionCommentLabel* m_commentLabel;
00108 };
00109 
00110 class KateArgHint: public QFrame
00111 {
00112   Q_OBJECT
00113   
00114   public:
00115       KateArgHint( KateView* =0, const char* =0 );
00116       virtual ~KateArgHint();
00117   
00118       virtual void setCurrentFunction( int );
00119       virtual int currentFunction() const { return m_currentFunction; }
00120   
00121       void setArgMarkInfos( const QString&, const QString& );
00122   
00123       virtual void addFunction( int, const QString& );
00124       QString functionAt( int id ) const { return m_functionMap[ id ]; }
00125   
00126       virtual void show();
00127       virtual void adjustSize();
00128       virtual bool eventFilter( QObject*, QEvent* );
00129   
00130   signals:
00131       void argHintHidden();
00132       void argHintCompleted();
00133       void argHintAborted();
00134   
00135   public slots:
00136       virtual void reset( int, int );
00137       virtual void cursorPositionChanged( KateView*, int, int );
00138   
00139   private slots:
00140       void slotDone(bool completed);
00141   
00142   private:
00143       QMap<int, QString> m_functionMap;
00144       int m_currentFunction;
00145       QString m_wrapping;
00146       QString m_delimiter;
00147       bool m_markCurrentFunction;
00148       int m_currentLine;
00149       int m_currentCol;
00150       KateView* editorView;
00151       QIntDict<QLabel> labelDict;
00152       QLayout* layout;
00153 };
00154 
00155 #endif
KDE Logo
This file is part of the documentation for kate Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Apr 22 14:26:24 2004 by doxygen 1.2.18 written by Dimitri van Heesch, © 1997-2003