<?xml version='1.0' encoding='UTF-8'?>
<elementos_gw>
  <documento>
    <id>923</id>
    <autor>5</autor>
    <nome>menu.ahk</nome>
    <nome_facil>menu ahk</nome_facil>
    <criacao>2010-12-31 15:41:12</criacao>
    <alteracao>2010-12-31 15:43:32</alteracao>
    <texto>{{{
;
; Sistema de reconhecimento de fala. Idioma português brasileiro.
; Mostra um menu de opções e cola o resultado no aplicativo em uso.
; Feito para windows (testado no Windows Vista). Licença: Domínio público.
; (c) 2010 Sony Fermino dos Santos - http://gigawiki.com/sony/
; Fornecido sem quaisquer garantias. Use por sua conta e risco.
; Veja instruções de uso em http://gigawiki.com/sony/reconhecimento-de-fala
;
; Parte destes comentários foi redigida verbalmente com este programa.

;NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

; pega opções da linha de comando e as mostra no menu
num_op = %0%

loop, %num_op%
{
  opcoes%a_index% := %A_Index%
}

mostra_menu(1, num_op, &quot;opcoes&quot;)
return

mostra_menu(local_etapa, num_op, opcoes) {
  global etapa := local_etapa
  etapa1 := &quot;a frase&quot;
  etapa2 := &quot;a pontuação&quot;

  texto := &quot;Escolha &quot; . etapa%etapa%

  ; Cria um listview com botões de cancelar e ok
  Gui, Add, ListView, r%num_op% gMyListView altsubmit, %texto%
  Gui, Add, Button, gCancel, Cancelar
  Gui, Add, Button, Default gOk x+20 wp+0, OK

  ; Adiciona as opçoes ao listview
  loop, %num_op%
  {
    LV_add(&quot;&quot;, %opcoes%%a_index%)
  }

  ; seleciona a 1ª opção
  LV_modify(1, &quot;Select&quot;)
  LV_modify(1, &quot;Focus&quot;)

  ; mostra o listview
  Gui, Show,, Reconhecimento de fala
  return
}

MyListView:
  if (A_GuiEvent = &quot;DoubleClick&quot; or A_guievent = &quot;Normal&quot;)
  {
    ; pega o número da linha selecionada
    linha := A_EventInfo
    goto fim_etapa%etapa%
  }
  return

Ok:
  ; pega o número da linha selecionada
  linha := lv_getnext()
  goto fim_etapa%etapa%

fim_etapa1:
  ; pega o texto da linha selecionada
  LV_GetText(result, linha)
  ; fecha o menu
  gui, destroy

  ; deixa a primeira letra maiúscula, em ucfirst
  first := substr(result, 1, 1)
  stringupper first, first
  ucfirst := first . substr(result, 2)

  ; opções de pontuação
  pontos := &quot; .,;:!?&quot;
  l := strlen(pontos)
  l2 := l * 2
  pt2 := pontos . pontos
  ; as primeiras opções são do result
  entrada := result
  loop, %l2%
  {
    p := substr(pt2, a_index, 1)
    if (p = &quot; &quot;)
    {
      p =
    }
    pontuacoes%a_index% := entrada . p

    ; depois das opções do result vêm as do ucfirst (inicial maiúscula)
    if (a_index = l)
    {
      entrada := ucfirst
    }
  }
  mostra_menu(2, l2, &quot;pontuacoes&quot;)
  return

fim_etapa2:
  ; pega o texto da linha selecionada
  LV_GetText(result, linha)
  ; fecha o menu
  gui, destroy
  ; e envia o texto selecionado para aplicação corrente, junto com o espaço
  sendraw %result%
  send {space}
  ; termina
  exitapp

Cancel:
GuiEscape:
GuiClose:
  ; se cancelou na pontuação, oferece outra frase
  if (etapa = 2)
  {
    gui, destroy
    mostra_menu(1, num_op, &quot;opcoes&quot;)
    return
  }
  ; senão, termina
  ExitApp
}}}
</texto>
    <publico>1</publico>
    <original>0</original>
    <anterior>0</anterior>
    <versao>0</versao>
    <traducao>0</traducao>
    <propriedade>
      <nome>categ</nome>
      <valor>script</valor>
      <publico>1</publico>
    </propriedade>
    <propriedade>
      <nome>linguagem</nome>
      <valor>autohotkey</valor>
      <publico>1</publico>
    </propriedade>
    <propriedade>
      <nome>sistema</nome>
      <valor>windows</valor>
      <publico>1</publico>
    </propriedade>
    <propriedade>
      <nome>projeto</nome>
      <valor>Reconhecimento de fala</valor>
      <publico>1</publico>
    </propriedade>
  </documento>
</elementos_gw>
