Janelas secundárias que aparecem sobre primárias, pais
Allan Day
aday@gnome.org
Calum Benson
Adam Elman
Seth Nickell
Colin Robertson
Georges Neto
georges.stavracas@gmail.com 2014,
Rafael Fontenelle
rafaelff@gnome.org 2017-2019

# Janelas de diálogo

As janelas de diálogo são janelas secundárias que aparecem sobre uma janela principal, pai. Elas são usadas para apresentar informações ou controles adicionais, incluindo preferências e propriedades, ou para apresentar mensagens ou perguntas.

GTK provides a number of stock dialogs that can be used, such as for printing or color selection.

Há três tipos básicos de diálogos.

# Quando usar

Os diálogos são um padrão de design comumente reconhecido, e há convenções estabelecidas para os diferentes tipos de diálogo que você pode querer usar. As diretrizes sobre cada tipo de diálogo fornecem informações adicionais sobre isso.

Embora os diálogos possam ser uma maneira eficaz de divulgar controles ou informações adicionais, eles também podem ser uma fonte de interrupção para o usuário. Por esse motivo, sempre pergunte se é necessária uma caixa de diálogo e trabalhe para evitar as situações em que são necessárias.

Há muitas formas de evitar o uso de diálogos:

Use a composição em linha para novas mensagens, registros ou contatos.

As notificações no aplicativo são uma alternativa para diálogos de mensagens.

Janelas sobrepostas podem ser uma maneira de exibir controles ou opções adicionais de forma menos perigosa.

# Diálogos de mensagem

Diálogos de mensagens são o tipo de diálogo mais simples. Eles apresentam uma mensagem ou pergunta, juntamente com 1-3 botões para responder. Eles são sempre modais, o que significa que impedem o acesso a sua janela pai. Diálogos de mensagens são uma escolha apropriada quando é essencial que o usuário veja e responda a uma mensagem.

## Exemplos

As caixas de diálogo de confirmação usam uma caixa de diálogo de mensagem para verificar – ou confirmar – que o usuário deseja realizar uma ação. Eles têm dois botões: um para confirmar que a ação deve ser realizada e uma para cancelar a ação.

As caixas de diálogo de confirmação geralmente serão reconhecidas acidentalmente ou automaticamente, e nem sempre evitarão erros. Muitas vezes, é melhor fornecer funcionalidades de desfazer.

As caixas de diálogos de erro apresentam uma mensagem de erro para o usuário. Eles geralmente incluem um único botão que permite ao usuário reconhecer e fechar a caixa de diálogo.

As caixas de diálogos de erros geralmente devem ser um último recurso. Você deve projetar seu aplicativo para que os erros não ocorram e se recuperar automaticamente se algo der errado.

# Caixas de diálogos de ação

As caixas de diálogos de ação apresentam opções e informações sobre uma ação específica antes de serem realizadas. Elas têm um título (que geralmente descreve a ação) e dois botões principais – um que permite que a ação seja realizada e uma que a cancele.

Às vezes, o usuário pode ser obrigado a escolher opções antes de uma ação pode ser realizada. Nesses casos, o botão de diálogo afirmativo deve ser insensível até que as opções necessárias tenham sido selecionadas.

## Exemplos

Many of the stock GTK dialogs are action dialogs. The print dialog is a good example: it is displayed in response to the user using the print action, and presents information and options for that print action. The two header bar buttons allow the print action to either be cancelled or carried out.

# Diálogos de apresentação

Diálogos de apresentação apresentam informações ou controles. Como diálogos de ação, eles têm uma barra de cabeçalho e um assunto. No entanto, em vez de prefixar uma ação, seu conteúdo se relaciona com um aplicativo ou item de conteúdo.

## Exemplos

As preferências e as propriedades são exemplos de diálogos de apresentação e ambos apresentam informações e configurações em relação a uma entidade específica (um aplicativo ou um item de conteúdo). Os diálogos de propriedades são um bom exemplo de como os diálogos podem ser usados para divulgar informações adicionais que nem sempre são necessárias na janela principal do aplicativo.

Resista à tentação de fornecer uma janela de preferências para seu aplicativo. Sempre se pergunte se as configurações adicionais são realmente necessárias. A maioria das pessoas não se incomodará em investigar as preferências que você fornece e as opções de configuração contribuirão para a complexidade de sua aplicação. Faça um esforço para garantir que o seu design de aplicação funcione para todos sem a necessidade de alterar suas configurações.

## Aplicação instantânea e explícita

Diálogos de apresentação são aplicados de forma instantânea ou explícita. Em diálogos de aplicação instantânea, mudanças em configurações ou valores são atualizadas imediatamente. Em contraste, os diálogos de aplicação explícita incluem um botão para aplicar as mudanças.

A aplicação instantânea deve ser usada sempre que possível. Diálogos de apresentação de aplicação instantânea têm um botão de fechar na barra de título, como uma janela primária.

A aplicação explícita só é necessária se as mudanças no diálogo tiverem que ser aplicadas simultaneamente para ter o comportamento desejado. Os diálogos de aplicação explícita incluem botões Done e Cancel (Cancel redefine todos os valores no diálogo para o estado antes de ser aberto e Done aplica todas as alterações e fecha a janela).

# Botões primários

Diálogos de mensagens e ações incluem botões primários que afetam toda a janela. A ordem desses botões, bem como os rótulos utilizados, são uma parte fundamental da caixa de diálogo.

## Ordem

Quando um diálogo inclui um botão afirmativo e de cancelamento, certifique-se sempre de que o botão de cancelamento aparece primeiro, antes do botão afirmativo. Nas localidades da esquerda para a direita, esta está à esquerda.

Esta ordem de botão garante que os usuários se conscientizem, e sejam lembrados, da capacidade de cancelar antes de encontrar o botão afirmativo.

## Rótulos

Rotule o botão primário afirmativo com um verbo imperativo específico, por exemplo: Save, Print, Remove. Isso é mais claro que um rótulo genérico como OK ou Done.

Os diálogos de erros geralmente incluem um único botão que descarta o diálogo. Neste caso, uma ação específica não precisa ser referenciada, e esta pode ser uma boa oportunidade para usar o humor. Apology Accepted ou Got It são exemplos de bons rótulos.

## Ação e escape padrão

Atribua a tecla Enter para ativar o botão afirmativo primário em um diálogo (por exemplo, Print em um diálogo de impressão). Isso é chamado de ação padrão, e é indicado por um estilo visual diferente. Não faça um botão como padrão se sua ação for irreversível, destrutiva ou inconveniente para o usuário. Se não houver um botão apropriado para designar como o botão padrão, não configure um.

Você também deve se certificar de que a tecla Esc ative o botão de cancelar ou fechar, caso algum deles esteja presente. Diálogos de mensagens com um único botão podem ter Esc e Enter vinculados ao botão.

Vincular Enter e Esc desta maneira fornece uma forma previsível e conveniente de continuar através de um diálogo, ou para voltar.

# Diretrizes gerais

As janelas de diálogo nunca devem aparecer de forma inesperada, e só devem ser exibidas em resposta imediata a uma ação deliberada do usuário.

Diálogos devem sempre ter uma janela pai.

Siga as diretrizes de layout visual ao projetar o conteúdo das janelas.

Use alternadores de visão ou abas para quebrar controles e informações.

Evite empilhar janelas de diálogo uma em cima da outra. Apenas uma janela de diálogo deve ser exibida de cada vez.

Ao abrir um diálogo, forneça o foco inicial do teclado ao componente que você espera que os usuários operem primeiro. Este foco é especialmente importante para os usuários que devem usar um teclado para navegar no seu aplicativo.

# Referência de API

GtkAboutDialog

GtkDialog

GtkMessageDialog