This guide will walk you through the process of setting up and customizing the INI Configurator to create your own configuration editor application. The configurator allows you to design a custom graphical interface for managing .ini files by modifying fields and constants.
git clone -b dev https://github.com/<your-username>/ini-configurator.git cd ini-configurator
git branch
The src/lib/fields.json
file defines the sections and fields displayed in the configurator. Update this file to specify the .ini
configuration options you want to manage.
Example:
Here’s an example of a fields.json
entry:
{ "General": { "appName": { "label": "Application Name", "tooltip": "The name of your application", "type": "text", "default": "MyApp", "required": true }, "debugMode": { "label": "Enable Debugging", "tooltip": "Enable or disable debug mode", "type": "checkbox", "default": "false", "required": false } } }
At the start of the src/configurator.py
script, modify the constants to set your application name, .ini
file name, and debugging preferences:
# Declare Constants APP_NAME = "INI Configurator" INI_FILE = "conf.ini" LOG_FILE = "log.log" ENCODING = "mbcs" if sys.platform == "win32" else "utf-8" DEBUG = False
.ini
file that will be managed..ini
file.
This script converts your src/icons/icon.png
file into icon formats suitable for Windows and macOS.
Usage:
src/icons/icon.png
../iconset.sh
This script compiles the configurator for macOS. Usage: Run the script:
./build.sh
The compiled macOS .app
file will be created in the dist/macos
directory.
To compile the .exe
file for Windows:
git add . git commit -m "Customize fields.json and constants" git push origin dev
.exe
file. It uses the build.yml
workflow in the .github/workflows/
directory..exe
or .app
files to ensure everything works as expected.
If you encounter issues during development, set DEBUG = True
in src/configurator.py
. This enables logging of additional details to help troubleshoot problems.
self.resource_directory
constant in src/configurator.py
to access files dynamically.By following this guide, you can easily set up, customize, and build your own version of the INI Configurator. Enjoy creating your custom configuration editor!
Once you’ve finished customizing and testing your configurator, follow these steps to create a release version:
git checkout stable git pull origin stable
git tag v1.0.0 git push origin v1.0.0
v1.0.0
with your desired version number following semantic versioning conventions (e.g., v1.1.0
, v2.0.0
).
The push of a version tag (e.g., v1.0.0
) to the stable branch will automatically trigger the GitHub Actions workflow for creating a release. This workflow will:
v1.0.0
).Configurator.exe
for Windows and Configurator.app
for macOS).By following these steps, you’ll ensure a smooth release process and maintain a clear separation between development and production code.
Having trouble getting INI Configurator working in your project? You can try emailing support@laswitchtech.com.
Found a problem with INI Configurator? Feel free to open a ticket on the INI Configurator repository on GitHub, but you should keep a few things in mind:
src/lib/fields.json
.New feature requests are usually requested by the INI Configurator community on GitHub, and are often fulfilled by fellow contributors.
Type | Value | Options | Description | Example |
---|---|---|---|---|
static | None | None | This field type is only used to display static text such as instructions. | "static": { "label": "Static", "tooltip": "This is a static field", "type": "static", "default": "Lorem Ipsum is simply dummy text.", "required": true } |
text | String | None | This field type is a regular text input. This is also the default field type if the type used does not exist. | "text": { "label": "Text", "tooltip": "This is a text field", "type": "text", "default": "My default value", "required": true } |
password | String | None | This field type is a regular text input that will hide the text by displaying * . | "password": { "label": "Password", "tooltip": "This is a password field", "type": "password", "default": "MyPassword", "required": true } |
number | Integer | None or Object(Keys: min, max) | This field type is a number input. | "number": { "label": "Number", "tooltip": "This is a number field", "type": "number", "default": 1234, "options": { "min": 0, "max": 2000 }, "required": true } |
raw | String/None | None | This field type is used to output a particular string in the configuration file. When checked, the default value is added in the related section of the .ini file. | "raw": { "label": "Raw", "tooltip": "This is a raw field", "type": "raw", "default": "string", "required": false } |
checkbox | Boolean | None | This field type is a regular checkbox. | "checkbox": { "label": "Checkbox", "tooltip": "This is a checkbox field", "type": "checkbox", "default": false, "required": true } |
path | String | None | This field type can be used to retrieve paths. You may edit the text input or press the … button to select a path. | "path": { "label": "Path", "tooltip": "This is a path field", "type": "path", "default": "path/", "required": true } |
select | String | Array(Possible Values) | This field type is a regular select input. | "select": { "label": "Select", "tooltip": "This is a select field", "type": "select", "default": "Option 2", "options": [ "Option 1", "Option 2", "Option 3" ], "required": true } |
multi-select | String | Array(Possible Values) | This field type is a multi-select input. It is used to allow the selection of multiple preset values. The selected values will be converted to CSV | "multi-select": { "label": "Multi-Select", "tooltip": "This is a multi-select field", "type": "multi-select", "default": "Option 1,Option 3", "options": [ "Option 1", "Option 2", "Option 3" ], "required": true } |
range | Integer | None or Object(Keys: min, max) | This field type is a range input. | "range": { "label": "Range", "tooltip": "This is a range field", "type": "range", "default": 50, "options": { "min": 0, "max": 100 }, "required": true } |
filesize | String | None or Object(Keys: min, max) | This field type is a range input. But it will convert the number of bytes to a human-readable format. | "filesize": { "label": "FileSize", "tooltip": "This is a filesize field", "type": "filesize", "default": 67108864, "options": { "min": 1048576, "max": 134217728 }, "required": true } |