KVIrc 5.2.6
Developer APIs
ScriptEditorImplementation.h
Go to the documentation of this file.
1#ifndef _SCRIPTEDITOR_H_
2#define _SCRIPTEDITOR_H_
3//=============================================================================
4//
5// File : ScriptEditorImplementation.h
6// Creation date : Sun Mar 28 1999 16:11:48 CEST by Szymon Stefanek
7//
8// This file is part of the KVIrc IRC client distribution
9// Copyright (C) 1999-2010 Szymon Stefanek <pragma at kvirc dot net>
10//
11// This program is FREE software. You can redistribute it and/or
12// modify it under the terms of the GNU General Public License
13// as published by the Free Software Foundation; either version 2
14// of the License, or (at your option) any later version.
15//
16// This program is distributed in the HOPE that it will be USEFUL,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19// See the GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program. If not, write to the Free Software Foundation,
23// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24//
25//=============================================================================
26
27#include "KviScriptEditor.h"
28#include "KviSelectors.h"
29#include "KviRegExp.h"
30
31#include <QCompleter>
32#include <QLabel>
33#include <QDialog>
34#include <QEvent>
35#include <QTextEdit>
36#include <QListWidget>
37#include <QCheckBox>
38#include <QSyntaxHighlighter>
39#include <QByteArray>
40#include <QMenu>
41#include <QTimer>
42
43#include <set>
44#include <vector>
45
47class ScriptEditorWidget final : public QTextEdit
48{
49 Q_OBJECT
51public:
52 ScriptEditorWidget(QWidget * pParent);
53 virtual ~ScriptEditorWidget();
54
55public:
56 QString m_szFind;
57
58protected:
60 QCompleter * m_pCompleter;
61 QStringList * m_pListModulesNames;
62 QStringList * m_pListCompletition;
63 QTimer * m_pStartTimer;
64 QWidget * m_pParent;
66 QString m_szHelp;
67
68public:
72
73 void createCompleter(QStringList & list);
74
76 QCompleter * completer() const { return m_pCompleter; };
77 QString textUnderCursor() const;
78 void updateOptions();
79 bool contextSensitiveHelp() const;
80public slots:
82 void insertCompletion(const QString & szCompletion);
83 void slotFind();
84 void slotHelp();
85 void slotReplace();
86protected slots:
88signals:
89 void keyPressed();
90
91private:
92 void contextMenuEvent(QContextMenuEvent * e) override;
93 void keyPressEvent(QKeyEvent * e) override;
94};
95
96class ScriptEditorWidgetColorOptions final : public QDialog
97{
98 Q_OBJECT
99public:
100 ScriptEditorWidgetColorOptions(QWidget * pParent);
101
102private:
103 std::vector<KviSelectorInterface *> m_pSelectorInterfaceList;
104 KviColorSelector * addColorSelector(QWidget * pParent, const QString & txt, QColor * pOption, bool bEnabled);
105
106protected slots:
107 void okClicked();
108};
109
110class ScriptEditorSyntaxHighlighter final : public QSyntaxHighlighter
111{
112public:
115
116public:
117 QTextEdit * m_pTextEdit;
118
119public:
120 QTextEdit * textEdit() { return m_pTextEdit; }
121 void highlightBlock(const QString & szText);
123
124private:
126 {
128 QTextCharFormat format;
129 };
130
131 QVector<KviScriptHighlightingRule> highlightingRules;
134
135 QTextCharFormat bracketFormat;
136 QTextCharFormat punctuationFormat;
137 QTextCharFormat keywordFormat;
138 QTextCharFormat variableFormat;
139 QTextCharFormat normaltextFormat;
140 QTextCharFormat findFormat;
141 QTextCharFormat functionFormat;
142 QTextCharFormat commentFormat;
143};
144
146{
147 Q_OBJECT
148public:
149 ScriptEditorImplementation(QWidget * par);
151
152public:
153 QLineEdit * m_pFindLineEdit;
154
155protected:
159 QPushButton * m_pFindButton;
161
162public:
163 void setText(const char * txt) override;
164 void setText(const QString & szText) override;
165 void setText(const QByteArray & szText) override;
166 void getText(QString & szText) override;
167 void getText(QByteArray & szText) override;
168 void setFindText(const QString & szText) override;
169 virtual void setEnabled(bool bEnabled);
170 void setReadOnly(bool bReadOnly) override;
171 void setUnHighlightedText(const QString & szText) override;
172
173 virtual void setFocus();
174 bool isModified() override;
175 void setModified(bool) override;
176
177 int getCursor() override { return m_pEditor->textCursor().position(); };
178 void setCursorPosition(int iPos) override;
179 int cursor() { return m_lastCursorPos; };
180 QLineEdit * findLineEdit() { return m_pFindLineEdit; };
181private:
182 void focusInEvent(QFocusEvent * e) override;
183 void loadOptions();
184 void saveOptions();
185protected slots:
186 void saveToFile();
187 void loadFromFile();
188 void configureColors();
189 void updateRowColLabel();
190 void slotFind();
191 void slotReplaceAll(const QString & szToReplace, const QString & szReplaceWith);
192 void slotInitFind();
193 void slotNextFind(const QString &);
194 void optionsDialogFinished(int iResult);
195signals:
196 void find(const QString &);
197 void replaceAll(const QString & szToReplace, const QString & szReplaceWith);
198 void initFind();
199 void nextFind(const QString & szText);
200};
201
202class ScriptEditorReplaceDialog final : public QDialog
203{
204 Q_OBJECT
205public:
206 ScriptEditorReplaceDialog(QWidget * parent = nullptr, const QString & szName = QString());
207
208public:
209 QLineEdit * m_pFindLineEdit;
211
212private:
213 QPushButton * m_pReplaceButton;
215 QWidget * m_pParent;
216private slots:
217 void textChanged(const QString &);
218 void slotReplace();
219 void slotNextFind();
220signals:
221 void replaceAll(const QString &, const QString &);
222 void initFind();
223 void nextFind(const QString &);
224};
225
226#endif // _SCRIPTEDITOR_H_
Definition KviSelectors.h:267
Definition KviRegExp.h:34
Definition KviScriptEditor.h:45
Definition ScriptEditorImplementation.h:146
void configureColors()
Definition ScriptEditorImplementation.cpp:985
QLineEdit * m_pFindLineEdit
Definition ScriptEditorImplementation.h:153
QPushButton * m_pFindButton
Definition ScriptEditorImplementation.h:159
void setCursorPosition(int iPos) override
Definition ScriptEditorImplementation.cpp:954
void getText(QString &szText) override
Definition ScriptEditorImplementation.cpp:932
int getCursor() override
Definition ScriptEditorImplementation.h:177
void updateRowColLabel()
Definition ScriptEditorImplementation.cpp:943
void slotInitFind()
Definition ScriptEditorImplementation.cpp:832
QLineEdit * findLineEdit()
Definition ScriptEditorImplementation.h:180
void focusInEvent(QFocusEvent *e) override
Definition ScriptEditorImplementation.cpp:865
void setModified(bool) override
Definition ScriptEditorImplementation.cpp:818
void slotFind()
Definition ScriptEditorImplementation.cpp:822
void saveToFile()
Definition ScriptEditorImplementation.cpp:877
void saveOptions()
Definition ScriptEditorImplementation.cpp:842
int m_lastCursorPos
Definition ScriptEditorImplementation.h:160
void slotNextFind(const QString &)
Definition ScriptEditorImplementation.cpp:827
void setReadOnly(bool bReadOnly) override
Definition ScriptEditorImplementation.cpp:912
QLabel * m_pRowColLabel
Definition ScriptEditorImplementation.h:158
void replaceAll(const QString &szToReplace, const QString &szReplaceWith)
virtual void setEnabled(bool bEnabled)
Definition ScriptEditorImplementation.cpp:870
void setUnHighlightedText(const QString &szText) override
Definition ScriptEditorImplementation.cpp:901
ScriptEditorWidget * m_pEditor
Definition ScriptEditorImplementation.h:157
virtual void setFocus()
Definition ScriptEditorImplementation.cpp:860
void loadFromFile()
Definition ScriptEditorImplementation.cpp:962
void setFindText(const QString &szText) override
Definition ScriptEditorImplementation.cpp:937
int cursor()
Definition ScriptEditorImplementation.h:179
void find(const QString &)
void optionsDialogFinished(int iResult)
Definition ScriptEditorImplementation.cpp:995
void slotReplaceAll(const QString &szToReplace, const QString &szReplaceWith)
Definition ScriptEditorImplementation.cpp:837
bool isModified() override
Definition ScriptEditorImplementation.cpp:814
void nextFind(const QString &szText)
void setText(const char *txt) override
Definition ScriptEditorImplementation.cpp:897
ScriptEditorWidgetColorOptions * m_pOptionsDialog
Definition ScriptEditorImplementation.h:156
ScriptEditorImplementation(QWidget *par)
Definition ScriptEditorImplementation.cpp:719
~ScriptEditorImplementation() override
Definition ScriptEditorImplementation.cpp:784
void loadOptions()
Definition ScriptEditorImplementation.cpp:796
Definition ScriptEditorImplementation.h:203
ScriptEditorReplaceDialog(QWidget *parent=nullptr, const QString &szName=QString())
Definition ScriptEditorImplementation.cpp:1004
QPushButton * m_pReplaceButton
Definition ScriptEditorImplementation.h:213
QWidget * m_pParent
Definition ScriptEditorImplementation.h:215
QCheckBox * m_pCheckReplaceAll
Definition ScriptEditorImplementation.h:214
void nextFind(const QString &)
void replaceAll(const QString &, const QString &)
QLineEdit * m_pFindLineEdit
Definition ScriptEditorImplementation.h:209
void slotReplace()
Definition ScriptEditorImplementation.cpp:1072
void textChanged(const QString &)
Definition ScriptEditorImplementation.cpp:1064
QLineEdit * m_pReplaceLineEdit
Definition ScriptEditorImplementation.h:210
void slotNextFind()
Definition ScriptEditorImplementation.cpp:1086
Definition ScriptEditorImplementation.h:111
QTextCharFormat punctuationFormat
Definition ScriptEditorImplementation.h:136
void updateSyntaxtTextFormat()
Definition ScriptEditorImplementation.cpp:559
QTextCharFormat normaltextFormat
Definition ScriptEditorImplementation.h:139
QTextEdit * textEdit()
Definition ScriptEditorImplementation.h:120
QTextCharFormat keywordFormat
Definition ScriptEditorImplementation.h:137
QTextCharFormat findFormat
Definition ScriptEditorImplementation.h:140
QTextCharFormat commentFormat
Definition ScriptEditorImplementation.h:142
ScriptEditorSyntaxHighlighter(ScriptEditorWidget *pWidget)
Definition ScriptEditorImplementation.cpp:523
QTextCharFormat variableFormat
Definition ScriptEditorImplementation.h:138
QVector< KviScriptHighlightingRule > highlightingRules
Definition ScriptEditorImplementation.h:131
QTextCharFormat functionFormat
Definition ScriptEditorImplementation.h:141
KviRegExp commentEndExpression
Definition ScriptEditorImplementation.h:133
QTextEdit * m_pTextEdit
Definition ScriptEditorImplementation.h:117
KviRegExp commentStartExpression
Definition ScriptEditorImplementation.h:132
void highlightBlock(const QString &szText)
Definition ScriptEditorImplementation.cpp:583
QTextCharFormat bracketFormat
Definition ScriptEditorImplementation.h:135
Definition ScriptEditorImplementation.h:97
KviColorSelector * addColorSelector(QWidget *pParent, const QString &txt, QColor *pOption, bool bEnabled)
Definition ScriptEditorImplementation.cpp:508
std::vector< KviSelectorInterface * > m_pSelectorInterfaceList
Definition ScriptEditorImplementation.h:103
ScriptEditorWidgetColorOptions(QWidget *pParent)
Definition ScriptEditorImplementation.cpp:471
void okClicked()
Definition ScriptEditorImplementation.cpp:515
Definition ScriptEditorImplementation.h:48
QString m_szFind
Definition ScriptEditorImplementation.h:56
void slotFind()
Definition ScriptEditorImplementation.cpp:287
void slotHelp()
Definition ScriptEditorImplementation.cpp:305
void slotReplace()
Definition ScriptEditorImplementation.cpp:293
int iIndex
Definition ScriptEditorImplementation.h:65
QCompleter * m_pCompleter
Definition ScriptEditorImplementation.h:60
QString textUnderCursor() const
Definition ScriptEditorImplementation.cpp:419
ScriptEditorSyntaxHighlighter * m_pSyntaxHighlighter
Definition ScriptEditorImplementation.h:59
void contextMenuEvent(QContextMenuEvent *e) override
Definition ScriptEditorImplementation.cpp:273
ScriptEditorWidget(QWidget *pParent)
Definition ScriptEditorImplementation.cpp:94
virtual ~ScriptEditorWidget()
Definition ScriptEditorImplementation.cpp:136
QStringList * m_pListModulesNames
Definition ScriptEditorImplementation.h:61
void insertCompletion(const QString &szCompletion)
Definition ScriptEditorImplementation.cpp:255
void checkReadyCompleter()
Definition ScriptEditorImplementation.cpp:148
int iModulesCount
Definition ScriptEditorImplementation.h:65
QStringList * m_pListCompletition
Definition ScriptEditorImplementation.h:62
QWidget * m_pParent
Definition ScriptEditorImplementation.h:64
void enableSyntaxHighlighter()
Definition ScriptEditorImplementation.cpp:309
bool contextSensitiveHelp
Definition ScriptEditorImplementation.h:50
void updateOptions()
Definition ScriptEditorImplementation.cpp:323
void asyncCompleterCreation()
Definition ScriptEditorImplementation.cpp:161
QTimer * m_pStartTimer
Definition ScriptEditorImplementation.h:63
void createCompleter(QStringList &list)
Definition ScriptEditorImplementation.cpp:243
QCompleter * completer() const
Definition ScriptEditorImplementation.h:76
void loadCompleterFromFile()
Definition ScriptEditorImplementation.cpp:228
QString m_szHelp
Definition ScriptEditorImplementation.h:66
ScriptEditorSyntaxHighlighter * syntaxHighlighter()
Definition ScriptEditorImplementation.h:69
void disableSyntaxHighlighter()
Definition ScriptEditorImplementation.cpp:316
void keyPressEvent(QKeyEvent *e) override
Definition ScriptEditorImplementation.cpp:349
#define e
Definition detector.cpp:70
Definition ScriptEditorImplementation.h:126
QTextCharFormat format
Definition ScriptEditorImplementation.h:128
KviRegExp pattern
Definition ScriptEditorImplementation.h:127