Skip to content

Commit d98f19b

Browse files
authored
Add artboard name to the export when exporting a single artboard (#3613)
* add artboard name to the export * change file name to {docname}-{artboard} for more than 1 arboard * add switch statement instead of if else
1 parent 1b91198 commit d98f19b

File tree

5 files changed

+30
-8
lines changed

5 files changed

+30
-8
lines changed

editor/src/messages/dialog/export_dialog/export_dialog_message_handler.rs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,21 @@ impl MessageHandler<ExportDialogMessage, ExportDialogMessageContext<'_>> for Exp
4343
ExportDialogMessage::TransparentBackground { transparent } => self.transparent_background = transparent,
4444
ExportDialogMessage::ExportBounds { bounds } => self.bounds = bounds,
4545

46-
ExportDialogMessage::Submit => responses.add_front(PortfolioMessage::SubmitDocumentExport {
47-
name: portfolio.active_document().map(|document| document.name.clone()).unwrap_or_default(),
48-
file_type: self.file_type,
49-
scale_factor: self.scale_factor,
50-
bounds: self.bounds,
51-
transparent_background: self.file_type != FileType::Jpg && self.transparent_background,
52-
}),
46+
ExportDialogMessage::Submit => {
47+
let artboard_name = match self.bounds {
48+
ExportBounds::Artboard(layer) => self.artboards.get(&layer).cloned(),
49+
_ => None,
50+
};
51+
responses.add_front(PortfolioMessage::SubmitDocumentExport {
52+
name: portfolio.active_document().map(|document| document.name.clone()).unwrap_or_default(),
53+
file_type: self.file_type,
54+
scale_factor: self.scale_factor,
55+
bounds: self.bounds,
56+
transparent_background: self.file_type != FileType::Jpg && self.transparent_background,
57+
artboard_name,
58+
artboard_count: self.artboards.len(),
59+
})
60+
}
5361
}
5462

5563
self.send_dialog_to_frontend(responses);

editor/src/messages/portfolio/portfolio_message.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ pub enum PortfolioMessage {
124124
scale_factor: f64,
125125
bounds: ExportBounds,
126126
transparent_background: bool,
127+
artboard_name: Option<String>,
128+
artboard_count: usize,
127129
},
128130
SubmitActiveGraphRender,
129131
SubmitGraphRender {

editor/src/messages/portfolio/portfolio_message_handler.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1036,6 +1036,8 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
10361036
scale_factor,
10371037
bounds,
10381038
transparent_background,
1039+
artboard_name,
1040+
artboard_count,
10391041
} => {
10401042
let document = self.active_document_id.and_then(|id| self.documents.get_mut(&id)).expect("Tried to render non-existent document");
10411043
let export_config = ExportConfig {
@@ -1044,6 +1046,8 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
10441046
scale_factor,
10451047
bounds,
10461048
transparent_background,
1049+
artboard_name,
1050+
artboard_count,
10471051
..Default::default()
10481052
};
10491053
let result = self.executor.submit_document_export(document, self.active_document_id.unwrap(), export_config);

editor/src/node_graph_executor.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,8 @@ impl NodeGraphExecutor {
242242
scale_factor,
243243
#[cfg(feature = "gpu")]
244244
transparent_background,
245+
artboard_name,
246+
artboard_count,
245247
..
246248
} = export_config;
247249

@@ -250,7 +252,11 @@ impl NodeGraphExecutor {
250252
FileType::Png => "png",
251253
FileType::Jpg => "jpg",
252254
};
253-
let name = format!("{name}.{file_extension}");
255+
let base_name = match (artboard_name, artboard_count) {
256+
(Some(artboard_name), count) if count > 1 => format!("{name} - {artboard_name}"),
257+
_ => name,
258+
};
259+
let name = format!("{base_name}.{file_extension}");
254260

255261
match node_graph_output {
256262
TaggedValue::RenderOutput(RenderOutput {

editor/src/node_graph_executor/runtime.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ pub struct ExportConfig {
8585
pub bounds: ExportBounds,
8686
pub transparent_background: bool,
8787
pub size: DVec2,
88+
pub artboard_name: Option<String>,
89+
pub artboard_count: usize,
8890
}
8991

9092
#[derive(Clone)]

0 commit comments

Comments
 (0)