mirror of https://github.com/Leinnan/rpack.git
Save json button
This commit is contained in:
parent
a33dd60392
commit
e697573f0c
|
|
@ -144,6 +144,46 @@ impl Application {
|
||||||
ctx.request_repaint();
|
ctx.request_repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn save_json(&self) -> Result<(), String> {
|
||||||
|
let Some(Ok(spritesheet)) = &self.data else {
|
||||||
|
return Err("Data is incorrect".to_owned());
|
||||||
|
};
|
||||||
|
let data = spritesheet.atlas_asset_json.to_string();
|
||||||
|
let filename = format!("{}.rpack.json", self.name);
|
||||||
|
#[cfg(not(target_arch = "wasm32"))]
|
||||||
|
{
|
||||||
|
let path_buf = rfd::FileDialog::new()
|
||||||
|
.set_directory(".")
|
||||||
|
.add_filter(".rpack.json", &["rpack.json"])
|
||||||
|
.set_file_name(filename)
|
||||||
|
.save_file();
|
||||||
|
if let Some(path) = path_buf {
|
||||||
|
let write_result = std::fs::write(path, &data);
|
||||||
|
if write_result.is_err() {
|
||||||
|
return Err(format!(
|
||||||
|
"Could not save json atlas, error: {:?}",
|
||||||
|
write_result.unwrap_err()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[cfg(target_arch = "wasm32")]
|
||||||
|
{
|
||||||
|
wasm_bindgen_futures::spawn_local(async move {
|
||||||
|
let Some(file) = rfd::AsyncFileDialog::new()
|
||||||
|
.set_directory(".")
|
||||||
|
.set_file_name(filename)
|
||||||
|
.save_file()
|
||||||
|
.await
|
||||||
|
else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
file.write(&data).await.unwrap();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
fn save_atlas(&self) -> Result<(), String> {
|
fn save_atlas(&self) -> Result<(), String> {
|
||||||
let Some(Ok(spritesheet)) = &self.data else {
|
let Some(Ok(spritesheet)) = &self.data else {
|
||||||
return Err("Data is incorrect".to_owned());
|
return Err("Data is incorrect".to_owned());
|
||||||
|
|
@ -359,42 +399,52 @@ impl eframe::App for Application {
|
||||||
data.atlas_asset.size[1]
|
data.atlas_asset.size[1]
|
||||||
));
|
));
|
||||||
ui.add_space(10.0);
|
ui.add_space(10.0);
|
||||||
ui.add_enabled_ui(self.data.is_some(), |ui| {
|
ui.horizontal_wrapped(|ui| {
|
||||||
|
let width = (ui.available_width() - 30.0).max(1.0) / 2.0;
|
||||||
|
ui.add_space(10.0);
|
||||||
if ui
|
if ui
|
||||||
.add_sized(
|
.add_sized([width, 35.0], egui::Button::new("Save atlas image"))
|
||||||
[TOP_BUTTON_WIDTH, 30.0],
|
|
||||||
egui::Button::new("Save atlas image"),
|
|
||||||
)
|
|
||||||
.clicked()
|
.clicked()
|
||||||
{
|
{
|
||||||
if let Err(error) = self.save_atlas() {
|
if let Err(error) = self.save_atlas() {
|
||||||
eprintln!("ERROR: {}", error);
|
eprintln!("ERROR: {}", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ui.add_space(10.0);
|
||||||
|
if ui
|
||||||
|
.add_sized([width, 35.0], egui::Button::new("Save atlas json"))
|
||||||
|
.clicked()
|
||||||
|
{
|
||||||
|
if let Err(error) = self.save_json() {
|
||||||
|
eprintln!("ERROR: {}", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ui.add_space(10.0);
|
||||||
});
|
});
|
||||||
ui.add_space(10.0);
|
ui.add_space(10.0);
|
||||||
CollapsingHeader::new("Atlas JSON")
|
CollapsingHeader::new("Atlas JSON")
|
||||||
.default_open(true)
|
.default_open(true)
|
||||||
.show(ui, |ui| {
|
.show(ui, |ui| {
|
||||||
ui.vertical_centered_justified(|ui| {
|
ui.vertical_centered_justified(|ui| {
|
||||||
if ui
|
|
||||||
.add(egui::Button::new("Copy JSON to Clipboard"))
|
|
||||||
.clicked()
|
|
||||||
{
|
|
||||||
let s = data.atlas_asset_json.to_string();
|
|
||||||
println!("JSON: {s}");
|
|
||||||
ui.output_mut(|o| {
|
|
||||||
o.copied_text = s;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
ui.add_space(10.0);
|
|
||||||
ui.label(RichText::new("Frames JSON").strong());
|
|
||||||
ui.add_space(10.0);
|
ui.add_space(10.0);
|
||||||
egui_json_tree::JsonTree::new(
|
egui_json_tree::JsonTree::new(
|
||||||
"simple-tree",
|
"simple-tree",
|
||||||
&data.atlas_asset_json,
|
&data.atlas_asset_json,
|
||||||
)
|
)
|
||||||
.show(ui);
|
.show(ui);
|
||||||
|
#[cfg(not(target_arch = "wasm32"))]
|
||||||
|
{
|
||||||
|
ui.add_space(10.0);
|
||||||
|
if ui
|
||||||
|
.add(egui::Button::new("Copy JSON to Clipboard"))
|
||||||
|
.clicked()
|
||||||
|
{
|
||||||
|
ui.output_mut(|o| {
|
||||||
|
o.copied_text =
|
||||||
|
data.atlas_asset_json.to_string();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
ui.add_space(10.0);
|
ui.add_space(10.0);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue