Merge pull request #46 from setzer22/feature/user_state_in_build_node

Add `UserState` to `build_node`
This commit is contained in:
setzer22 2022-06-29 15:33:33 +02:00 committed by GitHub
commit 54ae2dc45f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 3 deletions

View File

@ -68,8 +68,12 @@ where
>,
UserResponse: UserResponseTrait,
ValueType: WidgetValueTrait<Response = UserResponse>,
NodeTemplate:
NodeTemplateTrait<NodeData = NodeData, DataType = DataType, ValueType = ValueType>,
NodeTemplate: NodeTemplateTrait<
NodeData = NodeData,
DataType = DataType,
ValueType = ValueType,
UserState = UserState,
>,
DataType: DataTypeTrait<UserState>,
{
#[must_use]
@ -142,7 +146,7 @@ where
let new_node = self.graph.add_node(
node_kind.node_graph_label(),
node_kind.user_data(),
|graph, node_id| node_kind.build_node(graph, node_id),
|graph, node_id| node_kind.build_node(graph, &self.user_state, node_id),
);
self.node_positions.insert(
new_node,

View File

@ -108,6 +108,8 @@ pub trait NodeTemplateTrait: Clone {
type DataType;
/// Must be set to the custom user `ValueType` type
type ValueType;
/// Must be set to the custom user `UserState` type
type UserState;
/// Returns a descriptive name for the node kind, used in the node finder.
fn node_finder_label(&self) -> &str;
@ -124,6 +126,7 @@ pub trait NodeTemplateTrait: Clone {
fn build_node(
&self,
graph: &mut Graph<Self::NodeData, Self::DataType, Self::ValueType>,
user_state: &Self::UserState,
node_id: NodeId,
);
}

View File

@ -111,6 +111,7 @@ impl NodeTemplateTrait for MyNodeTemplate {
type NodeData = MyNodeData;
type DataType = MyDataType;
type ValueType = MyValueType;
type UserState = MyGraphState;
fn node_finder_label(&self) -> &str {
match self {
@ -137,6 +138,7 @@ impl NodeTemplateTrait for MyNodeTemplate {
fn build_node(
&self,
graph: &mut Graph<Self::NodeData, Self::DataType, Self::ValueType>,
_user_state: &Self::UserState,
node_id: NodeId,
) {
// The nodes are created empty by default. This function needs to take