WSF
WsfEditor.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFEDITOR_HPP
13#define WSFEDITOR_HPP
14
15#include "Editor.hpp"
16#include "TextStyler.hpp"
17#include "UtCallbackHolder.hpp"
18#include "ViExport.hpp"
19
20class UtTextDocument;
21
22namespace wizard
23{
25class EditorManager;
26class Project;
27class ProxyMerge;
28class SyntaxTips;
29class TextSource;
30
31class VI_EXPORT WsfEditor : public Editor, public TextStyler
32{
33 friend class ActionManager;
34
35public:
36 WsfEditor(QWidget* aParent, Project* aProject, TextSource* aTextSource, EditorManager* aManagerPtr);
37 ~WsfEditor() override = default;
38
39 void Initialize();
40 void Initialize2();
41
42 void TipsMoved(QRect aRect);
44 void HideAutocomplete();
45 QRect GetTipsGeometry();
46 void UpdateStyle() override;
47
48protected:
49 void GoToDefinitionAction() { return GoToDefinition(false); }
50 void FindReferencesAction() { return GoToDefinition(true); }
51 void BeginAutoComplete();
52 bool CommentBlock();
53 bool UncommentBlock();
54 void FormatSelection();
55
56private:
57 struct foldStates
58 {
59 int first;
60 int second;
61 bool mIsExpanded;
62
63 foldStates(std::pair<int, int> aPair)
64 {
65 first = aPair.first;
66 second = aPair.second;
67 mIsExpanded = true;
68 }
69 };
70 void GeneralPreferencesChanged(int aValue);
71 void EditorPreferencesChanged();
72
73 bool event(QEvent* event) override;
74 void mousePressEvent(QMouseEvent* e) override;
75 void insertFromMimeData(const QMimeData* aSource) override;
76 void UnhideLines(int aFirstLine, int aLastLine);
77 void focusInEvent(QFocusEvent* e) override;
78 void focusOutEvent(QFocusEvent* e) override;
79 void keyPressEvent(QKeyEvent* e) override;
80 void contextMenuEvent(QContextMenuEvent* e) override;
81 void GoToInclude();
82 void UpdateAutoComplete() override;
83 void OpenHelp() {}
84 void GoToDefinition(bool aAllRefs);
85 void marginMouseMoveEvent(QMouseEvent*) override;
86 void marginLeaveEvent(QEvent* e) override;
87 void marginMousePressEvent(QMouseEvent* e) override;
88 void marginContextMenuEvent(QContextMenuEvent*) override;
89 bool HoverTimeout();
90 void CommandDocumentationAction();
91 void CreateFileFromInclude();
92 void LoadSettings() override;
93 void FocusCheck();
94 void ToggleSelectionComment();
95 void OnProxyUpdate(ProxyMerge* aMerge);
96 void NotificationAction();
97 void Escape();
98 bool isValidSymbolChar(char c) const;
99 std::string GetSymbolToken(const char* buf, int len, int pos) const;
100 int IsBrace(char c) const;
101 char OtherBrace(char c) const;
102 int findMatch(int startIndex, int aDirection, const QString& aText, char aBeginChar, char aEndChar) const;
103 void UpdateBraceMatch();
104 void UpdateBreakpointMargin();
105 void CurrentDebugLineChanged();
106 void ReloadComplete() override;
107 void ParseResultsInvalidate(Project* aProjectPtr) {}
108 void UpdateExtraSelections() override;
109 int MarginWidth() override;
110 void PaintMargin(QPaintEvent* aEvent) override;
111 void OnCursorPositionChanged() override;
112 void AddMarker(int aLineNumber, const QImage& aImage);
113 void OnUpdateRequest(const QRect& rect, int w) override;
114 void StyleLines(int aFirstLine, int aLastLine);
115 void SetTextFormat(size_t aStart, size_t aCount, const QTextCharFormat& aFmt) override;
116 void MergeTextFormat(size_t aStart, size_t aCount, const QTextCharFormat& aFmt) override;
117 void StyleVisibleLines();
118 void DocContentsChange(int from, int charsRemoves, int charsAdded) override;
119 void Paste() override;
120 void dragEnterEvent(QDragEnterEvent* e) override;
121 void dragLeaveEvent(QDragLeaveEvent* e) override;
122 void dragMoveEvent(QDragMoveEvent* e) override;
123 void dropEvent(QDropEvent* e) override;
124 void hideEvent(QHideEvent* e) override;
125 bool PasteMime(const QMimeData* aMimeData);
126
127 AutoCompletePopup* mAutocompletePopupPtr;
128 SyntaxTips* mSyntaxTipsPtr;
129 QTimer mFocusCheckTimer;
130 int mContextMenuCharacterPosition;
131 std::string mDragIncludeText;
132 int mDragIncludeLine;
133 bool mFirstStyleComplete;
134 bool mUpdatingBreakpoints;
135 // Background of scripts is colored differently:
136 QList<QTextEdit::ExtraSelection> mScriptBackgroundSelections;
137 QList<QTextEdit::ExtraSelection> mBraceHighlightSelections;
138
139 // The fold levels. Each fold region is stored as (first, last) line
140 std::vector<foldStates> mFoldLevels;
141
142 // True if the mouse cursor is over the fold margin
143 bool mHoveringFolds;
144
145 std::map<int, QImage> mMarkers;
146
147 // The first and last lines which are fully styled
148 int mFullStyleFirstLine;
149 int mFullStyleLastLine;
150
151 // Members used to implement TextStyler:
152 // {
153 QVector<QTextCharFormat> mFormatChanges;
154 // The first position and length being styled right now
155 size_t mCurrentStylePos;
156 size_t mCurrentStyleLength;
157 // Make sure we don't reenter StyleLines()
158 bool mStylingNow;
159 std::vector<int> mModifiedFolds;
160
161
162 UtTextDocument* mClickedIncludePtr;
163 std::string mCreateFileFromIncludeName;
164 UtCallbackHolder mUtCallbacks;
165
166 static const int cFOLD_MARGIN_WIDTH = 10;
167};
168} // namespace wizard
169
170#endif // WSFEDITOR_HPP
#define VI_EXPORT
Definition ViExport.hpp:38
UtVec3d pos
Definition WsfScriptTrackClass.cpp:1881
Provides auto-completion for a WsfEditor.
Definition AutoCompletePopup.hpp:46
Definition EditorManager.hpp:41
Editor(QWidget *aParent, Project *aProject, TextSource *aTextSource, EditorManager *aManagerPtr)
Definition Editor.cpp:39
A WSF 'project'. Manages WSF sources files in a WSF project.
Definition Project.hpp:66
Definition ProxyMerge.hpp:96
A popup window displaying the syntax for commands as the user types.
Definition SyntaxTips.hpp:32
Definition TextSource.hpp:48
Definition TextStyler.hpp:21
void UpdateStyle() override
Definition WsfEditor.cpp:148
QRect GetTipsGeometry()
Definition WsfEditor.cpp:138
int GetContextMenuCharacterPosition()
Definition WsfEditor.cpp:121
void Initialize2()
Definition WsfEditor.cpp:108
void TipsMoved(QRect aRect)
Definition WsfEditor.cpp:113
void Initialize()
Definition WsfEditor.cpp:98
WsfEditor(QWidget *aParent, Project *aProject, TextSource *aTextSource, EditorManager *aManagerPtr)
Definition WsfEditor.cpp:67
void GoToDefinitionAction()
Definition WsfEditor.hpp:49
~WsfEditor() override=default
void HideAutocomplete()
Definition WsfEditor.cpp:126
void FindReferencesAction()
Definition WsfEditor.hpp:50
friend class ActionManager
Definition WsfEditor.hpp:33
WSF_UT_EXPORT void Escape(std::string &aText)
Definition UtCsv.cpp:177
Definition Runner.hpp:22
Copyrights Multiple, All Rights Reserved