Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
946fc6f
adding new config and settings
Shinga13 Apr 29, 2026
46ca8e5
integrating new settings and config
Shinga13 Apr 29, 2026
0563e2a
adding new theme
Shinga13 Apr 30, 2026
29fc153
integrating new theme into app.py
Shinga13 Apr 30, 2026
f0b9fab
making cargomanager build cache
Shinga13 May 5, 2026
c00b157
adding skills to cargomanager
Shinga13 May 5, 2026
a5ec3bc
adding build manager
Shinga13 May 6, 2026
0aa1ca5
Moving ExportWindow and export helpers to dedicated module
Shinga13 May 9, 2026
58b42bb
renaming picker module
Shinga13 May 10, 2026
7d9070c
Updating picker
Shinga13 May 11, 2026
4f36c60
Refactoring context menu
Shinga13 May 11, 2026
66a8924
updating app initialization
Shinga13 May 11, 2026
0d16f7d
Updating app ui creation and its helper functions
Shinga13 May 11, 2026
d943f74
using custom search dir for local assets
Shinga13 May 11, 2026
cbd3633
moving tab logic to Tabbers class
Shinga13 May 11, 2026
9e2f235
moving item label callbacks to buildmanager
Shinga13 May 12, 2026
bb71f40
moving picker logic out of callbacks.py
Shinga13 May 12, 2026
cf69cb1
creating buildloader and relocating relevant functions into it
Shinga13 May 12, 2026
d82d7db
moving build clear logic to buildmanager
Shinga13 May 12, 2026
06042a5
reworking backend init and removing unneccessary code
Shinga13 May 12, 2026
c72f07b
updaing splash
Shinga13 May 12, 2026
356311e
removing unused code
Shinga13 May 13, 2026
16648fc
updating dependencies
Shinga13 May 13, 2026
73878c0
fixing various minor issues
Shinga13 May 13, 2026
38ae516
renaming theme2 to theme
Shinga13 May 13, 2026
6336101
added alt images to update build version
Shinga13 May 13, 2026
3a78923
renaming build2 to build
Shinga13 May 13, 2026
9639c02
improving splash and adding image download progress to it
Shinga13 May 13, 2026
463e798
splitting save into save and save as
Shinga13 May 13, 2026
c2de4cf
Making library folder custom selectable
Shinga13 May 13, 2026
41313ac
removing 'new' suffix from new functions
Shinga13 May 13, 2026
2e47a7e
fixing typo in export
Shinga13 May 13, 2026
4b0dc91
adding packaging methods
Shinga13 May 13, 2026
08e65a3
updating packaging
Shinga13 May 13, 2026
2a91012
updating install shell scripts and allowing for portable install
Shinga13 May 13, 2026
86937f2
updating readme
Shinga13 May 13, 2026
06b20fc
fixing cache load bug
Shinga13 May 13, 2026
daed74d
fixing arch packaging
Shinga13 May 13, 2026
1e63aa9
fixing build load bug for png files
Shinga13 May 13, 2026
6397c49
fixing extension not showing up during saving
Shinga13 May 13, 2026
9a862dc
improving deb build
Shinga13 May 13, 2026
94a361d
fixing loading legacy build image
Shinga13 May 14, 2026
134ccf6
Adding build for pypi package
Shinga13 May 16, 2026
1b3a1b7
updating pypi action
Shinga13 May 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.*
build
dist
__pycache__
distribution/arch
25 changes: 25 additions & 0 deletions .github/workflows/build-for-pypi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Build Wheel and Publish to PyPI

on:
workflow_dispatch:
inputs:
tag:
description: "Tag name for this release (e.g. v1.2.3)"
required: true

jobs:
build_and_publish:
runs-on: ubuntu-latest
permissions:
it-token: write
steps:
- uses: actions/checkout@v6
with:
ref: ${{ inputs.tag }}
- uses: actions/setup-python@v5
with:
python-version: "3.14"
- run: python3 -m pip install build
- run: python3 -m build # creates dist/*
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
52 changes: 0 additions & 52 deletions .github/workflows/build.yml

This file was deleted.

4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@
images/
..debug/
__pycache__/
dist/
build/
*.py[cod]
.SETS_settings.ini
*.spec
121 changes: 0 additions & 121 deletions INSTALLATION.md

This file was deleted.

59 changes: 16 additions & 43 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,64 +7,37 @@ Builds can be exported to a PNG or JSON file that can be opened by another perso

## Installation
### Executable for Windows
Download the zipped app from the [release](https://github.com/STOCD/SETS/releases) page. Unzip it into a folder where you want your app to live. To speed up the image downloading process, obtain the images library as detailed below (Images library section). Double-clicking `SETS.exe` will start the app.
Download the latest app installer from the [release](https://github.com/STOCD/SETS/releases) page. Execute the installer and follow its instructions to install the app.

You can create a desktop shortcut by rightclicking on `SETS.exe` and clicking on "Create shortcut" in the context menu. Then move the created shortcut to your desktop. To create a start menu entry, open the start menu folder by rightclicking on an arbitrary app in your start menu and clicking on "Open file location". Then move the created shortcut to the folder that opened.
### Executable for Arch
Download the latest package from the [release](https://github.com/STOCD/SETS/releases) page. Run `sudo pacman -U /path/to/package-file` to install the app.

### Script (UNIX-like systems)
*Before installation, make sure python 3 is installed on your system alongside the python package manager pip.*

First, create a folder to house your app and open it in your file manager or shell.

Download the source code. This can be done using `git` or manual download:
- Manual Download: On the GitHub page of [this repository](https://github.com/STOCD/SETS), click on the green `CODE` button and select "Download ZIP". Save the archive and unpack it so that the files and folders seen on the repository page are *directly* inside your app folder.
- Git: run `git clone https://github.com/STOCD/SETS.git .`

Run the `install.sh` script by double-clicking it in your file manager or running `./install.sh` in your shell. If you cannot run the file, make sure it is executable using your file manager or the command `chmod +x install.sh`.

To speed up the image download process on first start of the app, download the latest image archive from [releases](https://github.com/STOCD/SETS/releases). Create a `.config` folder and unpack the images archive into it. The images should be in `<app_root>/.config/images/`.
### Executable for Debian
Download the latest package from the [release](https://github.com/STOCD/SETS/releases) page. Run `sudo apt install -f /path/to/package-file` to install the app.

Start the app by running the `run.sh` file by double-clicking it in your file manager or running `.run.sh` in your shell. If you cannot run the file, make sure it is executable using your file manager or the command `chmod +x run.sh`.
### Script version using PIP
Install the app globally or in a python virtual environment by running `python -m pip install sets`. Start the app using the `sets` command. If the app is installed in a python virtual environment, make sure to activate it before trying to start the app.

### Script (all systems; development version)
*Before installation, make sure python 3 is installed on your system alongside the python package manager pip.*

### Script (Cross-Platform)
*The commands below are for Windows and require a version of python 3 to be installed. If you want to install the app on Linux, use `python3` instead of `python`. A more comprehensive guide for installing the script version can be found on the [website](https://stobuilds.com/apps/sets/installation).*

First, create a folder to house your app. Open a command prompt and navigate *inside* the created folder.
First, create a folder to house your app. Open a command prompt or shell and navigate *inside* the created folder.

Download the source code. This can be done using `git` or manual download:
- Manual Download: On the GitHub page of [this repository](https://github.com/STOCD/SETS), click on the green `CODE` button and select "Download ZIP". Save the archive and unpack it so that the files and folders seen on the repository page are *directly* inside your app folder.
- Git: run `git clone https://github.com/STOCD/SETS.git .`

Install dependencies by running `python -m pip install .`.

To speed up the image download process on first start of the app, download the latest image archive from [releases](https://github.com/STOCD/SETS/releases). Create a `.config` folder and unpack the images archive into it. The images should be in `<app_root>\.config\images\`.

*Ubuntu* users might need to install the `libxcb-cursor0` package for this app to work: `sudo apt install libxcb-cursor0`

To run the app, navigate to your apps folder. Then:
- Windows: Use `python main.py` to start the app.
- Linux: Use `python3 main.py` to start the app.

### Images library
All installation methods require an images library containing the game icons. The app will download these automatically, but as this takes a very long time, it is recommended to download the newest compressed image library from the [release](https://github.com/STOCD/SETS/releases) page. Once downloaded this has to be decompressed and placed in into the `.config/images` folder. You might need to create a folder with the name `.config` manually. The folder structure should look like below:
```
SETS
+- .config
| `- images
| `- <lots of images>
+- SETS.exe / main.py
+- ...
```
On UNIX systems (or using a compatible shell), run the `install.sh` script by double-clicking it in your file manager or running `./install.sh` in your shell. If you cannot run the file, make sure it is executable using your file manager or the command `chmod +x install.sh`. After that, the app can be started by running `run.sh` either from your file explorer or shell. If you cannot run the file, make sure it is executable using your file manager or the command `chmod +x run.sh`.

## Updating the app
### Executable for Windows
Navigate to your SETS folder and delete all files and folders **except** the `.config` folder and the `.SETS_settings.ini` file. Download the newest version from the [release](https://github.com/STOCD/SETS/releases) page and unpack it into the SETS folder to replace the files and folders deleted before.
If you cannot use the installer script, continue by installing dependencies using `python -m pip install .`.

### Script (Cross-Platform)
When using Git, open a command line at the location of your SETS folder and type `git pull` to get the newest version of the app.
To run the app, open a shell inside the app folder and run `python main.py --config-dir ./sets-config`.

Otherwise, navigate to your SETS folder and delete all files and folders **except** the `.config` folder and the `.SETS_settings.ini` file. Also keep your *virtual environment* folder in place if you used a virtual environment to install dependencies. Download the app into the same folder as detailed in the installation section above. Open a command line at the location of your SETS folder and update dependencies by running `python -m pip install .`.

## Updating the app
All versions of this app can be updated by following the installation steps detailed above. The existing installation will be replaced automatically, preserving settings and other configuration.

## Contributing
If you find any information or images missing, please check or update the [official wiki](https://stowiki.net) -- where SETS gets this information. You can report wiki issues on the [Star Trek Online Community Discord Server](https://discord.gg/eApUvTRr5q) in the "#wiki-discussion" channel or on the [STOBuilds Discord Server](https://discord.gg/kxwHxbsqzF) in the "#wiki-update-talk" channel.
Expand Down
71 changes: 71 additions & 0 deletions distribution/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Development Notes

These are currently reflecting the state of the app, but are subject ot change.

## Windows
- [Currently Testing With Inno Setup](https://jrsoftware.org/isinfo.php)
- [SETS.iss](./SETS.iss)

## Linux

#### System Wide Paths
- /opt/sets/
- This is the ideal loation for Linux, all assets are located here.
- /usr/bin/sets -> /opt/sets/SETS
- shell script to execute the binary from a PATH location
- /usr/share/applications/sets.desktop
- The `.desktop` entry that registers the application.
- /usr/share/icons/hicolor/256x256/apps/sets.png
- Location for the application icon, referred to in the `.desktop` entry.

#### Config Paths
1. If `$XDG_CONFIG_HOME` is set, takes priority. Is supposed to be a directory. Don't use if it is a file. Don't create it if it doesn't exist.
2. `$HOME/.config` if the `.config` folder exists, but do not create it if it does not.
3. [`$HOME/.<filename>` if you can keep the settings in one file (and the dot here is important)] -> not used, because SETS requires a folder
4. ` $HOME/.sets/<config-files>`

##### .desktop entry template
```
[Desktop Entry]
Type=Application
Name=SETS
Comment=STO Equipment and Trait Selector
Icon=/usr/share/icons/hicolor/256x256/apps/sets.png
Exec=/opt/sets/SETS
Terminal=False
Categories=Utility;GameTool;
StartupWMClass=STO Equipment and Trait Selector
```

#### Debian `.deb` Package Approach

```bash
apt install -f ./sets-<version>-<pkgver>-x86_64.deb
```
- Unpacks the contents to `/opt/sets`, `/usr/share/applications/sets.desktop`, etc
- Automatically registers the package manager metadata with `dpkg` so the system becomes aware which files belong to which package
- This is the biggest advantage.
- Allows uninstallation by name (apt remove sets), because it recorded which files it put there.
- Does not remove settings.
- uses `-f` flag to install dependencies

To check whether it was installed correctly: `apt list --installed sets`

Use `dpkg -L sets` to list registered files for SETS.


#### Arch `PKGBUILD` File Structure
###### Note: to public to AUR we need a PKGBUILD that builds from source

On Arch there is similar tools, but there is no standard format like `.deb`, rather it's usually just a compressed archive `sets.pkg.tar.zst` by a `PKGBUILD` script, which can then be fed into `pacman`/`paru`/`yay`.

Run `makepkg` from the directory that contains the `PKGBUILD` file and that spits out the `sets-<version>-<pkgver>-x86_64.pkg.tar.zst` file, which can then be installed via pacman:

```
sudo pacman -U ./sets-<version>-<pkgver>-x86_64.pkg.tar.zst
```

And `pacman -Qs sets` to confirm that it is registered, just as a sanity check.

For debugging `pacman -Ql sets` lists where everything registers under that package is located (the assets and `.desktop` files, to ensure the `PKGBUILD` file was defined properly)

Loading