QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
gui
codeeditors
qgscodeeditorshell.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgscodeeditorshell.cpp
3
---------------------
4
Date : April 2023
5
Copyright : (C) 2023 by Nyall Dawson
6
Email : nyall dot dawson at gmail dot com
7
***************************************************************************
8
* *
9
* This program is free software; you can redistribute it and/or modify *
10
* it under the terms of the GNU General Public License as published by *
11
* the Free Software Foundation; either version 2 of the License, or *
12
* (at your option) any later version. *
13
* *
14
***************************************************************************/
15
16
17
#include "
qgscodeeditorshell.h
"
18
19
#include <QFont>
20
#include <QString>
21
#include <QWidget>
22
#include <Qsci/qscilexerjson.h>
23
24
#include "moc_qgscodeeditorshell.cpp"
25
26
QgsCodeEditorShell::QgsCodeEditorShell
( QWidget *parent,
Mode
mode
,
Qgis::ScriptLanguage
language
)
27
:
QgsCodeEditor
( parent, QString(), false, false,
QgsCodeEditor
::
Flag
::CodeFolding,
mode
)
28
, mLanguage(
language
)
29
{
30
if
( mLanguage !=
Qgis::ScriptLanguage::Bash
&& mLanguage !=
Qgis::ScriptLanguage::Batch
)
31
{
32
#ifdef Q_OS_WIN
33
mLanguage =
Qgis::ScriptLanguage::Batch
;
34
#else
35
mLanguage =
Qgis::ScriptLanguage::Bash
;
36
#endif
37
}
38
39
if
( !parent )
40
{
41
switch
( mLanguage )
42
{
43
case
Qgis::ScriptLanguage::Batch
:
44
setTitle
( tr(
"Batch Editor"
) );
45
break
;
46
case
Qgis::ScriptLanguage::Bash
:
47
setTitle
( tr(
"Bash Editor"
) );
48
break
;
49
50
case
Qgis::ScriptLanguage::Css
:
51
case
Qgis::ScriptLanguage::QgisExpression
:
52
case
Qgis::ScriptLanguage::Html
:
53
case
Qgis::ScriptLanguage::JavaScript
:
54
case
Qgis::ScriptLanguage::Json
:
55
case
Qgis::ScriptLanguage::Python
:
56
case
Qgis::ScriptLanguage::R
:
57
case
Qgis::ScriptLanguage::Sql
:
58
case
Qgis::ScriptLanguage::Unknown
:
59
break
;
60
}
61
}
62
63
QgsCodeEditorShell::initializeLexer
();
64
}
65
66
Qgis::ScriptLanguage
QgsCodeEditorShell::language
()
const
67
{
68
return
mLanguage;
69
}
70
71
void
QgsCodeEditorShell::initializeLexer
()
72
{
73
QsciLexer *lexer =
nullptr
;
74
Qgis::ScriptLanguage
language
= mLanguage;
75
switch
(
language
)
76
{
77
case
Qgis::ScriptLanguage::Batch
:
78
case
Qgis::ScriptLanguage::Bash
:
79
break
;
80
81
case
Qgis::ScriptLanguage::Css
:
82
case
Qgis::ScriptLanguage::QgisExpression
:
83
case
Qgis::ScriptLanguage::Html
:
84
case
Qgis::ScriptLanguage::JavaScript
:
85
case
Qgis::ScriptLanguage::Json
:
86
case
Qgis::ScriptLanguage::Python
:
87
case
Qgis::ScriptLanguage::R
:
88
case
Qgis::ScriptLanguage::Sql
:
89
case
Qgis::ScriptLanguage::Unknown
:
90
#ifdef Q_OS_WIN
91
language
=
Qgis::ScriptLanguage::Batch
;
92
#else
93
language
=
Qgis::ScriptLanguage::Bash
;
94
#endif
95
break
;
96
}
97
98
switch
(
language
)
99
{
100
case
Qgis::ScriptLanguage::Bash
:
101
lexer =
new
QgsQsciLexerBash();
102
break
;
103
case
Qgis::ScriptLanguage::Batch
:
104
lexer =
new
QgsQsciLexerBatch();
105
break
;
106
107
default
:
108
return
;
// unreachable
109
}
110
111
QFont font =
lexerFont
();
112
lexer->setDefaultFont( font );
113
lexer->setFont( font, -1 );
114
115
switch
(
language
)
116
{
117
case
Qgis::ScriptLanguage::Bash
:
118
{
119
font.setItalic(
true
);
120
lexer->setFont( font, QgsQsciLexerBash::LineComment );
121
122
lexer->setDefaultColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Default
) );
123
lexer->setDefaultPaper(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Background
) );
124
lexer->setPaper(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Background
), -1 );
125
126
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Default
), QgsQsciLexerBash::Default );
127
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Error
), QgsQsciLexerBash::Error );
128
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::CommentLine
), QgsQsciLexerBash::LineComment );
129
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Number
), QgsQsciLexerBash::Number );
130
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Keyword
), QgsQsciLexerBash::Keyword );
131
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::DoubleQuote
), QgsQsciLexerBash::String );
132
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::SingleQuote
), QgsQsciLexerBash::SingleQuotedString );
133
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Operator
), QgsQsciLexerBash::Operator );
134
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Identifier
), QgsQsciLexerBash::Identifier );
135
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Identifier
), QgsQsciLexerBash::ScalarVariable );
136
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Tag
), QgsQsciLexerBash::BacktickQuotedCommand );
137
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Operator
), QgsQsciLexerBash::HeredocDelimiter );
138
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::CommentBlock
), QgsQsciLexerBash::HeredocQuotedString );
139
break
;
140
}
141
142
case
Qgis::ScriptLanguage::Batch
:
143
{
144
font.setItalic(
true
);
145
lexer->setFont( font, QgsQsciLexerBatch::Comment );
146
147
lexer->setDefaultColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Default
) );
148
lexer->setDefaultPaper(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Background
) );
149
lexer->setPaper(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Background
), -1 );
150
151
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Default
), QgsQsciLexerBatch::Default );
152
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::CommentLine
), QgsQsciLexerBatch::Comment );
153
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Keyword
), QgsQsciLexerBatch::Word );
154
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Tag
), QgsQsciLexerBatch::Label );
155
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Decoration
), QgsQsciLexerBatch::Hide );
156
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Method
), QgsQsciLexerBatch::Command );
157
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::DoubleQuote
), QgsQsciLexerBatch::Identifier );
158
lexer->setColor(
lexerColor
(
QgsCodeEditorColorScheme::ColorRole::Operator
), QgsQsciLexerBatch::Operator );
159
break
;
160
}
161
162
default
:
163
break
;
164
}
165
166
167
setLexer( lexer );
168
setLineNumbersVisible
(
true
);
169
runPostLexerConfigurationTasks
();
170
}
171
173
QgsQsciLexerBash::QgsQsciLexerBash( QObject *parent )
174
: QsciLexer( parent )
175
{}
176
177
const
char
*QgsQsciLexerBash::language()
const
178
{
179
return
"bash"
;
180
}
181
182
const
char
*QgsQsciLexerBash::lexer()
const
183
{
184
return
nullptr
;
185
}
186
187
int
QgsQsciLexerBash::lexerId()
const
188
{
189
return
QsciScintillaBase::SCLEX_BASH;
190
}
191
192
QString QgsQsciLexerBash::description(
int
style )
const
193
{
194
switch
( style )
195
{
196
case
Default:
197
return
tr(
"Default"
);
198
case
Error:
199
return
tr(
"Error"
);
200
case
LineComment:
201
return
tr(
"Comment"
);
202
case
Number:
203
return
tr(
"Number"
);
204
case
Keyword:
205
return
tr(
"Keyword"
);
206
case
String:
207
return
tr(
"String"
);
208
case
SingleQuotedString:
209
return
tr(
"Single Quoted String"
);
210
case
Operator:
211
return
tr(
"Operator"
);
212
case
Identifier:
213
return
tr(
"Identifier"
);
214
case
ScalarVariable:
215
return
tr(
"Scale Variable"
);
216
case
Parameter:
217
return
tr(
"Parameter"
);
218
case
BacktickQuotedCommand:
219
return
tr(
"Backtick Quoted Command"
);
220
case
HeredocDelimiter:
221
return
tr(
"Heredoc Delimiter"
);
222
case
HeredocQuotedString:
223
return
tr(
"Heredoc Quoted String"
);
224
}
225
return
QString();
226
}
227
228
const
char
*QgsQsciLexerBash::keywords(
int
set )
const
229
{
230
switch
( set )
231
{
232
case
1:
233
return
"case cat do done echo else esac exit export fi find for if in set then while"
;
234
}
235
236
return
nullptr
;
237
}
238
239
240
QgsQsciLexerBatch::QgsQsciLexerBatch( QObject *parent )
241
: QsciLexer( parent )
242
{}
243
244
const
char
*QgsQsciLexerBatch::language()
const
245
{
246
return
"batch"
;
247
}
248
249
const
char
*QgsQsciLexerBatch::lexer()
const
250
{
251
return
nullptr
;
252
}
253
254
int
QgsQsciLexerBatch::lexerId()
const
255
{
256
return
QsciScintillaBase::SCLEX_BATCH;
257
}
258
259
QString QgsQsciLexerBatch::description(
int
style )
const
260
{
261
switch
( style )
262
{
263
case
Default:
264
return
tr(
"Default"
);
265
case
Comment:
266
return
tr(
"Comment"
);
267
case
Word:
268
return
tr(
"Word"
);
269
case
Label:
270
return
tr(
"Label"
);
271
case
Hide:
272
return
tr(
"Hide"
);
273
case
Command:
274
return
tr(
"Command"
);
275
case
Operator:
276
return
tr(
"Operator"
);
277
case
Identifier:
278
return
tr(
"Identifier"
);
279
}
280
return
QString();
281
}
282
283
const
char
*QgsQsciLexerBatch::keywords(
int
set )
const
284
{
285
switch
( set )
286
{
287
case
1:
288
return
"call defined do echo else errorlevel exist exit for goto if in not set"
;
289
}
290
291
return
nullptr
;
292
}
293
294
Qgis::ScriptLanguage
ScriptLanguage
Scripting languages.
Definition
qgis.h:4978
Qgis::ScriptLanguage::QgisExpression
@ QgisExpression
QGIS expressions.
Definition
qgis.h:4980
Qgis::ScriptLanguage::Css
@ Css
CSS.
Definition
qgis.h:4979
Qgis::ScriptLanguage::Sql
@ Sql
SQL.
Definition
qgis.h:4986
Qgis::ScriptLanguage::Html
@ Html
HTML.
Definition
qgis.h:4981
Qgis::ScriptLanguage::Batch
@ Batch
Windows batch files.
Definition
qgis.h:4987
Qgis::ScriptLanguage::JavaScript
@ JavaScript
JavaScript.
Definition
qgis.h:4982
Qgis::ScriptLanguage::Bash
@ Bash
Bash scripts.
Definition
qgis.h:4988
Qgis::ScriptLanguage::Unknown
@ Unknown
Unknown/other language.
Definition
qgis.h:4989
Qgis::ScriptLanguage::Python
@ Python
Python.
Definition
qgis.h:4984
Qgis::ScriptLanguage::R
@ R
R Stats.
Definition
qgis.h:4985
Qgis::ScriptLanguage::Json
@ Json
JSON.
Definition
qgis.h:4983
QgsCodeEditorColorScheme::ColorRole::CommentBlock
@ CommentBlock
Comment block color.
Definition
qgscodeeditorcolorscheme.h:47
QgsCodeEditorColorScheme::ColorRole::Keyword
@ Keyword
Keyword color.
Definition
qgscodeeditorcolorscheme.h:40
QgsCodeEditorColorScheme::ColorRole::Decoration
@ Decoration
Decoration color.
Definition
qgscodeeditorcolorscheme.h:43
QgsCodeEditorColorScheme::ColorRole::Identifier
@ Identifier
Identifier color.
Definition
qgscodeeditorcolorscheme.h:57
QgsCodeEditorColorScheme::ColorRole::DoubleQuote
@ DoubleQuote
Double quote color.
Definition
qgscodeeditorcolorscheme.h:52
QgsCodeEditorColorScheme::ColorRole::Method
@ Method
Method color.
Definition
qgscodeeditorcolorscheme.h:42
QgsCodeEditorColorScheme::ColorRole::CommentLine
@ CommentLine
Line comment color.
Definition
qgscodeeditorcolorscheme.h:46
QgsCodeEditorColorScheme::ColorRole::Default
@ Default
Default text color.
Definition
qgscodeeditorcolorscheme.h:39
QgsCodeEditorColorScheme::ColorRole::Error
@ Error
Error color.
Definition
qgscodeeditorcolorscheme.h:69
QgsCodeEditorColorScheme::ColorRole::Background
@ Background
Background color.
Definition
qgscodeeditorcolorscheme.h:48
QgsCodeEditorColorScheme::ColorRole::SingleQuote
@ SingleQuote
Single quote color.
Definition
qgscodeeditorcolorscheme.h:51
QgsCodeEditorColorScheme::ColorRole::Number
@ Number
Number color.
Definition
qgscodeeditorcolorscheme.h:44
QgsCodeEditorColorScheme::ColorRole::Tag
@ Tag
Tag color.
Definition
qgscodeeditorcolorscheme.h:59
QgsCodeEditorColorScheme::ColorRole::Operator
@ Operator
Operator color.
Definition
qgscodeeditorcolorscheme.h:55
QgsCodeEditorShell::initializeLexer
void initializeLexer() override
Called when the dialect specific code lexer needs to be initialized (or reinitialized).
Definition
qgscodeeditorshell.cpp:71
QgsCodeEditorShell::language
Qgis::ScriptLanguage language() const override
Returns the associated scripting language.
Definition
qgscodeeditorshell.cpp:66
QgsCodeEditorShell::QgsCodeEditorShell
QgsCodeEditorShell(QWidget *parent=nullptr, QgsCodeEditor::Mode mode=QgsCodeEditor::Mode::ScriptEditor, Qgis::ScriptLanguage language=Qgis::ScriptLanguage::Unknown)
Constructor for QgsCodeEditorShell.
Definition
qgscodeeditorshell.cpp:26
QgsCodeEditor::mode
QgsCodeEditor::Mode mode() const
Returns the code editor mode.
Definition
qgscodeeditor.h:344
QgsCodeEditor::Mode
Mode
Code editor modes.
Definition
qgscodeeditor.h:123
QgsCodeEditor::runPostLexerConfigurationTasks
void runPostLexerConfigurationTasks()
Performs tasks which must be run after a lexer has been set for the widget.
Definition
qgscodeeditor.cpp:468
QgsCodeEditor::setTitle
void setTitle(const QString &title)
Set the widget title.
Definition
qgscodeeditor.cpp:552
QgsCodeEditor::QgsCodeEditor
QgsCodeEditor(QWidget *parent=nullptr, const QString &title=QString(), bool folding=false, bool margin=false, QgsCodeEditor::Flags flags=QgsCodeEditor::Flags(), QgsCodeEditor::Mode mode=QgsCodeEditor::Mode::ScriptEditor)
Construct a new code editor.
Definition
qgscodeeditor.cpp:96
QgsCodeEditor::Flag
Flag
Flags controlling behavior of code editor.
Definition
qgscodeeditor.h:151
QgsCodeEditor::setLineNumbersVisible
void setLineNumbersVisible(bool visible)
Sets whether line numbers should be visible in the editor.
Definition
qgscodeeditor.cpp:618
QgsCodeEditor::lexerFont
QFont lexerFont() const
Returns the font to use in the lexer.
Definition
qgscodeeditor.cpp:435
QgsCodeEditor::lexerColor
QColor lexerColor(QgsCodeEditorColorScheme::ColorRole role) const
Returns the color to use in the lexer for the specified role.
Definition
qgscodeeditor.cpp:419
qgscodeeditorshell.h
Generated on
for QGIS API Documentation by
1.17.0