# Source Code

## Repository Links

* [SWAT+ source code repository](https://bitbucket.org/blacklandgrasslandmodels/modular_swatplus)
* [SWAT+ Editor source code repository](https://bitbucket.org/swatplus/swatplus.editor)
* [QSWAT+ source code repository](https://bitbucket.org/ChrisWGeorge/qswatplus3)

## Run and Compile SWAT+ Editor

### Install Development Tools

* You may use any IDE of your choice, however [Visual Studio Code](https://code.visualstudio.com/) is used by the developer.
* Install [Python 3.7](https://www.python.org/)
* Install required Python packages. From command prompt, go to source code /api directory and run:

```
pip install -r requirements.txt
```

* Install [Node.js](https://nodejs.org/en/)
* Install required Node.js packages. From command prompt, go to the root directory of the source code and run:

```
npm install
```

### Run the Source Code

From a command prompt in the root directory (terminal inside Visual Studio Code)

```
npm run dev
```

Open a second command prompt and run

```
npm run electron
```

### Build the Source Code

First, use [PyInstaller](https://www.pyinstaller.org/) (included in the Python packages during install) to freeze the Python into executable files. This should be done from the /api directory in the source code. In Windows, run the supplied .bat file from a command prompt:

```
pyinstaller_builds
```

{% hint style="info" %}
Note: PyInstaller will create 32 or 64-bit executables depending on the version of Python you have installed.
{% endhint %}

Next, build the Vue.js code. Open a command prompt and run:

```
npm run build
```

Finally, package the code for distribution using [Electron Builder](https://www.electron.build/). Configuration is set in the package.json file. Results of the build will be placed in the /release/dist directory.

Create an installer:

```
npm run dist
```

Or, build a portable executable:

```
npm run dist-port
```

Or, pack the files into a directory:

```
npm run pack
```
