12#ifndef PROJECTWORKSPACE_HPP
13#define PROJECTWORKSPACE_HPP
24#include "UtCallbackHolder.hpp"
25#include "UtMemory.hpp"
27#include "UtSemaphore.hpp"
28#include "UtThread.hpp"
30class UtTextDocumentRange;
79 bool ParseIsUpToDate();
82 double GetLastGrammarParseTime() const noexcept;
85 double GetLastInputParseTime() const noexcept;
88 double GetLastProxyDeserializeTime() const noexcept;
91 double GetLastProxyMergeGUI_Time() const noexcept;
96 void CheckFilesForModification();
99 void ScheduleCheckingFilesForModification();
101 void ApplicationActivated();
103 void ParseStatistics();
105 TextSource* FindSource(const
std::
string& aPath,
bool aCreate,
bool aRead);
108 wizard::
Editor* GotoRange(const UtTextDocumentRange& aRange);
109 wizard::
Editor* GotoRange(const
std::
string& aFilePath,
size_t aLineNumber);
110 wizard::
Editor* GotoFile(UtTextDocument* aSourcePtr,
bool aRecordLocation);
111 wizard::
Editor* GotoFile(const
std::
string& aFilePath,
bool aRecordLocation = true);
112 bool RequestClose(
bool aForce = false);
115 void TouchParse(
bool aUpdateQuick =
false);
119 void StopAllExecutions();
120 const std::vector<WsfExecution*>&
GetExecutions()
const {
return mExecutions; }
134 bool IsProcessing()
const;
137 void CreateA_NewFile(
Project* aProject,
const UtPath& aDir);
165 void OnParseCompletion();
166 void CheckFilesForModificationInternal();
168 QString OutputPerformanceString(
Project* aProjectPtr,
int aTimeSpentParsing,
int aTimeSpentProxying);
169 void SetModified(
bool aUpdateQuick =
false);
170 void BeginUpdateParse(
bool aTesting);
171 bool DelayedFileModificationCheck();
173 void SyncModifiedWsfSources();
175 void InitializeNewSources();
181 std::set<TextSource*> mModifiedWsfSources;
183 volatile int mModificationSequenceNumberBeingParsed;
185 volatile int mModificationSequenceNumber;
187 int mParsedModificationSequenceNumber;
194 int mFullUpdateSequenceNumber;
195 QTime mFullUpdateTime;
196 bool mFullUpdateQuick;
199 bool mTriggerParseAll;
206 std::vector<TextSourceView*> mOpenViews;
208 UtCallbackHolder mCallbacks;
210 std::vector<WsfExecution*> mExecutions;
215 QFuture<FileStat> mFileModCheckFuture;
221 bool mCheckFilesAfterParse =
false;
229 static int mMaximumWSF_FileSize;
Q_DECLARE_METATYPE(wizard::ProjectWorkspace *)
#define VI_DEPRECATED
Definition ViExport.hpp:39
#define VI_EXPORT
Definition ViExport.hpp:38
aObjectPtr Update(simTime)
Definition ActionManager.hpp:43
Definition CreateNewFile.hpp:27
Definition EditorManager.hpp:41
Definition FileSignature.hpp:22
Thread for parsing the WSF source in the background.
Definition ProjectParseThread.hpp:23
Definition ProjectWorkspace.hpp:48
void ParseStatisticsReady(Project *aProjectPtr, QString aReportText)
void WaitForAbortParsing()
Definition ProjectWorkspace.cpp:286
static int GetMaximumWSF_FileSize()
Definition ProjectWorkspace.hpp:225
void ChangeDebug(bool aIsActive)
void SourceRemoved(TextSource *aSourcePtr)
void BeginSerialize()
Definition ProjectWorkspace.cpp:825
TextSourceCache * GetSourceCache() const
Definition ProjectWorkspace.hpp:56
QTimer mUpdateTimer
Definition ProjectWorkspace.hpp:61
static void SetMaximumWSF_FileSize(int aFileSize)
Definition ProjectWorkspace.hpp:226
void ActiveProjectChanged(Project *aProjectPtr)
void PerformanceResult(Project *aProjectPtr, QString aWorkType, int aTimeToCompleteMS)
A piece of work has completed. This is used to record timing information.
void WaitForSourceModifications(TextSource *aSourcePtr)
Returns when the source has all queued changes applied. This may require waiting until parsing is com...
Definition ProjectWorkspace.cpp:263
void RequestReparseWsf(TextSource *aSourcePtr)
Definition ProjectWorkspace.cpp:246
void FullParseComplete(Project *aProjectPtr)
The project has been fully parsed and proxied.
void OnChangeDebug(bool aIsActive)
Definition ProjectWorkspace.cpp:921
void ViewOpened(TextSourceView *aViewPtr)
Definition ProjectWorkspace.cpp:306
WsfConnector * GetWsfConnector()
Definition ProjectWorkspace.hpp:132
void customEvent(QEvent *) override
Definition ProjectWorkspace.cpp:703
void StartingExecution(WsfExecution *aExecutionPtr)
EditorManager * GetEditorManager() const
Definition ProjectWorkspace.hpp:78
void ExecutionDestroyed(QObject *aObjectPtr)
Definition ProjectWorkspace.cpp:687
void ViewClosed(TextSourceView *aViewPtr)
Definition ProjectWorkspace.cpp:312
ActionManager * GetActionManager() const
Definition ProjectWorkspace.hpp:77
void NotifyOfSourceChange(TextSource *aSourcePtr)
Definition ProjectWorkspace.cpp:617
void WaitForParsing()
Waits until the parsing thread is complete. This should only be called from the main thread.
Definition ProjectWorkspace.cpp:273
const std::vector< WsfExecution * > & GetExecutions() const
Definition ProjectWorkspace.hpp:120
void ProjectClosed(Project *aProjectPtr)
void ProxyUpdated(ProxyMerge *aProxyMerge)
void ProjectOpened(Project *aProjectPtr)
void ProjectAdded(Project *aProjectPtr)
Definition ProjectWorkspace.cpp:107
ProjectWorkspace()
Definition ProjectWorkspace.cpp:52
void RemoveProject(Project *aProjectPtr)
Definition ProjectWorkspace.cpp:128
void ProjectIncrementParseNumber()
Definition ProjectWorkspace.hpp:114
void NewTextSource(TextSource *aSourcePtr)
static ProjectWorkspace * Instance()
Definition ProjectWorkspace.cpp:820
A WSF 'project'. Manages WSF sources files in a WSF project.
Definition Project.hpp:66
Definition ProxyMerge.hpp:96
Definition TextSourceCache.hpp:35
Definition TextSourceView.hpp:23
Definition TextSource.hpp:48
Definition WsfConnector.hpp:27
Encapsulates the execution of a WSF application.
Definition WsfExecution.hpp:28
Template specialization for wsf::comm::Address. Allows usage of Address in std::unordered_map/set.
Definition WsfCommAddress.hpp:185
Definition ProjectWorkspace.hpp:125
FileSignature mOldSignature
Definition ProjectWorkspace.hpp:126
UtPath mPath
Definition ProjectWorkspace.hpp:127