# Seletor

> Opções registradas sobre um ponto, como teclas ou como lista, mostrando em qual delas a planta realmente está.

**Seletor** oferece ao operador um conjunto fechado de escolhas registradas, um modo de
operação, uma receita, um degrau de velocidade, sobre um ponto escrevível. Escolher uma
escreve o valor daquela opção; o mesmo ponto lido de volta é o que acende a opção ativa. Essa
leitura de volta é a razão inteira de o tipo existir: uma fileira de [Botões](component-button)
cada um escrevendo um valor fixo escreve igualmente bem e não mostra nada. É um componente de
*Controle*; um novo ocupa 5 × 1 células.

## Dados {#data}

| Campo | O que ele faz | Valores | Padrão |
|---|---|---|---|
| Endereço | O endereço com raiz, na Logic, em que a escolha é escrita e de onde ela é lida de volta: uma variável de memória ou uma tag escrevível. A lista é estreitada para pontos que podem mesmo ser escritos. | Texto livre; sugestões de pontos escrevíveis | vazio |

## Opções {#options}

| Campo | O que ele faz | Valores | Padrão |
|---|---|---|---|
| Mostra | Como as opções são oferecidas: uma tecla por opção, lado a lado, toda escolha legível de uma vez, ou uma lista que abre sob demanda, para uma célula sem espaço para uma fileira de teclas. | `Uma tecla por opção` · `Uma lista que abre` | `Uma tecla por opção` |

Cada opção é um cartão com as duas coisas que uma opção *é*:

| Campo | O que ele faz | Valores | Padrão |
|---|---|---|---|
| texto | A palavra que o operador lê na tecla ou na lista. Em branco recai no próprio valor, porque uma tecla sem nada escrito não diz nada. | Texto livre | vazio |
| valor | O valor escrito quando esta opção é escolhida, e a leitura que a mostra ativa. É um código, casado exatamente: o que fica entre dois códigos não é uma escolha. | Qualquer número | vazio (não declara nada até ser digitado) |

A ordem dos cartões é a ordem das teclas sob a mão do operador: as setas de mover para cima e
para baixo reordenam; nada aqui se ordena sozinho. Duas opções que nomeiam o mesmo valor não
podem desenhar as duas uma tecla (o ponto poderia relatar só uma delas, e o controle não teria
como dizer qual); o painel diz isso e a duplicata não desenha nada.

Todas as teclas compartilham um tamanho de texto só, reservado a partir da palavra registrada
mais larga, para que a fileira se leia como um controle só, e não como uma fileira de teclas
sem relação. Um Seletor sem opções diz "Nenhuma opção registrada." em vez de desenhar uma
fileira vazia que parece uma tela ainda carregando.

## O que acende, e quando {#what-lights-and-when}

A tecla acesa (ou a seleção da lista) é a própria leitura do ponto, nunca o clique:

| Situação | O controle mostra |
|---|---|
| O ponto relata um valor registrado | Aquela opção acesa, ou selecionada na lista |
| O ponto relata um valor que opção nenhuma registra | Nada aceso: a tecla mais próxima acendendo seria a tela inventando o modo da planta |
| O ponto não está lendo | Nada aceso, e o componente ganha a marca compartilhada de leitura ruim |

Uma escolha não pede leitura nenhuma antes, porque a opção carrega um valor absoluto, então a
qualidade ruim deixa o controle *usável* e apenas tira a indicação.

## Semântica da escrita {#write-semantics}

Escolher uma opção escreve o valor dela pelo funil único da lógica da estação, sob a mesma
autorização por que todo comando passa. Um ponto que não pode guardar um número recusa a
escrita com a razão na linha de resposta do controle ("Este ponto guarda data e hora, então 2 não é
um valor que ele aceita."); uma escolha bem-sucedida responde com a palavra da opção
("Escreveu Automático"). A linha de resposta expira depois de alguns segundos, e a autorização
é reconferida a cada escolha. Onde as opções aparecem como teclas, numa célula sem espaço para
essa linha e sem título de canto sobre a fileira, a resposta toma a palavra da tecla que foi
pressionada enquanto aparece, uma recusa na tinta de erro. A tecla guarda a largura, então o que
ela não comporta termina em reticências, com a resposta inteira na dica; nenhuma tecla se move,
e a palavra volta quando a resposta expira.
Onde as opções aparecem como lista, a resposta toma do mesmo jeito o lugar do que a lista
fechada mostra: a lista guarda a largura e a seta, e o que ela mostrava volta quando a resposta
expira.

Sobre uma tag com o estágio **Limites** habilitado, uma opção cujo valor fica fora desses
limites é recusada do mesmo jeito, com uma razão que nomeia esses limites, e nada
é escrito: tomada na borda, ela poria a planta em outra opção que não a escolhida, e a linha
confirmaria a escolhida.

Sobre um ponto que guarda inteiros (uma tag de tipo inteiro cuja Escala e Calibração deixam o valor como está, ou uma variável de memória que guarda inteiros), uma opção cujo valor tem fração é recusada do mesmo jeito em vez de arredondada ("Este ponto aceita um inteiro, então 2.5 não é escrito nele."), e nada é escrito.

## Permissões e a trava {#permissions-and-the-lock}

Operar o Seletor exige a permissão do papel para operar dashboards. Um toque bloqueado
desabilita as teclas e desenha a marca de trava compartilhada com a razão na dica do
componente (veja a [página de dashboards](home)).

As seções compartilhadas Aparência, Identificação, Posição e camada e Ações estão descritas na
[página de componentes](components#the-shared-property-sections).
