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 absl::Status SaveRom(Rom* rom);
35 absl::Status SaveRomAs(Rom* rom, const std::string& filename);
36 absl::Status OpenRomOrProject(Rom* rom, const std::string& filename);
37 absl::Status CreateBackup(Rom* rom);
38 absl::Status ValidateRom(Rom* rom);
39
40 void SetBackupFolder(const std::string& folder) { backup_folder_ = folder; }
41 void SetBackupBeforeSave(bool enabled) { backup_before_save_ = enabled; }
43 void SetBackupKeepDaily(bool enabled) { backup_keep_daily_ = enabled; }
45
46 struct BackupEntry {
47 std::string path;
48 std::string filename;
49 std::time_t timestamp = 0;
50 uintmax_t size_bytes = 0;
51 };
52
53 std::vector<BackupEntry> ListBackups(
54 const std::string& rom_filename) const;
55 absl::Status PruneBackups(const std::string& rom_filename) const;
56
57 // Utility helpers
58 bool IsRomLoaded(Rom* rom) const;
59 std::string GetRomFilename(Rom* rom) const;
60
61 private:
63
64 absl::Status LoadRomFromFile(Rom* rom, const std::string& filename);
65 std::string GenerateBackupFilename(
66 const std::string& original_filename) const;
67 std::filesystem::path GetBackupDirectory(
68 const std::string& original_filename) const;
69 bool IsValidRomFile(const std::string& filename) const;
70
72 std::string backup_folder_;
74 bool backup_keep_daily_ = true;
76};
77
78} // namespace editor
79} // namespace yaze
80
81#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:28
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)
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)
absl::Status SaveRom(Rom *rom)
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