;
; 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, "opcoes")
return
mostra_menu(local_etapa, num_op, opcoes) {
global etapa := local_etapa
etapa1 := "a frase"
etapa2 := "a pontuação"
texto := "Escolha " . 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("", %opcoes%%a_index%)
}
; seleciona a 1ª opção
LV_modify(1, "Select")
LV_modify(1, "Focus")
; mostra o listview
Gui, Show,, Reconhecimento de fala
return
}
MyListView:
if (A_GuiEvent = "DoubleClick" or A_guievent = "Normal")
{
; 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 := " .,;:!?"
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 = " ")
{
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, "pontuacoes")
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, "opcoes")
return
}
; senão, termina
ExitApp