268 lines
5.1 KiB
Markdown
268 lines
5.1 KiB
Markdown
|
|
||
|
# Crear cuadros de diálogo
|
||
|
|
||
|
### **create**
|
||
|
|
||
|
---
|
||
|
|
||
|
#### Desde "Mis Macros"
|
||
|
|
||
|
Si el cuadro de diálogo esta en la librería `Standard`.
|
||
|
|
||
|
```py
|
||
|
def crear_cuadro_de_dialogo1():
|
||
|
propiedades = {
|
||
|
'Location': 'user',
|
||
|
'Name': 'Dialog1',
|
||
|
}
|
||
|
dialog = app.dialog.create(propiedades)
|
||
|
dialog.open()
|
||
|
return
|
||
|
```
|
||
|
|
||
|
Si el cuadro de diálogo esta en otra librería.
|
||
|
|
||
|
```py
|
||
|
def crear_cuadro_de_dialogo2():
|
||
|
propiedades = {
|
||
|
'Location': 'user',
|
||
|
'Library': 'MiAplicacion',
|
||
|
'Name': 'Dialog1',
|
||
|
}
|
||
|
dialog = app.dialog.create(propiedades)
|
||
|
dialog.open()
|
||
|
return
|
||
|
```
|
||
|
|
||
|
<br>
|
||
|
|
||
|
#### Dentro de un archivo
|
||
|
|
||
|
Si el cuadro de diálogo esta en el documento activo en la librería `Standard`.
|
||
|
|
||
|
```py
|
||
|
def crear_cuadro_de_dialogo3():
|
||
|
propiedades = {
|
||
|
'Location': 'document',
|
||
|
'Name': 'Dialog1',
|
||
|
}
|
||
|
dialog = app.dialog.create(propiedades)
|
||
|
dialog.open()
|
||
|
return
|
||
|
```
|
||
|
|
||
|
Si el cuadro de diálogo esta en otro documento en la librería `Standard`.
|
||
|
|
||
|
```py
|
||
|
def crear_cuadro_de_dialogo4():
|
||
|
documento = app.docs['OtroArchivo.ods']
|
||
|
propiedades = {
|
||
|
'Location': 'document',
|
||
|
'Document': documento,
|
||
|
'Name': 'Dialog1',
|
||
|
}
|
||
|
dialog = app.dialog.create(propiedades)
|
||
|
dialog.open()
|
||
|
return
|
||
|
```
|
||
|
|
||
|
<br>
|
||
|
|
||
|
#### Desde archivo
|
||
|
|
||
|
Crear un cuadro de diálogo desde un archivo `xdl` previamente creado desde el editor de cuadros de diálogo dentro de LibreOffice y exportado a un archivo.
|
||
|
|
||
|
```py
|
||
|
def crear_cuadro_de_dialogo():
|
||
|
path = '/home/elmau/Desktop/mi_dialogo.xdl'
|
||
|
propiedades = {'Path': path}
|
||
|
|
||
|
dialog = app.dialog.create(propiedades)
|
||
|
dialog.open()
|
||
|
return
|
||
|
```
|
||
|
|
||
|
<br>
|
||
|
|
||
|
#### Crear dinámicamente
|
||
|
|
||
|
Crear un cuadro de diálogo vacío.
|
||
|
|
||
|
```py
|
||
|
def crear_cuadro_de_dialogo():
|
||
|
dialog = app.dialog.create()
|
||
|
dialog.open()
|
||
|
return
|
||
|
```
|
||
|
|
||
|
Cambiar las propiedades iniciales.
|
||
|
|
||
|
```py
|
||
|
propiedades = dict(
|
||
|
Name = 'MiDialogo',
|
||
|
Title = 'Maldito Mundo',
|
||
|
Width = 200,
|
||
|
Height = 100,
|
||
|
)
|
||
|
|
||
|
dialog = app.dialog.create(propiedades)
|
||
|
dialog.open()
|
||
|
```
|
||
|
|
||
|
<br>
|
||
|
|
||
|
!!! tip Importante
|
||
|
|
||
|
Cualquier propiedad usada al crear el cuadro de diálogo, debe ser la original del control pyUNO.
|
||
|
|
||
|
#### Propiedades
|
||
|
|
||
|
| Nombre | Descripción |
|
||
|
| ------ | ----------- |
|
||
|
| AllDialogChildren | |
|
||
|
| BackgroundColor | Color de fondo |
|
||
|
| Closeable | Permite cerrar el cuadro de diálogo con el icono `X` |
|
||
|
| Decoration |
|
||
|
| DefaultControl |
|
||
|
| DesktopAsParent |
|
||
|
| DialogSourceURL |
|
||
|
| Enabled |
|
||
|
| FontCharWidth |
|
||
|
| FontCharset |
|
||
|
| FontDescriptor |
|
||
|
| FontEmphasisMark |
|
||
|
| FontFamily |
|
||
|
| FontHeight |
|
||
|
| FontKerning |
|
||
|
| FontName |
|
||
|
| FontOrientation |
|
||
|
| FontPitch |
|
||
|
| FontRelief |
|
||
|
| FontSlant |
|
||
|
| FontStrikeout |
|
||
|
| FontStyleName |
|
||
|
| FontType |
|
||
|
| FontUnderline |
|
||
|
| FontWeight |
|
||
|
| FontWidth |
|
||
|
| FontWordLineMode |
|
||
|
| Graphic |
|
||
|
| HScroll |
|
||
|
| Height | Altura del control |
|
||
|
| HelpText |
|
||
|
| HelpURL |
|
||
|
| ImageURL |
|
||
|
| Moveable |
|
||
|
| Name | Nombre del control |
|
||
|
| PositionX | Posición en el eje X |
|
||
|
| PositionY | Posición en el eje Y |
|
||
|
| ResourceResolver |
|
||
|
| ScrollHeight |
|
||
|
| ScrollLeft |
|
||
|
| ScrollTop |
|
||
|
| ScrollWidth |
|
||
|
| Sizeable | Si el control cambia de tamaño |
|
||
|
| Step |
|
||
|
| TabIndex |
|
||
|
| Tag |
|
||
|
| TextColor |
|
||
|
| TextLineColor |
|
||
|
| Title | Título del cuadro de diálogo |
|
||
|
| VScroll | Mostrar barra de desplazamiento vertial |
|
||
|
| Width | Ancho del control |
|
||
|
|
||
|
<br>
|
||
|
|
||
|
### **add_control**
|
||
|
|
||
|
---
|
||
|
|
||
|
Agrega un control al cuadro de diálogo.
|
||
|
|
||
|
```py
|
||
|
propiedades = {
|
||
|
'Type': 'label',
|
||
|
'Name': 'lbl_info',
|
||
|
'Label': 'Esta es una etiqueta.',
|
||
|
'Width': 100,
|
||
|
'Height': 15,
|
||
|
'Border': 1,
|
||
|
'X': 5,
|
||
|
'Y': 5,
|
||
|
}
|
||
|
dialog.add_control(propiedades)
|
||
|
```
|
||
|
|
||
|
<br>
|
||
|
|
||
|
## Eventos
|
||
|
|
||
|
---
|
||
|
|
||
|
Todos los eventos de todos los controles de un cuadro de diálogo se controlan por medio de una clase Python que se pasa a la propiedad `events` del cuadro de diálogo.
|
||
|
|
||
|
Cada método de esta clase que tenga en su nombre la estructura que corresponde al nombre del control más el nombre del evento, responderá a dicho evento de dicho control.
|
||
|
|
||
|
`NOMBRE_CONTROL_NOMBRE_EVENTO`
|
||
|
|
||
|
Ejemplo:
|
||
|
|
||
|
```py
|
||
|
import easymacro as app
|
||
|
|
||
|
class Eventos():
|
||
|
|
||
|
def __init__(self, dialog):
|
||
|
self.d = dialog
|
||
|
|
||
|
def cmd_cerrar_action(self, event):
|
||
|
self.d.close(1)
|
||
|
return
|
||
|
|
||
|
def main():
|
||
|
propiedades = dict(
|
||
|
Name = 'MiDialogo',
|
||
|
Title = 'Maldito Mundo',
|
||
|
Width = 200,
|
||
|
Height = 100,
|
||
|
)
|
||
|
|
||
|
dialog = app.dialog.create(propiedades)
|
||
|
dialog.events = Eventos
|
||
|
|
||
|
propiedades = {
|
||
|
'Type': 'button',
|
||
|
'Name': 'cmd_cerrar',
|
||
|
'Label': 'Cerrar',
|
||
|
'Width': 40,
|
||
|
'Height': 15,
|
||
|
}
|
||
|
dialog.add_control(propiedades)
|
||
|
dialog.open()
|
||
|
return
|
||
|
```
|
||
|
|
||
|
<br>
|
||
|
|
||
|
Cada control agregado al cuadro de diálogo es instanciado como una propiedad del mismo cuadro de diálogo. En el ejemplo anterior, el botón de comando `cmd_cerrar` es accesible desde cualquier variable que apunte al cuadro de diálogo, en el mismo ejemplo anterior en:
|
||
|
|
||
|
```py
|
||
|
dialog.cmd_cerrar
|
||
|
```
|
||
|
|
||
|
Como en la clase `Eventos` en:
|
||
|
```py
|
||
|
self.d.cmd_cerrar
|
||
|
```
|
||
|
|
||
|
<br>
|
||
|
|
||
|
## Controles
|
||
|
|
||
|
---
|
||
|
|
||
|
#### [Etiqueta (label)](label/)
|
||
|
#### [Botón de comando (button)](cmd/)
|
||
|
|
||
|
<br>
|