From 2d9236f4f0c816f42ae104211418554db9d3bdcd Mon Sep 17 00:00:00 2001 From: joreg Date: Thu, 9 Jan 2025 16:02:17 +0100 Subject: [PATCH] added code editors --- reference/extending/2025-01-09-15-55-23.png | Bin 0 -> 5718 bytes reference/extending/2025-01-09-15-56-53.png | Bin 0 -> 6082 bytes reference/extending/code-editors.md | 27 ++++++++++++++++++++ reference/extending/writing-nodes.md | 17 ++++++------ reference/toc.md | 1 + 5 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 reference/extending/2025-01-09-15-55-23.png create mode 100644 reference/extending/2025-01-09-15-56-53.png create mode 100644 reference/extending/code-editors.md diff --git a/reference/extending/2025-01-09-15-55-23.png b/reference/extending/2025-01-09-15-55-23.png new file mode 100644 index 0000000000000000000000000000000000000000..3a5a9149e16fe8521e1cc2148396cf6c69913fa2 GIT binary patch literal 5718 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 UvBHUTI4u|ttgfe4r)m@NUorpZe*gdg literal 0 HcmV?d00001 diff --git a/reference/extending/2025-01-09-15-56-53.png b/reference/extending/2025-01-09-15-56-53.png new file mode 100644 index 0000000000000000000000000000000000000000..edf69212c7a3d7a6175294c753783d169c4b5eba GIT binary patch literal 6082 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 IM6N<$f_7T%-~a#s literal 0 HcmV?d00001 diff --git a/reference/extending/code-editors.md b/reference/extending/code-editors.md new file mode 100644 index 0000000..4e505a1 --- /dev/null +++ b/reference/extending/code-editors.md @@ -0,0 +1,27 @@ +# Code Editors + +vvvv doesn't include an editor for editing C# code. Instead you can choose your own. Here are some suggestions: + +## Visual Studio + +[Visual Studio](https://visualstudio.microsoft.com/) >= 2022 + +During installation make sure to check the ".NET desktop development" workload. + +![](2025-01-09-15-55-23.png) + +## Visual Studio Code + +[Visual Studio Code](https://code.visualstudio.com/) + +After installation make sure to install the "C# Dev Kit" extension. + +![](2025-01-09-15-56-53.png) + +## JetBrains Rider + +[JetBrains Rider](https://www.jetbrains.com/rider/) + +## Text Editors + +If you don't have any of the above editors at hand, really any text-editor would do to simply edit the C# code. Obviously you'll be missing out on some convenience, but for simple scenarios this may be enough. \ No newline at end of file diff --git a/reference/extending/writing-nodes.md b/reference/extending/writing-nodes.md index cead3c2..339ab70 100644 --- a/reference/extending/writing-nodes.md +++ b/reference/extending/writing-nodes.md @@ -54,7 +54,7 @@ If there is an error in your C# code, all nodes stemming from the same project w If you're dealing with stateful code, it gets a bit more tricky. Here are two typical scenarios: #### Process node -Assuming you want to treat your C# class like a [process node](../language/nodes.md#process-nodes) in VL, ie one instance per node, not dynamically spawning/killing instances, then attach the [`ProcessNode`](https://github.com/vvvv/VL.StandardLibs/blob/main/VL.Core/src/Import/ProcessNodeAttribute.cs) attribute to it. +Assuming you want to treat your C# class like a [process node](../language/nodes.md#process-nodes) in VL, ie one instance per node, not dynamically spawning/killing instances, then attach the [`ProcessNode`](https://github.com/vvvv/VL.StandardLibs/blob/main/VL.Core/src/Import/ProcessNodeAttribute.cs) attribute to it. For an example of this, [see below](#process-nodes). This allows vvvv to properly create/dispose instances of your class as needed, whenever you make a change to your C# code. @@ -71,9 +71,6 @@ It gets more tricky as soon as your C# code depends on unmanaged code (e.g. WinF When editing your code with Visual Studio, you can set break-points in your C# code. Then [attach](https://learn.microsoft.com/en-us/visualstudio/debugger/attach-to-running-processes-with-the-visual-studio-debugger?view=vs-2022) to vvvv.exe and see the break-points hit. ## Examples -Every public member of a public class you write in C# will turn into a VL node. -You can also attach the [`ProcessNode`](https://github.com/vvvv/VL.StandardLibs/blob/main/VL.Core/src/Import/ProcessNodeAttribute.cs) attribute to a public class to make it available as a node. - Here are some simple examples and a few more details that will help you create your own nodes. Those are also available via: https://github.com/vvvv/VL.DemoLib @@ -215,7 +212,7 @@ public static int HTMLDocuTest(int a)
Documentation shows up in NodeBrowser and Tooltip
> [!NOTE] -> Don't forget to enable "XML Documentation File" in the C# projects properties to make sure the .xml file holding the documentation is generated. This file will then always need to be next to the .dll, therfore always move those two files together! +> The xml documentation will only be generated if the project has the `GenerateDocumentationFile` property set to `true`. C# projects created by vvvv will have this by default, if you're referencing an existing project you might have to add this on your own! ### C# Ref Paramters @@ -275,7 +272,7 @@ By default all its public members will be used as its fragments. The attribute p [ProcessNode] public class Counter { - public MyProcessNode(int initialValue) + public Counter(int initialValue) { Value = initialValue; } @@ -346,7 +343,11 @@ For general information on workig with Observables see the chapter about [Reacti ### Dynamic Enums -Dynamic enums are useful in cases where you want to offer users a list of items to choose from, where the entries of that list may change during runtime. A typical example are nodes that give access to hardware devices that can be plugged in and removed anytime. +Dynamic enums are useful in cases where you want to offer users a list of items to choose from, where the entries of that list may change during runtime. A typical example are nodes that give access to hardware devices that can be plugged in and removed anytime. + +For writing a dynamic enum, best start from one of the "Dynamic Enum" [C# file templates](#start-from-a-template). + +If you want to better understand the templates code, read on: Consider a normal enum in C#: ```csharp @@ -456,4 +457,4 @@ public class ComPortDefinition : DynamicEnumDefinitionBase } ``` -For using dynamic enums in VL, see: [Enumerations](https://thegraybook.vvvv.org/reference/language/enumerations.html#dynamic-enums). +For using dynamic enums in VL, see: [Enumerations](https://thegraybook.vvvv.org/reference/language/enumerations.html#dynamic-enums). \ No newline at end of file diff --git a/reference/toc.md b/reference/toc.md index f79e62c..5801a28 100644 --- a/reference/toc.md +++ b/reference/toc.md @@ -102,6 +102,7 @@ # [Extending vvvv](extending/overview.md) ## [Using .NET Libraries](extending/using-net-libraries.md) +## [Setting up a Code Editor](extending/code-editors.md) ## [Writing Nodes using C#](extending/writing-nodes.md) ## [Custom Regions](extending/custom-regions.md) ## [Contributing to a Library](extending/contributing.md)