users  

Re: [usr] Diccionario

Cristina Castilla
Thu, 17 Nov 2005 09:13:55 -0800

Santiago, muchísimas gracias por la molestia y el trabajo que te has tomado. Perdona mi ignorancia, pero soy bastante inexperta en cuestiones informáticas y no sé qué tengo que hacer con la macro.¿Dónde tengo que pegar el texto? y, una vez pegado ¿qué tengo que hacer?.
Saludos.
----- Original Message ----- From: "Santiago Bosio" <[EMAIL PROTECTED]>
To: <users@es.openoffice.org>
Sent: Thursday, November 17, 2005 4:18 PM
Subject: Re: [usr] Diccionario


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]





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