Skip to content

Commit

Permalink
Documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
FelisDiligens committed Jan 16, 2023
1 parent 991e003 commit fd62454
Show file tree
Hide file tree
Showing 7 changed files with 101 additions and 39 deletions.
41 changes: 41 additions & 0 deletions Docs/Building.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Build process

## Requirements
- Windows 10 or later
- [Visual Studio 2022 Community edition](https://visualstudio.microsoft.com/vs/community/)
- [".NET Desktop Development" workload installed](https://learn.microsoft.com/en-us/visualstudio/install/modify-visual-studio?view=vs-2022)

### Optional
- [git](https://git-scm.com/) (optional, needed if you want to clone the repo or contribute)
- [Python 3](https://www.python.org/downloads/) (optional, needed if you want to use the build script)
- [Inno Setup](https://jrsoftware.org/isdl.php) (optional, needed to build the installer)
- [pandoc](https://pandoc.org/installing.html) (optional, needed if you want to make html/rtf versions of the "What's new.md" file)

## Building the application
1. Open the solution `Fallout76-QuickConfiguration\Fo76ini\Fo76ini.sln` in Visual Studio 2022.
2. Set the build target to "Release", "Any CPU", and "Fo76ini_Updater"
3. Click Build → Build Solution (F6)
4. Copy (and replace) the content of `Fallout76-QuickConfiguration\Fo76ini_Updater\bin\Release\` into `Fallout76-QuickConfiguration\Fo76ini\bin\Release\`. (Create the latter directory, if it does not exist)
5. Next, set the build target to "Release", "Any CPU", and "Fo76ini"
6. Once again, click Build → Build Solution (F6)
7. Copy the content of `Fallout76-QuickConfiguration\Additional files\` into `Fallout76-QuickConfiguration\Fo76ini\bin\Release\`
8. Done.

## Building the setup
1. Open `Fallout76-QuickConfiguration\setup.iss` in Inno Setup Compiler.
2. Edit the first few lines, such as `ProjectVersion`, `ProjectGitDir`, `ProjectPackTargetDir`
3. You'll probably also need to edit these lines:
```
[Files]
Source: "{#ProjectPackTargetDir}\v{#ProjectVersion}\v{#ProjectVersion}_bin\Fo76ini.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#ProjectPackTargetDir}\v{#ProjectVersion}\v{#ProjectVersion}_bin\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
```
to something like this:
```
[Files]
Source: "{#ProjectGitDir}\Fo76ini\bin\Release\Fo76ini.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#ProjectGitDir}\Fo76ini\bin\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
```
4. Build the setup.
7 changes: 7 additions & 0 deletions Docs/Program.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Flowcharts

> WIP
## Program start and initialization

![](assets/app-start-and-init.drawio.png)
80 changes: 41 additions & 39 deletions Docs/Project Structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,52 +16,54 @@ Here's an overview:

```
📁 .
├── 📁 Docs ⇨ Documentation
├── 📁 Docs ⇨ Documentation
├── 📁 Additional files ⇨ Additional files that need to be copied to the bin folder.
├── 📁 Fo76ini ⇨ Main solution
├── 📁 Fo76ini_Updater ⇨ Solution for the auto-updater
├── 📁 ObjectListView ⇨ Solution that extends the built-in ListView control. Used in the Mod Manager.
├── 📁 Additional files ⇨ Additional files that need to be copied to the bin folder.
├── 📁 Fo76ini
│ └── 📝 Fo76ini.sln ⇨ Main solution. Open this.
├── 📁 Fo76ini_Updater
│ └── 📝 Fo76ini_Updater.sln ⇨ Solution for the auto-updater.
├── 📁 ObjectListView ⇨ Extends the built-in ListView control. Used in the Mod Manager.
├── 📝 VERSION ⇨ Contains the current version.
├── 📝 What's new.md ⇨ What's new? - Changelogs, etc.
├── 🐍 pack_tool.py ⇨ Python script that is used to prepare and pack the release.
├── 📝 VERSION ⇨ Contains the current version.
├── 📝 What's new.md ⇨ What's new? - Changelogs, etc.
├── 🐍 pack_tool.py ⇨ Python script that is used to prepare and pack the release.
└── ...
```

## Fo76ini solution

```
📁 ./Fo76ini
├── 📁 Controls ⇨ Holds custom UserControls
├── 📁 Forms ⇨ Holds Forms and UserControls used in a specific Form
│ ├── 📁 FormMain ⇨ The main form
│ │ └── 📁 Views ⇨ All the views of the main form
│ ├── 📁 FormMods ⇨ The "Mod Manager" form
│ ├── 📁 FormWelcome ⇨ Form that opens when the tool is launched for the first time.
│ ├── 📁 FormExcept... ⇨ Opened when an unhandled exception occures.
│ ├── 📁 FormIniError ⇨ Opened when the *.ini files can't be parsed.
├── 📁 Controls ⇨ Holds custom UserControls
├── 📁 Forms ⇨ Holds Forms and UserControls used in a specific Form
│ ├── 📁 FormMain ⇨ The main form
│ │ └── 📁 Views ⇨ All the views of the main form
│ ├── 📁 FormMods ⇨ The "Mod Manager" form
│ ├── 📁 FormWelcome ⇨ Form that opens when the tool is launched for the first time.
│ ├── 📁 FormExceptionDialog ⇨ Opened when an unhandled exception occures.
│ ├── 📁 FormIniError ⇨ Opened when the *.ini files can't be parsed.
│ │
│ ├── 📁 FormProfiles ⇨ Unused.
│ ├── 📁 FormSettings ⇨ Unused.
│ ├── 📁 FormWhatsNew ⇨ Unused.
│ └── 📁 FormTextP... ⇨ Custom messageboxes, unused.
│ ├── 📁 FormProfiles ⇨ Unused.
│ ├── 📁 FormSettings ⇨ Unused.
│ ├── 📁 FormWhatsNew ⇨ Unused.
│ └── 📁 FormTextPrompt ⇨ Custom messageboxes, unused.
├── 📁 Ini ⇨ Ini parsing and handling (load, change, save, etc.)
├── 📁 Interface ⇨ Translation, theming, and other interface related code
├── 📁 Mods ⇨ Loading, saving, and manipulating mods.
├── 📁 NexusAPI ⇨ Accessing the NexusMods API and storing data.
├── 📁 Profiles ⇨ Loading, saving, and editing profiles.
├── 📁 Properties ⇨ Project settings and resources.resx
├── 📁 Resources ⇨ Contains images, icons, fonts, text (html/rtf), etc.
├── 📁 Tweaks ⇨ *.ini tweaks (=game settings) sorted into subdirectories
├── 📁 Utilities ⇨ Any class that can be used everywhere and doesn't have it's own place.
├── 📁 languages ⇨ Translations that are downloaded by the tool through GitHub.
├── 📁 Ini ⇨ Ini parsing and handling (load, change, save, etc.)
├── 📁 Interface ⇨ Translation, theming, and other interface related code
├── 📁 Mods ⇨ Loading, saving, and manipulating mods.
├── 📁 NexusAPI ⇨ Accessing the NexusMods API and storing data.
├── 📁 Profiles ⇨ Loading, saving, and editing profiles.
├── 📁 Properties ⇨ Project settings and resources.resx
├── 📁 Resources ⇨ Contains images, icons, fonts, text (html/rtf), etc.
├── 📁 Tweaks ⇨ *.ini tweaks (=game settings) sorted into subdirectories
├── 📁 Utilities ⇨ Any class that can be used everywhere and doesn't have it's own place.
├── 📁 languages ⇨ Translations that are downloaded by the tool through GitHub.
├── 📝 Configuration.cs ⇨ Easily accessible Props for the tool's configuration.
├── 📝 Initialization.cs ⇨ Init: Creating folders, reading configuration, etc.
├── 📝 Program.cs ⇨ Program entry point (static void Main).
├── 📝 Shared.cs ⇨ Containing constants, such as version, user agent, or URLs.
├── 📝 Configuration.cs ⇨ Easily accessible Props for the tool's configuration.
├── 📝 Initialization.cs ⇨ Init: Creating folders, reading configuration, etc.
├── 📝 Program.cs ⇨ Program entry point (static void Main).
├── 📝 Shared.cs ⇨ Containing constants, such as version, user agent, or URLs.
└── ...
```

Expand All @@ -74,13 +76,13 @@ The tool downloads or requests information from GitHub's API for various reasons
**Checking for updates, "What's new", and translations:**
```
📁 .
├── 📝 VERSION ⇨ Downloaded on startup to check for updates.
├── 📝 What's new.rtf ⇨ Downloaded and displayed on versions prior to v1.11.
├── 📝 VERSION ⇨ Downloaded on startup to check for updates.
├── 📝 What's new.rtf ⇨ Downloaded and displayed on versions prior to v1.11.
└── 📁 Fo76ini
└── 📁 languages ⇨ *.zip archives containing the translations.
├── 📝 list.iso.txt ⇨ List of available translations for download.
└── 🗃️ xx-XX.zip ⇨ Translations
└── 📁 languages ⇨ *.zip archives containing the translations.
├── 📝 list.iso.txt ⇨ List of available translations for download.
└── 🗃️ xx-XX.zip ⇨ Translations
```

### From GitHub releases:
Expand Down
10 changes: 10 additions & 0 deletions Docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Documentation

This is an attempt to document the project for developers.

## Content

- [Building the app](Building.md)
- [Project and folder structure](Project%20Structure.md)
- [Flowcharts and program structure](Program.md)
- [Theming (specific)](Theming.md)
1 change: 1 addition & 0 deletions Docs/assets/.$app-start-and-init.drawio.bkp
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<mxfile host="Electron" modified="2023-01-16T11:13:48.935Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.7.4 Chrome/106.0.5249.199 Electron/21.3.3 Safari/537.36" etag="5PTiQV9C55_hjhqHBfwv" version="20.7.4" type="device"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">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</diagram></mxfile>
1 change: 1 addition & 0 deletions Docs/assets/app-start-and-init.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<mxfile host="Electron" modified="2023-01-16T11:14:36.086Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.7.4 Chrome/106.0.5249.199 Electron/21.3.3 Safari/537.36" etag="D82dlJESIVWAZsZn3FXS" version="20.7.4" type="device"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">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</diagram></mxfile>
Binary file added Docs/assets/app-start-and-init.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit fd62454

Please sign in to comment.