A Qt-based finite state machine (FSM) editor, visualizer, and simulator.
FSM Studio is a GUI application implemented in C++/Qt that lets you create, visualize, and simulate Moore-based state machines.
- Patrik Procházka - Front-end
- Miroslav Bašista - Back-end
- Filip Ficka - Contributing to GUI
FSM Studio provides an intuitive graphical interface for building Moore machines.
Key functionalities:
- Create automata via GUI
- Add states and transitions
- Assign unique functionality to each state
- Configure transition conditions in the Information Panel
Each automaton can have:
- Name & description
- Inputs & outputs
- Variables
Transition conditions use a JavaScript-like syntax. The moore helper object allows access to timers and runtime helpers.
| Operator | Description |
|---|---|
= |
Assignment |
== |
Equality |
!= |
Inequality |
>= |
Greater than or equal |
<= |
Less than or equal |
> |
Greater than |
< |
Less than |
&& |
Logical AND |
|| |
Logical OR |
For timed transitions, use:
moore.timer(ms)- Waits
msmilliseconds before proceeding - Must return a boolean (
trueorfalse)
- Visual FSM editor (states & transitions)
- Simulation/terminal widget for input/output observation
- Export/import automata as
.json - Multiple execution strategies (run/step)
- Example automata for testing & learning
src/ — application source (GUI + parser/executor)
├─ gui/ — Qt GUI sources (mainwindow, scene, widgets, resources)
└─ parser/ — parsing, machine, execution logic
examples/ — example JSON automata
doc/ — documentation and diagrams (class-diagram.pdf)
build/ — build artifacts
- Unix-like environment (developed on Ubuntu)
- Qt 6 development libraries & standard build tools
Build from source:
# Build the binary
make build
# Run the application
./build/fsm-studio
# Or build & run in one step
make runInstall to system:
# Then search for FSM Studio app
make install- Launch the program (
./build/fsm-studioormake run) - Build your automaton using the GUI
- Add states, transitions, conditions, variables and inputs
- Click to run the automaton in the terminal widget
- Observe the visualization and outputs.
To run MorseEATM.json:
- Install and run the application
make install && ./fsm-studio- Import the automaton:
Importbutton in the toolbar- Navigate to
examples/intermediate/MorseEATM.json
- App load the automaton and details
- Press
Simulateto run the automaton
| Command | Description |
|---|---|
make build |
Compile the program |
make run |
Compile & run |
make install |
Install the application |
make uninstall |
Uninstall the application |
make html |
Generate HTML documentation |
make clean-build |
Delete generated build files |
make clean-html |
Delete generated documentation |
make clean |
Delete all generated files |
Load and simulate automata from examples/ (simple, intermediate, advanced).
- UML/Class diagram:
doc/class-diagram.pdf
Generate HTML API docs (Doxygen will be installed):
make htmlNo automated tests provided. Tested on example automata.
Licensed under MIT License — see LICENSE for details.



