From 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 Mon Sep 17 00:00:00 2001 From: AlexanderCurl Date: Sat, 18 Apr 2026 17:46:06 +0100 Subject: Replaced file structures for themes in the correct format --- .../core/internal/keybinds/registry.go | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go') diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go new file mode 100644 index 0000000..d726838 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go @@ -0,0 +1,79 @@ +package keybinds + +import ( + "fmt" + "sync" +) + +type Registry struct { + mu sync.RWMutex + providers map[string]Provider +} + +func NewRegistry() *Registry { + return &Registry{ + providers: make(map[string]Provider), + } +} + +func (r *Registry) Register(provider Provider) error { + if provider == nil { + return fmt.Errorf("cannot register nil provider") + } + + name := provider.Name() + if name == "" { + return fmt.Errorf("provider name cannot be empty") + } + + r.mu.Lock() + defer r.mu.Unlock() + + if _, exists := r.providers[name]; exists { + return fmt.Errorf("provider %q already registered", name) + } + + r.providers[name] = provider + return nil +} + +func (r *Registry) Get(name string) (Provider, error) { + r.mu.RLock() + defer r.mu.RUnlock() + + provider, exists := r.providers[name] + if !exists { + return nil, fmt.Errorf("provider %q not found", name) + } + + return provider, nil +} + +func (r *Registry) List() []string { + r.mu.RLock() + defer r.mu.RUnlock() + + names := make([]string, 0, len(r.providers)) + for name := range r.providers { + names = append(names, name) + } + return names +} + +var defaultRegistry = NewRegistry() + +func GetDefaultRegistry() *Registry { + return defaultRegistry +} + +func Register(provider Provider) error { + return defaultRegistry.Register(provider) +} + +func Get(name string) (Provider, error) { + return defaultRegistry.Get(name) +} + +func List() []string { + return defaultRegistry.List() +} -- cgit v1.3