This feels like it will be a long chat, as the topic feels complex.
I would like to have the possibility to have a modern settings UI, mostly automatically generated (source generator) by specifying attributes on my configuration interfaces. From complete window (modern, with dark/light mode), the layout inside the window (horizontal / vertical tabs), or re-usable components which can be used in the application wherever they want (allowing flexibility for the developer). The behavior can be automatically (change the setting -> done), on confirm / close (change setting, first when window is closed or confirmed via a button is it set) with a rollback on cancel.
The settings can be UI controls like checkboxes, dropdowns, text boxes, sliders, up/down, radio buttons, and maybe more. Meaning there is a need to have attributes which describe what kind of setting it is. It should be possible to define, in a partial class, a behavior on the different controls, e.g. have something run when the user clicks a checkbox, or clicks in a textbox / leaves again etc.
The single settings are disabled (default) or hidden, depending on the attribute, if there is a constant value for it.
The settings can have errors due to validation before opening, or generate validation errors while changing.
The settings have a matching internationalization, so a key linking the "text" is needed.
Settings might have influence on each other, so one can group multiple settings together (in the UI), and enable / disable or make these visible/invisible with another setting.
I would expect a csproj for the library consumers and a source generation project, which will be provided as nuget packages like the Dapplo.Ini packages, and a csproj with an demo application which is just for development and testing.
The result should be a usable framework for a modern settings UI, which takes a way most of the work & maintenance to create the UI.
This feels like it will be a long chat, as the topic feels complex.
I would like to have the possibility to have a modern settings UI, mostly automatically generated (source generator) by specifying attributes on my configuration interfaces. From complete window (modern, with dark/light mode), the layout inside the window (horizontal / vertical tabs), or re-usable components which can be used in the application wherever they want (allowing flexibility for the developer). The behavior can be automatically (change the setting -> done), on confirm / close (change setting, first when window is closed or confirmed via a button is it set) with a rollback on cancel.
The settings can be UI controls like checkboxes, dropdowns, text boxes, sliders, up/down, radio buttons, and maybe more. Meaning there is a need to have attributes which describe what kind of setting it is. It should be possible to define, in a partial class, a behavior on the different controls, e.g. have something run when the user clicks a checkbox, or clicks in a textbox / leaves again etc.
The single settings are disabled (default) or hidden, depending on the attribute, if there is a constant value for it.
The settings can have errors due to validation before opening, or generate validation errors while changing.
The settings have a matching internationalization, so a key linking the "text" is needed.
Settings might have influence on each other, so one can group multiple settings together (in the UI), and enable / disable or make these visible/invisible with another setting.
I would expect a csproj for the library consumers and a source generation project, which will be provided as nuget packages like the Dapplo.Ini packages, and a csproj with an demo application which is just for development and testing.
The result should be a usable framework for a modern settings UI, which takes a way most of the work & maintenance to create the UI.