yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
rom_file_manager.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_SYSTEM_ROM_FILE_MANAGER_H_
2#define YAZE_APP_EDITOR_SYSTEM_ROM_FILE_MANAGER_H_
3
4#include <ctime>
5#include <filesystem>
6#include <string>
7#include <vector>
8
9#include "absl/status/status.h"
10#include "rom/rom.h"
11
12namespace yaze {
13namespace editor {
14
15class ToastManager;
16
28 public:
29 explicit RomFileManager(ToastManager* toast_manager);
30 ~RomFileManager() = default;
31
32 // ROM file operations
33 absl::Status LoadRom(Rom* rom, const std::string& filename);
34 // A non-empty `collision_source` also keeps that custom_collision.json in
35 // step with the saved ROM (see SaveRomWithCollisionSource).
36 absl::Status SaveRom(Rom* rom,
37 const std::filesystem::path& collision_source = {});
38 absl::Status SaveRomAs(Rom* rom, const std::string& filename);
39 absl::Status OpenRomOrProject(Rom* rom, const std::string& filename);
40 absl::Status CreateBackup(Rom* rom);
41 absl::Status ValidateRom(Rom* rom);
42
43 void SetBackupFolder(const std::string& folder) { backup_folder_ = folder; }
44 void SetBackupBeforeSave(bool enabled) { backup_before_save_ = enabled; }
46 void SetBackupKeepDaily(bool enabled) { backup_keep_daily_ = enabled; }
48
49 struct BackupEntry {
50 std::string path;
51 std::string filename;
52 std::time_t timestamp = 0;
53 uintmax_t size_bytes = 0;
54 };
55
56 std::vector<BackupEntry> ListBackups(const std::string& rom_filename) const;
57 absl::Status PruneBackups(const std::string& rom_filename) const;
58
59 // Utility helpers
60 bool IsRomLoaded(Rom* rom) const;
61 std::string GetRomFilename(Rom* rom) const;
62
63 private:
65
66 absl::Status LoadRomFromFile(Rom* rom, const std::string& filename);
67 std::string GenerateBackupFilename(
68 const std::string& original_filename) const;
69 std::filesystem::path GetBackupDirectory(
70 const std::string& original_filename) const;
71 bool IsValidRomFile(const std::string& filename) const;
72
74 std::string backup_folder_;
76 bool backup_keep_daily_ = true;
78};
79
80} // namespace editor
81} // namespace yaze
82
83#endif // YAZE_APP_EDITOR_SYSTEM_ROM_FILE_MANAGER_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:49
Handles all ROM file I/O operations.
std::string GenerateBackupFilename(const std::string &original_filename) const
void SetBackupRetentionCount(int count)
absl::Status PruneBackups(const std::string &rom_filename) const
absl::Status OpenRomOrProject(Rom *rom, const std::string &filename)
absl::Status SaveRom(Rom *rom, const std::filesystem::path &collision_source={})
std::vector< BackupEntry > ListBackups(const std::string &rom_filename) const
absl::Status ValidateRom(Rom *rom)
RomFileManager(ToastManager *toast_manager)
std::string GetRomFilename(Rom *rom) const
void SetBackupBeforeSave(bool enabled)
void SetBackupFolder(const std::string &folder)
absl::Status CreateBackup(Rom *rom)
absl::Status LoadRom(Rom *rom, const std::string &filename)
void SetBackupKeepDaily(bool enabled)
absl::Status LoadRomFromFile(Rom *rom, const std::string &filename)
bool IsValidRomFile(const std::string &filename) const
absl::Status SaveRomAs(Rom *rom, const std::string &filename)
bool IsRomLoaded(Rom *rom) const
std::filesystem::path GetBackupDirectory(const std::string &original_filename) const