17#include <QPlainTextEdit>
21#include <QSyntaxHighlighter>
35class QStringListModel;
135 explicit TextEditor(QWidget *parent =
nullptr);
137 void setText(
const QString &text);
143 void revealLocation(
int lineNumber,
int columnNumber = 0,
int matchLength = 0);
149 void setShaderContext(
bool acmxvk,
const QVector<ShaderEditorUniform> &uniforms,
const QString &libraryDirectory = QString());
185 QVector<ShaderDiagnostic>
parseDiagnostics(
const QString &compilerOutput)
const;
Plain-text editor with line numbers and code-editing helpers.
LineNumberArea * m_lineNumberArea
CustomTextEdit(QWidget *parent=nullptr)
void highlightCurrentLine()
bool hasMultiLineSelection()
int lineNumberAreaWidth()
Compute width required for current line-number digit count.
QVector< ShaderDiagnostic > m_diagnostics
void setCompletionWords(const QStringList &words)
Replace the keywords offered by code completion.
void setDiagnostics(const QVector< ShaderDiagnostic > &diagnostics)
Replace the line markers and underlines shown for compiler messages.
void insertCompletion(const QString &completion)
void lineNumberAreaPaintEvent(QPaintEvent *event)
Paint callback used by the line-number side widget.
void showCompletionPopup(bool forced)
void mousePressEvent(QMouseEvent *event) override
QString completionPrefix() const
void updateLineNumberAreaWidth(int newBlockCount)
void resizeEvent(QResizeEvent *event) override
void smartHome(bool shift)
void keyPressEvent(QKeyEvent *event) override
QStringListModel * m_completionModel
void changeEvent(QEvent *event) override
void includeRequested(const QString &includeName)
void updateLineNumberArea(const QRect &rect, int dy)
Rule-based GLSL syntax highlighter.
CustomTextEdit * m_editor
void paintEvent(QPaintEvent *event) override
LineNumberArea(CustomTextEdit *editor)
QSize sizeHint() const override
TextEditor(QWidget *parent=nullptr)
void updateCursorPosition()
CustomTextEdit * m_textEdit
QHash< QString, QDoubleSpinBox * > m_uniformSpins
QHash< QString, QSlider * > m_uniformSliders
QVector< ShaderEditorUniform > m_uniforms
QVector< ShaderDiagnostic > m_diagnostics
void setUniformValue(const QString &name, double value)
void updateDiagnosticActions()
void setShaderContext(bool acmxvk, const QVector< ShaderEditorUniform > &uniforms, const QString &libraryDirectory=QString())
Configure ACMXVK completion and snippets from the active manifest.
void fileSaved(const QString &path)
Emitted after the editor successfully writes its contents to disk.
void updateCompletionWords()
QVBoxLayout * m_uniformLayout
void previewRequested(const QString &path, const QString &source)
void revealLocation(int lineNumber, int columnNumber=0, int matchLength=0)
Move to a one-based line and select the requested source match.
void setCompilePending()
Mark the associated shader as being compiled.
void uniformValueChanged(const QString &name, double value)
void insertSnippet(const QString &snippet)
void keyPressEvent(QKeyEvent *event) override
QString customUniformDefines() const
GlslSyntaxHighlighter * m_highlighter
bool writeFile(const QString &filePath)
Atomically write the document to disk.
void openFileRequested(const QString &path, int lineNumber)
void openInclude(const QString &includeName)
void setFileName(const QString &filename)
Associate editor with a shader file path.
QScrollArea * m_uniformScroll
QCheckBox * m_loopSafetyCheck
QCheckBox * m_livePreviewCheck
bool maybePromptSave()
Show a Save/Discard/Cancel prompt if the document is modified.
void rebuildUniformControls()
QVector< ShaderDiagnostic > parseDiagnostics(const QString &compilerOutput) const
void setCompileResult(bool success, const QString &compilerOutput)
Show compiler status and source diagnostics for the associated shader.
QString fileName() const
Return the file currently associated with this editor.
void navigateDiagnostic(int offset)
void setText(const QString &text)
Replace editor contents and reset displayed text.
void closeEvent(QCloseEvent *event) override
QAction * m_previousDiagnosticAction
QAction * m_nextDiagnosticAction
QString m_libraryDirectory
QLabel * m_compileStatusLabel
QString inject_safety_counters(const QString &glsl_source)
Add bounded iteration guards and preserve original GLSL diagnostic lines.
ShaderDiagnosticSeverity severity
GLSL syntax highlighter for the embedded text editor.