Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
project_saver.h
1// SPDX-FileCopyrightText: © 2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <filesystem>
7#include <string>
8
9#include "utils/types.h"
10#include "utils/utf8_string.h"
11#include "utils/version.h"
12
13#include <QByteArray>
14#include <QFuture>
15
16namespace zrythm::structure::project
17{
18class Project;
19class ProjectUiState;
20}
21
22namespace zrythm::undo
23{
24class UndoStack;
25}
26
27namespace zrythm::controllers
28{
29
36{
37public:
59 [[nodiscard]] static QFuture<QString> save (
60 const structure::project::Project &project,
62 const undo::UndoStack &undo_stack,
63 utils::Version app_version,
64 const fs::path &path,
65 bool is_backup);
66
74 static int autosave_cb (void * data);
75
82 static void make_project_dirs (const fs::path &project_directory);
83
96 bool compress,
97 char ** _dest,
98 size_t * _dest_size,
99 const QByteArray &src);
100
101 static void
102 compress (char ** _dest, size_t * _dest_size, const QByteArray &src)
103 {
104 compress_or_decompress (true, _dest, _dest_size, src);
105 }
106
107 static void
108 decompress (char ** _dest, size_t * _dest_size, const QByteArray &src)
109 {
110 compress_or_decompress (false, _dest, _dest_size, src);
111 }
112
120 static std::string
121 get_existing_uncompressed_text (const fs::path &project_dir);
122
123private:
130 static void set_and_create_next_available_backup_dir ();
131
139 static void cleanup_plugin_state_dirs (
140 const structure::project::Project &main_project,
141 const fs::path &project_dir,
142 bool is_backup);
143};
144
145}
Handles saving of Zrythm projects to disk.
static void compress_or_decompress(bool compress, char **_dest, size_t *_dest_size, const QByteArray &src)
Compresses or decompresses project data using zstd.
static QFuture< QString > save(const structure::project::Project &project, const structure::project::ProjectUiState &ui_state, const undo::UndoStack &undo_stack, utils::Version app_version, const fs::path &path, bool is_backup)
Saves the project asynchronously to the specified directory.
static std::string get_existing_uncompressed_text(const fs::path &project_dir)
Returns the uncompressed text representation of the saved project file.
static void make_project_dirs(const fs::path &project_directory)
Creates the project directories.
static int autosave_cb(void *data)
Autosave callback.
Serializable UI state for a project.
Core functionality of a Zrythm project.
Definition project.h:48
Represents a semantic version with major, minor, and optional patch.
Definition version.h:29