QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgscodeeditorpython.h
Go to the documentation of this file.
1/***************************************************************************
2 qgscodeeditorpython.h - A Python editor based on QScintilla
3 --------------------------------------
4 Date : 06-Oct-2013
5 Copyright : (C) 2013 by Salvatore Larosa
6 Email : lrssvtml (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#ifndef QGSCODEEDITORPYTHON_H
17#define QGSCODEEDITORPYTHON_H
18
19#include "qgis_gui.h"
20#include "qgis_sip.h"
21#include "qgscodeeditor.h"
22
23#include <Qsci/qscilexerpython.h>
24
27template<class T> class QgsSettingsEntryEnumFlag;
28
29SIP_IF_MODULE( HAVE_QSCI_SIP )
30
31#ifndef SIP_RUN
33class QgsQsciLexerPython : public QsciLexerPython
34{
35 Q_OBJECT
36 public:
37 QgsQsciLexerPython( QObject *parent = nullptr );
38
39 const char *keywords( int set ) const override;
40};
42#endif
43
51class GUI_EXPORT QgsCodeEditorPython : public QgsCodeEditor
52{
53 Q_OBJECT
54
55 public:
56#ifndef SIP_RUN
58 static inline QgsSettingsTreeNode *sTreePythonCodeEditor = QgsCodeEditor::sTreeCodeEditor->createChildNode( QStringLiteral( "python" ) );
59 static const QgsSettingsEntryString *settingCodeFormatter;
60 static const QgsSettingsEntryInteger *settingMaxLineLength;
61 static const QgsSettingsEntryBool *settingSortImports;
62 static const QgsSettingsEntryInteger *settingAutopep8Level;
63 static const QgsSettingsEntryBool *settingBlackNormalizeQuotes;
64 static const QgsSettingsEntryString *settingExternalPythonEditorCommand;
65 static const QgsSettingsEntryEnumFlag<Qgis::DocumentationBrowser> *settingContextHelpBrowser;
67#endif
68
77 QgsCodeEditorPython( QWidget *parent SIP_TRANSFERTHIS = nullptr, const QList<QString> &filenames = QList<QString>(), QgsCodeEditor::Mode mode = QgsCodeEditor::Mode::ScriptEditor, QgsCodeEditor::Flags flags = QgsCodeEditor::Flag::CodeFolding );
78
79 Qgis::ScriptLanguage language() const override;
81
86 void loadAPIs( const QList<QString> &filenames );
87
91 bool loadScript( const QString &script );
92
99
105 QString characterBeforeCursor() const;
106
112 QString characterAfterCursor() const;
113
119 void updateCapabilities();
120
121 bool checkSyntax() override;
122
123 public slots:
124
131
137 virtual void showApiDocumentation( const QString &item );
138
144 void toggleComment() override;
145
146 protected:
147 void initializeLexer() override;
148 void keyPressEvent( QKeyEvent *event ) override;
149 QString reformatCodeString( const QString &string ) override;
150 void populateContextMenu( QMenu *menu ) override;
151
152 protected slots:
153
159 void autoComplete();
160
161 private:
162 QList<QString> mAPISFilesList;
163 QString mPapFile;
164
166
167 static const QMap<QString, QString> sCompletionPairs;
168
169 // Only used for selected text
170 static const QStringList sCompletionSingleCharacters;
171};
172
173#endif
ScriptLanguage
Scripting languages.
Definition qgis.h:4478
QFlags< ScriptLanguageCapability > ScriptLanguageCapabilities
Script language capabilities.
Definition qgis.h:4513
void autoComplete()
Triggers the autocompletion popup.
QString characterAfterCursor() const
Returns the character after the cursor, or an empty string if the cursor is set at end.
bool isCursorInsideStringLiteralOrComment() const
Check whether the current cursor position is inside a string literal or a comment.
void searchSelectedTextInPyQGISDocs()
Searches the selected text in the official PyQGIS online documentation.
void loadAPIs(const QList< QString > &filenames)
Load APIs from one or more files.
virtual void showApiDocumentation(const QString &item)
Displays the given text in the official APIs (PyQGIS, C++ QGIS or Qt) documentation.
PRIVATE QgsCodeEditorPython(QWidget *parent=nullptr, const QList< QString > &filenames=QList< QString >(), QgsCodeEditor::Mode mode=QgsCodeEditor::Mode::ScriptEditor, QgsCodeEditor::Flags flags=QgsCodeEditor::Flag::CodeFolding)
Construct a new Python editor.
void updateCapabilities()
Updates the editor capabilities.
bool loadScript(const QString &script)
Loads a script file.
QString characterBeforeCursor() const
Returns the character before the cursor, or an empty string if cursor is set at start.
QgsCodeEditor::Mode mode() const
Returns the code editor mode.
Mode
Code editor modes.
@ ScriptEditor
Standard mode, allows for display and edit of entire scripts.
virtual void toggleComment()
Toggle comment for the selected text.
void keyPressEvent(QKeyEvent *event) override
virtual void populateContextMenu(QMenu *menu)
Called when the context menu for the widget is about to be shown, after it has been fully populated w...
QFlags< Flag > Flags
Flags controlling behavior of code editor.
static QgsSettingsTreeNode * sTreeCodeEditor
virtual Qgis::ScriptLanguageCapabilities languageCapabilities() const
Returns the associated scripting language capabilities.
bool event(QEvent *event) override
virtual void initializeLexer()
Called when the dialect specific code lexer needs to be initialized (or reinitialized).
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.
@ CodeFolding
Indicates that code folding should be enabled for the editor.
virtual Qgis::ScriptLanguage language() const
Returns the associated scripting language.
virtual QString reformatCodeString(const QString &string)
Applies code reformatting to a string and returns the result.
virtual bool checkSyntax()
Applies syntax checking to the editor.
A boolean settings entry.
A template class for enum and flag settings entry.
An integer settings entry.
A string settings entry.
A tree node for the settings tree to help organizing and introspecting the tree.
#define SIP_IF_MODULE(condition)
Definition qgis_sip.h:28
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:53