Le système de préférences géré par le Global Settings (res://autoloads/settings.gd) intègre la gestion du thème qui définit les différents éléments d’affichage.
Les paramètres sont définis par le script res:data_definition/settings_preset.gd et les paramètres par défaut sont stockés dans res:data/settings/settings_default.tres.
Les icônes sont définies dans la sous section GuiIcons, dans la section Theme dédiée au thème dans les presets (ceux par défault créé à l’origine sont créés à partir de la Resource SettingsPreset situé à res://data/settings/settings_default.tres
Les éléments à indiquer sont:
Avec ces informations, le Global GuiMedia(res://autoloads/gui_media.gd) va aller chercher dans le fichier les appels qui lui sont faits depuis le code pour indiquer la bonne icône d’interface pour le thème choisi.
L’ordre dans lequel les icônes sont disposées est crucial, car le système ira les chercher dans l’ordre indiqué par l’enum GuiMedia.Icon. C’est ce qui permet pour les appels depuis les nodes Control de simplement écrire :
Button.icon = GuiMedia.get_gui_icon(GuiIcon.Icon.GO_LEFT)
pour obtenir la flêche indiquant vers la gauche.
La police par défaut est NotoSans, pour permettre l’affichage aisée d’un maximum de langues. Seuls les éléments de Display sont en police khaganat.ttf (en cours de développement par Yann).
Comme il s’agit d’une police variable, pour diférencier l’engraissement et la largeur des diférentes polices dérivées (enregistrées en .tres dans res://data/gui/fonts), voici les correspondances utilisées dans les variations définies pour NotoSans:
Les différentes Theme Properties des éléments ne sont pas toujours simples à visualiser/comprendre. Donc quelques notes pour aider à faire la grille de correspondance entre les Settings et le thème Godot en arrière-plan (réalisé dans res:autoloads/settings.gd avec la méthode apply_theme_settings() depuis le dictionnaire qu’elle contient color_attribution_list.
On peut épingler une des StyleBox qui sera alors parente de toutes les autres : Cf.Documentation Godot.