{"id":13327239,"url":"https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor","last_synced_at":"2025-03-11T02:32:37.389Z","repository":{"id":42518066,"uuid":"249017747","full_name":"SimpleStateMachine/SimpleStateMachineNodeEditor","owner":"SimpleStateMachine","description":"🔗WPF node editor based on ReactiveUI","archived":false,"fork":false,"pushed_at":"2022-11-06T19:39:45.000Z","size":13072,"stargazers_count":339,"open_issues_count":14,"forks_count":57,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-10-10T22:21:05.005Z","etag":null,"topics":["csharp","finite-state-machine","net-core","net-core-3-1","node-editor","nodeeditor","reactiveui","scheme","simple-state-machine","simplestatemachine","state","state-machine","statemachine","visualization","wpf"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SimpleStateMachine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"open_collective":"simplestatemachine"}},"created_at":"2020-03-21T16:40:04.000Z","updated_at":"2024-10-08T05:49:21.000Z","dependencies_parsed_at":"2023-01-22T09:45:17.621Z","dependency_job_id":null,"html_url":"https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimpleStateMachine%2FSimpleStateMachineNodeEditor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimpleStateMachine%2FSimpleStateMachineNodeEditor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimpleStateMachine%2FSimpleStateMachineNodeEditor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimpleStateMachine%2FSimpleStateMachineNodeEditor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SimpleStateMachine","download_url":"https://codeload.github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221205585,"owners_count":16776218,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","finite-state-machine","net-core","net-core-3-1","node-editor","nodeeditor","reactiveui","scheme","simple-state-machine","simplestatemachine","state","state-machine","statemachine","visualization","wpf"],"created_at":"2024-07-29T18:53:51.674Z","updated_at":"2024-10-23T14:31:51.996Z","avatar_url":"https://github.com/SimpleStateMachine.png","language":"C#","funding_links":["https://opencollective.com/simplestatemachine"],"categories":[],"sub_categories":[],"readme":" [![](https://img.shields.io/github/v/release/SimpleStateMachine/SimpleStateMachineNodeEditor)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/releases) [![](https://img.shields.io/github/stars/SimpleStateMachine/SimpleStateMachineNodeEditor)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor) [![](https://img.shields.io/github/license/SimpleStateMachine/SimpleStateMachineNodeEditor)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor) [![](https://img.shields.io/github/languages/code-size/SimpleStateMachine/SimpleStateMachineNodeEditor)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor) \n [![]( https://img.shields.io/github/last-commit/SimpleStateMachine/SimpleStateMachineNodeEditor/ToAvaloniaUI)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor) [![](https://img.shields.io/badge/chat-slack-blueviolet.svg)](https://join.slack.com/t/simplestatemachine/shared_invite/zt-fnfhvvsx-fTejcpPn~PPb2ojdG_MQBg) [![](https://img.shields.io/badge/chat-telegram-blue.svg)](https://t.me/joinchat/HMLJFkv9do6aDV188rhd0w)\n [![Build Status](https://dev.azure.com/GMIKE/SimpleStateMachineNodeEditor/_apis/build/status/SimpleStateMachine.SimpleStateMachineNodeEditor?branchName=master)](https://dev.azure.com/GMIKE/SimpleStateMachineNodeEditor/_build/latest?definitionId=1\u0026branchName=master)\n \n # SimpleStateMachineNodeEditor\n  \n SimpleStateMachineNodeEditor is a WPF node-editor for visual work and editoring  state-machine\n \n  ## Give a Star! :star:\nIf you like or are using this project please give it a star. Thanks!\n\n # Why SimpleStateMachine?\n Create state machine in **three** steps :\n \n **1.** Create scheme in  [this node editor🔗](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n\n**2.** Load scheme in your project using [library📚](https://github.com/SimpleStateMachine/SimpleStateMachineLibrary) \n\n**3.** Describe your app logic and run the state machin🚘\n\n## Features💡\n### Custom Window with Visual Studio design\n[![](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/blob/gh-pages/img/Custom%20window.jpg)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n### Two themes\n[![](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/blob/gh-pages/img/Themes.jpg)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n### Two representations for State machine\n* Scheme of nodes\n* Table of transitions\n\n### Validating \n* for unique name for Node/Transition\n* for exists Nodes without connects\n### Adding nodes and connections\n[![](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/blob/gh-pages/img/adding.gif)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n### Undo and redo\n[![](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/blob/gh-pages/img/undo%20and%20redo.gif)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n### Collapsing and  moving\n[![](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/blob/gh-pages/img/collapsing%20and%20moving.gif)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n### Scaling\n[![](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/blob/gh-pages/img/Scaling.gif)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n### Selection\n[![](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/blob/gh-pages/img/selection.gif)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n### Naming for states and transitions\n[![](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/blob/gh-pages/img/naming%20for%20states%20and%20transitions.gif)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n### Moving transitions\n[![](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/blob/gh-pages/img/moving%20transitions.gif)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n### Deleting transitions\n[![](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/blob/gh-pages/img/deleting%20transitions.gif)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n### Import/Export scheme from/to xml\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cStateMachine\u003e\n  \u003cStates\u003e\n    \u003cState Name=\"Start\"/\u003e\n    \u003cState Name=\"State 1\"/\u003e\n    \u003cState Name=\"State 2\"/\u003e\n  \u003c/States\u003e\n  \u003cStartState Name=\"Start\" /\u003e\n  \u003cTransitions\u003e\n    \u003cTransition Name=\"Transition 2\" From=\"State 2\" To=\"State 1\" /\u003e\n    \u003cTransition Name=\"Transition 1\" From=\"Start\" To=\"State 2\" /\u003e\n  \u003c/Transitions\u003e\n   \u003cVisualization\u003e\n    \u003cState Name=\"Start\" Position=\"37, 80\" IsCollapse=\"False\" /\u003e\n    \u003cState Name=\"State 1\" Position=\"471, 195.54\" IsCollapse=\"False\" /\u003e\n    \u003cState Name=\"State 2\" Position=\"276, 83.03999999999999\" IsCollapse=\"False\" /\u003e\n  \u003c/Visualization\u003e\n\u003c/StateMachine\u003e\n```\n### Save work space as PNG/JPEG\n[![](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/blob/gh-pages/img/jpg.jpg)](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor)\n\n## Getting Started📂\n\n **1.** Download the [latest release archive](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/releases)\n \n **2.** Unzip the downloaded file\n \n **3.** Run the exe file\n \n## Shortcuts📎\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e\u003c/kbd\u003e +\u003ckbd\u003eA\u003c/kbd\u003e = Select All Nodes\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eS\u003c/kbd\u003e = Save\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eS\u003c/kbd\u003e = Save As\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eO\u003c/kbd\u003e = Open\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eN\u003c/kbd\u003e = New\n* \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003eF4\u003c/kbd\u003e = Exit\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003eP\u003c/kbd\u003e = Export to PNG\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003eJ\u003c/kbd\u003e = Export to JPEG\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eZ\u003c/kbd\u003e = Undo\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eY\u003c/kbd\u003e = Redo\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eN\u003c/kbd\u003e = Add Node\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eLMB\u003c/kbd\u003e on Canvas = Start Select\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eLMB\u003c/kbd\u003e on Connector = Create Loop\n* \u003ckbd\u003eLMB\u003c/kbd\u003e on Node = Select one Node\n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eLMB\u003c/kbd\u003e on Node = Select/UnSelect Node \n* \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eLMB\u003c/kbd\u003e on Transition = Select/UnSelect Transition\n* \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eLMB\u003c/kbd\u003e on Transition = Multiple selection\n* \u003ckbd\u003eLMB\u003c/kbd\u003e on Connector = Start create Connect\n* \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003eLMB\u003c/kbd\u003e on Connector = Move Connector in Node\n* \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003eLMB\u003c/kbd\u003e on Canvas = Start Cut\n* \u003ckbd\u003eDelete\u003c/kbd\u003e = Delete Selected Elements\n* \u003ckbd\u003eC\u003c/kbd\u003e + \u003ckbd\u003eDelete\u003c/kbd\u003e = Delete Selected Connector\n* \u003ckbd\u003eN\u003c/kbd\u003e + \u003ckbd\u003eDelete\u003c/kbd\u003e = Delete Selected Nodes\n\n ## FAQ❔\n If you think you have found a bug, create a github [issue](https://github.com/SimpleStateMachine/SimpleStateMachineNodeEditor/issues).\n \n But if you just have questions about how to use:\n \n- [Slack channel](https://join.slack.com/t/simplestatemachine/shared_invite/zt-fnfhvvsx-fTejcpPn~PPb2ojdG_MQBg)\n- [Telegram channel](https://t.me/joinchat/HMLJFkv9do6aDV188rhd0w)\n\n## License📑\n\nCopyright (c) SimpleStateMachine\n\nLicensed under the [MIT](LICENSE) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSimpleStateMachine%2FSimpleStateMachineNodeEditor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSimpleStateMachine%2FSimpleStateMachineNodeEditor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSimpleStateMachine%2FSimpleStateMachineNodeEditor/lists"}