users  

Re: [usr] Diccionario

Santiago Bosio
Thu, 17 Nov 2005 07:18:27 -0800

El mar, 15-11-2005 a las 04:10, Cristina Castilla escribió:
> Hola, comunidad: soy profesora de lengua y me gustaríaa que mis alumnos 
> pudieran 
> registrar las palabras que le corrige el corrector ortográfico, para 
> que puedan conocer los términos que fallan normalmente y tener un 
> listado de ellos. Lo he intentado creando un "nuevo diccionario de 
> usuario", pero al añaadirlas con los errores, el programa ya no vuelve
> a reconocerlas como fallos y las admite como correctas. ¿Alguien puede
> darme alguna idea al respecto? Gracias.

Cristina:

No creo que puedas resolverlo a través de los diccionarios de usuario,
porque precisamente su utilidad es la de agregar palabras correctas, que
no están en el diccionario principal.

He escrito una pequeña macro que te permitirá extraer el listado de
palabras incorrectas en un documento aparte. Debieras guardarla, y
ejecutarla sobre los documentos Writer antes de empezar a corregirlos.

Pego el código a continuación:

'-- Copiar desde aquí
REM  *****  BASIC  *****

Sub ListarPalabrasIncorrectas

        Dim oDocModel as Variant
        Dim oTextCursor as Variant
        Dim oLinguSvcMgr as Variant
        Dim oSpellChk as Variant
        Dim oListDocFrame as Variant
        Dim oListDocModel as Variant
        Dim sListaPalabras as String
        Dim aProp(0) As New com.sun.star.beans.PropertyValue

        ' Obtener acceso al documento actual
        oDocModel = StarDesktop.CurrentFrame.Controller.getModel()
        If IsNull(oDocModel) Then
                MsgBox("No hay ningún documento activo." + Chr(13) + _
                       "Abra un documento de Writer antes de activar esta 
macro.")
                Exit Sub
        End If

        ' Verificar que este sea un documento de texto
        If Not HasUnoInterfaces (oDocModel, "com.sun.star.text.XTextDocument") 
Then
                MsgBox("Este documento no soporta la interfaz 'XTextDocument'." 
+ Chr(13) + _
                       "Utilice esta macro únicamente con documentos de 
Writer.")
                Exit Sub
        End If

        ' Obtener un cursor de texto y posicionarlo al principio del documento
        oTextCursor = oDocModel.Text.createTextCursor()
        oTextCursor.gotoStart(False)

        ' Obtener una referencia al corrector ortográfico o morir en el intento
        oLinguSvcMgr = 
createUnoService("com.sun.star.linguistic2.LinguServiceManager")
        If Not IsNull(oLinguSvcMgr) Then
                oSpellChk = oLinguSvcMgr.getSpellChecker()
        End If
        If IsNull (oSpellChk) Then
                MsgBox("No se pudo acceder a un corrector ortográfico." + 
Chr(13) + _
                       "Verifique las opciones de lingüística de su 
instalación.")
                Exit Sub
        End If
        
        ' Iterar sobre todas las palabras que contiene el documento
        Do
                If oTextCursor.isStartOfWord() Then
                        oTextCursor.gotoEndOfWord(True)
                        ' Verificar si la palabra está bien escrita
                        If Not oSpellChk.isValid(oTextCursor.getString(), 
oTextCursor.getPropertyValue("CharLocale"), aProp()) Then
                                sListaPalabras = sListaPalabras + 
oTextCursor.getString() + Chr(13)
                        End If
                        oTextCursor.collapseToEnd()
                End If
        Loop While oTextCursor.gotoNextWord(False)
        
        If Len(sListaPalabras) = 0 Then
                MsgBox("No hay errores ortográficos en el documento.")
                Exit Sub
        End If

        ' Buscar el frame que contiene la lista (o crearlo)
        oListDocFrame = StarDesktop.findFrame("fListarPalabrasIncorrectas", 
com.sun.star.frame.FrameSearchFlag.ALL)
        If IsNull(oListDocFrame) Then
                oListDocModel = 
StarDesktop.loadComponentFromURL("private:factory/swriter", 
"fListarPalabrasIncorrectas", com.sun.star.frame.FrameSearchFlag.CREATE, 
aProp())
                oListDocFrame = oListDocModel.CurrentController.getFrame()
        Else
                oListDocModel = oListDocFrame.Controller.getModel()
        End If

        ' Obtener un cursor de texto para este documento
        oTextCursor = oListDocModel.Text.createTextCursor()
        oTextCursor.gotoEnd(False)

        ' Escribir la lista
        oListDocModel.Text.insertString (oTextCursor, sListaPalabras, False)

        ' Activar este frame
        oListDocFrame.activate()

        ' ¡Y ya terminamos!

End Sub
'-- Copiar hasta aquí

Pruébalo y me cuentas si funcionó.

Saludos,

Santiago Bosio



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]