KSeExpr  4.0.4.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 
16 #include "ExprControlCollection.h"
17 #include "ExprTextEdit.h"
18 
19 class ExprEditor : public QWidget
20 {
21  Q_OBJECT
22 
23 public:
24  ExprEditor(QWidget *parent);
25  ~ExprEditor() override;
28 
29 public 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();
38 Q_SIGNALS:
39  void apply();
40  void preview();
41 
42 public:
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);
49 public Q_SLOTS:
50  // Insert string
51  void insertStr(const QString &str);
52 
53 public:
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
59  void clearExtraCompleters();
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
72 public:
73  ExprTextEdit *exprTe {nullptr};
74 
75 private:
77  QListWidget *errorWidget {nullptr};
78 
79  QTimer *controlRebuildTimer {nullptr};
80  QTimer *previewTimer {nullptr};
81 
82  std::atomic<bool> _updatingText {false};
84 };
void rebuildControls()
Definition: ExprEditor.cpp:177
ExprEditor(QWidget *parent)
Definition: ExprEditor.cpp:64
ExprControlCollection * controlCollectionWidget() const
Definition: ExprEditor.cpp:122
void registerExtraVariable(const QString &name, const QString &docString)
Definition: ExprEditor.cpp:283
void sendPreview()
Definition: ExprEditor.cpp:162
~ExprEditor() override
Definition: ExprEditor.cpp:58
void nextError()
Definition: ExprEditor.cpp:255
void clearErrors()
Definition: ExprEditor.cpp:263
void apply()
void insertStr(const QString &str)
Definition: ExprEditor.cpp:203
void updateStyle()
Definition: ExprEditor.cpp:298
void preview()
QTimer * previewTimer
Definition: ExprEditor.h:80
void sendApply()
Definition: ExprEditor.cpp:157
void updateCompleter()
Definition: ExprEditor.cpp:293
void appendStr(const QString &str)
Definition: ExprEditor.cpp:209
QListWidget * errorWidget
Definition: ExprEditor.h:77
virtual void setControlCollectionWidget(ExprControlCollection *widget)
Definition: ExprEditor.cpp:128
std::atomic< bool > _updatingText
Definition: ExprEditor.h:82
void clearExtraCompleters()
Definition: ExprEditor.cpp:272
void exprChanged()
Definition: ExprEditor.cpp:167
ExprTextEdit * exprTe
Definition: ExprEditor.h:73
ExprControlCollection * controls
Definition: ExprEditor.h:76
void addError(int startPos, int endPos, const QString &error)
Definition: ExprEditor.cpp:214
void selectError()
Definition: ExprEditor.cpp:144
void setExpr(const QString &expression, bool apply=false)
Definition: ExprEditor.cpp:192
QString getExpr()
Definition: ExprEditor.cpp:187
void replaceExtras(const ExprCompletionModel &completer)
Definition: ExprEditor.cpp:288
int errorHeight
Definition: ExprEditor.h:83
QTimer * controlRebuildTimer
Definition: ExprEditor.h:79
void controlChanged(int id)
Definition: ExprEditor.cpp:43
void registerExtraFunction(const QString &name, const QString &docString)
Definition: ExprEditor.cpp:278