Metadata-Version: 2.4
Name: mal-gui
Version: 1.0.1
Summary: A graphical user interface tool used to create MAL instance models.
Author-email: Akash Sinha <aksinha@kth.se>, Andrei Buhaiu <buhaiu@kth.se>, Joakim Loxdal <loxdal@kth.se>
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: networkx==3.2.1
Requires-Dist: numpy==1.26.4
Requires-Dist: PySide6==6.7.0
Requires-Dist: PySide6_Addons==6.7.0
Requires-Dist: PySide6_Essentials==6.7.0
Requires-Dist: shiboken6==6.7.0
Requires-Dist: mal-toolbox==1.*
Requires-Dist: mal-simulator==1.*
Requires-Dist: qt-material==2.14
Requires-Dist: appdirs==1.4.4

# mal-toolbox-gui
A graphical user interface tool used to create MAL instance models and scenarios (with attacker agents specified).

## Installation

Install the package from pypi by running `pip install mal-gui`.

## Run

If you have installed the package locally you can run the command `malgui` to run the GUI.

This will open up the graphical user interface.

If you for any reason don't want to install the package, you can run it as a module directly with `python -m mal_gui.app` from this directory.


## How to use the graphical interface

### Starting up

![Start popup](docs/select_lang.png "Select MAL/MAR archive.")

When you start up `malgui` you need to select a MAL-language.

Read the tutorial if you do not know how: https://github.com/mal-lang/mal-toolbox-tutorial.

### Add an asset
When you have started the application you can drag and drop new assets from the object explorer on the left.

### Create associations
To create associations you use SHIFT + Left click to drack and drop between two assets. This lets you select what association they should have.
Same goes for attacker entry points.

![Overview of the MAL gui](docs/overview.png "Info on how to do things in malgui.")

### Remove an asset
To remove an asset, click it and press delete key on your keyboard or the Delete button in the top bar.
Alternatively, you can also right click and click 'Delete Asset'.

### Remove an association
To remove an association, right click the association name/label and select 'Delete connection'. Same goes for attacker entry points.

![Delete association](docs/remove_assoc.gif "Info on how to delete an assocation.")
