EasyDev Documentation

Anuncio
EasyDev Documentation
Publicación 2.0.0
Mauricio Baeza
25 de November de 2015
Índice general
1. Introducción
1.1. Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Probando la herramienta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
4
2. Herramientas para depuración
2.1. Mostrar información en shell . . . .
2.2. Guardar información en un archivo
2.3. msgbox Especial . . . . . . . . . .
2.4. Llamar a MRI . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
7
7
8
3. Herramientas
3.1. Mostrar información del PC
3.2. Hacer una pregunta . . . . .
3.3. Reemplazar cadenas . . . .
3.4. Formato . . . . . . . . . . .
3.5. Archivos y directorios . . .
3.6. Ejecutar . . . . . . . . . . .
3.7. Configuración . . . . . . .
3.8. Portapapeles . . . . . . . .
3.9. Tiempo Unix . . . . . . . .
3.10. Llamar macros . . . . . . .
3.11. Timer . . . . . . . . . . . .
3.12. Exportar a CSV . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
11
12
12
13
15
15
15
16
16
17
17
4. Enviando correo
4.1. Enviar un correo y esperar la respuesta . . . . . .
4.2. Enviar correo y no esperar respuesta . . . . . . . .
4.3. Enviar correo con copia (CC) y copia oculta (BCC)
4.4. Enviar correo con archivos anexos . . . . . . . . .
4.5. Enviar correo y guardar mensaje . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
19
19
20
21
21
5. Matrices
5.1. Agregar . . . .
5.2. Borrar . . . . .
5.3. Extender . . .
5.4. Multiplicar . .
5.5. Valores únicos
5.6. Reversa . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
23
23
23
23
23
24
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
I
5.7.
5.8.
5.9.
5.10.
5.11.
5.12.
5.13.
5.14.
5.15.
5.16.
5.17.
5.18.
Insertar . . . . . . . . . . . .
Remover . . . . . . . . . . .
Largo . . . . . . . . . . . . .
Contar . . . . . . . . . . . .
Índice . . . . . . . . . . . . .
Máximo, Mínimo y Promedio
Suma . . . . . . . . . . . . .
Existe . . . . . . . . . . . . .
Igual . . . . . . . . . . . . .
Rebanadas . . . . . . . . . .
Ordenar . . . . . . . . . . . .
Operaciones . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
24
24
24
24
25
25
25
25
25
25
26
27
6. Documentos
6.1. Nuevo . . . . . . . .
6.2. Obtener documento
6.3. Tipo de documento .
6.4. Obtener documentos
6.5. Abrir . . . . . . . .
6.6. Activar . . . . . . .
6.7. Barra de estado . . .
6.8. Exportar a PDF . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
29
29
30
30
30
30
31
31
7. Calc
7.1.
7.2.
7.3.
7.4.
7.5.
7.6.
7.7.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
33
34
35
35
36
36
37
8. Writer
8.1. Parrafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
39
9. Bases de datos
9.1. ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
41
10. Cuadros de diálogo
10.1. Crear diálogo . . . . . . .
10.2. Etiqueta con hipervínculo
10.3. Mapa de ruta . . . . . . .
10.4. Rejilla . . . . . . . . . .
43
43
43
44
45
Celdas . . . . . . .
Rangos . . . . . . .
Seleccionar un rango
Región actual . . . .
Ultima fila . . . . .
Siguiente valor . . .
Valor de celda . . .
11. Indíces y tablas
II
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
49
EasyDev Documentation, Publicación 2.0.0
Contenido:
Índice general
1
EasyDev Documentation, Publicación 2.0.0
2
Índice general
CAPÍTULO 1
Introducción
EasyDev puede ayudarte a desarrollar macros en LibreOffice.
1.1 Instalación
Decarga la ultima versión desde GitHub.
Abre LibreOffice
Menú: Herramientas -> Administración de extensiones...
Agregar...
3
EasyDev Documentation, Publicación 2.0.0
1.2 Probando la herramienta
Sub Prueba()
'Creando el servicio
util = createUnoService("org.universolibre.EasyDev")
MsgBox util.VERSION
End Sub
4
Capítulo 1. Introducción
CAPÍTULO 2
Herramientas para depuración
2.1 Mostrar información en shell
Solo Linux
Sub Debug()
'Crear servicio
util = createUnoService("org.universolibre.EasyDev")
util.debug("Prueba de depuración")
End Sub
5
EasyDev Documentation, Publicación 2.0.0
En Windows, puedes abrir y guardar un nuevo documento con el nombre debug.odt y mostrar la información de
depuración en este documento.
6
Capítulo 2. Herramientas para depuración
EasyDev Documentation, Publicación 2.0.0
2.2 Guardar información en un archivo
Sub LogFile()
util = createUnoService("org.universolibre.EasyDev")
util.log("/home/USER/log.txt", util)
End Sub
Automáticamente se agrega la fecha y hora.
2015-10-28 20:56:35 - EasyDev - <uno_component.EasyDev object at 0x7f96caf34438>
2015-10-28 20:56:41 - EasyDev - <uno_component.EasyDev object at 0x7f96caf34438>
2.3 msgbox Especial
Mostrar cualquier información en un cuadro de mensaje como objectos y matrices.
2.2. Guardar información en un archivo
7
EasyDev Documentation, Publicación 2.0.0
Sub MessageBox()
util = createUnoService("org.universolibre.EasyDev")
util.msgbox("Información de depuración")
'Mostrar cualquier dato
data = "Como texto"
util.msgbox(data)
'Números'
data = 12345
util.msgbox(data)
'Matrices'
data = Array("Uno", 2)
util.msgbox(data)
util.msgbox(util)
End Sub
2.4 Llamar a MRI
MRI es la mejor extensión para instrospección de objetos para Apache OpenOffice y LibreOffice. Descargala e instalala.
Llamala desde EasyDev.
Sub CallMRI()
util = createUnoService("org.universolibre.EasyDev")
'MRI es una gran extensión.
util.mri(util)
End Sub
8
Capítulo 2. Herramientas para depuración
EasyDev Documentation, Publicación 2.0.0
2.4. Llamar a MRI
9
EasyDev Documentation, Publicación 2.0.0
10
Capítulo 2. Herramientas para depuración
CAPÍTULO 3
Herramientas
3.1 Mostrar información del PC
Sub ShowInfoPC()
util = createUnoService("org.universolibre.EasyDev")
'Sistema operativo
util.msgbox(util.OS)
'Nombre de la aplicación
util.msgbox(util.APP_NAME)
'Versión de la aplicación
util.msgbox(util.APP_VERSION)
'Lenguaje
util.msgbox(util.LANGUAGE)
'Tamaño de la pantalla
util.msgbox(util.getSizeScreen())
' https://docs.python.org/3.3/library/platform.html
' nombre de usuario,
' nombre del pc
' nombre del SO,
' tipo de maquina,
' nombre del procesador
' Cadena de indentificación de la plataforma con la mayor cantidad de información posible
util.msgbox(util.getInfoPC())
End Sub
3.2 Hacer una pregunta
Sub Pregunta()
util = createUnoService("org.universolibre.EasyDev")
titulo = "Mi programa"
mensage = "¿Es fácil Python?"
res = util.question(titulo, mensaje)
11
EasyDev Documentation, Publicación 2.0.0
'Si pulsa SI, devuelve verdadero (True)
util.msgbox(res)
End Sub
3.3 Reemplazar cadenas
Reemplazar una cadena con argumentos
Sub RenderString()
util = createUnoService("org.universolibre.EasyDev")
'Puedes usar una estructura NamedValue
message = "Hola $data con $idioma, desde Basic 1!!"
Dim data1(1) As New com.sun.star.beans.NamedValue
data1(0).Name = "data"
data1(0).Value = "Mundo"
data1(1).Name = "idioma"
data1(1).Value = "Python"
message = util.render(message, data1)
util.msgbox(message)
'Usando estructura PropertyValue
message = "Hola $data con $idioma, desde Basic 2!!"
Dim data2(1) As New com.sun.star.beans.PropertyValue
data2(0).Name = "data"
data2(0).Value = "Mundo"
data2(1).Name = "idioma"
data2(1).Value = "Python"
message = util.render(message, data2)
util.msgbox(message)
'Usando matrices
message = "Hola $data con $idioma, desde Basic 3!!"
data = Array( _
Array("data", "Mundo"), _
Array("idioma", "Python") _
)
message = util.render(message, data2)
util.msgbox(message)
End Sub
3.4 Formato
Más información y ejemplos aquí.
Sub FormatData()
util = createUnoService("org.universolibre.EasyDev")
MsgBox util.format("Hello {}", "World")
12
Capítulo 3. Herramientas
EasyDev Documentation, Publicación 2.0.0
MsgBox util.format("Hello {} from {}", Array("World", "PyUNO"))
MsgBox util.format("Hello {1} from {0}", Array("World", "PyUNO"))
MsgBox util.format("{:<20}|{:^20}|{:>20}", Array("Left", "Center", "Rigth"))
MsgBox util.format("{:_<20}|{:-^20}|{:_>20}", Array("Left", "Center", "Rigth"))
MsgBox util.format("{:d} {:f}", Array(100, 3.1416))
MsgBox util.format("{0:,.2f}", 123456789.2468)
MsgBox util.format("Number {n1} y {n2}", Array(Array("n1", "one"), Array("n2", "two")))
MsgBox util.format("Number {n2} y {n1}", Array(Array("n1", "one"), Array("n2", "two")))
my_date = createUnoStruct("com.sun.star.util.Date")
my_date.Day = 15
my_date.Month = 1
my_date.Year = 1974
MsgBox util.format("{:%d-%B-%Y}", my_date)
my_date = createUnoStruct("com.sun.star.util.DateTime")
my_date.Day = 15
my_date.Month = 1
my_date.Year = 1974
my_date.Hours = 13
my_date.Minutes = 30
MsgBox util.format("{:%Y-%b-%d %H:%M}", my_date)
End Sub
3.5 Archivos y directorios
Obtener una ruta desde configuración. Más información: XPathSettings.
path = util.getPath("Temp")
util.msgbox(path)
path = util.getPath("Work")
util.msgbox(path)
Obtener información de una ruta:
1. ruta base,
2. nombre del archivo,
3. nombre del archivo sin extensión,
4. extensión del archivo.
data = util.getPathInfo("/home/USER/log.txt")
util.msgbox(data)
Unir rutas
3.5. Archivos y directorios
13
EasyDev Documentation, Publicación 2.0.0
path = util.pathJoin(Array("/home", "USER", "Documents"))
util.msgbox(path)
path = util.pathJoin(Array("/home/USER/Documents", "..", "Picture"))
util.msgbox(path)
Seleccionar directorio, de forma predeterminada, muestra la ruta de documentos del usuario
folder = util.getFolder("")
util.msgbox(folder)
'Se puede establecer otra ruta de inicio
folder = util.getFolder("/home/USER")
util.msgbox(folder)
Seleccionar un solo archivo sin filtros.
file = util.getSelectedFiles("", False, Array())
util.msgbox(file)
Seleccionar multiples archivos sin filtros.
files = util.getSelectedFiles("", True, Array())
util.msgbox(files)
Seleccionar multiples archivos con un filtro.
filters = Array( _
Array("TXT", "*.txt"), _
Array("LOG", "*.log"), _
Array("CER | KEY", "*.cer;*.key") _
)
files = util.getSelectedFiles("", True, filters)
util.msgbox(files)
Obtener todos los archivos de un directorio de forma recursiva.
files = util.getFiles("/home/USER/Pictures", "")
util.msgbox(files)
Obtener todos los archivos de un directorio de forma recursiva con un filtro.
files = util.getFiles("/home/USER/Pictures", "jpg")
util.msgbox(files)
files = util.getFiles("/home/USER/Pictures", "png")
util.msgbox(files)
Abrir un archivo y leer su contenido.
data = util.fileOpen("/home/USER/log.txt", "r", False)
util.msgbox(data)
Abrir un archivo regresando cada línea en una matriz.
data = util.fileOpen("/home/USER/log.txt", "r", True)
util.msgbox(data)
Guardar información en un nuevo archivo.
data = "Hello World Python"
util.fileSave("/home/USER/test.txt", "w", data)
'Verify
14
Capítulo 3. Herramientas
EasyDev Documentation, Publicación 2.0.0
data = util.fileOpen("/home/mau/test.txt", "r")
util.msgbox(data)
Agregar información a un archivo
data = "Hello World Python" & CHR(10)
util.fileSave("/home/USER/test2.txt", "a", data)
'Verify
data = util.fileOpen("/home/USER/test2.txt", "r")
util.msgbox(data)
3.6 Ejecutar
Ejecutar un comando y esperar la respuesta.
res = util.execute(Array("ls","-la"), True)
util.msgbox(res)
Ejecutar un comando y no esperar respuesta.
util.execute(Array("gnome-calculator"), False)
3.7 Configuración
Guadar un valor en el registro de configuración de LibreOffice, el valor se guarda de forma persistente.
util.setConfig("DefaultMail", "[email protected]")
'Get value from config
value = util.getConfig("DefaultMail")
util.msgbox(value)
Es posible guardar matrices.
util.setConfig("Matriz", Array(1,2,3))
value = util.getConfig("Matriz")
util.msgbox(value)
3.8 Portapapeles
Obtener texto del portapapeles.
value = util.getClipboard()
util.msgbox(value)
Enviar texto al portapapeles.
util.setClipboard("Hello World PyUNO!!")
'Verify
value = util.getClipboard()
util.msgbox(value)
3.6. Ejecutar
15
EasyDev Documentation, Publicación 2.0.0
3.9 Tiempo Unix
Más información: https://en.wikipedia.org/wiki/Unix_time
epoch = util.getEpoch()
util.msgbox(epoch)
3.10 Llamar macros
Más información: Scripting Framework
Guarda la siguiente macro en:
/home/USER/.config/libreoffice/4/user/Scripts/python/mymacros.py
import uno
import time
def show_time(cell):
cell.setString(time.strftime('%c'))
time.sleep(3)
return
Llamar a una macro Python (predeterminado) y esperar la respuesta.
macro = createUnoStruct("org.universolibre.EasyDev.Macro")
macro.Library = "mymacros"
macro.Name = "show_time"
cell = ThisComponent.CurrentSelection
util.callMacro(macro, Array(cell))
Llamar a una macro Python y no esperar la respuesta.
macro = createUnoStruct("org.universolibre.EasyDev.Macro")
macro.Library = "mymacros"
macro.Name = "show_time"
macro.Thread = True
cell = ThisComponent.CurrentSelection
util.callMacro(macro, Array(cell))
Llamar a una macro en Basic
macro = createUnoStruct("org.universolibre.EasyDev.Macro")
macro.Library = "EasyDevLib"
macro.Module = "Examples"
16
Capítulo 3. Herramientas
EasyDev Documentation, Publicación 2.0.0
macro.Name = "HelloWorld"
macro.Language = "Basic"
macro.Thread = False
util.callMacro(macro, Array())
3.11 Timer
Guarda la siguiente macro en:
/home/USER/.config/libreoffice/4/user/Scripts/python/mymacros.py
import uno
import time
def show_time(cell):
cell.setString(time.strftime('%c'))
return
timer(NOMBRE_TIMER, SEGUNDOS, MACRO, ARGUMENTOS)
El nombre del timer es muy importante para que lo puedas detener. El timer siempre se ejecuta en otro hilo de proceso.
util = createUnoService("org.universolibre.EasyDev")
'Make data macro
macro = createUnoStruct("org.universolibre.EasyDev.Macro")
macro.Library = "mymacros"
macro.Name = "show_time"
'Arguments
cell = ThisComponent.CurrentSelection
'Timer name "time" and wait one second
util.timer("time", 1, macro, Array(cell))
Detener un timer por su nombre
Sub StopTimer()
util = createUnoService("org.universolibre.EasyDev")
util.stopTimer("time")
End Sub
3.12 Exportar a CSV
Establece un rango con datos y seleccionalo.
3.11. Timer
17
EasyDev Documentation, Publicación 2.0.0
y esportarlo.
util = createUnoService("org.universolibre.EasyDev")
range = ThisComponent.CurrentSelection
path = "/home/USER/test.csv"
data = range.getDataArray()
options = Array()
util.exportCSV(path, data, options)
Cambiar opciones de exportación, más información en: https://docs.python.org/3.3/library/csv.html#csv.writer
Dim options(0) As New com.sun.star.beans.NamedValue
util = createUnoService("org.universolibre.EasyDev")
range = ThisComponent.CurrentSelection
path = "/home/USER/test.csv"
data = range.getDataArray()
options(0).Name = "delimiter"
options(0).Value = "|"
util.exportCSV(path, data, options)
18
Capítulo 3. Herramientas
CAPÍTULO 4
Enviando correo
4.1 Enviar un correo y esperar la respuesta
Sub SendMail()
util = createUnoService("org.universolibre.EasyDev")
server = createUnoStruct("org.universolibre.EasyDev.SmtpServer")
message = createUnoStruct("org.universolibre.EasyDev.EmailMessage")
server.Name = "smtp.gmail.com"
server.User = "[email protected]"
server.Password = "supersecret"
server.Ssl = True
temp = "Dear Madame: $name\n\nBest regards from $country"
data = Array( _
Array("name", "Teresa"), _
Array("country", "México"), _
)
body = util.render(temp, data)
message.To = "[email protected]"
message.Subject = "Email test"
message.Body = body
'Send mail and wait response
result = util.sendMail(server, message)
If result Then
MsgBox "Correo enviado"
Else
MsgBox "Error al enviar el correo"
End If
End Sub
4.2 Enviar correo y no esperar respuesta
Sub SendMailNoWait()
util = createUnoService("org.universolibre.EasyDev")
server = createUnoStruct("org.universolibre.EasyDev.SmtpServer")
19
EasyDev Documentation, Publicación 2.0.0
message = createUnoStruct("org.universolibre.EasyDev.EmailMessage")
server.Name = "smtp.gmail.com"
server.User = "[email protected]"
server.Password = "supersecret"
server.Ssl = True
server.Thread = True
'Send in other thread
temp = "Dear Madame: $name\n\nBest regards from $country"
data = Array( _
Array("name", "Teresa"), _
Array("country", "México"), _
)
body = util.render(temp, data)
message.To = "[email protected]"
message.Subject = "Email test"
message.Body = body
'Enviar correo y no esperar respuesta
util.sendMail(server, message)
MsgBox "Send mail"
End Sub
4.3 Enviar correo con copia (CC) y copia oculta (BCC)
Sub SendMailNoWaitAndCCBCC()
util = createUnoService("org.universolibre.EasyDev")
server = createUnoStruct("org.universolibre.EasyDev.SmtpServer")
message = createUnoStruct("org.universolibre.EasyDev.EmailMessage")
server.Name = "smtp.gmail.com"
server.User = "[email protected]"
server.Password = "supersecret"
server.Ssl = True
server.Thread = True
'Send in other thread
temp = "Dear Madame: $name\n\nBest regards from $country"
data = Array( _
Array("name", "Teresa"), _
Array("country", "México"), _
)
body = util.render(temp, data)
message.To = "[email protected]"
message.Subject = "Email test"
message.Body = body
message.Cc = "[email protected],[email protected]"
message.Bcc = "[email protected],[email protected]"
'Enviar correo y no esperar respuesta
util.sendMail(server, message)
MsgBox "Send mail"
20
Capítulo 4. Enviando correo
EasyDev Documentation, Publicación 2.0.0
End Sub
4.4 Enviar correo con archivos anexos
Sub SendMailWithAttachment()
util = createUnoService("org.universolibre.EasyDev")
server = createUnoStruct("org.universolibre.EasyDev.SmtpServer")
message = createUnoStruct("org.universolibre.EasyDev.EmailMessage")
server.Name = "smtp.gmail.com"
server.User = "[email protected]"
server.Password = "supersecret"
server.Ssl = True
server.Thread = True
'Send in other thread
temp = "Dear Madame: $name\n\nBest regards from $country"
data = Array( _
Array("name", "Teresa"), _
Array("country", "México"), _
)
body = util.render(temp, data)
files = Array("/home/USER/Documents/pruebas.cer", "/home/USER/Documents/pruebas.key")
message.To = "[email protected]"
message.Subject = "Email test"
message.Body = body
message.Files = files
'Enviar correo y no esperar respuesta
util.sendMail(server, message)
MsgBox "Send mail"
End Sub
4.5 Enviar correo y guardar mensaje
Si usas una ruta de Thunderbird, puedes ver el mensaje en una carpeta dentro de Thunderbird
Prudencia: Siempre usa una carpeta separada dentro del árbol de carpetas de Thunderbird!
Sub SendMailAndSave()
util = createUnoService("org.universolibre.EasyDev")
server = createUnoStruct("org.universolibre.EasyDev.SmtpServer")
message = createUnoStruct("org.universolibre.EasyDev.EmailMessage")
server.Name = "smtp.gmail.com"
server.User = "[email protected]"
server.Password = "supersecret"
server.Ssl = True
4.4. Enviar correo con archivos anexos
21
EasyDev Documentation, Publicación 2.0.0
server.Thread = True
'Send in other thread
server.PathSave = "/home/USER/.thunderbird/cwfln0bi.default/Mail/Local Folders/Sent"
temp = "Dear Madame: $name\n\nBest regards from $country"
data = Array( _
Array("name", "Teresa"), _
Array("country", "México"), _
)
body = util.render(temp, data)
files = Array("/home/USER/Documents/pruebas.cer")
message.To = "[email protected]"
message.Subject = "Email test"
message.Body = body
message.Files = files
message.Save = True
'Enviar correo y no esperar respuesta
util.sendMail(server, message)
MsgBox "Send mail"
End Sub
22
Capítulo 4. Enviando correo
CAPÍTULO 5
Matrices
5.1 Agregar
a = Array("Nikole","Scarlett","Monica","Naomi","Marion")
a = util.append(a, "Sofia")
util.msgbox( a )
5.2 Borrar
a = util.delete(a, "Nikole")
util.msgbox( a )
5.3 Extender
a = Array("Nikole","Scarlett","Monica","Naomi","Marion")
a2 = Array("Sofia", "Anita")
a = util.extend(a, a2)
util.msgbox( a )
5.4 Multiplicar
a = Array("Nikole","Scarlett","Monica","Naomi","Marion")
a = util.multi(a, 2)
util.msgbox( a )
5.5 Valores únicos
a = Array(1,2,"Two",3,3,3,4,4,4,4,5,5,5,5,5,"Uno","Uno")
a = util.unique(a)
util.msgbox( a )
23
EasyDev Documentation, Publicación 2.0.0
5.6 Reversa
a = Array("Nikole","Scarlett","Monica","Naomi","Marion")
a = util.reverse(a)
util.msgbox( a )
5.7 Insertar
Insertar un elemento en una posición.
a = Array("Nikole","Scarlett","Monica","Naomi","Marion")
a = util.insert(a, 2, "Mary")
util.msgbox( a )
5.8 Remover
Remover un elemento en una posición y regresar el elemento y la matriz
a = Array(1,2,"Two",3,3,3,4,4,4,4,5,5,5,5,5,"Uno","Uno")
data = util.pop(a, 2)
util.msgbox( data(0) ) 'Array without element in pos
util.msgbox( data(1) ) 'Element removed
Remover el primer elemento encontrado.
a = Array(1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,"Uno","Uno")
util.msgbox( util.remove(a, 5, False) )
Remover todos los elementos encontrados.
util.msgbox( util.remove(a, 5, True) )
5.9 Largo
a = Array(1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,"Uno","Uno")
util.msgbox( util.len(a) )
5.10 Contar
a = Array(1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,"Uno","Uno")
util.msgbox( util.count(a, 3) )
util.msgbox( util.count(a, 5) )
util.msgbox( util.count(a, "Uno") )
24
Capítulo 5. Matrices
EasyDev Documentation, Publicación 2.0.0
5.11 Índice
a = Array("Nikole","Scarlett","Monica","Naomi","Marion")
util.msgbox( util.index(a, "Naomi") )
util.msgbox( util.index(a, "Monica") )
5.12 Máximo, Mínimo y Promedio
a = Array(1,2,3,4,5,6,7,8,9,10)
util.msgbox( util.max(a) )
util.msgbox( util.min(a) )
util.msgbox( util.average(a) )
5.13 Suma
a = Array(1,2,3,4,5,6,7,8,9,10)
util.msgbox( util.sum(a) )
Solo se suman valores, el primer elemento es una candena.
a = Array("10", 1,2,3,4,5,6,7,8,9,10, "One", "Two")
util.msgbox( util.sum(a) )
5.14 Existe
Si un valor existe en la matriz.
a = Array(1,2,3,4,5,"One","Seven",9,10)
util.msgbox( util.exists(a, "One") )
util.msgbox( util.exists(a, "Two") )
5.15 Igual
Si una matriz es igual a una segunda.
a1 = Array(1,2,3) : a2 = Array(1,2,3)
util.msgbox( util.equal(a1, a2) )
a1 = Array(1,"Dos",3) : a2 = Array(1,2,"Tres")
util.msgbox( util.equal(a1, a2) )
5.16 Rebanadas
Copiar
5.11. Índice
25
EasyDev Documentation, Publicación 2.0.0
a = Array("Nikole","Scarlett","Monica","Naomi","Marion","Sofia","Anita")
a2 = util.slice(a, "[:]")
util.msgbox( a2 )
Primeros dos (n) elementos.
a2 = util.slice(a, "[:2]")
util.msgbox( a2 )
Ultimos dos (n) elementos.
a2 = util.slice(a, "[-2:]")
util.msgbox( a2 )
Rango
a2 = util.slice(a, "[2:-2]")
util.msgbox( a2 )
a2 = util.slice(a, "[::2]")
util.msgbox( a2 )
a2 = util.slice(a, "[1::2]")
util.msgbox( a2 )
Reversa
a2 = util.slice(a, "[::-1]")
util.msgbox( a2 )
5.17 Ordenar
Ordenar una matriz unidimensional.
a = Array("Nikole","Scarlett","Monica","Naomi","Marion","Sofia","Anita")
a = util.sorted(a, 0)
util.msgbox( a )
Ordenar una matriz multidimensional.
a = Array( _
Array(1, 1, 3,
Array(1, 2, 3,
Array(1, 3, 3,
Array(1, 4, 3,
Array(1, 5, 3,
)
a = util.sorted(a,
util.msgbox( a )
a = util.sorted(a,
util.msgbox( a )
a = util.sorted(a,
util.msgbox( a )
a = util.sorted(a,
util.msgbox( a )
a = util.sorted(a,
util.msgbox( a )
26
"a",
"z",
"g",
"e",
"M",
56), _
43), _
78), _
32), _
89) _
0)
1)
2)
3)
4)
Capítulo 5. Matrices
EasyDev Documentation, Publicación 2.0.0
Regresar una columna de una matriz multidimensional
util.msgbox(util.getColumn(a, 1))
5.18 Operaciones
Sub ArraysOperations()
util = createUnoService("org.universolibre.EasyDev")
a1 = Array(1,2,3,4,5) : a2 = Array(3,4,5,6,7,8)
a = util.union(a1, a2)
util.msgbox( a )
a = util.intersection(a1, a2)
util.msgbox( a )
a = util.difference(a1, a2)
util.msgbox( a )
a = util.symmetricDifference(a1, a2)
util.msgbox( a )
End Sub
5.18. Operaciones
27
EasyDev Documentation, Publicación 2.0.0
28
Capítulo 5. Matrices
CAPÍTULO 6
Documentos
6.1 Nuevo
Más información: Component Loader
Sub NewDoc()
'Create new doc
util = createUnoService("org.universolibre.EasyDev")
'Default Calc
doc = util.newDoc("")
End Sub
Otros posibles valores: swriter, simpress, sdraw, smath
doc = util.newDoc("sdraw")
Para documentos de Base.
path_db = "/home/USER/dbtest.odb"
db = util.newDB(path_db)
6.2 Obtener documento
Actual
Importante: El documento actual puede ser el IDE Basic
doc1 = util.getDoc("")
MsgBox doc1.Title
Obtener documento por título, si no se encuentra, regresa Vacio
doc2 = util.getDoc("Name_doc.odt")
util.msgbox(doc2)
29
EasyDev Documentation, Publicación 2.0.0
6.3 Tipo de documento
Valores de retorno: calc, writer, impress, draw, math, base, ide
doc1 = util.newDoc("sdraw")
MsgBox util.getTypeDoc(doc1)
doc2 = util.newDoc("swriter")
MsgBox util.getTypeDoc(doc2)
6.4 Obtener documentos
Obtener todos los documentos abiertos.
docs = util.getDocs()
MsgBox util.format("{} Open documents", util.len(docs))
6.5 Abrir
Más información y opciones:
Component Loader
Media Descriptor
Abrir documento por ruta
Dim options1(0) As New com.sun.star.beans.NamedValue
util = createUnoService("org.universolibre.EasyDev")
path = "/home/USER/Plantilla.ods"
options = Array()
doc = util.openDoc(path, options)
Abrir como una plantilla.
options1(0).Name = "AsTemplate"
options1(0).Value = True
path = "/home/USER/Plantilla.ods"
doc = util.openDoc(path, options1)
Abrir oculto.
options1(0).Name = "Hidden"
options1(0).Value = True
path = "/home/USER/Plantilla.ods"
doc = util.openDoc(path, options1)
MsgBox "Close doc"
doc.dispose()
6.6 Activar
Enviar el foco a un documento.
30
Capítulo 6. Documentos
EasyDev Documentation, Publicación 2.0.0
doc1 = util.newDoc("")
doc2 = util.newDoc("swriter")
wait(1000)
util.setFocus(doc1)
6.7 Barra de estado
Establecer el texto y mostrar una barra de progreso.
'Get current doc
doc = util.getDoc("")
'Get status bar
sb = util.getStatusBar(doc)
'Init text and up limit
sb.start( "Row ", 10 )
For co1 = 1 To 10
'Set value
sb.setValue( co1 )
Wait 1000
Next
'Is import free status bar
sb.end()
6.8 Exportar a PDF
Todas las opciones en: PDF Export in wiki.
Si la exportación es correcta, regresa la ruta del PDF
Exportar el documento actual en el mismo directorio y mismo nombre del documento.
doc = util.getDoc("")
path = util.exportPDF(doc, "", Array())
MsgBox util.format("PDF export in: {}", path)
Exportar en otro directorio con el mismo nombre del documento.
path_save = "/home/USER/OTHER_FOLDER"
path_pdf = util.exportPDF(doc, path_save, Array())
Exportar en otro directorio y otro nombre de archivo.
path_save = "/home/USER/OTHER_FOLDER/NAME.pdf"
path_pdf = util.exportPDF(doc, path_save, Array())
Exportar con opciones.
Dim options(0) As New com.sun.star.beans.NamedValue
doc = util.getDoc("")
options(0).Name = "PageRange"
options(0).Value = "2"
path = util.exportPDF(doc, "", options)
MsgBox util.format("PDF export in: {}", path)
6.7. Barra de estado
31
EasyDev Documentation, Publicación 2.0.0
32
Capítulo 6. Documentos
CAPÍTULO 7
Calc
7.1 Celdas
Regresar la celda activa, siempre se deuelve una sola celda.
Sub getCellDoc()
util = createUnoService("org.universolibre.EasyDev")
address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
address.Current = True
cell = util.getCell(address)
msg = util.format("{} {}", Array(cell.ImplementationName, cell.AbsoluteName))
util.msgbox(msg)
End Sub
Regresar la celda activa, buscando el documento por título, el documento debe estar previamente abierto.
address.Doc = "test.ods"
'Title doc
address.Current = True
cell = util.getCell(address)
msg = util.format("{} {}", Array(cell.ImplementationName, cell.AbsoluteName))
util.msgbox(msg)
Regresar la celda activa de un documento
doc = util.getDoc("")
address.Doc = doc
address.Current = True
cell = util.getCell(address)
msg = util.format("{} {}", Array(cell.ImplementationName, cell.AbsoluteName))
util.msgbox(msg)
Regresar una celda de un documento, de una hoja y celda por nombre.
doc = util.getDoc("")
address.Doc = doc
address.Sheet = "Sheet2"
address.Name = "B5"
cell = util.getCell(address)
msg = util.format("{} {}", Array(cell.ImplementationName, cell.AbsoluteName))
util.msgbox(msg)
Regresar una celda de un documento, de una hoja por nombre y la celda por posición de columna y fila.
33
EasyDev Documentation, Publicación 2.0.0
doc = util.getDoc("")
address.Doc = doc
address.Sheet = "Sheet2"
address.Name = ""
address.Col = 1
address.Row = 4
cell = util.getCell(address)
msg = util.format("{} {}", Array(cell.ImplementationName, cell.AbsoluteName))
util.msgbox(msg)
Regresa una celda de una instancua de una hoja, el parametro documento es omitido.
sheet = doc.getCurrentController().getActiveSheet()
address.Sheet = sheet
address.Name = "D5"
cell = util.getCell(address)
msg = util.format("{} {}", Array(cell.ImplementationName, cell.AbsoluteName))
util.msgbox(msg)
7.2 Rangos
Regresar el rango activo.
Sub getRangeDoc()
util = createUnoService("org.universolibre.EasyDev")
address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
address.Current = True
range = util.getRange(address)
msg = util.format("{} {}", Array(range.ImplementationName, range.AbsoluteName))
util.msgbox(msg)
End Sub
Regresar el rango activo de un documento buscado por título, el documento debe estar previamente abierto.
address.Doc = "test.ods"
'Title doc
address.Current = True
range = util.getRange(address)
msg = util.format("{} {}", Array(range.ImplementationName, range.AbsoluteName))
util.msgbox(msg)
Regresar el rango activo de uns instancia de un documento.
doc = util.getDoc("")
address.Doc = doc
address.Current = True
range = util.getRange(address)
msg = util.format("{} {}", Array(range.ImplementationName, range.AbsoluteName))
util.msgbox(msg)
Regresar el rango de una instancia de un documento, de una hoja y rango por nombre.
doc = util.getDoc("")
address.Doc = doc
address.Sheet = "Sheet2"
address.Name = "B5:C10"
range = util.getRange(address)
34
Capítulo 7. Calc
EasyDev Documentation, Publicación 2.0.0
msg = util.format("{} {}", Array(range.ImplementationName, range.AbsoluteName))
util.msgbox(msg)
Regresar el rango de una instancia de un documento, de una hoja por nombre y del rango por posición.
address.Sheet = "Sheet2"
address.Name = ""
address.Col = 1
address.Row = 4
address.EndCol = 3
address.EndRow = 9
range = util.getRange(address)
msg = util.format("{} {}", Array(range.ImplementationName, range.AbsoluteName))
util.msgbox(msg)
Regresar el rango de uns instancia de una hoja, el argumento documento es omitido.
sheet = doc.getCurrentController().getActiveSheet()
address.Sheet = sheet
address.Name = "D5:E10"
range = util.getRange(address)
msg = util.format("{} {}", Array(range.ImplementationName, range.AbsoluteName))
util.msgbox(msg)
7.3 Seleccionar un rango
Sub SelectRange()
util = createUnoService("org.universolibre.EasyDev")
address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
doc = util.getDoc("")
address.Doc = doc
address.Sheet = "Sheet2"
address.Name = "B5:C10"
range = util.getRange(address)
'Select
util.selectRange(doc, range)
End Sub
7.4 Región actual
Sub getCurrentRegion()
util = createUnoService("org.universolibre.EasyDev")
address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
address.Current = True
cell = util.getCell(address)
msg = util.format("{} {}", Array(cell.ImplementationName, cell.AbsoluteName))
util.msgbox(msg)
End Sub
7.3. Seleccionar un rango
35
EasyDev Documentation, Publicación 2.0.0
Solo es necesario pasar una celda que este dentro de la región actual. Se obtiene un objeto cursor.
cursor = util.getCurrentRegion(cell, True)
msg = util.format("{} {}", Array(cursor.ImplementationName, cursor.AbsoluteName))
util.msgbox(msg)
Se devuelve un objeto rango (range).
range = util.getCurrentRegion(cell, False)
msg = util.format("{} {}", Array(range.ImplementationName, range.AbsoluteName))
util.msgbox(msg)
7.5 Ultima fila
Devolver la ultima fila dentro dentro de la región actual.
Sub getLastRow()
util = createUnoService("org.universolibre.EasyDev")
address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
address.Current = True
cell = util.getCell(address)
row = util.getLastRow(cell)
util.msgbox(row)
End Sub
7.6 Siguiente valor
En los valores de un rango de celdas, devolver el siguiente valor en la columna pasada, por ejemplo 0 (A), 1 (B), etc.
Sub getNextID()
util = createUnoService("org.universolibre.EasyDev")
address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
address.Current = True
cell = util.getCell(address)
value = util.getNextID(cell, 0)
util.msgbox(value)
End Sub
36
Capítulo 7. Calc
EasyDev Documentation, Publicación 2.0.0
7.7 Valor de celda
Detección automática del tipo de contenido: cadenas (string), valores (value) o formulas.
Sub CellValue()
util = createUnoService("org.universolibre.EasyDev")
address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
address.Current = True
cell = util.getCell(address)
value = "String"
util.setValue(cell, value)
value = util.getValue(cell)
util.msgbox(value)
value = 12345
util.setValue(cell, value)
value = util.getValue(cell)
util.msgbox(value)
value = "=SUM(A1:C1)"
util.setValue(cell, value)
value = util.getValue(cell)
util.msgbox(value)
End Sub
7.7. Valor de celda
37
EasyDev Documentation, Publicación 2.0.0
38
Capítulo 7. Calc
CAPÍTULO 8
Writer
8.1 Parrafos
Obtener todos los parrafos de un documento, incluyendo los vacíos.
Sub GetParagraps()
util = createUnoService("org.universolibre.EasyDev")
'Get current doc
doc = util.getDoc("")
'Get all paragraphs
paragraphs = util.getParagraphs(doc, True)
util.msgbox(util.len(paragraphs))
End Sub
Obtener todos los parrafos de un documento, excluyendo los vacíos.
paragraphs = util.getParagraphs(doc, False)
util.msgbox(util.len(paragraphs))
39
EasyDev Documentation, Publicación 2.0.0
40
Capítulo 8. Writer
CAPÍTULO 9
Bases de datos
9.1 ODBC
Conectar a una base de datos ODBC
Sub ConexionODBC()
util = createUnoService("org.universolibre.EasyDev")
odbc = "ConSQL"
user = "sa"
passw = "letmein"
con = util.conODBC(odbc, user, passw)
util.msgbox(con)
End Sub
41
EasyDev Documentation, Publicación 2.0.0
42
Capítulo 9. Bases de datos
CAPÍTULO 10
Cuadros de diálogo
10.1 Crear diálogo
Crear cuadro de diálogo a partir de un archivo. Puedes diseñarlo en el IDE, exportarlo y crearlo desde el archivo
exportardo.
Sub CreateDialog
util = createUnoService("org.universolibre.EasyDev")
path = "/home/USER/dlg_test.xdl"
dlg = util.createDialog(path)
dlg.execute()
dlg.dispose()
End Sub
10.2 Etiqueta con hipervínculo
Automáticamente se agregar el evento ratón encima.
43
EasyDev Documentation, Publicación 2.0.0
path = "/home/USER/dlg_test.xdl"
dlg = util.createDialog(path)
properties = Array( _
Array("Name", "link_home"), _
Array("PositionX", 100), _
Array("PositionY", 10), _
Array("URL", "http://universolibre.org"), _
Array("Label", "http://universolibre.org"), _
)
util.createControl(dlg, "FixedHyperlink", properties)
dlg.execute()
dlg.dispose()
10.3 Mapa de ruta
Agregar un menú de opciones, automáticamente se agregar el evento item cambiado que actualiza la propiedad
Paso(Step) del cuadro de diálogo.
44
Capítulo 10. Cuadros de diálogo
EasyDev Documentation, Publicación 2.0.0
path = "/home/USER/dlg_test.xdl"
dlg = util.createDialog(path)
options = Array("Init", "Values", "Config", "Other")
properties = Array( _
Array("Name", "roadmap"), _
Array("Width", 50), _
Array("Height", 150), _
Array("Options", options), _
)
util.createControl(dlg, "Roadmap", properties)
dlg.execute()
dlg.dispose()
10.4 Rejilla
Crear una rejilla y establecer su contenido desde un array. Automáticamente se detectan las columnas con valores y se
formatean.
10.4. Rejilla
45
EasyDev Documentation, Publicación 2.0.0
c1 = Array( _
Array("Title", "State"), _
Array("HorizontalAlign", 0), _
)
c2 = Array( _
Array("Title", "People"), _
Array("HorizontalAlign", 2), _
Array("Identifier", True), _
)
columns = Array(c1, c2)
properties = Array( _
Array("Name", "grid"), _
Array("PositionX", 100), _
Array("PositionY", 50), _
Array("Step", 4), _
Array("Columns", columns), _
)
grid = util.createControl(dlg, "Grid", properties)
data = Array( _
Array("Uno", 2222), _
Array("Tres", 44444), _
Array("Cinco", 666666), _
Array("Siete", 666666), _
)
col_format = Array()
util.setGridData(grid, data, col_format)
dlg.execute()
dlg.dispose()
Agregar datos de un rango de celdas.
data = ThisComponent.getCurrentSelection().getDataarray()
col_format = Array()
util.setGridData(grid, data, col_format)
46
Capítulo 10. Cuadros de diálogo
EasyDev Documentation, Publicación 2.0.0
Cambiar el formato predeterminado de las columnas con valores.
data = ThisComponent.getCurrentSelection().getDataarray()
'Default format
util.numfmt = "$ {0:,.2f}"
col_format = Array()
util.setGridData(grid, data, col_format)
O puedes establecer el formato para cada columna.
data = ThisComponent.getCurrentSelection().getDataarray()
col_format = Array("{}", "$ {0:,.2f}")
util.setGridData(grid, data, col_format)
Y devolver los datos de la rejilla.
data = util.getGridData(grid, Array())
util.msgbox(data)
10.4. Rejilla
47
EasyDev Documentation, Publicación 2.0.0
48
Capítulo 10. Cuadros de diálogo
CAPÍTULO 11
Indíces y tablas
genindex
modindex
search
49
Descargar