WSF
EditorManager.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 2018 Infoscitex, a DCS 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 EDITORMANAGER_HPP
13#define EDITORMANAGER_HPP
14
15#include <memory>
16
17#include <QObject>
18#include <QTabBar>
19#include <QVector>
20
21#include "FindTextRequest.hpp"
23#include "Vi.hpp"
24#include "ViExport.hpp"
25
26class QKeyEvent;
27class QTextBlock;
28class QTextCharFormat;
29class QToolBar;
30class QWidget;
31class UtTextDocumentLocation;
32
33namespace wizard
34{
35class EditModeBanner;
36class Editor;
37class EditorDock;
38class Project;
39
40class VI_EXPORT EditorManager : public QObject
41{
42public:
43 friend class Editor;
45 ~EditorManager() override;
46
48 void VisibilityChanged(Editor* aEditor, bool aVisible);
49 void EditorClosed(Editor* aEditor);
50 void AddTab(Editor* aEditor);
51 void SetCurrent(Editor* aEditor);
52 void TabFocusIn(Editor* aEditor);
54 void ProjectClosing(Project* aProject);
55 void SetFindRequest(const FindTextRequest& aRequest);
56 void SetReplaceRequest(const ReplaceTextRequest& aRequest);
59 void TabFocusOut(Editor* aEditor);
60 void RequestClose(Editor* aEditor);
61 bool IsReadOnly();
62 void RecordHistoryLocation(const UtTextDocumentLocation& aLoc, bool aForceNewEntry);
63 void TabBack();
64 void TabForward();
65 const std::map<QString, Editor*>& GetEditorMap() const { return mEditorList; }
66
67 static void UpdateStyleFromArray(const std::vector<QTextCharFormat>& aFormatChanges,
68 const QTextBlock& aFirstBlk,
69 int aLastBlockNumber,
70 size_t aStartPos,
71 size_t aEndPos);
72
73 void CloseAll();
74 void CloseAllButStartup();
75 void CloseAllButIncluded();
76 void CloseAllLeft(Editor* aEditor);
77 void CloseAllRight(Editor* aEditor);
78 void CloseInactive();
79 void CloseAllBut(Editor* aEditorPtr);
80 QStringList GetOpenEditorNames() const;
81
82 bool AcceptsClose(TextSource* aSourcePtr);
83 void CloseEditor(TextSource* aSourcePtr);
84
86 void BeginUndoCapture() noexcept;
89 bool IsCapturingUndo() const noexcept;
91 void EndUndoCapture() noexcept;
92 void ModificationOccured(Editor* aEditorPtr);
93 void Undo();
94 void Redo();
95 void ClearUndoStacks();
96 bool eventFilter(QObject* aObjPtr, QEvent* aEventPtr) override;
97 void AdjustFontSize(int aValue);
98
99protected:
100 void RegisterEditor(Editor* aEditorPtr);
101 void DeregisterEditor(Editor* aEditorPtr);
102
103private:
104 void ActiveProjectChanged();
105
106 void ClearEditors();
107 void EditModeSwitch(Vi::EditMode aEditMode);
108
109 QTabBar* FindActiveTabBar();
110 QTabBar* FindTabBarWithEditor(Editor* aEditor, int& aIndex);
111 EditorDock* GetDockFromEditor(Editor* aEditor);
112
113 bool SetActiveEditorTab(QVariant aEditorPtr);
114
115 bool CheckEditorsInChangeList(const std::vector<Editor*>& aChangeList) const;
116
117 FindTextRequest mFindRequest;
118 ReplaceTextRequest mReplaceRequest;
119 Editor* mCurrent;
120
121 std::map<QString, Editor*> mEditorList;
122 bool mIsReadOnly;
123 EditModeBanner* mEditModeBanner;
124 bool mUndoAction;
125 bool mUndoCapture;
126 Editor* mPreviousUndoEditor;
127 std::vector<std::vector<Editor*>> mUndoStack;
128 std::vector<std::vector<Editor*>> mRedoStack;
129};
130} // namespace wizard
131
132#endif // EDITORMANAGER_HPP
#define VI_EXPORT
Definition ViExport.hpp:38
Definition EditModeBanner.hpp:30
A wkf::DockWidget containing a wizard::Editor.
Definition EditorDock.hpp:32
void SetReplaceRequest(const ReplaceTextRequest &aRequest)
Definition EditorManager.cpp:173
void RequestClose(Editor *aEditor)
Definition EditorManager.cpp:190
const std::map< QString, Editor * > & GetEditorMap() const
Definition EditorManager.hpp:65
void TabFocusIn(Editor *aEditor)
Definition EditorManager.cpp:162
void SetCurrent(Editor *aEditor)
Definition EditorManager.cpp:142
Editor * GetCurrentEditor()
Definition EditorManager.cpp:60
void VisibilityChanged(Editor *aEditor, bool aVisible)
Definition EditorManager.cpp:65
void TabBack()
Definition EditorManager.cpp:329
void TabForward()
Definition EditorManager.cpp:342
void EditorClosed(Editor *aEditor)
Definition EditorManager.cpp:82
void RecordCurrentLocation()
Definition EditorManager.cpp:164
void RecordHistoryLocation(const UtTextDocumentLocation &aLoc, bool aForceNewEntry)
Definition EditorManager.cpp:203
EditorManager()
Definition EditorManager.cpp:40
FindTextRequest & GetActiveFindRequest()
Definition EditorManager.cpp:178
ReplaceTextRequest & GetActiveReplaceRequest()
Definition EditorManager.cpp:183
void SetFindRequest(const FindTextRequest &aRequest)
Definition EditorManager.cpp:168
void AddTab(Editor *aEditor)
Definition EditorManager.cpp:140
void TabFocusOut(Editor *aEditor)
Definition EditorManager.cpp:188
bool IsReadOnly()
Definition EditorManager.cpp:198
friend class Editor
Definition EditorManager.hpp:43
void ProjectClosing(Project *aProject)
Definition EditorManager.cpp:166
Definition Editor.hpp:57
Definition FindTextRequest.hpp:19
A WSF 'project'. Manages WSF sources files in a WSF project.
Definition Project.hpp:66
Definition ReplaceTextRequest.hpp:19
Definition TextSource.hpp:48
Definition Undo.hpp:31
Definition Vi.hpp:16
Template specialization for wsf::comm::Address. Allows usage of Address in std::unordered_map/set.
Definition WsfCommAddress.hpp:185
Definition Runner.hpp:22
Copyrights Multiple, All Rights Reserved