SeExpr
ExprShortEdit.h
Go to the documentation of this file.
1/*
2* Copyright Disney Enterprises, Inc. All rights reserved.
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License
6* and the following modification to it: Section 6 Trademarks.
7* deleted and replaced with:
8*
9* 6. Trademarks. This License does not grant permission to use the
10* trade names, trademarks, service marks, or product names of the
11* Licensor and its affiliates, except as required for reproducing
12* the content of the NOTICE file.
13*
14* You may obtain a copy of the License at
15* http://www.apache.org/licenses/LICENSE-2.0
16*
17* @file ExprShortEdit.h
18* @brief This provides an expression editor for SeExpr syntax with auto ui features
19* @author aselle
20*/
21
22#ifndef ExprShortEditUI_h
23#define ExprShortEditUI_h
24
25#include <vector>
26#include <string>
27
28#include <QWidget>
29#include <QTextEdit>
30#include <QWheelEvent>
31
33class QToolButton;
34class QVBoxLayout;
35class QHBoxLayout;
36class QTextEdit;
37class ExprHighlighter;
38class QCompleter;
41class QLabel;
42class ExprPopupDoc;
43class ExprDialog;
44
45class ExprShortEdit : public QWidget {
46 Q_OBJECT
47
48 protected:
50 QToolButton* editDetail;
53 QVBoxLayout* vboxlayout;
54 QHBoxLayout* hboxlayout;
55 QLabel* error;
56 std::string _context;
57 std::string _searchPath;
59
60 public:
61 ExprShortEdit(QWidget* parent, bool expanded = true, bool applyOnSelect = true);
62 virtual ~ExprShortEdit();
63
64 // Gets the string that is in the edit widget
65 std::string getExpressionString() const;
66 QString getExpression() const;
67 // Sets the string that is in the edit widget
68 void setExpressionString(const std::string& expression);
69 // Removes all extra completion symbols
71 // Registers an extra function and associated do cstring
72 void registerExtraFunction(const std::string& name, const std::string& docString);
73 // Register an extra variable (i.e. $P, or $u, something provided by resolveVar)
74 void registerExtraVariable(const std::string& name, const std::string& docString);
75 // Updates the completion widget, must call after registering any new functions/variables
76 void updateCompleter();
77 // Hides the expression part of the interface
78 void setSimple(bool enabled);
79 // Set a menu on the "details" button
80 void setDetailsMenu(QMenu* menu);
81 // Set a colon-delimited path variable for finding expressions
82 void setSearchPath(const QString& context, const QString& path);
83 // Set line wrap mode on the text edit
84 void setLineWrapMode(QTextEdit::LineWrapMode mode);
85 // Set the vertical scrollbar policy -- set to Qt::ScrollBarAlwaysOff to
86 // disable it
87 void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy policy);
88 // Set the horizontal scrollbar policy -- set to Qt::ScrollBarAlwaysOff to
89 // disable it
90 void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy policy);
91 // Open the details window and open the Nth editor
92 // Pass -1 to not show the editor
93 void showDetails(int idx);
94
95 virtual QSize sizeHint() const { return QSize(400, 50); }
96 virtual void hideErrors(bool hidden, const std::string& err);
97
98 // Exposed via Python
99 QToolButton* expandButton;
101
102 protected:
103 void checkErrors();
104
105 protected
106slots:
107 virtual void detailPressed();
108 virtual void expandPressed();
109 virtual void textFinished();
110 virtual void handleTextEdited();
111 virtual void controlChanged(int id);
112 virtual void rebuildControls();
113 virtual void expressionApplied();
114 virtual void dialogClosed();
115
116signals:
118};
119
120class ExprShortTextEdit : public QTextEdit {
121 Q_OBJECT;
122
124
126 QString savedText;
129
130 public:
131 QCompleter* completer;
133
134 ExprShortTextEdit(QWidget* parent);
135
136 protected:
137 void showTip(const QString& string);
138 void hideTip();
139
140 void paintEvent(QPaintEvent* e);
141 virtual void keyPressEvent(QKeyEvent* e);
142 virtual void focusInEvent(QFocusEvent* e);
143 virtual void focusOutEvent(QFocusEvent* e);
144 virtual void mousePressEvent(QMouseEvent* event);
145 virtual void mouseDoubleClickEvent(QMouseEvent* event);
146 virtual void wheelEvent(QWheelEvent* e) { e->ignore(); }
147
148 void setColor(bool editing);
149 void finishEdit();
150signals:
152 private
153slots:
154 void insertCompletion(const QString& completion);
155};
156
157#endif
void clearExtraCompleters()
virtual ~ExprShortEdit()
void setDetailsMenu(QMenu *menu)
QToolButton * editDetail
Definition: ExprShortEdit.h:50
virtual void rebuildControls()
ExprDialog * _dialog
Definition: ExprShortEdit.h:52
QHBoxLayout * hboxlayout
Definition: ExprShortEdit.h:54
std::string _context
Definition: ExprShortEdit.h:56
void setExpressionString(const std::string &expression)
std::string getExpressionString() const
virtual QSize sizeHint() const
Definition: ExprShortEdit.h:95
virtual void dialogClosed()
void setSimple(bool enabled)
void updateCompleter()
virtual void expressionApplied()
void exprChanged()
void registerExtraFunction(const std::string &name, const std::string &docString)
void registerExtraVariable(const std::string &name, const std::string &docString)
QTimer * controlRebuildTimer
Definition: ExprShortEdit.h:49
std::string _searchPath
Definition: ExprShortEdit.h:57
void showDetails(int idx)
void setLineWrapMode(QTextEdit::LineWrapMode mode)
virtual void hideErrors(bool hidden, const std::string &err)
QToolButton * expandButton
Definition: ExprShortEdit.h:99
virtual void expandPressed()
virtual void handleTextEdited()
QVBoxLayout * vboxlayout
Definition: ExprShortEdit.h:53
ExprControlCollection * controls
Definition: ExprShortEdit.h:51
ExprShortTextEdit * edit
void setSearchPath(const QString &context, const QString &path)
virtual void detailPressed()
void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy policy)
virtual void textFinished()
QLabel * error
Definition: ExprShortEdit.h:55
QString getExpression() const
virtual void controlChanged(int id)
void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy policy)
virtual void mousePressEvent(QMouseEvent *event)
void showTip(const QString &string)
virtual void mouseDoubleClickEvent(QMouseEvent *event)
void paintEvent(QPaintEvent *e)
ExprCompletionModel * completionModel
virtual void keyPressEvent(QKeyEvent *e)
void setColor(bool editing)
virtual void focusOutEvent(QFocusEvent *e)
ExprHighlighter * highlighter
ExprPopupDoc * _tip
QCompleter * completer
void insertCompletion(const QString &completion)
virtual void focusInEvent(QFocusEvent *e)
QStyle * lastStyleForHighlighter
virtual void wheelEvent(QWheelEvent *e)
If a scalar is used in a vector context
Definition: userdoc.txt:436