Files
multi_render_blender/src/main/ConfigManager.js
sorlinv b556cce88c v1
2026-02-20 19:27:27 +01:00

67 lines
2.2 KiB
JavaScript

const fs = require("fs");
const { dialog } = require("electron");
const ConfigManager = {
save: (obj_window, obj_config) => {
return dialog.showSaveDialog(obj_window, {
title: "Sauvegarder la configuration",
defaultPath: "render_config.json",
filters: [
{ name: "Configuration JSON", extensions: ["json"] },
],
})
.then((obj_result) => {
if (obj_result.canceled || !obj_result.filePath) {
return { is_success: false };
}
let str_json = JSON.stringify(obj_config, null, 4);
return new Promise((resolve, reject) => {
fs.writeFile(obj_result.filePath, str_json, "utf8", (obj_err) => {
if (obj_err) {
reject(new Error("Impossible de sauvegarder : " + obj_err.message));
return;
}
resolve({ is_success: true, str_path: obj_result.filePath });
});
});
});
},
load: (obj_window) => {
return dialog.showOpenDialog(obj_window, {
title: "Charger une configuration",
filters: [
{ name: "Configuration JSON", extensions: ["json"] },
],
properties: ["openFile"],
})
.then((obj_result) => {
if (obj_result.canceled || obj_result.filePaths.length === 0) {
return null;
}
let str_file_path = obj_result.filePaths[0];
return new Promise((resolve, reject) => {
fs.readFile(str_file_path, "utf8", (obj_err, str_data) => {
if (obj_err) {
reject(new Error("Impossible de lire : " + obj_err.message));
return;
}
try {
let obj_config = JSON.parse(str_data);
resolve(obj_config);
} catch (obj_parse_err) {
reject(new Error("Fichier corrompu : " + obj_parse_err.message));
}
});
});
});
},
};
module.exports = ConfigManager;