VoylinsGamedevJourney / gozen

The modular video editor
https://youtube.com/@voylinsgamedevjourney
GNU General Public License v3.0
133 stars 20 forks source link

Settings menu #67

Closed voylin closed 8 months ago

voylin commented 9 months ago

New settings menu will have to be made to align with the new settings manager. This may involve some changes which will probably have to be made in the settings manager. However those changes should stick to a minimum.

Point of this is just to create a way to change settings which would be sufficient enough for the first Alpha version of GoZen

voylin commented 9 months ago

Thinking of making the settings menu a standalone application, this way people can edit their settings without opening the editor. So there would be "settings.dat" which would contain the actual settings data.

The settings menu application would contain an array like this which will help to build the UI itself. [ "Settings menu", # first array entry is the name {"setting_name": "zen_mode", "type": "bool"} ]

For things such as int values we could have a min and max variable which would be added after type. If type would be int, the settings menu would check those keys as well.

For custom modules we can create a separate folder in 'user://' a folder called 'custom_module_settings' which will go through those files. Those files will need to contain an array with the module name, category headers, and the settings together with limits (min, max)

I won't work yet on creating the system for loading custom module settings, but it should not require too much work to implement this.

This system will also be able to be used for the project settings menu. So when the Settings menu gets called with a path to a ".gozen" file, we would load the config data for the UI of project data.

voylin commented 9 months ago

Addition to what I mentioned previously:

This settings menu would be opened with an execute so the editor freezes whilst the settings menu is open and return a different exit code. 0 means no changes have been made, cancel was pressed. 1 would be returned if settings were changed and saved.

If changes were made we should change the values in the GoZen editor by using the set_*** methods so the correct signals get emited.

voylin commented 9 months ago

Been taking longer to finish this then expected. The entire system is worth working on as it has a lot of benefits, but I'll have to start limiting my work on this to keep to the road-map.

Overall the main point of struggle is the thing which makes it better than a normal settings menu, the fact that it is a separate project. Working in two separate projects to get this finished is difficult as Godot for some reason doesn't like having two projects open and being worked on at the same time.

Edit: I'll be making documentations of the startup arguments for both the editor, startup menu, and settings menu as I am starting to create a mess otherwise.

voylin commented 8 months ago

Finally finished!

The documentation for this part will be posted later, I managed to get the base system working and made it a LOT less complicated then before by just using config files. The project_settings will also need to change to the config file system, but this is something I'll work on whilst working more on the media pool and the timeline.