All Projects → KDAB → Kdstatemachineeditor

KDAB / Kdstatemachineeditor

Licence: other
A framework for creating Qt State Machine metacode using a graphical user interface

Projects that are alternatives of or similar to Kdstatemachineeditor

When Ts
When: recombinant design pattern for state machines based on gene expression with a temporal model
Stars: ✭ 112 (-7.44%)
Mutual labels:  state-machine
Overmix
Automatic anime screenshot stitching in high quality
Stars: ✭ 114 (-5.79%)
Mutual labels:  qt
Kdsoap
A Qt-based client-side and server-side SOAP component
Stars: ✭ 117 (-3.31%)
Mutual labels:  qt
Rafcon
RAFCON (RMC advanced flow control) uses hierarchical state machines, featuring concurrent state execution, to represent robot programs. It ships with a graphical user interface supporting the creation of state machines and contains IDE like debugging mechanisms. Alternatively, state machines can programmatically be generated using RAFCON's API.
Stars: ✭ 112 (-7.44%)
Mutual labels:  state-machine
Autoannotationtool
A label tool aim to reduce semantic segmentation label time, rectangle and polygon annotation is supported
Stars: ✭ 113 (-6.61%)
Mutual labels:  qt
Qbreakpad
Cross-platform Qt crash handler, implemented as wrapper around google-breakpad
Stars: ✭ 115 (-4.96%)
Mutual labels:  qt
Bit Torrent
📁 🌎 BitTorrent client built with Python + asyncio
Stars: ✭ 111 (-8.26%)
Mutual labels:  qt
Mindforger
Thinking notebook and Markdown editor.
Stars: ✭ 1,695 (+1300.83%)
Mutual labels:  qt
Afsm
C++14 Finite State Machine library
Stars: ✭ 113 (-6.61%)
Mutual labels:  state-machine
Glabels Qt
gLabels Label Designer (Qt/C++)
Stars: ✭ 116 (-4.13%)
Mutual labels:  qt
Core
UI-Router Core: Framework agnostic, State-based routing for JavaScript Single Page Apps
Stars: ✭ 112 (-7.44%)
Mutual labels:  state-machine
Qhttpengine
HTTP server for Qt applications
Stars: ✭ 112 (-7.44%)
Mutual labels:  qt
Qcefwidget
Provide a Qt widget to render and interact with webpage.
Stars: ✭ 115 (-4.96%)
Mutual labels:  qt
Zproc
Process on steroids
Stars: ✭ 112 (-7.44%)
Mutual labels:  state-machine
Qtimgui
Qt (QOpenGLWidget / QOpenGLWindow) backend for ImGui
Stars: ✭ 119 (-1.65%)
Mutual labels:  qt
Expresspython
expressPython - A small Python editor for learning and competitive programming.
Stars: ✭ 111 (-8.26%)
Mutual labels:  qt
Chaos
Proof of concept, general purpose pastejacker for GNU/Linux
Stars: ✭ 115 (-4.96%)
Mutual labels:  qt
Toggldesktop
Toggl Desktop app for Windows, Mac and Linux
Stars: ✭ 1,663 (+1274.38%)
Mutual labels:  qt
Depthmapx
depthmapX is a multi-platform Spatial Network Analysis Software
Stars: ✭ 120 (-0.83%)
Mutual labels:  qt
Optimus Manager Qt
An interface for Optimus Manager that allows to switch GPUs on Optimus laptops.
Stars: ✭ 115 (-4.96%)
Mutual labels:  qt

KDStateMachineEditor - Library for visualizing and editing state charts

Introduction

The KDAB State Machine Editor Library is a framework that can be used to help develop full-featured State Machine Editing graphical user interfaces and tools. Output from such applications is in metacode or QML that can then be used in larger Qt or QtQuick projects.

For a full description of the KDAB State Machine Editor Library, read our wiki on GitHub, https://github.com/KDAB/KDStateMachineEditor/wiki.

Screenshots

The main feature of KDStateMachineEditor is visualizing and editing state charts.

Note: A proof-of-concept application called kdstatemachineditor executable is part of this repository and will be built automatically. It can be run from the bin/ directory once the project built.

KDSME visualizing microwave_parallel.scxml

KDSME visualizing microwave_parallel.scxml

KDSME visualizing stickman.scxml

KDSME visualizing stickman.scxml

KDSME visualizing trafficreport.scxml (using a different theme)

KDSME visualizing trafficreport.scxml (using a different theme)

KDSME visualizing a live-running QScxmlStateMachine

KDSME visualizing a live-running QScxmlStateMachine

KDSME embedded in another application (here: GammaRay)

KDSME embedded in another application (here: GammaRay)

Features

  • Internal API to create state charts
    • Consisting of states and transitions
    • Also supports history/initial states (in short: everything the SCXML spec provides)
  • QML scene which shows the state charts
    • Custom items for drawing transitions using bezier curves
    • Editing: Drag & drop support, move support, etc.
    • Editing: Undo stack implementation, redo/undo actions for all operations
  • Abstract interface to layout state charts
    • GraphViz's cgraph is one of the implemented layouting backends (part of this repository)
  • Import/Export capabilities
    • Allows to import/export .scxml files
    • Allows to export .svg files
    • Allows to export .qml files (in QtQml.StateMachine syntax)
  • Allows to inspect running state machine instances
    • Both supports visualizing QStateMachine or QScxmlStateMachine
    • Can inspect remote applications (i.e. processes living on another machine)
    • Using QtRemoteObjects for communication
      • Requires the target application to be "instrumented", cf. the [qsmdebugger](examples/qsmdebugger/] example
  • Theming support (cf. screenshots above) -- currently available are:
    • DarkTheme
    • SystemTheme

Building and running

Install the dependencies (here: Ubuntu):

$ sudo apt-get install cmake qt5-default graphviz-dev \
                       qtbase5-private-dev libqt5qml-graphicaleffects

Build:

$ mkdir build
$ cd build
$ cmake ..
$ make

Start the test app:

$ ./bin/kdstatemachineeditor

Known Issues

The editor part of the library still is somewhat "rough"; not a lot of development time has been spend on streamlining this feature. KDStateMachineEditor's main user is KDAB's GammaRay, a tool for introspecting Qt application. GammaRay has the capability to display the state chart of a QStateMachine embedded in the application. It's also possible to inspect the live configuration changes of the state machine. Zooming into child state (machines) is another feature; all backed by KDStateMachineEditor.

Contributing

KDAB will happily accept external contributions, but substantial contributions will require a signed Copyright Assignment Agreement (see docs/KDStateMachineEditor-CopyrightAssignmentForm.docx).

Contact [email protected] for more information about the Copyright Assignment Agreement.

Please submit your contributions or issue reports from our GitHub space at https://github.com/KDAB/KDStateMachineEditor

Licensing

The KDAB State Machine Editor Library is (C) 2014-2021 Klarälvdalens Datakonsult AB (KDAB), and is available under the terms of the LGPL 2.1. See LICENSES/LGPL-2.1-only.txt for license details.

Commercial licensing terms are available in the included file LICENSES/LicenseRef-KDAB-KDStateMachineEditor.txt.

For terms of redistribution, refer to the corresponding license agreement.

About KDAB

This State Machine Editor Library is supported and maintained by Klarälvdalens Datakonsult AB (KDAB).

The KDAB Group is the global No.1 software consultancy for Qt, C++ and OpenGL applications across desktop, embedded and mobile platforms.

The KDAB Group provides consulting and mentoring for developing Qt applications from scratch and in porting from all popular and legacy frameworks to Qt. We continue to help develop parts of Qt and are one of the major contributors to the Qt Project. We can give advanced or standard trainings anywhere around the globe on Qt as well as C++, OpenGL, 3D and more.

Please visit https://www.kdab.com to meet the people who write code like this.

Stay up-to-date with KDAB product announcements:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].