katecodecompletion.h00001
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
|