Kate
katecodecompletion.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
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 class QVBox;
00046
00047 class KateCodeCompletionCommentLabel : public QLabel
00048 {
00049 Q_OBJECT
00050
00051 public:
00052 KateCodeCompletionCommentLabel( QWidget* parent, const QString& text) : QLabel( parent, "toolTipTip",
00053 WStyle_StaysOnTop | WStyle_Customize | WStyle_NoBorder | WStyle_Tool | WX11BypassWM )
00054 {
00055 setMargin(1);
00056 setIndent(0);
00057 setAutoMask( false );
00058 setFrameStyle( QFrame::Plain | QFrame::Box );
00059 setLineWidth( 1 );
00060 setAlignment( AlignAuto | AlignTop );
00061 polish();
00062 setText(text);
00063 adjustSize();
00064 }
00065 };
00066
00067 class KateCodeCompletion : public QObject
00068 {
00069 Q_OBJECT
00070
00071 friend class KateViewInternal;
00072
00073 public:
00074 KateCodeCompletion(KateView *view);
00075 ~KateCodeCompletion();
00076
00077 bool codeCompletionVisible ();
00078
00079 void showArgHint(
00080 QStringList functionList, const QString& strWrapping, const QString& strDelimiter );
00081 void showCompletionBox(
00082 QValueList<KTextEditor::CompletionEntry> entries, int offset = 0, bool casesensitive = true );
00083 bool eventFilter( QObject* o, QEvent* e );
00084
00085 void handleKey (QKeyEvent *e);
00086
00087 public slots:
00088 void slotCursorPosChanged();
00089 void showComment();
00090 void updateBox () { updateBox(false); }
00091
00092 signals:
00093 void completionAborted();
00094 void completionDone();
00095 void argHintHidden();
00096 void completionDone(KTextEditor::CompletionEntry);
00097 void filterInsertString(KTextEditor::CompletionEntry*,QString *);
00098
00099 private:
00100 void doComplete();
00101 void abortCompletion();
00102 void complete( KTextEditor::CompletionEntry );
00103 void updateBox( bool newCoordinate );
00104
00105 KateArgHint* m_pArgHint;
00106 KateView* m_view;
00107 QVBox* m_completionPopup;
00108 KateCCListBox* m_completionListBox;
00109 QValueList<KTextEditor::CompletionEntry> m_complList;
00110 uint m_lineCursor;
00111 uint m_colCursor;
00112 int m_offset;
00113 bool m_caseSensitive;
00114 KateCodeCompletionCommentLabel* m_commentLabel;
00115 };
00116
00117 class KateArgHint: public QFrame
00118 {
00119 Q_OBJECT
00120
00121 public:
00122 KateArgHint( KateView* =0, const char* =0 );
00123 virtual ~KateArgHint();
00124
00125 virtual void setCurrentFunction( int );
00126 virtual int currentFunction() const { return m_currentFunction; }
00127
00128 void setArgMarkInfos( const QString&, const QString& );
00129
00130 virtual void addFunction( int, const QString& );
00131 QString functionAt( int id ) const { return m_functionMap[ id ]; }
00132
00133 virtual void show();
00134 virtual void adjustSize();
00135 virtual bool eventFilter( QObject*, QEvent* );
00136
00137 signals:
00138 void argHintHidden();
00139 void argHintCompleted();
00140 void argHintAborted();
00141
00142 public slots:
00143 virtual void reset( int, int );
00144 virtual void cursorPositionChanged( KateView*, int, int );
00145
00146 private slots:
00147 void slotDone(bool completed);
00148
00149 private:
00150 QMap<int, QString> m_functionMap;
00151 int m_currentFunction;
00152 QString m_wrapping;
00153 QString m_delimiter;
00154 bool m_markCurrentFunction;
00155 int m_currentLine;
00156 int m_currentCol;
00157 KateView* editorView;
00158 QIntDict<QLabel> labelDict;
00159 QLayout* layout;
00160 };
00161
00162 #endif
00163
00164