- Gerar link
- X
- Outros aplicativos
Postagem em destaque
- Gerar link
- X
- Outros aplicativos
Programação orientada a objetos e que também é reconhecida pela sigla POO, é um modelo de programação de sistemas de software baseado na composição e interação entre diversas unidades. O Shell não possui suporte a este tipo de modelagem, pois a base de sua programação é realizada entre PIPES '|', ou seja, os comandos são empilhados para tratamento da saída do comando que o antecede. Mas isso não significa que não podemos simular uma.
A simulação será aplicada em cima de um comando, onde irei transformar seus parâmetros em métodos e seus argumentos em propriedades.
O comando escolhido para essa experiência foi o yad, que é uma ferramenta via linha de comando que permite ao usuário criar interfaces gráficas (GUI) em GTK e implementar em seu script.
Mantive a nomenclatura original dos parâmetros.
Antes de começar vou mostrar a forma convencional do comando na passagem dos parâmetros.
Criando uma janela simples com o título 'Minha janela'.
Imagine que eu precise adicionar um texto ao corpo da janela. Para isso preciso digitar novamente a linha de comando inserindo o parâmetro '--text'.
Digamos que ao invés de dois botões (Cancelar e OK) eu precise de um único botão de configurações. Basta usar o parâmetro '--button' para inserir o botão desejado.
Claro que não vou abordar todos os parâmetros do yad aqui; é simplesmente para lhe dar uma noção de como ele funciona.
Você pode perceber que quanto mais trabalhada é a janela, maior será sua linha de comando. Quando se está trabalhando com yad, na maioria dos casos o uso da barra invertida '\' para quebra de linha é indispensável.
Bom, agora que você tem uma pequena noção do que é o o comando yad, vamos partir para aplicação da orientação a objeto. Criei uma biblioteca em shell puro chamada dê wyad.sh, onde as "classes" estão declaradas com um conjunto de funções que simulam os "mêtodos" e "propriedades" da mesma.
Para começar, precisamos importar nossa 'biblioteca' usando o comando source ou executando normalmente.
(O código-fonte do wyad.sh está disponível no final da postagem).
Importando
Uma vez importada, todas as 'classes' ficaram disponíveis.
Agora precisamos instanciar nossa 'classe'.
Sintaxe
Vou criar uma 'classe' do tipo 'form' e com o nome 'janela'.
Agora vamos criar nossa janela definindo os valores de suas propriedades.
Para exibir a janela basta chamar o método 'show'
Talvez você deve estar pensando.
- Qual a vantagem nisso ?
Lembra que anteriormente sempre que realiza uma alteração na janela, tinha que digitar tudo de novo ? Então, agora eu só preciso atuar em cima da propriedade que desejo.
Exemplo
Imagine que preciso alterar o texto no corpo da janela. Agora basta alterar somente o valor da propriedade 'text' e reexibir a janela.
Alterando valor
Você também pode obter o valor de uma propriedade; basta digitar somente o nome da classe seguido da propriedade que deseja.
Ou se quiser, pode armazenar o valor em uma variável.
Para deletar uma classe criada:
ou
Para visualizar ou baixar o código-fonte do wyad.sh clique aqui.
Jamais se esqueçam, a beleza e a mágica do Shell está nos PIPES.
Bom, espero que você tenham curtido e explore os métodos das outras classes. E se por intermédio dessa postagem vier a oportunidade de estudar e se aprofundar no comando yad, não pensem duas vezes.
A simulação será aplicada em cima de um comando, onde irei transformar seus parâmetros em métodos e seus argumentos em propriedades.
O comando escolhido para essa experiência foi o yad, que é uma ferramenta via linha de comando que permite ao usuário criar interfaces gráficas (GUI) em GTK e implementar em seu script.
Classe | Métodos e propriedades |
---|---|
calendar | day, month, year, details, date_format |
general | title, window_icon, width, height, geometry, timeout, timeout_indicator, text, text_align, image, image_on_top, icon_theme, expander, button, no_buttons, buttons_layout, no_markup, borders, always_print_result, selectable_labels, sticky, fixed, on_top, center, mouse, undecorated, skip_taskbar, maximized, fullscreen, plug, tabnum, kill_parent, print_xid, image_path |
color | color, init_color, palette, extra |
dnd | tooltip, command |
entry | entry_label, entry_text, hide_text, completion, numeric, editable, licon, licon_action, ricon, ricon_action |
file | filename, multiple, directory, save, separator, confirm_overwrite, file_filter, add_preview, quoted_output |
font | fontname, preview |
form | field, align, columns, separator, item_separator, date_format, scroll, quoted_output |
icons | read_dir, compact, generic, listen, item_width, term, sort_by_name, descend, single_click |
list | no_headers, column, checklist, radiolist, no_click, separator, multiple, editable, print_all, ellipsize, print_column, hide_column, expand_column, search_column, tooltip_column, limit, dclick_action, regex_search, listen, quoted_output |
multi_progress | bar, vertical, align, auto_close, auto_kill |
notebook | key, tab, tab_pos, tab_borders |
notification | command, listen, separator, item_separator, menu, no_middle, hidden |
filename, type, headers, print_add_preview, fontname | |
progress | progress_text, percentage, pulsate, auto_close, auto_kill, rtl, enable_log, log_expanded, log_on_top, log_height |
scale | value, min_value, max_value, step, page, print_partial, hide_value, vertical, invert, mark |
text | fore, back, fontname, wrap, justify, margins, tail, filename, editable, show_uri, listen |
Antes de começar vou mostrar a forma convencional do comando na passagem dos parâmetros.
Criando uma janela simples com o título 'Minha janela'.
$ yad --form --title 'Minha janela'
Foi exibido uma janela com o título 'Minha Janela', contendo os botões padrões (OK e Cancelar). |
Imagine que eu precise adicionar um texto ao corpo da janela. Para isso preciso digitar novamente a linha de comando inserindo o parâmetro '--text'.
$ yad --form --title 'Minha janela' --text 'Esse é o texto da minha janela.'
O texto foi inserido no top do formulário principal. |
Digamos que ao invés de dois botões (Cancelar e OK) eu precise de um único botão de configurações. Basta usar o parâmetro '--button' para inserir o botão desejado.
$ yad --form --title 'Minha janela' --text 'Esse é o texto da minha janela.'--button 'Configurações'
Os dois botões que haviam foram substituídos por um único botão de 'configurações', a nossa janela começa a ganhar vida e ao mesmo tempo sua linha de comando comprimento. |
Claro que não vou abordar todos os parâmetros do yad aqui; é simplesmente para lhe dar uma noção de como ele funciona.
Você pode perceber que quanto mais trabalhada é a janela, maior será sua linha de comando. Quando se está trabalhando com yad, na maioria dos casos o uso da barra invertida '\' para quebra de linha é indispensável.
Bom, agora que você tem uma pequena noção do que é o o comando yad, vamos partir para aplicação da orientação a objeto. Criei uma biblioteca em shell puro chamada dê wyad.sh, onde as "classes" estão declaradas com um conjunto de funções que simulam os "mêtodos" e "propriedades" da mesma.
Para começar, precisamos importar nossa 'biblioteca' usando o comando source ou executando normalmente.
(O código-fonte do wyad.sh está disponível no final da postagem).
Importando
$ source wyad.sh
Agora precisamos instanciar nossa 'classe'.
Sintaxe
$ <classe> nome_da_classe
Vou criar uma 'classe' do tipo 'form' e com o nome 'janela'.
$ form janela
Agora vamos criar nossa janela definindo os valores de suas propriedades.
$ janela.title 'Minha janela'
$ janela.text 'Texto inserido com orientação a objeto.'
$ janela.button 'Configurações'
Para exibir a janela basta chamar o método 'show'
$ janela.show
Note a forma como criei a janela, definindo os valores das propriedades um por linha. |
Ficou até parecendo uma outra linguagem. 😂😂😂
Talvez você deve estar pensando.
- Qual a vantagem nisso ?
Lembra que anteriormente sempre que realiza uma alteração na janela, tinha que digitar tudo de novo ? Então, agora eu só preciso atuar em cima da propriedade que desejo.
Exemplo
Imagine que preciso alterar o texto no corpo da janela. Agora basta alterar somente o valor da propriedade 'text' e reexibir a janela.
Alterando valor
$ janela.text 'Tem um novo texto agora.'
$ janela.show
Somente a propriedade 'text' sofreu alterações. |
Você também pode obter o valor de uma propriedade; basta digitar somente o nome da classe seguido da propriedade que deseja.
Obtendo valor.
$ janela.text
Ou se quiser, pode armazenar o valor em uma variável.
$ var=$(janela.txt)
Para deletar uma classe criada:
$ janela.del
ou
$ wyad.__del__ janela
Após executar o método 'del' a classe deixa de existir. |
Para visualizar ou baixar o código-fonte do wyad.sh clique aqui.
Jamais se esqueçam, a beleza e a mágica do Shell está nos PIPES.
Bom, espero que você tenham curtido e explore os métodos das outras classes. E se por intermédio dessa postagem vier a oportunidade de estudar e se aprofundar no comando yad, não pensem duas vezes.
Comentários
Postar um comentário