Pular para o conteúdo

Preferências e tema

O que a aplicação lembra entre uma abertura e outra, na pasta certa de cada sistema — e o tema claro, escuro ou o do sistema.

Preferências#

t.pref(chave, padrão) lê; t.guardar_pref(chave, valor) grava na hora, num preferencias.json. A gravação escreve ao lado e troca o arquivo: uma aplicação fechada no meio não deixa um JSON pela metade. E um arquivo corrompido não impede a aplicação de abrir — ela volta aos padrões.

dataforge
adopt Arcane.Bigorna as B
adopt Arcane.OS as OS

pasta := $"{OS.temp_dir()}/df-doc-{randint(100000, 999999)}"
app := B.app("Notas", pasta_de_config := pasta)

action tela(t):
    tamanho := t.pref("fonte", 14)
    t.texto($"fonte {tamanho}")
    given t.botao("Aumentar"):
        t.guardar_pref("fonte", tamanho + 2)
        t.atualizar()

app.tela("t", tela)

B.testar(app).clicar("Aumentar")

// Outra execução da aplicação lê o que ficou gravado.
de_novo := B.app("Notas", pasta_de_config := pasta)
de_novo.tela("t", tela)
assert B.testar(de_novo).tem("fonte 16")

Onde elas ficam#

SistemaPasta
macOS~/Library/Application Support/<nome>
Windows%APPDATA%\<nome>
Linux$XDG_CONFIG_HOME/<nome>, ou ~/.config/<nome>
dataforge
adopt Arcane.Bigorna as B

out B.pasta_de_config("Minha Aplicação")

Tema#

dataforge
adopt Arcane.Bigorna as B

assert B.temas() is ["claro", "escuro", "sistema"]
escuro := B.app("Painel", tema := "escuro")
out escuro.tema

sistema (o padrão) deixa o Tk seguir o sistema — no macOS, o modo escuro vem sozinho. claro e escuro pintam fundo, campos, tabela e barra de status com uma paleta própria, igual nos três sistemas.