Phase 3 of the Wine/Proton stage (decisions 6, 9, 13, 19 in docs/testing/wine-proton.md): a global-only Wine tab modeled on the Pronunciation page, with the controller-only checkbox and a typed editable program list. Wine values flow through the preferences protocol so a global Apply reaches the live Wine settings from Phase 2 with no reader restart. Entries are validated as edited and named in-tab, blocking Apply until fixed; case-insensitive duplicates collapse. Per-application preferences expose no Wine editing and an app-scoped Apply cannot change the governing list.
42 lines
1.3 KiB
Go
42 lines
1.3 KiB
Go
// Copyright (c) 2026 Storm Dragon
|
|
// Authors: Storm Dragon, Angus Kola
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
package preferences
|
|
|
|
import (
|
|
"git.stormux.org/storm/cthulhu/internal/braille"
|
|
"git.stormux.org/storm/cthulhu/internal/config"
|
|
"git.stormux.org/storm/cthulhu/internal/input"
|
|
"git.stormux.org/storm/cthulhu/internal/speech"
|
|
)
|
|
|
|
// uiSession lives for one helper window. Only the locked GTK thread in Run
|
|
// accesses these fields; pipe readers deliver immutable responses by channel.
|
|
type uiSession struct {
|
|
extensionPages []ExtensionPage
|
|
progressBar config.ProgressBarSettings
|
|
wine config.WineSettings
|
|
wineEditable bool
|
|
catalog speech.Catalog
|
|
speechDefaults speech.Settings
|
|
contractionTables []braille.TableOption
|
|
soundThemes []string
|
|
echoModules []string
|
|
echoFamilies []*config.VoiceFamily
|
|
activeEchoModule string
|
|
speechModules []string
|
|
speechLanguages []string
|
|
speechFamilies []*config.VoiceFamily
|
|
activeSpeechSystem int
|
|
softwareModule string
|
|
hardwareModule string
|
|
activeSpeechModule string
|
|
activeSpeechLanguage string
|
|
voiceDrafts [4]config.Voice
|
|
activeVoiceType int
|
|
bindingDraft []input.BindingOverride
|
|
bindingRows []input.BindingRow
|
|
bindingLayout int
|
|
}
|