Giter VIP home page Giter VIP logo

terminalboard's Introduction

Just because there is too much chaos in the garden of my mind: A venture in how a node editor could be built using WPF.

Dependencies / NuGet

WPF

  • Caliburn.Micro (latest version)

Testing

  • xUnit
  • FluentAssertion

Installation

Clone and Restore NuGet packages if neede etc. Solution created in Visual Studio 2022.

Project Structure

  • TerminalBoard.Core - Includes all base interfaces, classes and events that are independent of WPF
  • TerminalBoard.App - The main WPF project that includes all UI stuff. For future notes: All the base classes will be seperated into a WPF class project, but for now it's all in the same project until I get to a state of managable chaos.
  • TerminalBoard.Test - Using xUnit and FluentAssertions. At the moment just a few minor tests to anchor my sanity to something.

Terminology

Why not call it something else? Inspiration taken from the electrical world.

  • Terminal = Node
  • Socket = Connection Point
  • Wire = Connection.

Key Components

BoardViewModel (Main View Model)

  • Recieves a few services to create other view models.
  • Handles major events using the Caliburns EventAggregator.
  • Handles some UI events aswell.

Base interfaces for viewmodels

  • ITerminalViewModel - Base view model of ITerminals
  • ISocketViewModel - Base view model of ISockets
  • IWireViewModel - Base view model of IWires

Model interfaces

ITerminal are the base model that keeps a collection of ISockets and IWires.

Derived interfaces of ITerminal (listed below) includes a IFunction that evaluates, outputs or shows an results.

ITerminals

  • IValueTerminal - Simple value creator (float or int)
  • IEvaluationTerminal - Terminal that holds an evaulation function
  • IOutputTerminal - Shows a single output value

IFunction

  • IValueFunction single - IValue output
  • IEvaluationFunction - multiple value input/outputs (ISockets). Has the ability to evaluate the inputs according to some type of implementation. (Yeh, so a function...)

ISocket

  • SocketBase - abstract ISocket
  • Floatsocket
  • IntSocket
  • VectorSocket
  • More types of sockets depending on which API that is implementing this (?).

At the moment these are not of generic type. I would like them to be generics at least, but how that would play into the bigger picture is still a bit unclear to me at this moment.

IWire

  • Keeps track of
    • Input and output socket
    • Which IValue is being transfered
    • The ability to do the actual data transfer by calling the UpdateInput method in the parent terminal of the socket.

IValues are my short coming instead of using an generic type, more to come on this.

I see your board

A picture of how the terminalboard looks like right now

Simple Terminal Board

terminalboard's People

Contributors

samhatami avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.