File size: 2,468 Bytes
2695555
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
"""5.2 (F4): sugestão pelo programa em uso. Só o título e o programa decidem; desligada por padrão; "parar de sugerir
neste programa" fica guardado; o cartão não pega o foco do programa onde a pessoa escreve."""
import os
import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parent))
from _util import RAIZ  # noqa: E402,F401
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
import tars_contexto as ctx  # noqa: E402

casos = [
    ("Escrever: (sem assunto) - Thunderbird", "Mail thunderbird", "email"),
    ("Nova mensagem - Gmail - Google Chrome", "Google-chrome google-chrome", "email"),
    ("Re: orçamento - Message (HTML)", "rctrl_renwnd32 OUTLOOK", "email"),
    ("Caixa de entrada - Gmail - Firefox", "Navigator firefox", None),       # lendo, não escrevendo
    ("relatorio.odt - LibreOffice Writer", "libreoffice-writer libreoffice", None),
    ("Untitled - Notepad", "Notepad notepad", None),
]
for titulo, classe, esperado in casos:
    assert ctx.sugestao(titulo, classe) == esperado, (titulo, classe, ctx.sugestao(titulo, classe))
assert ctx.programa("Mail thunderbird") == "thunderbird" and ctx.programa("") == ""
print("OK: e-mail sendo escrito sugere; caixa de entrada, editor e outros programas não")

assert not ctx.ligado(), "desligado por padrão"
ctx.ligar(True)
assert ctx.ligado()
ctx.silenciar("thunderbird")
ctx.silenciar("thunderbird")
assert ctx.silenciado("thunderbird") and not ctx.silenciado("outlook")
ctx.ligar(False)
print("OK: desligado por padrão; parar de sugerir num programa fica guardado")

from PySide6.QtCore import Qt  # noqa: E402
from PySide6.QtWidgets import QApplication, QPushButton  # noqa: E402
from tars_qt.sugestao import CartaoSugestao  # noqa: E402
app = QApplication.instance() or QApplication([])
cartao = CartaoSugestao()
sinais = []
cartao.revisar.connect(lambda: sinais.append("revisar"))
cartao.silenciar.connect(lambda: sinais.append("silenciar"))
cartao.mostrar("email")
assert cartao.isVisible() and cartao.windowFlags() & Qt.WindowDoesNotAcceptFocus
botoes = {b.text(): b for b in cartao.findChildren(QPushButton)}
botoes[ctx.tars_i18n.t("ctx.revisar")].click()
botoes[ctx.tars_i18n.t("ctx.parar")].click()
botoes[ctx.tars_i18n.t("ctx.agora_nao")].click()
assert sinais == ["revisar", "silenciar"] and not cartao.isVisible(), sinais
print("OK: o cartão não pega o foco; Revisar e Parar avisam a janela; Agora não fecha")
print("test_contexto: TUDO OK.")