easymacro/docs/es/docs/dialogs/index.md

268 lines
5.1 KiB
Markdown
Raw Normal View History

2023-04-25 23:28:45 -06:00
# 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>