Para las macros de openoffice hay diversas maneras de que a la hora de seleccionar el texto, el programa detecte este texto y lo almacene para luego realizar ciertas tareas con el conjunto de texto seleccionado. ¿Se podría hacer lo mismo con python?
Gracias
[Resuelto] Modulo selección de texto para python
[Resuelto] Modulo selección de texto para python
Última edición por Satsuki el Mié Nov 11, 2009 4:07 pm, editado 1 vez en total.
OpenOffice 3.1.0 en Ubuntu 8.04
Re: Modulo selección de texto para python
Este código (en Python) escoge el primer texto seleccionado y cambia su propiedad CharWeight.
Código: Seleccionar todo
import uno
def SelectText():
oDoc = XSCRIPTCONTEXT.getDocument()
Selection = oDoc.getCurrentSelection()
item0 = Selection.getByIndex(0)
item0.setPropertyValue('CharWeight', 150)
g_exportedScripts = SelectText, Re: Modulo selección de texto para python
Hola...
El código del compañero FJCC-ES, es correcto, solo te complemento que puedes poner el archivo NOMBRE.py en tu carpeta de usuario para que tengas la macro en el archivo Mis Macros
/home/USER/.openoffice.org/3/user/Scripts/python
también, debes de llamar la macro desde un documento de texto, si lo haces desde otro tipo de documento, te dará un error.
También puede probar esta segunda forma:
Estimado FJCC-ES, ¿sabrás por que nuestros códigos funcionan cuando hay solo una selección y no cuando hay varias selecciones?, supondría que con oSel = oSels.getByIndex(0) o item0 = Selection.getByIndex(0), debería tomar la primer selección, pero no es así...
Saludos
El código del compañero FJCC-ES, es correcto, solo te complemento que puedes poner el archivo NOMBRE.py en tu carpeta de usuario para que tengas la macro en el archivo Mis Macros
/home/USER/.openoffice.org/3/user/Scripts/python
también, debes de llamar la macro desde un documento de texto, si lo haces desde otro tipo de documento, te dará un error.
También puede probar esta segunda forma:
Código: Seleccionar todo
# Retornamos la selección actual
import uno
def SeleccionActual( ):
model = XSCRIPTCONTEXT.getDocument()
oCC = model.getCurrentController()
oSels = oCC.getSelection()
oSel = oSels.getByIndex(0)
strTmp = oSel.getString()
# Desde aquí puedes omitir, pues ya tienes la selección
# en strTmp la cual retornamos en la función
ctx = uno.getComponentContext()
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
doc = desktop.loadComponentFromURL( "private:factory/swriter","_blank", 0, () )
text = doc.Text
cursor = text.createTextCursor()
text.insertString( cursor, strTmp, 0 )
return strTmp
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Modulo selección de texto para python
Estimado Mauricio,
Nuestros códigos funcionan cuando hay varias selecciones pero el objecto Selection (o oSels) contiene un elemento más, aparte de los textos seleccionados. Por ejemplo, si selecciono dos textos Selection.Count = 3! El tercero elemento (que tiene indice 0) es la posición del Cursor. No sé por qué cuando selecciono un texto Selection.Count = 1. Descubrí esto usando xray.
Nuestros códigos funcionan cuando hay varias selecciones pero el objecto Selection (o oSels) contiene un elemento más, aparte de los textos seleccionados. Por ejemplo, si selecciono dos textos Selection.Count = 3! El tercero elemento (que tiene indice 0) es la posición del Cursor. No sé por qué cuando selecciono un texto Selection.Count = 1. Descubrí esto usando xray.
Re: Modulo selección de texto para python
Muchas gracias, como decía Doña Sor Juana (de Asbaje), -ahora ignoro un poco menos-...
Un abrazo
Un abrazo
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro