# 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 ```
#### 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 ```
#### 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 ```
#### 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() ```
!!! 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 |
### **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) ```
## 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 ```
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 ```
## Controles --- #### [Etiqueta (label)](label/) #### [Botón de comando (button)](cmd/)