1#ifndef YAZE_CORE_PROJECT_H
2#define YAZE_CORE_PROJECT_H
7#include <unordered_map>
10#include "absl/status/status.h"
11#include "absl/status/statusor.h"
12#include "absl/strings/string_view.h"
39 std::vector<std::string>
tags;
107 std::unordered_map<std::string, std::unordered_map<std::string, std::string>>
172 absl::Status
Create(
const std::string& project_name,
173 const std::string& base_path);
174 absl::Status
Open(
const std::string& project_path);
176 absl::Status
SaveAs(
const std::string& new_path);
187 const std::unordered_map<std::string,
188 std::unordered_map<std::string, std::string>>&
190 std::string
GetLabel(
const std::string& resource_type,
int id,
191 const std::string& default_value =
"")
const;
234#ifdef YAZE_ENABLE_JSON_PROJECT_FORMAT
235 absl::Status LoadFromJsonFormat(
const std::string& project_path);
236 absl::Status SaveToJsonFormat();
259 const std::string& template_name,
const std::string& project_name,
260 const std::string& base_path);
264 const std::string& directory);
270 const std::string& target_path,
284 void EditLabel(
const std::string& type,
const std::string& key,
285 const std::string& newValue);
287 const std::string& key,
288 const std::string& defaultValue);
289 std::string
GetLabel(
const std::string& type,
const std::string& key);
290 std::string
CreateOrGetLabel(
const std::string& type,
const std::string& key,
291 const std::string& defaultValue);
300 std::unordered_map<std::string, std::unordered_map<std::string, std::string>>
Enhanced project management with templates and validation.
static std::vector< std::string > FindProjectsInDirectory(const std::string &directory)
static absl::Status ValidateProjectStructure(const YazeProject &project)
static absl::StatusOr< YazeProject > CreateFromTemplate(const std::string &template_name, const std::string &project_name, const std::string &base_path)
static std::vector< std::string > GetRecommendedFixesForProject(const YazeProject &project)
static std::vector< ProjectTemplate > GetProjectTemplates()
static absl::Status RestoreProject(const std::string &backup_path)
static absl::Status ConvertProject(const std::string &source_path, const std::string &target_path, ProjectFormat target_format)
static absl::Status BackupProject(const YazeProject &project)
void RemoveFile(const std::string &file_path)
std::string GetFilePath() const
void AddFile(const std::string &file_path)
static RecentFilesManager & GetInstance()
const std::vector< std::string > & GetRecentFiles() const
RecentFilesManager(const RecentFilesManager &)=delete
std::vector< std::string > recent_files_
RecentFilesManager & operator=(const RecentFilesManager &)=delete
const std::string kRecentFilesFilename
ProjectFormat
Supported project file formats.
YazeProject template_project
std::string display_description
std::string CreateOrGetLabel(const std::string &type, const std::string &key, const std::string &defaultValue)
void DisplayLabels(bool *p_open)
std::string GetLabel(const std::string &type, const std::string &key)
void EditLabel(const std::string &type, const std::string &key, const std::string &newValue)
bool LoadLabels(const std::string &filename)
void SelectableLabelWithNameEdit(bool selected, const std::string &type, const std::string &key, const std::string &defaultValue)
std::unordered_map< std::string, std::unordered_map< std::string, std::string > > labels_
Consolidated workspace and UI settings.
std::string last_layout_preset
std::map< std::string, std::string > custom_keybindings
std::string window_layout_data
std::vector< std::string > saved_layouts
std::map< std::string, bool > editor_visibility
float autosave_interval_secs
std::vector< std::string > recent_files
std::string custom_system_prompt
std::string gemini_api_key
bool enable_tool_emulator
std::vector< std::string > favorite_models
bool enable_tool_resources
bool enable_tool_messages
std::vector< std::string > model_chain
std::string builder_blueprint_path
bool enable_tool_dialogue
bool enable_tool_overworld
std::string last_saved_at
bool persist_custom_music
Modern project structure with comprehensive settings consolidation.
std::string rom_backup_folder
absl::Status ResetToDefaults()
std::string custom_objects_folder
absl::Status RepairProject()
std::string MakeStorageKey(absl::string_view suffix) const
struct yaze::project::YazeProject::MusicPersistence music_persistence
bool project_opened() const
absl::StatusOr< std::string > SerializeToString() const
std::string zscream_project_file
absl::Status ExportForZScream(const std::string &target_path)
absl::Status ImportZScreamProject(const std::string &zscream_project_path)
absl::Status SaveAllSettings()
absl::Status ImportLabelsFromZScreamContent(const std::string &content)
Import labels from ZScream format content directly.
std::string git_repository
void InitializeResourceLabelProvider()
Initialize the global ResourceLabelProvider with this project's labels.
absl::Status ParseFromString(const std::string &content)
std::vector< std::string > additional_roms
std::string patches_folder
absl::Status LoadFromYazeFormat(const std::string &project_path)
std::unordered_map< std::string, std::unordered_map< std::string, std::string > > resource_labels
std::string GenerateProjectId() const
absl::Status Create(const std::string &project_name, const std::string &base_path)
std::string assets_folder
absl::Status SaveToYazeFormat()
absl::Status LoadAllSettings()
std::string labels_filename
std::vector< std::string > asm_sources
std::string GetDisplayName() const
std::vector< std::string > GetMissingFiles() const
WorkspaceSettings workspace_settings
std::string output_folder
std::string asm_entry_point
std::string GetRelativePath(const std::string &absolute_path) const
absl::Status InitializeEmbeddedLabels(const std::unordered_map< std::string, std::unordered_map< std::string, std::string > > &labels)
absl::Status SaveAs(const std::string &new_path)
struct yaze::project::YazeProject::AgentSettings agent_settings
absl::Status ImportFromZScreamFormat(const std::string &project_path)
void InitializeDefaults()
std::string GetAbsolutePath(const std::string &relative_path) const
std::string GetLabel(const std::string &resource_type, int id, const std::string &default_value="") const
absl::Status Open(const std::string &project_path)
absl::Status ImportLabelsFromZScream(const std::string &filepath)
Import labels from a ZScream DefaultNames.txt file.
std::string last_build_hash
std::map< std::string, std::string > zscream_mappings
absl::Status Validate() const
core::FeatureFlags::Flags feature_flags
std::vector< std::string > build_configurations
std::string symbols_filename