# Persefone.jl Desktop

![Persefone.jl splash screen](src/persefonejl_logo_v3_splash.png)

This is the graphical user interface to the [Persefone model](http://persefone-model.eu).
With it, you can watch a simulation run unfold and interactively explore how the model 
functions.

## Install & run

**To install:** Install [Julia](https://julialang.org/downloads/) and download/clone 
this repository. Open a Julia REPL in the downloaded folder and execute the following
to install all dependencies:

```julia
using Pkg
Pkg.activate(".")
Pkg.instantiate()
```

**To run:** Run `desktop.jl`. Alternatively, open a Julia REPL in this folder and run:

```julia
using Pkg
Pkg.activate(".")
using PersefoneDesktop
launch()
```

*Note:* Due to the necessary pre-compilation done by Julia, installing and launching
the application can take quite a long time. (Start-up time with `desktop.jl` is
currently about 2 minutes.) We will reduce this as much as possible in future
releases.


## User interface

![Persefone.jl Desktop screenshot](screenshot.png)

The main window component is the **map view**. This displays a land cover map of the
simulated region: dark green are forests, light green grassland, yellow fields, red
built-up areas and blue water. On it, little circles show the position of individual
animals, with different species denoted by different colours.

Below the map is the **control bar**, with the following elements (from left to right):

- **Back button:** Rewind the simulation by one day.

- **Step button:** Advance the simulation by one day.

- **Run button:** Run the simulation until the button is pressed again or the end 
date is reached.

- **Progress bar:** Shows the percentage of time elapsed between the start and end
dates of the simulation.

- **Speed slider:** Set the time delay between each simulation step when running.

- **Date:** Shows the simulation date currently displayed on the map.

Above the map is the **menu bar**, with the following options:

**Simulation:**

- **New simulation:** Reset the model and start over.

- **Configure simulation:** Change the model settings (*not yet implemented*).

- **Load saved state:** Load a model object file saved by a previous simulation run.

- **Save current state:** Save a model object file for later use.

- **Quit:** Close the application.

**Data:**

- **Show population graph:** Show a window with a graph of population sizes over time
in the current model run.

- **Save simulation output:** Save the model output data to file (saves both raw CSV
data and generated graphics).

**Help:**

- **Documentation:** Open the Persefone.jl online documentation in a browser.

- **Website:** Open the main Persefone.jl website in a browser.

- **About:** Show a window with core information about the application.

---

© 2023 Persefone.jl developers