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
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
00156
00157