Skip to content

Commit eec0ef7

Browse files
adamgerhantKeavon
andauthored
Polish user-created subgraph nodes: imports in the Properties panel; reorder/delete/rename imports/exports (#2105)
* Remove imports/exports * WIP: Autogenerated properties * WIP: Input based properties * WIP: Hashmap based input overrides * Migrate noise pattern node to input properties * Reorder exports * Continue migrating properties * WIP: Improve reorder exports * Automatically populate all input properties for sub networks * Complete reorder import and export * Add widget override to node macro * Migrate assign colors to input based properties * WIP: Full node property override * Node based properties override for proto nodes * Migrate all node properties to be input based * Rename imports/exports * improve UI * Protonode input valid implementations * Valid type list * Small formatting fixes * Polishing small issues * Document upgrade * fix tests * Upgrade noise pattern node * remove console log * Fix upgrade script for Noise Pattern * Improve the Properties panel representation for graphical data * Re-export demo art * Code review * code review improvements * Cleanup for node properties overrides * Reexport demo art * Fix clippy lints --------- Co-authored-by: Keavon Chambers <[email protected]>
1 parent ad68b1e commit eec0ef7

38 files changed

+3681
-2027
lines changed

Cargo.lock

Lines changed: 172 additions & 178 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/changing-seasons.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/isometric-fountain.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/marbled-mandelbrot.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/painted-dreams.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/procedural-string-lights.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/red-dress.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/valley-of-spires.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

editor/src/messages/frontend/frontend_message.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,14 @@ pub enum FrontendMessage {
146146
UpdateGraphViewOverlay {
147147
open: bool,
148148
},
149+
UpdateImportReorderIndex {
150+
#[serde(rename = "importIndex")]
151+
index: Option<usize>,
152+
},
153+
UpdateExportReorderIndex {
154+
#[serde(rename = "exportIndex")]
155+
index: Option<usize>,
156+
},
149157
UpdateLayerWidths {
150158
#[serde(rename = "layerWidths")]
151159
layer_widths: HashMap<NodeId, u32>,

editor/src/messages/portfolio/document/document_message_handler.rs

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
194194
}
195195
DocumentMessage::PropertiesPanel(message) => {
196196
let properties_panel_message_handler_data = PropertiesPanelMessageHandlerData {
197-
network_interface: &self.network_interface,
197+
network_interface: &mut self.network_interface,
198198
selection_network_path: &self.selection_network_path,
199199
document_name: self.name.as_str(),
200200
executor,
@@ -391,6 +391,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
391391
self.selection_network_path.clone_from(&self.breadcrumb_network_path);
392392
responses.add(NodeGraphMessage::SendGraph);
393393
responses.add(DocumentMessage::ZoomCanvasToFitAll);
394+
responses.add(NodeGraphMessage::SetGridAlignedEdges);
394395
}
395396
DocumentMessage::Escape => {
396397
if self.node_graph_handler.drag_start.is_some() {
@@ -1007,7 +1008,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
10071008
}
10081009
responses.add(PropertiesPanelMessage::Refresh);
10091010
responses.add(NodeGraphMessage::UpdateLayerPanel);
1010-
responses.add(NodeGraphMessage::UpdateInSelectedNetwork)
1011+
responses.add(NodeGraphMessage::UpdateInSelectedNetwork);
10111012
}
10121013
DocumentMessage::SetBlendModeForSelectedLayers { blend_mode } => {
10131014
for layer in self.network_interface.selected_nodes(&[]).unwrap().selected_layers_except_artboards(&self.network_interface) {
@@ -1018,6 +1019,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
10181019
self.graph_fade_artwork_percentage = percentage;
10191020
responses.add(FrontendMessage::UpdateGraphFadeArtwork { percentage });
10201021
}
1022+
10211023
DocumentMessage::SetNodePinned { node_id, pinned } => {
10221024
responses.add(DocumentMessage::StartTransaction);
10231025
responses.add(NodeGraphMessage::SetPinned { node_id, pinned });
@@ -1224,21 +1226,13 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
12241226
.navigation_handler
12251227
.calculate_offset_transform(ipp.viewport_bounds.center(), &network_metadata.persistent_metadata.navigation_metadata.node_graph_ptz);
12261228
self.network_interface.set_transform(transform, &self.breadcrumb_network_path);
1227-
let imports = self.network_interface.frontend_imports(&self.breadcrumb_network_path).unwrap_or_default();
1228-
let exports = self.network_interface.frontend_exports(&self.breadcrumb_network_path).unwrap_or_default();
1229-
let add_import = self.network_interface.frontend_import_modify(&self.breadcrumb_network_path);
1230-
let add_export = self.network_interface.frontend_export_modify(&self.breadcrumb_network_path);
12311229

12321230
responses.add(DocumentMessage::RenderRulers);
12331231
responses.add(DocumentMessage::RenderScrollbars);
12341232
responses.add(NodeGraphMessage::UpdateEdges);
12351233
responses.add(NodeGraphMessage::UpdateBoxSelection);
1236-
responses.add(FrontendMessage::UpdateImportsExports {
1237-
imports,
1238-
exports,
1239-
add_import,
1240-
add_export,
1241-
});
1234+
responses.add(NodeGraphMessage::UpdateImportsExports);
1235+
12421236
responses.add(FrontendMessage::UpdateNodeGraphTransform {
12431237
transform: Transform {
12441238
scale: transform.matrix2.x_axis.x,
@@ -1465,26 +1459,22 @@ impl DocumentMessageHandler {
14651459
}
14661460

14671461
pub fn deserialize_document(serialized_content: &str) -> Result<Self, EditorError> {
1468-
let document_message_handler = serde_json::from_str::<OldDocumentMessageHandler>(serialized_content)
1469-
.map_or_else(
1470-
|_| serde_json::from_str::<DocumentMessageHandler>(serialized_content),
1471-
|old_message_handler| {
1472-
let default_document_message_handler = DocumentMessageHandler {
1473-
network_interface: NodeNetworkInterface::from_old_network(old_message_handler.network),
1474-
collapsed: old_message_handler.collapsed,
1475-
commit_hash: old_message_handler.commit_hash,
1476-
document_ptz: old_message_handler.document_ptz,
1477-
document_mode: old_message_handler.document_mode,
1478-
view_mode: old_message_handler.view_mode,
1479-
overlays_visible: old_message_handler.overlays_visible,
1480-
rulers_visible: old_message_handler.rulers_visible,
1481-
graph_view_overlay_open: old_message_handler.graph_view_overlay_open,
1482-
snapping_state: old_message_handler.snapping_state,
1483-
..Default::default()
1484-
};
1485-
Ok(default_document_message_handler)
1486-
},
1487-
)
1462+
let document_message_handler = serde_json::from_str::<DocumentMessageHandler>(serialized_content)
1463+
.or_else(|_| {
1464+
serde_json::from_str::<OldDocumentMessageHandler>(serialized_content).map(|old_message_handler| DocumentMessageHandler {
1465+
network_interface: NodeNetworkInterface::from_old_network(old_message_handler.network),
1466+
collapsed: old_message_handler.collapsed,
1467+
commit_hash: old_message_handler.commit_hash,
1468+
document_ptz: old_message_handler.document_ptz,
1469+
document_mode: old_message_handler.document_mode,
1470+
view_mode: old_message_handler.view_mode,
1471+
overlays_visible: old_message_handler.overlays_visible,
1472+
rulers_visible: old_message_handler.rulers_visible,
1473+
graph_view_overlay_open: old_message_handler.graph_view_overlay_open,
1474+
snapping_state: old_message_handler.snapping_state,
1475+
..Default::default()
1476+
})
1477+
})
14881478
.map_err(|e| EditorError::DocumentDeserialization(e.to_string()))?;
14891479
Ok(document_message_handler)
14901480
}
@@ -2089,7 +2079,7 @@ impl DocumentMessageHandler {
20892079
/// Create a network interface with a single export
20902080
fn default_document_network_interface() -> NodeNetworkInterface {
20912081
let mut network_interface = NodeNetworkInterface::default();
2092-
network_interface.add_export(TaggedValue::ArtboardGroup(graphene_core::ArtboardGroup::EMPTY), -1, "".to_string(), &[]);
2082+
network_interface.add_export(TaggedValue::ArtboardGroup(graphene_core::ArtboardGroup::EMPTY), -1, "", &[]);
20932083
network_interface
20942084
}
20952085

0 commit comments

Comments
 (0)