-
Notifications
You must be signed in to change notification settings - Fork 11
/
UIButton.cs
118 lines (92 loc) · 3.04 KB
/
UIButton.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using Dynamo.Controls;
using Dynamo.Graph.Nodes;
using ProtoCore.AST.AssociativeAST;
using Autodesk.DesignScript.Runtime;
using Dynamo.Wpf;
using NodeModelsEssentials.Functions;
using NodeModelsEssentials.Controls;
using Dynamo.UI.Commands;
using Microsoft.Practices.Prism.Commands;
using Newtonsoft.Json;
using DelegateCommand = Dynamo.UI.Commands.DelegateCommand;
namespace NodeModelsEssentials
{
[NodeName("UI.Button")]
[NodeDescription("A sample Node Model with custom UI.")]
[NodeCategory("NodeModelsEssentials")]
[OutPortNames("Result")]
[OutPortTypes("double")]
[OutPortDescriptions("Current value of internal number property.")]
[IsDesignScriptCompatible]
public class CustomUINodeModelButton : NodeModel
{
#region commands
public DelegateCommand MyCommand { get; set; }
#endregion
#region private members
private double number;
#endregion
#region properties
public double Number
{
get { return number; }
set
{
number = value;
number = Math.Round(value, 2);
RaisePropertyChanged("Number");
OnNodeModified();
}
}
#endregion
#region constructor
[JsonConstructor]
private CustomUINodeModelButton(IEnumerable<PortModel> inPorts, IEnumerable<PortModel> outPorts) : base(inPorts, outPorts)
{
}
public CustomUINodeModelButton()
{
RegisterAllPorts();
MyCommand = new DelegateCommand(SayHello);
number = 0.0;
}
#endregion
#region public methods
private static void SayHello(object obj)
{
MessageBox.Show("Hello Dynamo!");
}
[IsVisibleInDynamoLibrary(false)]
public override IEnumerable<AssociativeNode> BuildOutputAst(List<AssociativeNode> inputAsNodes)
{
var doubleNode = AstFactory.BuildDoubleNode(number);
//var funcNode = AstFactory.BuildFunctionCall(
// new Func<double, double, double>(NodeModelsEssentialsFunctions.Multiply),
// new List<AssociativeNode>() { doubleNode, doubleNode }
// );
return new[]
{
AstFactory.BuildAssignment(
GetAstIdentifierForOutputIndex(0), doubleNode)
};
}
#endregion
}
/// <summary>
/// View customizer for CustomUINodeModel Node Model.
/// </summary>
public class CustomUINodeModelViewCustomization : INodeViewCustomization<CustomUINodeModelButton>
{
public void CustomizeView(CustomUINodeModelButton model, NodeView nodeView)
{
var myWpfView = new MyWpfView();
nodeView.inputGrid.Children.Add(myWpfView);
myWpfView.DataContext = model;
}
public void Dispose() { }
}
}