18struct DockerBuildState
20 std::thread mBuildThread;
21 std::atomic<bool> mRunning{
false};
22 std::atomic<bool> mCancelRequested{
false};
23 std::atomic<bool> mComplete{
false};
24 std::atomic<bool> mSuccess{
false};
25 std::atomic<int> mExitCode{0};
27 std::mutex mOutputMutex;
29 bool mOutputDirty{
false};
32 bool mRunAfterBuild{
false};
33 bool mRunOnDevice{
false};
34 bool mOpenDirectoryOnFinish{
true};
36 std::string mOutputPath;
41 void* mProcessHandle{
nullptr};
78 bool IsOpen()
const {
return mIsOpen; }
90 void BuildAndRunWithProfile(
Platform platform,
bool embedded,
bool runOnDevice =
false);
96 void DrawProfileList();
101 void DrawProfileSettings();
106 void DrawBuildButtons();
111 void DrawDockerWarningPopup();
116 void Draw3dsLinkWarningPopup();
121 void DrawWiiloadWarningPopup();
126 void DrawBuildOutputModal();
129 std::string BuildAllOutputLinesText()
const;
132 std::string BuildSelectedOutputLinesText()
const;
137 void OpenLauncherSettings();
155 void CancelBuildAll();
162 void TickBuildAllQueue();
168 bool IsAnyBuildInProgress()
const;
173 void OnBuildAndRun();
178 void OnBuildAndRunOnDevice();
185 void ExecuteBuild(
bool runAfterBuild,
bool runOnDevice =
false);
193 void ExecuteDockerBuild(
const BuildProfile& profile,
bool runAfterBuild,
bool runOnDevice =
false);
201 void StartAsyncDockerBuild(
const BuildProfile& profile,
bool runAfterBuild,
bool runOnDevice);
206 void DockerBuildThreadFunc();
211 void CancelDockerBuild();
216 void FinalizeBuild();
224 void ExecuteLocalBuild(
const BuildProfile& profile,
bool runAfterBuild,
bool runOnDevice =
false);
231 void LaunchEmulator(
const BuildProfile& profile,
const std::string& outputPath);
237 void Launch3dsLink(
const std::string& outputPath);
243 void LaunchWiiload(
const std::string& outputPath);
249 bool CheckDockerAvailable();
256 std::string BuildDockerCommand(
const BuildProfile& profile);
263 std::string GetOutputDirectory(
const BuildProfile& profile);
266 bool mIsOpen =
false;
269 bool mShowDockerWarning =
false;
272 bool mShow3dsLinkWarning =
false;
275 bool mShowWiiloadWarning =
false;
278 bool mBuildInProgress =
false;
281 std::string mPendingOutputPath;
284 char mNameBuffer[256] = {};
287 char mOutputDirBuffer[512] = {};
290 bool mShowBuildModal =
false;
293 DockerBuildState mBuildState;
296 std::string mDisplayOutput;
299 std::set<int> mSelectedLineIndices;
302 int mSelectionAnchor = -1;
305 int mSelectionLineCount = 0;
308 bool mAutoScroll =
true;
311 bool mAutoCloseOnFinish =
false;
314 bool mForceRebuild =
false;
317 bool mBuildAllRunning =
false;
320 int32_t mBuildAllIndex = -1;
323 int32_t mBuildAllFailedIndex = -1;
326 bool mBuildAllLastWasDocker =
false;
329 std::string mBuildAllFailedName;
341 bool mBuildAllSavedForceRebuild =
false;
348PackagingWindow* GetPackagingWindow();
Platform
Definition EngineTypes.h:31