diff --git a/Docs/Building.md b/Docs/Building.md new file mode 100644 index 0000000..37e0bca --- /dev/null +++ b/Docs/Building.md @@ -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. \ No newline at end of file diff --git a/Docs/Program.md b/Docs/Program.md new file mode 100644 index 0000000..9b2289a --- /dev/null +++ b/Docs/Program.md @@ -0,0 +1,7 @@ +# Flowcharts + +> WIP + +## Program start and initialization + +![](assets/app-start-and-init.drawio.png) \ No newline at end of file diff --git a/Docs/Project Structure.md b/Docs/Project Structure.md index 097faed..5cc32ee 100644 --- a/Docs/Project Structure.md +++ b/Docs/Project Structure.md @@ -16,16 +16,18 @@ 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. └── ... ``` @@ -33,35 +35,35 @@ Here's an overview: ``` 📁 ./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. └── ... ``` @@ -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: diff --git a/Docs/README.md b/Docs/README.md new file mode 100644 index 0000000..b87f1ff --- /dev/null +++ b/Docs/README.md @@ -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) \ No newline at end of file diff --git a/Docs/assets/.$app-start-and-init.drawio.bkp b/Docs/assets/.$app-start-and-init.drawio.bkp new file mode 100644 index 0000000..b5f9dd7 --- /dev/null +++ b/Docs/assets/.$app-start-and-init.drawio.bkp @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/Docs/assets/app-start-and-init.drawio b/Docs/assets/app-start-and-init.drawio new file mode 100644 index 0000000..31b6bd4 --- /dev/null +++ b/Docs/assets/app-start-and-init.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/Docs/assets/app-start-and-init.drawio.png b/Docs/assets/app-start-and-init.drawio.png new file mode 100644 index 0000000..ba0b97a Binary files /dev/null and b/Docs/assets/app-start-and-init.drawio.png differ