KSeExpr 6.0.0.0
ExprEditor.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc.
2// SPDX-License-Identifier: LicenseRef-Apache-2.0
3// SPDX-FileCopyrightText: 2020 L. E. Segovia <amy@amyspark.me>
4// SPDX-License-Identifier: GPL-3.0-or-later
5/*
6 * @file ExprEditor.h
7 * @brief This provides an expression editor for SeExpr syntax with auto ui features
8 * @author aselle
9 */
10#pragma once
11
12#include <QListWidget>
13#include <QTimer>
14#include <atomic>
15
17#include "ExprTextEdit.h"
18
19class ExprEditor : public QWidget
20{
21 Q_OBJECT
22
23public:
24 ExprEditor(QWidget *parent);
25 ~ExprEditor() override;
28
29public Q_SLOTS:
30 void exprChanged();
31 void rebuildControls();
32 void controlChanged(int id);
33 void nextError();
34 void selectError();
35 void sendApply();
36 void sendPreview();
37 // void handlePreviewTimer();
38Q_SIGNALS:
39 void apply();
40 void preview();
41
42public:
43 // Get the expression that is in the editor
44 QString getExpr();
45 // Sets the expression that is in the editor
46 void setExpr(const QString &expression, bool apply = false);
47 // Append string
48 void appendStr(const QString &str);
49public Q_SLOTS:
50 // Insert string
51 void insertStr(const QString &str);
52
53public:
54 // Adds an error and its associated position
55 void addError(int startPos, int endPos, const QString &error);
56 // Removes all errors and hides the completion widget
57 void clearErrors();
58 // Removes all extra completion symbols
60 // Registers an extra function and associated do cstring
61 void registerExtraFunction(const QString &name, const QString &docString);
62 // Register an extra variable (i.e. $P, or $u, something provided by resolveVar)
63 void registerExtraVariable(const QString &name, const QString &docString);
64 // Replace extras
65 void replaceExtras(const ExprCompletionModel &completer);
66 // Updates the completion widget, must call after registering any new functions/variables
67 void updateCompleter();
68 // Updates style
69 void updateStyle();
70
71 // Expose the text editor widget to receive customizations in Krita. -amyspark
72public:
73 ExprTextEdit *exprTe {nullptr};
74
75private:
77 QListWidget *errorWidget {nullptr};
78
79 QTimer *controlRebuildTimer {nullptr};
80 QTimer *previewTimer {nullptr};
81
82 std::atomic<bool> _updatingText {false};
84};
void rebuildControls()
ExprControlCollection * controlCollectionWidget() const
void registerExtraVariable(const QString &name, const QString &docString)
void sendPreview()
~ExprEditor() override
void nextError()
void clearErrors()
void apply()
void insertStr(const QString &str)
void updateStyle()
void preview()
QTimer * previewTimer
Definition ExprEditor.h:80
void sendApply()
void updateCompleter()
void appendStr(const QString &str)
QListWidget * errorWidget
Definition ExprEditor.h:77
virtual void setControlCollectionWidget(ExprControlCollection *widget)
std::atomic< bool > _updatingText
Definition ExprEditor.h:82
void clearExtraCompleters()
void exprChanged()
ExprTextEdit * exprTe
Definition ExprEditor.h:73
ExprControlCollection * controls
Definition ExprEditor.h:76
void addError(int startPos, int endPos, const QString &error)
void selectError()
void setExpr(const QString &expression, bool apply=false)
QString getExpr()
void replaceExtras(const ExprCompletionModel &completer)
int errorHeight
Definition ExprEditor.h:83
QTimer * controlRebuildTimer
Definition ExprEditor.h:79
void controlChanged(int id)
void registerExtraFunction(const QString &name, const QString &docString)