yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
project_management_panel.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_SHELL_WINDOWS_PROJECT_MANAGEMENT_PANEL_H_
2#define YAZE_APP_EDITOR_SHELL_WINDOWS_PROJECT_MANAGEMENT_PANEL_H_
3
4#include <array>
5#include <functional>
6#include <string>
7#include <vector>
8
9#include "absl/status/status.h"
11#include "core/project.h"
13
14namespace yaze {
15
16class Rom;
17
18namespace editor {
19
20class ToastManager;
21
33 public:
35
36 // Dependencies
37 void SetProject(project::YazeProject* project, bool dirty = false);
39 version_manager_ = manager;
40 }
41 void SetRom(Rom* rom) { rom_ = rom; }
42 void SetToastManager(ToastManager* manager) { toast_manager_ = manager; }
43
44 // Callbacks for actions that need EditorManager
45 using SwapRomCallback = std::function<void()>;
46 using ReloadRomCallback = std::function<void()>;
47 using SaveProjectCallback = std::function<absl::Status()>;
48 using BuildProjectCallback = std::function<void()>;
49 using CancelBuildCallback = std::function<void()>;
50 using RunProjectCallback = std::function<void()>;
51 using BrowseFolderCallback = std::function<void(const std::string& type)>;
52
71 build_status_ = status;
72 }
73 void SetRunStatus(const ProjectWorkflowStatus& status) {
74 run_status_ = status;
75 }
76 void SetBuildLogOutput(const std::string& output) {
77 build_log_output_ = output;
78 }
79
80 bool IsProjectDirty() const { return project_dirty_; }
81 void SetProjectDirty(bool dirty) { project_dirty_ = dirty; }
82 absl::Status SaveProjectEdits();
83
84 // Main draw entry point
85 void Draw();
86
87 private:
90 void DrawRomManagement();
91 void DrawVersionControl();
93 void DrawQuickActions();
95
98 Rom* rom_ = nullptr;
100
101 // Callbacks
109
110 // Snapshot creation UI state
111 char snapshot_message_[256] = {};
113
114 // History cache
115 std::vector<std::string> history_cache_;
116 bool history_dirty_ = true;
117
118 // Project edit state
119 bool project_dirty_ = false;
120 std::array<char, 256> name_buffer_{};
121 std::array<char, 256> author_buffer_{};
122 std::array<char, 1024> description_buffer_{};
123 std::array<char, 512> code_buffer_{};
124 std::array<char, 512> assets_buffer_{};
125 std::array<char, 256> build_buffer_{};
126 std::array<char, 512> script_buffer_{};
127
130 std::string build_log_output_;
131};
132
133} // namespace editor
134} // namespace yaze
135
136#endif // YAZE_APP_EDITOR_SHELL_WINDOWS_PROJECT_MANAGEMENT_PANEL_H_
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:28
Manages project versioning (Git) and ROM artifact snapshots.
Panel for managing project settings, ROM versions, and snapshots.
std::function< absl::Status()> SaveProjectCallback
void SetVersionManager(core::VersionManager *manager)
void SetRunProjectCallback(RunProjectCallback cb)
void SetBuildStatus(const ProjectWorkflowStatus &status)
void SetProject(project::YazeProject *project, bool dirty=false)
void SetBrowseFolderCallback(BrowseFolderCallback cb)
void SetSaveProjectCallback(SaveProjectCallback cb)
void SetBuildProjectCallback(BuildProjectCallback cb)
std::function< void(const std::string &type)> BrowseFolderCallback
void SetBuildLogOutput(const std::string &output)
void SetRunStatus(const ProjectWorkflowStatus &status)
void SetCancelBuildCallback(CancelBuildCallback cb)
void SetReloadRomCallback(ReloadRomCallback cb)
Modern project structure with comprehensive settings consolidation.
Definition project.h:172