# 🎨 Modding Guide: Custom Themes & Languages

Welcome! This guide is aimed at advanced users and modding enthusiasts who want to customize melcom's FFmpeg Audio Normalizer. While you don't need to write complex code, basic knowledge of running Python scripts and using a text editor (like Notepad++) is required.

### ⚠️ Prerequisite: Source Code & Python

This guide is intended for advanced hobbyists and modders. Since the default colors and language lists are hardcoded into the final application, customizations must be made directly within the source files.

How to do it: Extract the `AudioNormalizer-Source_Code.7z` file from the `source_code` folder of this release. To work with these files, Python must be installed on your system.

After making your modifications, you have two ways to run them:

- Run directly: Simply launch your modified application directly using the `main.py` file (requires Python to be installed).
- Compile your own .exe: If you know your way around compilers, you can easily package your customized source code back into a fresh, custom `AudioNormalizer.exe` (e.g., using PyInstaller).

If you don't have Python installed yet, you can download it here for free:
» www.python.org/downloads

## 🌍 Part 1: Adding a New Language

Want to use the program in French, Spanish, or a made-up language? No problem!

### Step 1: Copy a Language File

Go to the extracted Source Code folder, then into the `lang` directory. Copy an existing file, e.g., `en_US.json`, and rename it (e.g., to `fr_FR.json` for French).

### Step 2: Translate

Open your new file in a text editor. You will see lines like this:

    "app_title": "melcom's FFmpeg Audio Normalizer",

IMPORTANT: Only change the text on the right side of the colon! The left side (e.g., `"app_title"`) must remain exactly as it is, otherwise the program won't find the text.

### Step 3: Tell the Program About the Language

Open the file `constants.py` in the Source Code folder. Look for this entry (near the top):

    LANGUAGE_CODES_LIST = ["en_US", "de_DE", "pl_PL", "sv_SE"]

Simply add your new language to the end of the list. Don't forget the quotes and the comma:

    LANGUAGE_CODES_LIST = ["en_US", "de_DE", "pl_PL", "sv_SE", "fr_FR"]

Save it, start the program via `main.py`, and you can now select your language in the options!

## 🖌️ Part 2: Creating a Custom Theme (Colors)

The program comes with several themes out of the box. Prefer bright pink or neon green? Let's do it:

### Step 1: Define Your Colors

Open the file `theme.py`. Copy an existing color block, e.g., `MIDNIGHT_PALETTE`, paste it below, and rename it to something like `MY_AWESOME_PALETTE`. Adjust the colors using Hex codes (e.g., `#FF0000` for red):

    MY_AWESOME_PALETTE = {
        "bg": "#111111",           # Main window background
        "fg": "#ffffff",           # Normal text color
        "info_bg": "#222222",      # Background for text areas
        "separator": "#ff00ff",    # Borders and dividers
        "entry_bg": "#222222",     # Text input fields (e.g. LUFS)
        "disabled_fg": "#666666",  # Grayed-out text
        "error_bg": "#ff0000",     # Color for invalid input
        "button_bg": "#333333",    # Button background
        "button_hover": "#444444", # Button color on hover
        "text_relief": "flat",     # 'flat' or 'sunken' (3D)
        "accent": "#00ff00",       # Main accent color (Start Button!)
        "tree_selected": "#00ff00",# Selected row in file list
        "tree_selected_fg": "#000" # Text color of selected row
    }

### Step 2: Register the Theme in the Code

Scroll down to the bottom of `theme.py` to the function `def apply_theme(...)`. Add your theme to the `if / elif` list:

        elif mode == "my awesome theme":
            colors = MY_AWESOME_PALETTE

### Step 3: Make the Theme Visible in the Menu

Open `constants.py` again. Search for:

    THEME_MODES_LIST = ["light", "läderlappen", "melcom", "aquamarine & blue", "midnight", "modernlight"]

Insert the exact name (from Step 2) into the list:

    THEME_MODES_LIST = ["light", "läderlappen", "melcom", "aquamarine & blue", "midnight", "modernlight", "my awesome theme"]

Done! Start the program via `main.py` and select your new theme in the options.