Completed document tools in spanish
This commit is contained in:
parent
5966869ebc
commit
0392d8acb5
|
@ -1,6 +1,6 @@
|
|||
+++
|
||||
title = "Calc"
|
||||
weight = 5
|
||||
weight = 6
|
||||
+++
|
||||
|
||||
#### Trabajar con Calc
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
+++
|
||||
title = "Cuadros de diálogo"
|
||||
weight = 6
|
||||
weight = 20
|
||||
+++
|
||||
|
||||
#### Trabajar con cuadros de diálogo
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
+++
|
||||
title = "Documentos"
|
||||
weight = 5
|
||||
+++
|
||||
|
||||
#### Trabajar con Documentos
|
||||
|
||||
### active
|
||||
|
||||
|
||||
```python
|
||||
```
|
|
@ -0,0 +1,65 @@
|
|||
+++
|
||||
title = "Ejecutar macros"
|
||||
weight = 6
|
||||
+++
|
||||
|
||||
Ejecutar cualquier macro, de forma predeterminada se llaman a las macros en Python localizadas en el perfil de usuario.
|
||||
|
||||
```python
|
||||
import easymacro as app
|
||||
|
||||
|
||||
def mostrar_info():
|
||||
app.msgbox(app.INFO_DEBUG)
|
||||
return
|
||||
|
||||
|
||||
def main(args=None):
|
||||
macro = {
|
||||
'library': 'test',
|
||||
'name': 'mostrar_info',
|
||||
}
|
||||
app.macro.call(macro)
|
||||
return
|
||||
```
|
||||
|
||||
Ejecutar una macro compartida en LibreOffice Macros.
|
||||
|
||||
```python
|
||||
macro = {
|
||||
'library': 'HelloWorld',
|
||||
'name': 'HelloWorldPython',
|
||||
'location': 'share',
|
||||
}
|
||||
app.macro.call(macro)
|
||||
```
|
||||
|
||||
Ejecutar una macro Basic.
|
||||
|
||||
```vb
|
||||
Sub mostrar_info()
|
||||
MsgBox "Mejor usa Python :)"
|
||||
End Sub
|
||||
```
|
||||
|
||||
```python
|
||||
macro = {
|
||||
'language': 'Basic',
|
||||
'library': 'Standard',
|
||||
'module': 'Module1',
|
||||
'name': 'mostrar_info',
|
||||
}
|
||||
app.macro.call(macro)
|
||||
```
|
||||
|
||||
Cualquier macro se puede ejecutar en otro hilo.
|
||||
|
||||
```python
|
||||
app.macro.call(macro, True)
|
||||
```
|
||||
|
||||
|
||||
Más información en: [Scripting Framework URI Specification][1]
|
||||
|
||||
|
||||
[1]: https://wiki.documentfoundation.org/Documentation/DevGuide/Scripting_Framework#Scripting_Framework_URI_Specification
|
|
@ -0,0 +1,50 @@
|
|||
+++
|
||||
title = "Hilos"
|
||||
weight = 5
|
||||
+++
|
||||
|
||||
#### Ejecutar macros en otros hilos.
|
||||
|
||||
Las macros se ejecutan en un hilo que bloquea cualquier otro proceso dentro de la aplicación.
|
||||
|
||||
Si ejecutas la siguiente macro `main`, nota que no puedes hacer algo más dentro de LibreOffice durante los 5 segundos que dura el proceso.
|
||||
|
||||
```python
|
||||
import easymacro as app
|
||||
|
||||
|
||||
def hacer_pausa(segundos):
|
||||
app.sleep(segundos)
|
||||
app.debug('He terminado')
|
||||
return
|
||||
|
||||
def main():
|
||||
hacer_pausa(5)
|
||||
app.msgbox('Fin...')
|
||||
return
|
||||
```
|
||||
|
||||
Hasta que aparece el cuadro de mensaje con la palabra `Fin` y lo cierras, el usuario puede seguir usando la aplicación.
|
||||
|
||||
### run_in_thread
|
||||
|
||||
Ahora ejecutamos la macro en otro hilo, "decorando" cualquier macro con `run_in_thread`
|
||||
|
||||
```python
|
||||
@app.run_in_thread
|
||||
def hacer_pausa(segundos):
|
||||
app.sleep(segundos)
|
||||
app.debug('He terminado')
|
||||
return
|
||||
|
||||
def main():
|
||||
hacer_pausa(5)
|
||||
app.msgbox('Fin...')
|
||||
return
|
||||
```
|
||||
|
||||
Nota que ahora el mensaje aparece inmediatamente y no tras los 5 segundos.
|
||||
|
||||
{{% notice warning %}}
|
||||
Ponga mucha atención en **no ejecutar macros en otros hilo** que dependen de algo suceptible de ser cambiado o interceptado por el usuario, por ejemplo, la celda activa.
|
||||
{{% /notice %}}
|
|
@ -0,0 +1,116 @@
|
|||
+++
|
||||
title = "Timer"
|
||||
weight = 7
|
||||
+++
|
||||
|
||||
El `timer` siempre se ejecuta en otro hilo.
|
||||
|
||||
### once
|
||||
|
||||
Ejecutar macro una sola vez en X segundos.
|
||||
|
||||
|
||||
```python
|
||||
import easymacro as app
|
||||
|
||||
|
||||
NOMBRE = 'reloj'
|
||||
|
||||
|
||||
def mostrar_hora():
|
||||
app.debug(app.dates.now_time)
|
||||
return
|
||||
|
||||
|
||||
def iniciar_conteo():
|
||||
segundos = 5
|
||||
macro = {
|
||||
'library': 'test',
|
||||
'name': 'mostrar_hora',
|
||||
}
|
||||
app.timer.once(NOMBRE, segundos, macro)
|
||||
return
|
||||
|
||||
|
||||
def main(args=None):
|
||||
iniciar_conteo()
|
||||
return
|
||||
```
|
||||
|
||||
### cancel
|
||||
|
||||
Cancelar ejecución, antes del tiempo establecido.
|
||||
|
||||
```python
|
||||
def main(args=None):
|
||||
iniciar_conteo()
|
||||
app.sleep(3)
|
||||
detener_conteo()
|
||||
return
|
||||
|
||||
def detener_conteo():
|
||||
app.timer.cancel(NOMBRE)
|
||||
return
|
||||
```
|
||||
|
||||
```
|
||||
16/08/2022 21:18:50 - INFO - Event: "reloj", started... execute in 60 seconds
|
||||
16/08/2022 21:18:55 - INFO - Cancel event: "reloj", ok...
|
||||
```
|
||||
|
||||
### start
|
||||
|
||||
Ejecutar macro cada X segundos.
|
||||
|
||||
```python
|
||||
NOMBRE = 'reloj'
|
||||
|
||||
|
||||
def mostrar_hora():
|
||||
app.debug(app.dates.now_time)
|
||||
return
|
||||
|
||||
|
||||
def iniciar_reloj():
|
||||
segundos = 1
|
||||
macro = {
|
||||
'library': 'test',
|
||||
'name': 'mostrar_hora',
|
||||
}
|
||||
app.timer.start(NOMBRE, segundos, macro)
|
||||
return
|
||||
|
||||
def main(args=None):
|
||||
iniciar_reloj()
|
||||
return
|
||||
```
|
||||
|
||||
### stop
|
||||
|
||||
Detener timer.
|
||||
|
||||
```python
|
||||
def detener_reloj():
|
||||
app.timer.stop(NOMBRE)
|
||||
return
|
||||
```
|
||||
|
||||
```
|
||||
16/08/2022 21:25:37 - INFO - Timer 'reloj' started, execute macro: 'mostrar_hora'
|
||||
16/08/2022 21:25:38 - DEBUG - 21:25:38
|
||||
16/08/2022 21:25:39 - DEBUG - 21:25:39
|
||||
...
|
||||
16/08/2022 21:25:47 - DEBUG - 21:25:47
|
||||
16/08/2022 21:25:48 - DEBUG - 21:25:48
|
||||
16/08/2022 21:25:48 - INFO - Timer stopped...
|
||||
```
|
||||
|
||||
|
||||
{{% notice tip %}}
|
||||
Asegurese siempre de establecer un nombre único para cada timer.
|
||||
{{% /notice %}}
|
||||
|
||||
|
||||
{{% notice warning %}}
|
||||
Asegurese siempre de ejecutar macros que NO bloqueen la interfaz del usuario.
|
||||
{{% /notice %}}
|
|
@ -0,0 +1,42 @@
|
|||
+++
|
||||
title = "URL"
|
||||
weight = 8
|
||||
+++
|
||||
|
||||
### get
|
||||
|
||||
Método `get`.
|
||||
|
||||
```python
|
||||
def prueba_get():
|
||||
|
||||
url = 'https://api.ipify.org'
|
||||
respuesta = app.url.get(url)
|
||||
if respuesta.status_code == 200:
|
||||
mi_ip = respuesta.body.decode()
|
||||
app.debug(f'IP: {mi_ip}')
|
||||
else:
|
||||
app.debug(respuesta.status_code)
|
||||
|
||||
return
|
||||
```
|
||||
|
||||
```
|
||||
16/08/2022 22:14:13 - DEBUG - IP: 199.203.174.159
|
||||
```
|
||||
|
||||
Respuestas en formato json.
|
||||
|
||||
```python
|
||||
def prueba_get():
|
||||
|
||||
url = 'https://api.ipify.org/?format=json'
|
||||
respuesta = app.url.get(url)
|
||||
if respuesta.status_code == 200:
|
||||
datos = respuesta.json()
|
||||
app.debug(f'IP: {datos["ip"]}')
|
||||
else:
|
||||
app.debug(respuesta.status_code)
|
||||
|
||||
return
|
||||
```
|
|
@ -0,0 +1,198 @@
|
|||
+++
|
||||
title = "Utilidades"
|
||||
weight = 9
|
||||
+++
|
||||
|
||||
### dict_to_property
|
||||
|
||||
Convertir diccionarios en PropertyValue
|
||||
|
||||
|
||||
```python
|
||||
datos = {
|
||||
'Hidden': True,
|
||||
'Password': 'letmein',
|
||||
}
|
||||
propiedades = app.dict_to_property(datos)
|
||||
|
||||
app.msgbox(propiedades)
|
||||
```
|
||||
|
||||
|
||||
### data_to_dict
|
||||
|
||||
Convertir `PropertyValue` en diccionarios
|
||||
|
||||
```python
|
||||
datos = app.data_to_dict(propiedades)
|
||||
app.msgbox(datos)
|
||||
```
|
||||
|
||||
Convertir `tuplas` a diccionario.
|
||||
|
||||
```python
|
||||
tupla_de_tuplas = (
|
||||
('Hidden', True),
|
||||
('Password', 'letmein'),
|
||||
)
|
||||
datos = app.data_to_dict(tupla_de_tuplas)
|
||||
app.msgbox(datos)
|
||||
```
|
||||
|
||||
Convertir `listas` a diccionario.
|
||||
|
||||
```python
|
||||
lista_de_listas = [
|
||||
['Hidden', True],
|
||||
['Password', 'letmein'],
|
||||
]
|
||||
datos = app.data_to_dict(lista_de_listas)
|
||||
app.msgbox(datos)
|
||||
```
|
||||
|
||||
### sleep
|
||||
|
||||
Hacer una pausa de X segundos.
|
||||
|
||||
```python
|
||||
app.sleep(5)
|
||||
```
|
||||
|
||||
### render
|
||||
|
||||
Reemplazar variables en cadenas de texto.
|
||||
|
||||
```python
|
||||
plantilla = """Hola $nombre
|
||||
|
||||
Te envío este archivo: $archivo
|
||||
|
||||
Saludos cordiales
|
||||
"""
|
||||
|
||||
datos = {
|
||||
'nombre': 'Ingrid Bergman',
|
||||
'archivo': 'carta_de_amor.odt'
|
||||
}
|
||||
|
||||
resultado = app.render(plantilla, datos)
|
||||
|
||||
app.msgbox(resultado)
|
||||
```
|
||||
|
||||
### run
|
||||
|
||||
Ejecutar un programa.
|
||||
|
||||
```python
|
||||
nombre_aplicacion = 'gnome-calculator'
|
||||
app.shell.run(nombre_aplicacion)
|
||||
```
|
||||
|
||||
Ejecutar comandos shell y capturar la salida.
|
||||
|
||||
```python
|
||||
comandos = 'ls -lh ~'
|
||||
resultado = app.shell.run(comandos, True)
|
||||
app.debug(resultado)
|
||||
```
|
||||
|
||||
```
|
||||
drwxr-xr-x 4 mau mau 4.0K Aug 15 23:36 Desktop
|
||||
drwxr-xr-x 6 mau mau 4.0K Jun 9 23:32 Documents
|
||||
drwxr-xr-x 5 mau mau 4.0K Aug 16 13:09 Downloads
|
||||
drwxr-xr-x 3 mau mau 4.0K Aug 14 15:19 Pictures
|
||||
drwxr-xr-x 10 mau mau 4.0K Jun 19 19:36 Projects
|
||||
drwxr-xr-x 2 mau mau 4.0K May 11 22:36 Templates
|
||||
drwxr-xr-x 2 mau mau 4.0K Jul 19 13:37 Videos
|
||||
```
|
||||
|
||||
Ejectuar comandos y capturar la salida línea a línea.
|
||||
|
||||
```python
|
||||
comandos = 'ls -lh /home/mau'
|
||||
for line in app.shell.popen(comandos):
|
||||
app.debug(line)
|
||||
```
|
||||
|
||||
### digest
|
||||
|
||||
Obtener hash. Por default se regresa en hexadecimal.
|
||||
|
||||
```python
|
||||
datos = 'LibreOffice con Python'
|
||||
|
||||
digest = app.hash.digest('md5', datos)
|
||||
app.debug('MD5 = ', digest)
|
||||
|
||||
digest = app.hash.digest('sha1', datos)
|
||||
app.debug('SHA1 = ', digest)
|
||||
|
||||
digest = app.hash.digest('sha256', datos)
|
||||
app.debug('SHA256 = ', digest)
|
||||
|
||||
digest = app.hash.digest('sha512', datos)
|
||||
app.debug('SHA512 = ', digest)
|
||||
```
|
||||
|
||||
```
|
||||
16/08/2022 18:48:07 - DEBUG - MD5 = 3801759ead20abc3ce0d0095289bdcfd
|
||||
16/08/2022 18:48:07 - DEBUG - SHA1 = 1df74aaae9658c21074aa5a2d4c2055dcf79f0db
|
||||
16/08/2022 18:48:07 - DEBUG - SHA256 = 228e90b15b6259307e580677939b1f2f45e9317461e98f603af8fcac0f9a598f
|
||||
16/08/2022 18:48:07 - DEBUG - SHA512 = 3ef45f79f3bfd2b251d250489c91b631306456405510397fb1a7ee37005d196376b7d6ca86a9895f4eb97eb74813965c24d6564a383f4bdb1360665c8fbb192a
|
||||
```
|
||||
|
||||
Para obtener bytes.
|
||||
|
||||
```
|
||||
digest = app.hash.digest('md5', datos, False)
|
||||
app.debug('MD5 = ', digest)
|
||||
```
|
||||
|
||||
```
|
||||
16/08/2022 18:48:07 - DEBUG - MD5 = b'8\x01u\x9e\xad \xab\xc3\xce\r\x00\x95(\x9b\xdc\xfd'
|
||||
```
|
||||
|
||||
|
||||
### config
|
||||
|
||||
Puede guardar datos de configuración de su macro o extensión dentro del perfil de usuario.
|
||||
|
||||
```python
|
||||
nombre = 'mi_extension'
|
||||
datos = {
|
||||
'ruta': '/home/mau/pruebas',
|
||||
'guardar': True,
|
||||
}
|
||||
|
||||
if app.config.set(nombre, datos):
|
||||
app.debug('Configuración guardada...')
|
||||
```
|
||||
|
||||
Y recuperarlos en cualquier momento.
|
||||
|
||||
```
|
||||
datos = app.config.get(nombre)
|
||||
app.debug(datos)
|
||||
```
|
||||
|
||||
|
||||
### color
|
||||
|
||||
Puede ver los colores que puede usar en Wikipedia [Colores Web][1]
|
||||
|
||||
```python
|
||||
color_nombre = 'darkblue'
|
||||
color = app.color(color_nombre)
|
||||
app.debug(color)
|
||||
|
||||
color_rgb = (125, 200, 10)
|
||||
color = app.color(color_rgb)
|
||||
app.debug(color)
|
||||
|
||||
color_html = '#008080'
|
||||
color = app.color(color_html)
|
||||
app.debug(color)
|
||||
```
|
||||
|
||||
[1]: https://es.wikipedia.org/wiki/Colores_web
|
|
@ -9,15 +9,15 @@
|
|||
<title>404 Page not found</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left {
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title>Categories :: EasyMacro's documentation</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -458,19 +458,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -20,6 +20,16 @@
|
|||
/>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/tools_debug/</loc>
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="es"
|
||||
href="https://doc.cuates.net/easymacro/es/tools_debug/"
|
||||
/>
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="en"
|
||||
href="https://doc.cuates.net/easymacro/tools_debug/"
|
||||
/>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/</loc>
|
||||
<priority>0</priority>
|
||||
|
|
|
@ -9,15 +9,15 @@
|
|||
<title>404 Page not found</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>LibreOffice on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/application/</link>
|
||||
<description>Recent content in LibreOffice on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/application/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Calc on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/calc/</link>
|
||||
<description>Recent content in Calc on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/calc/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
|
@ -12,22 +12,22 @@
|
|||
<title>Categories :: Documentación para EasyMacro</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -44,7 +44,7 @@
|
|||
|
||||
<div id="header-wrapper">
|
||||
<div id="header">
|
||||
<a id="logo" href='/es'>
|
||||
<a id="logo" href='/easymacro/es'>
|
||||
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="100.000000pt" height="75.000000pt" viewBox="0 0 200.000000 150.000000"
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/es";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -121,7 +121,7 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<section id="homelinks">
|
||||
<ul>
|
||||
<li>
|
||||
<a class="padding" href='/es'><i class='fas fa-home'></i> Inicio</a>
|
||||
<a class="padding" href='/easymacro/es'><i class='fas fa-home'></i> Inicio</a>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
@ -156,6 +156,396 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools_debug/" title="Herramientas para depurar" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools_debug/">
|
||||
Herramientas para depurar
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/" title="Herramientas" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/">
|
||||
Herramientas
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/messages/" title="Mensajes" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/messages/">
|
||||
Mensajes
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/dates_and_time/" title="Fechas y tiempo" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/dates_and_time/">
|
||||
Fechas y tiempo
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/paths/" title="Rutas y archivos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/paths/">
|
||||
Rutas y archivos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/email/" title="Correo electrónico" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/email/">
|
||||
Correo electrónico
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/threads/" title="Hilos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/threads/">
|
||||
Hilos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/macros/" title="Ejecutar macros" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/macros/">
|
||||
Ejecutar macros
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/timer/" title="Timer" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/timer/">
|
||||
Timer
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/url/" title="URL" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/url/">
|
||||
URL
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/utils/" title="Utilidades" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/utils/">
|
||||
Utilidades
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/application/" title="LibreOffice" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/application/">
|
||||
LibreOffice
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/documents/" title="Documentos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/documents/">
|
||||
Documentos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/calc/" title="Calc" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/calc/">
|
||||
Calc
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/dialog/" title="Cuadros de diálogo" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/dialog/">
|
||||
Cuadros de diálogo
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
@ -387,6 +777,248 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -418,19 +1050,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Cuadros de diálogo on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/dialog/</link>
|
||||
<description>Recent content in Cuadros de diálogo on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/dialog/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Documentos on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/documents/</link>
|
||||
<description>Recent content in Documentos on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/documents/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
|
@ -12,22 +12,22 @@
|
|||
<title> :: Documentación para EasyMacro</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -44,7 +44,7 @@
|
|||
|
||||
<div id="header-wrapper">
|
||||
<div id="header">
|
||||
<a id="logo" href='/es'>
|
||||
<a id="logo" href='/easymacro/es'>
|
||||
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="100.000000pt" height="75.000000pt" viewBox="0 0 200.000000 150.000000"
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/es";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -121,7 +121,7 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<section id="homelinks">
|
||||
<ul>
|
||||
<li>
|
||||
<a class="padding" href='/es'><i class='fas fa-home'></i> Inicio</a>
|
||||
<a class="padding" href='/easymacro/es'><i class='fas fa-home'></i> Inicio</a>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
@ -156,6 +156,396 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools_debug/" title="Herramientas para depurar" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools_debug/">
|
||||
Herramientas para depurar
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/" title="Herramientas" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/">
|
||||
Herramientas
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/messages/" title="Mensajes" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/messages/">
|
||||
Mensajes
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/dates_and_time/" title="Fechas y tiempo" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/dates_and_time/">
|
||||
Fechas y tiempo
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/paths/" title="Rutas y archivos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/paths/">
|
||||
Rutas y archivos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/email/" title="Correo electrónico" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/email/">
|
||||
Correo electrónico
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/threads/" title="Hilos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/threads/">
|
||||
Hilos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/macros/" title="Ejecutar macros" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/macros/">
|
||||
Ejecutar macros
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/timer/" title="Timer" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/timer/">
|
||||
Timer
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/url/" title="URL" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/url/">
|
||||
URL
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/utils/" title="Utilidades" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/utils/">
|
||||
Utilidades
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/application/" title="LibreOffice" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/application/">
|
||||
LibreOffice
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/documents/" title="Documentos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/documents/">
|
||||
Documentos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/calc/" title="Calc" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/calc/">
|
||||
Calc
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/dialog/" title="Cuadros de diálogo" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/dialog/">
|
||||
Cuadros de diálogo
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
@ -341,6 +731,248 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -372,19 +1004,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -12,22 +12,22 @@
|
|||
<title>Instalación :: Documentación para EasyMacro</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -44,7 +44,7 @@
|
|||
|
||||
<div id="header-wrapper">
|
||||
<div id="header">
|
||||
<a id="logo" href='/es'>
|
||||
<a id="logo" href='/easymacro/es'>
|
||||
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="100.000000pt" height="75.000000pt" viewBox="0 0 200.000000 150.000000"
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/es";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -121,7 +121,7 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<section id="homelinks">
|
||||
<ul>
|
||||
<li>
|
||||
<a class="padding" href='/es'><i class='fas fa-home'></i> Inicio</a>
|
||||
<a class="padding" href='/easymacro/es'><i class='fas fa-home'></i> Inicio</a>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
@ -156,6 +156,396 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools_debug/" title="Herramientas para depurar" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools_debug/">
|
||||
Herramientas para depurar
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/" title="Herramientas" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/">
|
||||
Herramientas
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/messages/" title="Mensajes" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/messages/">
|
||||
Mensajes
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/dates_and_time/" title="Fechas y tiempo" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/dates_and_time/">
|
||||
Fechas y tiempo
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/paths/" title="Rutas y archivos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/paths/">
|
||||
Rutas y archivos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/email/" title="Correo electrónico" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/email/">
|
||||
Correo electrónico
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/threads/" title="Hilos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/threads/">
|
||||
Hilos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/macros/" title="Ejecutar macros" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/macros/">
|
||||
Ejecutar macros
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/timer/" title="Timer" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/timer/">
|
||||
Timer
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/url/" title="URL" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/url/">
|
||||
URL
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/utils/" title="Utilidades" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/utils/">
|
||||
Utilidades
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/application/" title="LibreOffice" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/application/">
|
||||
LibreOffice
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/documents/" title="Documentos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/documents/">
|
||||
Documentos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/calc/" title="Calc" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/calc/">
|
||||
Calc
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/dialog/" title="Cuadros de diálogo" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/dialog/">
|
||||
Cuadros de diálogo
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
@ -391,6 +781,251 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -415,6 +1050,8 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<a class="nav nav-prev" href="/easymacro/es/" title=""> <i class="fa fa-chevron-left"></i></a>
|
||||
|
||||
|
||||
<a class="nav nav-next" href="/easymacro/es/tools_debug/" title="Herramientas para depurar" style="margin-right: 0px;"><i class="fa fa-chevron-right"></i></a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -423,19 +1060,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -18,6 +18,46 @@
|
|||
hreflang="es"
|
||||
href="https://doc.cuates.net/easymacro/es/installation/"
|
||||
/>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/tools/messages/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/tools/dates_and_time/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/tools_debug/</loc>
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="en"
|
||||
href="https://doc.cuates.net/easymacro/tools_debug/"
|
||||
/>
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="es"
|
||||
href="https://doc.cuates.net/easymacro/es/tools_debug/"
|
||||
/>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/tools/paths/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/tools/email/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/tools/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/application/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/documents/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/tools/threads/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/calc/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/tools/macros/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/tools/timer/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/tools/url/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/tools/utils/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/dialog/</loc>
|
||||
</url><url>
|
||||
<loc>https://doc.cuates.net/easymacro/es/</loc>
|
||||
<priority>0</priority>
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title>Tags :: Documentación para EasyMacro</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -44,7 +44,7 @@
|
|||
|
||||
<div id="header-wrapper">
|
||||
<div id="header">
|
||||
<a id="logo" href='/es'>
|
||||
<a id="logo" href='/easymacro/es'>
|
||||
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="100.000000pt" height="75.000000pt" viewBox="0 0 200.000000 150.000000"
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/es";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -121,7 +121,7 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<section id="homelinks">
|
||||
<ul>
|
||||
<li>
|
||||
<a class="padding" href='/es'><i class='fas fa-home'></i> Inicio</a>
|
||||
<a class="padding" href='/easymacro/es'><i class='fas fa-home'></i> Inicio</a>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
@ -156,6 +156,396 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools_debug/" title="Herramientas para depurar" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools_debug/">
|
||||
Herramientas para depurar
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/" title="Herramientas" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/">
|
||||
Herramientas
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/messages/" title="Mensajes" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/messages/">
|
||||
Mensajes
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/dates_and_time/" title="Fechas y tiempo" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/dates_and_time/">
|
||||
Fechas y tiempo
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/paths/" title="Rutas y archivos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/paths/">
|
||||
Rutas y archivos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/email/" title="Correo electrónico" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/email/">
|
||||
Correo electrónico
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/threads/" title="Hilos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/threads/">
|
||||
Hilos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/macros/" title="Ejecutar macros" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/macros/">
|
||||
Ejecutar macros
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/timer/" title="Timer" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/timer/">
|
||||
Timer
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/url/" title="URL" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/url/">
|
||||
URL
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/tools/utils/" title="Utilidades" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/tools/utils/">
|
||||
Utilidades
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/application/" title="LibreOffice" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/application/">
|
||||
LibreOffice
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/documents/" title="Documentos" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/documents/">
|
||||
Documentos
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/calc/" title="Calc" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/calc/">
|
||||
Calc
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li data-nav-id="/easymacro/es/dialog/" title="Cuadros de diálogo" class="dd-item
|
||||
|
||||
|
||||
|
||||
">
|
||||
<a href="/easymacro/es/dialog/">
|
||||
Cuadros de diálogo
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
|
@ -387,6 +777,248 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -418,19 +1050,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Fechas y tiempo on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/tools/dates_and_time/</link>
|
||||
<description>Recent content in Fechas y tiempo on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/dates_and_time/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Correo electrónico on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/tools/email/</link>
|
||||
<description>Recent content in Correo electrónico on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/email/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Herramientas on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/tools/</link>
|
||||
<description>Recent content in Herramientas on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Ejecutar macros on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/tools/macros/</link>
|
||||
<description>Recent content in Ejecutar macros on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/macros/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Mensajes on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/tools/messages/</link>
|
||||
<description>Recent content in Mensajes on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/messages/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Rutas y archivos on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/tools/paths/</link>
|
||||
<description>Recent content in Rutas y archivos on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/paths/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Hilos on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/tools/threads/</link>
|
||||
<description>Recent content in Hilos on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/threads/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Timer on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/tools/timer/</link>
|
||||
<description>Recent content in Timer on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/timer/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
Binary file not shown.
After Width: | Height: | Size: 51 KiB |
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>URL on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/tools/url/</link>
|
||||
<description>Recent content in URL on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/url/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Utilidades on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/tools/utils/</link>
|
||||
<description>Recent content in Utilidades on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools/utils/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Herramientas para depurar on Documentación para EasyMacro</title>
|
||||
<link>https://doc.cuates.net/easymacro/es/tools_debug/</link>
|
||||
<description>Recent content in Herramientas para depurar on Documentación para EasyMacro</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="https://doc.cuates.net/easymacro/es/tools_debug/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
Binary file not shown.
After Width: | Height: | Size: 51 KiB |
|
@ -9,15 +9,15 @@
|
|||
<title>404 Page not found</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left {
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title>Categories :: Documentation du EasyMacro</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/fr";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -373,19 +373,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title> :: Documentation du EasyMacro</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/fr";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -322,19 +322,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title>Tags :: Documentation du EasyMacro</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/fr";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -373,19 +373,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title> :: EasyMacro's documentation</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -412,19 +412,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title>Installation :: EasyMacro's documentation</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -466,19 +466,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -9,15 +9,15 @@
|
|||
<title>404 Page not found</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left {
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title>Categories :: Documentação para EasyMacro</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/pt";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -418,19 +418,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title> :: Documentação para EasyMacro</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/pt";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -367,19 +367,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title>Instalação :: Documentação para EasyMacro</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/pt";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -421,19 +421,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title>Tags :: Documentação para EasyMacro</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro\/pt";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -418,19 +418,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title>Tags :: EasyMacro's documentation</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -458,19 +458,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
|
@ -12,22 +12,22 @@
|
|||
<title>Tools for debug :: EasyMacro's documentation</title>
|
||||
|
||||
|
||||
<link href="/easymacro/css/nucleus.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/nucleus.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/fontawesome-all.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hybrid.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/featherlight.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/perfect-scrollbar.min.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/auto-complete.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/atom-one-dark-reasonable.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/tabs.css?1660707822" rel="stylesheet">
|
||||
<link href="/easymacro/css/hugo-theme.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/theme-blue.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/theme-blue.css?1660707822" rel="stylesheet">
|
||||
|
||||
<link href="/easymacro/css/custom.css?1660257767" rel="stylesheet">
|
||||
<link href="/easymacro/css/custom.css?1660707822" rel="stylesheet">
|
||||
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery-3.3.1.min.js?1660707822"></script>
|
||||
|
||||
<style>
|
||||
:root #header + #content > #left > #rlblock_left{
|
||||
|
@ -106,14 +106,14 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<span data-search-clear=""><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/lunr.min.js?1660707822"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/auto-complete.js?1660707822"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var baseurl = "https:\/\/doc.cuates.net\/easymacro";
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660257767"></script>
|
||||
<script type="text/javascript" src="/easymacro/js/search.js?1660707822"></script>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -226,6 +226,22 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<option id="es" value="https://doc.cuates.net/easymacro/es/tools_debug/">Español</option>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
|
||||
|
@ -414,19 +430,19 @@ l-31 -82 -29 83 c-27 76 -31 82 -56 82 l-28 0 0 -120z"/>
|
|||
<div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
|
||||
<div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
|
||||
</div>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660257767"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660257767"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660257767"></script>
|
||||
<script src="/easymacro/js/clipboard.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/perfect-scrollbar.jquery.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/jquery.sticky.js?1660707822"></script>
|
||||
<script src="/easymacro/js/featherlight.min.js?1660707822"></script>
|
||||
<script src="/easymacro/js/highlight.pack.js?1660707822"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660257767"></script>
|
||||
<script src="/easymacro/js/learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660257767"></script>
|
||||
<script src="/easymacro/js/modernizr.custom-3.6.0.js?1660707822"></script>
|
||||
<script src="/easymacro/js/learn.js?1660707822"></script>
|
||||
<script src="/easymacro/js/hugo-learn.js?1660707822"></script>
|
||||
|
||||
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660257767"></script>
|
||||
<script src="/easymacro/mermaid/mermaid.js?1660707822"></script>
|
||||
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true });
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 51 KiB |
|
@ -18,23 +18,14 @@
|
|||
# ~ along with easymacro. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
|
||||
import getpass
|
||||
import hashlib
|
||||
import io
|
||||
|
||||
import logging
|
||||
import os
|
||||
import platform
|
||||
import re
|
||||
import shlex
|
||||
import socket
|
||||
import ssl
|
||||
|
||||
|
||||
|
||||
from string import Template
|
||||
|
||||
from socket import timeout
|
||||
from urllib import parse
|
||||
from urllib.request import Request, urlopen
|
||||
|
@ -45,623 +36,14 @@ from com.sun.star.awt import Key, KeyEvent, KeyModifier
|
|||
|
||||
from com.sun.star.datatransfer import XTransferable, DataFlavor
|
||||
from com.sun.star.io import IOException, XOutputStream
|
||||
|
||||
from com.sun.star.sheet import XRangeSelectionListener
|
||||
|
||||
from com.sun.star.container import NoSuchElementException
|
||||
|
||||
|
||||
|
||||
SALT = b'00a1bfb05353bb3fd8e7aa7fe5efdccc'
|
||||
|
||||
_EVENTS = {}
|
||||
|
||||
FILES = {
|
||||
'CONFIG': 'zaz-{}.json',
|
||||
}
|
||||
DIRS = {}
|
||||
|
||||
|
||||
def run_in_thread(fn):
|
||||
"""Run any function in thread
|
||||
|
||||
:param fn: Any Python function (macro)
|
||||
:type fn: Function instance
|
||||
"""
|
||||
def run(*k, **kw):
|
||||
t = threading.Thread(target=fn, args=k, kwargs=kw)
|
||||
t.start()
|
||||
return t
|
||||
return run
|
||||
|
||||
|
||||
|
||||
def _property_to_dict(values):
|
||||
d = {v.Name: v.Value for v in values}
|
||||
return d
|
||||
|
||||
|
||||
def data_to_dict(data) -> dict:
|
||||
"""Convert tuples, list, PropertyValue, NamedValue to dictionary
|
||||
|
||||
:param data: Dictionary of values
|
||||
:type data: array of tuples, list, PropertyValue or NamedValue
|
||||
:return: Dictionary
|
||||
:rtype: dict
|
||||
"""
|
||||
d = {}
|
||||
if not isinstance(data, (tuple, list)):
|
||||
return d
|
||||
|
||||
if isinstance(data[0], (tuple, list)):
|
||||
d = {r[0]: r[1] for r in data}
|
||||
elif isinstance(data[0], (PropertyValue, NamedValue)):
|
||||
d = _property_to_dict(data)
|
||||
|
||||
return d
|
||||
|
||||
|
||||
def render(template, data):
|
||||
s = Template(template)
|
||||
return s.safe_substitute(**data)
|
||||
|
||||
# Classes
|
||||
|
||||
|
||||
class Json(object):
|
||||
"""Class for json data
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def dumps(cls, data: Any) -> str:
|
||||
"""Dumps
|
||||
|
||||
:param data: Any data
|
||||
:type data: Any
|
||||
:return: Return string json
|
||||
:rtype: str
|
||||
"""
|
||||
return json.dumps(data, indent=4, sort_keys=True)
|
||||
|
||||
@classmethod
|
||||
def loads(cls, data: str) -> Any:
|
||||
"""Loads
|
||||
|
||||
:param data: String data
|
||||
:type data: str
|
||||
:return: Return any object
|
||||
:rtype: Any
|
||||
"""
|
||||
return json.loads(data)
|
||||
|
||||
|
||||
class Macro(object):
|
||||
"""Class for call macro
|
||||
|
||||
`See Scripting Framework <https://wiki.openoffice.org/wiki/Documentation/DevGuide/Scripting/Scripting_Framework_URI_Specification>`_
|
||||
"""
|
||||
@classmethod
|
||||
def call(cls, args: dict, in_thread: bool=False):
|
||||
"""Call any macro
|
||||
|
||||
:param args: Dictionary with macro location
|
||||
:type args: dict
|
||||
:param in_thread: If execute in thread
|
||||
:type in_thread: bool
|
||||
:return: Return None or result of call macro
|
||||
:rtype: Any
|
||||
"""
|
||||
|
||||
result = None
|
||||
if in_thread:
|
||||
t = threading.Thread(target=cls._call, args=(args,))
|
||||
t.start()
|
||||
else:
|
||||
result = cls._call(args)
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def get_url_script(cls, args: dict):
|
||||
library = args['library']
|
||||
name = args['name']
|
||||
language = args.get('language', 'Python')
|
||||
location = args.get('location', 'user')
|
||||
module = args.get('module', '.')
|
||||
|
||||
if language == 'Python':
|
||||
module = '.py$'
|
||||
elif language == 'Basic':
|
||||
module = f".{module}."
|
||||
if location == 'user':
|
||||
location = 'application'
|
||||
|
||||
url = 'vnd.sun.star.script'
|
||||
url = f'{url}:{library}{module}{name}?language={language}&location={location}'
|
||||
return url
|
||||
|
||||
@classmethod
|
||||
def _call(cls, args: dict):
|
||||
url = cls.get_url_script(args)
|
||||
args = args.get('args', ())
|
||||
|
||||
service = 'com.sun.star.script.provider.MasterScriptProviderFactory'
|
||||
factory = create_instance(service)
|
||||
script = factory.createScriptProvider('').getScript(url)
|
||||
result = script.invoke(args, None, None)[0]
|
||||
|
||||
return result
|
||||
|
||||
|
||||
class Shell(object):
|
||||
"""Class for subprocess
|
||||
|
||||
`See Subprocess <https://docs.python.org/3.7/library/subprocess.html>`_
|
||||
"""
|
||||
@classmethod
|
||||
def run(cls, command, capture=False, split=False):
|
||||
"""Execute commands
|
||||
|
||||
:param command: Command to run
|
||||
:type command: str
|
||||
:param capture: If capture result of command
|
||||
:type capture: bool
|
||||
:param split: Some commands need split.
|
||||
:type split: bool
|
||||
:return: Result of command
|
||||
:rtype: Any
|
||||
"""
|
||||
if split:
|
||||
cmd = shlex.split(command)
|
||||
result = subprocess.run(cmd, capture_output=capture, text=True, shell=IS_WIN)
|
||||
if capture:
|
||||
result = result.stdout
|
||||
else:
|
||||
result = result.returncode
|
||||
else:
|
||||
if capture:
|
||||
result = subprocess.check_output(command, shell=True).decode()
|
||||
else:
|
||||
result = subprocess.Popen(command)
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def popen(cls, command):
|
||||
"""Execute commands and return line by line
|
||||
|
||||
:param command: Command to run
|
||||
:type command: str
|
||||
:return: Result of command
|
||||
:rtype: Any
|
||||
"""
|
||||
try:
|
||||
proc = subprocess.Popen(shlex.split(command), shell=IS_WIN,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
for line in proc.stdout:
|
||||
yield line.decode().rstrip()
|
||||
except Exception as e:
|
||||
error(e)
|
||||
yield (e.errno, e.strerror)
|
||||
|
||||
|
||||
class Timer(object):
|
||||
"""Class for timer thread"""
|
||||
|
||||
class TimerThread(threading.Thread):
|
||||
|
||||
def __init__(self, event, seconds, macro):
|
||||
threading.Thread.__init__(self)
|
||||
self._event = event
|
||||
self._seconds = seconds
|
||||
self._macro = macro
|
||||
|
||||
def run(self):
|
||||
while not self._event.wait(self._seconds):
|
||||
Macro.call(self._macro)
|
||||
info('\tTimer stopped... ')
|
||||
return
|
||||
|
||||
@classmethod
|
||||
def exists(cls, name):
|
||||
"""Validate in timer **name** exists
|
||||
|
||||
:param name: Timer name, it must be unique
|
||||
:type name: str
|
||||
:return: True if exists timer name
|
||||
:rtype: bool
|
||||
"""
|
||||
global _EVENTS
|
||||
return name in _EVENTS
|
||||
|
||||
@classmethod
|
||||
def start(cls, name: str, seconds: float, macro: dict):
|
||||
"""Start timer **name** every **seconds** and execute **macro**
|
||||
|
||||
:param name: Timer name, it must be unique
|
||||
:type name: str
|
||||
:param seconds: Seconds for wait
|
||||
:type seconds: float
|
||||
:param macro: Macro for execute
|
||||
:type macro: dict
|
||||
"""
|
||||
global _EVENTS
|
||||
|
||||
_EVENTS[name] = threading.Event()
|
||||
info(f"Timer '{name}' started, execute macro: '{macro['name']}'")
|
||||
thread = cls.TimerThread(_EVENTS[name], seconds, macro)
|
||||
thread.start()
|
||||
return
|
||||
|
||||
@classmethod
|
||||
def stop(cls, name: str):
|
||||
"""Stop timer **name**
|
||||
|
||||
:param name: Timer name
|
||||
:type name: str
|
||||
"""
|
||||
global _EVENTS
|
||||
_EVENTS[name].set()
|
||||
del _EVENTS[name]
|
||||
return
|
||||
|
||||
@classmethod
|
||||
def once(cls, name: str, seconds: float, macro: dict):
|
||||
"""Start timer **name** only once in **seconds** and execute **macro**
|
||||
|
||||
:param name: Timer name, it must be unique
|
||||
:type name: str
|
||||
:param seconds: Seconds for wait before execute macro
|
||||
:type seconds: float
|
||||
:param macro: Macro for execute
|
||||
:type macro: dict
|
||||
"""
|
||||
global _EVENTS
|
||||
|
||||
_EVENTS[name] = threading.Timer(seconds, Macro.call, (macro,))
|
||||
_EVENTS[name].start()
|
||||
info(f'Event: "{name}", started... execute in {seconds} seconds')
|
||||
|
||||
return
|
||||
|
||||
@classmethod
|
||||
def cancel(cls, name: str):
|
||||
"""Cancel timer **name** only once events.
|
||||
|
||||
:param name: Timer name, it must be unique
|
||||
:type name: str
|
||||
"""
|
||||
global _EVENTS
|
||||
|
||||
if name in _EVENTS:
|
||||
try:
|
||||
_EVENTS[name].cancel()
|
||||
del _EVENTS[name]
|
||||
info(f'Cancel event: "{name}", ok...')
|
||||
except Exception as e:
|
||||
error(e)
|
||||
else:
|
||||
debug(f'Cancel event: "{name}", not exists...')
|
||||
return
|
||||
|
||||
|
||||
class Hash(object):
|
||||
"""Class for hash
|
||||
"""
|
||||
@classmethod
|
||||
def digest(cls, method: str, data: str, in_hex: bool=True):
|
||||
"""Get digest from data with method
|
||||
|
||||
:param method: Digest method: md5, sha1, sha256, sha512, etc...
|
||||
:type method: str
|
||||
:param data: Data for get digest
|
||||
:type data: str
|
||||
:param in_hex: If True, get digest in hexadecimal, if False, get bytes
|
||||
:type in_hex: bool
|
||||
:return: bytes or hex digest
|
||||
:rtype: bytes or str
|
||||
"""
|
||||
|
||||
result = ''
|
||||
obj = getattr(hashlib, method)(data.encode())
|
||||
if in_hex:
|
||||
result = obj.hexdigest()
|
||||
else:
|
||||
result = obj.digest()
|
||||
return result
|
||||
|
||||
|
||||
class Config(object):
|
||||
"""Class for set and get configurations
|
||||
"""
|
||||
@classmethod
|
||||
def set(cls, prefix: str, value: Any, key: str='') -> bool:
|
||||
"""Save data config in user config like json
|
||||
|
||||
:param prefix: Unique prefix for this data
|
||||
:type prefix: str
|
||||
:param value: Value for save
|
||||
:type value: Any
|
||||
:param key: Key for value
|
||||
:type key: str
|
||||
:return: True if save correctly
|
||||
:rtype: bool
|
||||
"""
|
||||
name_file = FILES['CONFIG'].format(prefix)
|
||||
path = Paths.join(Paths.user_config, name_file)
|
||||
data = value
|
||||
if key:
|
||||
data = cls.get(prefix)
|
||||
data[key] = value
|
||||
result = Paths.to_json(path, data)
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def get(cls, prefix: str, key: str='', default: Any={}) -> Any:
|
||||
"""Get data config from user config like json
|
||||
|
||||
:param prefix: Unique prefix for this data
|
||||
:type prefix: str
|
||||
:param key: Key for value
|
||||
:type key: str
|
||||
:param default: Get if not exists key
|
||||
:type default: Any
|
||||
:return: data
|
||||
:rtype: Any
|
||||
"""
|
||||
data = {}
|
||||
name_file = FILES['CONFIG'].format(prefix)
|
||||
path = Paths.join(Paths.user_config, name_file)
|
||||
if not Paths.exists(path):
|
||||
return data
|
||||
|
||||
data = Paths.from_json(path)
|
||||
if key:
|
||||
data = data.get(key, default)
|
||||
|
||||
return data
|
||||
|
||||
|
||||
class Url(object):
|
||||
"""Class for simple url open
|
||||
"""
|
||||
@classmethod
|
||||
def _open(cls, url: str, data: Any=None, headers: dict={}, verify: bool=True, \
|
||||
json: bool=False, timeout: int=TIMEOUT, method: str='GET') -> tuple:
|
||||
"""URL Open"""
|
||||
|
||||
debug(url)
|
||||
result = None
|
||||
context = None
|
||||
rheaders = {}
|
||||
err = ''
|
||||
|
||||
if verify:
|
||||
if not data is None:
|
||||
if isinstance(data, str):
|
||||
data = data.encode()
|
||||
elif isinstance(data, dict):
|
||||
data = parse.urlencode(data).encode('ascii')
|
||||
else:
|
||||
context = ssl._create_unverified_context()
|
||||
|
||||
try:
|
||||
req = Request(url, data=data, headers=headers, method=method)
|
||||
response = urlopen(req, timeout=timeout, context=context)
|
||||
except HTTPError as e:
|
||||
error(e)
|
||||
err = str(e)
|
||||
except URLError as e:
|
||||
error(e.reason)
|
||||
err = str(e.reason)
|
||||
# ToDo
|
||||
# ~ except timeout:
|
||||
# ~ err = 'timeout'
|
||||
# ~ error(err)
|
||||
else:
|
||||
rheaders = dict(response.info())
|
||||
result = response.read().decode()
|
||||
if json:
|
||||
result = Json.loads(result)
|
||||
|
||||
return result, rheaders, err
|
||||
|
||||
@classmethod
|
||||
def get(cls, url: str, data: Any=None, headers: dict={}, verify: bool=True, \
|
||||
json: bool=False, timeout: int=TIMEOUT) -> tuple:
|
||||
"""Method GET
|
||||
|
||||
:param url: Url to open
|
||||
:type url: str
|
||||
:return: result, headers and error
|
||||
:rtype: tuple
|
||||
"""
|
||||
return cls._open(url, data, headers, verify, json, timeout)
|
||||
|
||||
# ToDo
|
||||
@classmethod
|
||||
def post(cls, url: str, data: Any=None, headers: dict={}, verify: bool=True, \
|
||||
json: bool=False, timeout: int=TIMEOUT) -> tuple:
|
||||
"""Method POST
|
||||
"""
|
||||
data = parse.urlencode(data).encode('ascii')
|
||||
return cls._open(url, data, headers, verify, json, timeout, 'POST')
|
||||
|
||||
|
||||
class Color(object):
|
||||
"""Class for colors
|
||||
|
||||
`See Web Colors <https://en.wikipedia.org/wiki/Web_colors>`_
|
||||
"""
|
||||
COLORS = {
|
||||
'aliceblue': 15792383,
|
||||
'antiquewhite': 16444375,
|
||||
'aqua': 65535,
|
||||
'aquamarine': 8388564,
|
||||
'azure': 15794175,
|
||||
'beige': 16119260,
|
||||
'bisque': 16770244,
|
||||
'black': 0,
|
||||
'blanchedalmond': 16772045,
|
||||
'blue': 255,
|
||||
'blueviolet': 9055202,
|
||||
'brown': 10824234,
|
||||
'burlywood': 14596231,
|
||||
'cadetblue': 6266528,
|
||||
'chartreuse': 8388352,
|
||||
'chocolate': 13789470,
|
||||
'coral': 16744272,
|
||||
'cornflowerblue': 6591981,
|
||||
'cornsilk': 16775388,
|
||||
'crimson': 14423100,
|
||||
'cyan': 65535,
|
||||
'darkblue': 139,
|
||||
'darkcyan': 35723,
|
||||
'darkgoldenrod': 12092939,
|
||||
'darkgray': 11119017,
|
||||
'darkgreen': 25600,
|
||||
'darkgrey': 11119017,
|
||||
'darkkhaki': 12433259,
|
||||
'darkmagenta': 9109643,
|
||||
'darkolivegreen': 5597999,
|
||||
'darkorange': 16747520,
|
||||
'darkorchid': 10040012,
|
||||
'darkred': 9109504,
|
||||
'darksalmon': 15308410,
|
||||
'darkseagreen': 9419919,
|
||||
'darkslateblue': 4734347,
|
||||
'darkslategray': 3100495,
|
||||
'darkslategrey': 3100495,
|
||||
'darkturquoise': 52945,
|
||||
'darkviolet': 9699539,
|
||||
'deeppink': 16716947,
|
||||
'deepskyblue': 49151,
|
||||
'dimgray': 6908265,
|
||||
'dimgrey': 6908265,
|
||||
'dodgerblue': 2003199,
|
||||
'firebrick': 11674146,
|
||||
'floralwhite': 16775920,
|
||||
'forestgreen': 2263842,
|
||||
'fuchsia': 16711935,
|
||||
'gainsboro': 14474460,
|
||||
'ghostwhite': 16316671,
|
||||
'gold': 16766720,
|
||||
'goldenrod': 14329120,
|
||||
'gray': 8421504,
|
||||
'grey': 8421504,
|
||||
'green': 32768,
|
||||
'greenyellow': 11403055,
|
||||
'honeydew': 15794160,
|
||||
'hotpink': 16738740,
|
||||
'indianred': 13458524,
|
||||
'indigo': 4915330,
|
||||
'ivory': 16777200,
|
||||
'khaki': 15787660,
|
||||
'lavender': 15132410,
|
||||
'lavenderblush': 16773365,
|
||||
'lawngreen': 8190976,
|
||||
'lemonchiffon': 16775885,
|
||||
'lightblue': 11393254,
|
||||
'lightcoral': 15761536,
|
||||
'lightcyan': 14745599,
|
||||
'lightgoldenrodyellow': 16448210,
|
||||
'lightgray': 13882323,
|
||||
'lightgreen': 9498256,
|
||||
'lightgrey': 13882323,
|
||||
'lightpink': 16758465,
|
||||
'lightsalmon': 16752762,
|
||||
'lightseagreen': 2142890,
|
||||
'lightskyblue': 8900346,
|
||||
'lightslategray': 7833753,
|
||||
'lightslategrey': 7833753,
|
||||
'lightsteelblue': 11584734,
|
||||
'lightyellow': 16777184,
|
||||
'lime': 65280,
|
||||
'limegreen': 3329330,
|
||||
'linen': 16445670,
|
||||
'magenta': 16711935,
|
||||
'maroon': 8388608,
|
||||
'mediumaquamarine': 6737322,
|
||||
'mediumblue': 205,
|
||||
'mediumorchid': 12211667,
|
||||
'mediumpurple': 9662683,
|
||||
'mediumseagreen': 3978097,
|
||||
'mediumslateblue': 8087790,
|
||||
'mediumspringgreen': 64154,
|
||||
'mediumturquoise': 4772300,
|
||||
'mediumvioletred': 13047173,
|
||||
'midnightblue': 1644912,
|
||||
'mintcream': 16121850,
|
||||
'mistyrose': 16770273,
|
||||
'moccasin': 16770229,
|
||||
'navajowhite': 16768685,
|
||||
'navy': 128,
|
||||
'oldlace': 16643558,
|
||||
'olive': 8421376,
|
||||
'olivedrab': 7048739,
|
||||
'orange': 16753920,
|
||||
'orangered': 16729344,
|
||||
'orchid': 14315734,
|
||||
'palegoldenrod': 15657130,
|
||||
'palegreen': 10025880,
|
||||
'paleturquoise': 11529966,
|
||||
'palevioletred': 14381203,
|
||||
'papayawhip': 16773077,
|
||||
'peachpuff': 16767673,
|
||||
'peru': 13468991,
|
||||
'pink': 16761035,
|
||||
'plum': 14524637,
|
||||
'powderblue': 11591910,
|
||||
'purple': 8388736,
|
||||
'red': 16711680,
|
||||
'rosybrown': 12357519,
|
||||
'royalblue': 4286945,
|
||||
'saddlebrown': 9127187,
|
||||
'salmon': 16416882,
|
||||
'sandybrown': 16032864,
|
||||
'seagreen': 3050327,
|
||||
'seashell': 16774638,
|
||||
'sienna': 10506797,
|
||||
'silver': 12632256,
|
||||
'skyblue': 8900331,
|
||||
'slateblue': 6970061,
|
||||
'slategray': 7372944,
|
||||
'slategrey': 7372944,
|
||||
'snow': 16775930,
|
||||
'springgreen': 65407,
|
||||
'steelblue': 4620980,
|
||||
'tan': 13808780,
|
||||
'teal': 32896,
|
||||
'thistle': 14204888,
|
||||
'tomato': 16737095,
|
||||
'turquoise': 4251856,
|
||||
'violet': 15631086,
|
||||
'wheat': 16113331,
|
||||
'white': 16777215,
|
||||
'whitesmoke': 16119285,
|
||||
'yellow': 16776960,
|
||||
'yellowgreen': 10145074,
|
||||
}
|
||||
|
||||
def _get_color(self, index):
|
||||
if isinstance(index, tuple):
|
||||
color = (index[0] << 16) + (index[1] << 8) + index[2]
|
||||
else:
|
||||
if index[0] == '#':
|
||||
r, g, b = bytes.fromhex(index[1:])
|
||||
color = (r << 16) + (g << 8) + b
|
||||
else:
|
||||
color = self.COLORS.get(index.lower(), -1)
|
||||
return color
|
||||
|
||||
def __call__(self, index):
|
||||
return self._get_color(index)
|
||||
|
||||
def __getitem__(self, index):
|
||||
return self._get_color(index)
|
||||
|
||||
|
||||
COLOR_ON_FOCUS = Color()('LightYellow')
|
||||
|
||||
|
||||
class ClipBoard(object):
|
||||
SERVICE = 'com.sun.star.datatransfer.clipboard.SystemClipboard'
|
||||
CLIPBOARD_FORMAT_TEXT = 'text/plain;charset=utf-16'
|
||||
|
@ -2372,14 +1754,6 @@ class LODocIDE(LODocument):
|
|||
|
||||
def __getattr__(name):
|
||||
classes = {
|
||||
'json': Json,
|
||||
'macro': Macro,
|
||||
'shell': Shell,
|
||||
'timer': Timer,
|
||||
'hash': Hash,
|
||||
'config': Config,
|
||||
'url': Url,
|
||||
'color': Color(),
|
||||
'io': IOStream,
|
||||
'clipboard': ClipBoard,
|
||||
'shortcuts': LOShortCuts(),
|
||||
|
|
|
@ -9,11 +9,18 @@ from .easydocs import LODocuments
|
|||
def __getattr__(name):
|
||||
classes = {
|
||||
'active': LODocuments().active,
|
||||
'color': Color(),
|
||||
'config': Config,
|
||||
'dates': Dates,
|
||||
'dialog': LODialog,
|
||||
'email': Email,
|
||||
'hash': Hash,
|
||||
'inspect': LOInspect,
|
||||
'macro': Macro,
|
||||
'paths': Paths,
|
||||
'url': URL,
|
||||
'shell': Shell,
|
||||
'timer': Timer,
|
||||
}
|
||||
|
||||
if name in classes:
|
||||
|
|
|
@ -7,7 +7,7 @@ from com.sun.star.view.SelectionType import SINGLE, MULTI, RANGE
|
|||
from .easyevents import *
|
||||
from .easydocs import LODocuments
|
||||
from .easymain import log, TITLE, create_instance, BaseObject
|
||||
from .easytools import Paths, Services, LOInspect
|
||||
from .easytools import Color, LOInspect, Paths, Services
|
||||
from .easytools import _, set_properties
|
||||
|
||||
|
||||
|
@ -17,6 +17,7 @@ __all__ = [
|
|||
]
|
||||
|
||||
|
||||
COLOR_ON_FOCUS = Color()('LightYellow')
|
||||
SEPARATION = 5
|
||||
MODELS = {
|
||||
'button': 'com.sun.star.awt.UnoControlButtonModel',
|
||||
|
|
|
@ -7,10 +7,10 @@ import os
|
|||
import platform
|
||||
import sys
|
||||
|
||||
from typing import Any
|
||||
from typing import Any, Union
|
||||
|
||||
import uno
|
||||
from com.sun.star.beans import PropertyValue
|
||||
from com.sun.star.beans import PropertyValue, NamedValue
|
||||
|
||||
|
||||
__all__ = [
|
||||
|
@ -26,6 +26,8 @@ __all__ = [
|
|||
'USER',
|
||||
'VERSION',
|
||||
'create_instance',
|
||||
'data_to_dict',
|
||||
'dict_to_property',
|
||||
'get_app_config',
|
||||
]
|
||||
|
||||
|
@ -143,6 +145,24 @@ def dict_to_property(values: dict, uno_any: bool=False):
|
|||
return ps
|
||||
|
||||
|
||||
def data_to_dict(data: Union[tuple, list]) -> dict:
|
||||
"""Convert tuples, list, PropertyValue, NamedValue to dictionary
|
||||
|
||||
:param data: Iterator of values
|
||||
:type data: array of tuples, list, PropertyValue or NamedValue
|
||||
:return: Dictionary
|
||||
:rtype: dict
|
||||
"""
|
||||
d = {}
|
||||
|
||||
if isinstance(data[0], (tuple, list)):
|
||||
d = {r[0]: r[1] for r in data}
|
||||
elif isinstance(data[0], (PropertyValue, NamedValue)):
|
||||
d = {r.Name: r.Value for r in data}
|
||||
|
||||
return d
|
||||
|
||||
|
||||
class BaseObject():
|
||||
|
||||
def __init__(self, obj):
|
||||
|
|
|
@ -2,9 +2,11 @@
|
|||
|
||||
import csv
|
||||
import datetime
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import shlex
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
|
@ -15,6 +17,7 @@ import time
|
|||
from functools import wraps
|
||||
from pathlib import Path
|
||||
from pprint import pprint
|
||||
from string import Template
|
||||
from typing import Any, Union
|
||||
|
||||
import mailbox
|
||||
|
@ -40,29 +43,46 @@ from .easymain import (
|
|||
from .easyuno import MessageBoxType
|
||||
from .easydocs import LODocuments
|
||||
from .messages import MESSAGES
|
||||
from .zazplus import mureq
|
||||
|
||||
|
||||
__all__ = [
|
||||
'Color',
|
||||
'Config',
|
||||
'Dates',
|
||||
'Email',
|
||||
'Hash',
|
||||
'LOInspect',
|
||||
'Macro',
|
||||
'Paths',
|
||||
'URL',
|
||||
'Shell',
|
||||
'Timer',
|
||||
'catch_exception',
|
||||
'debug',
|
||||
'error',
|
||||
'info',
|
||||
'mri',
|
||||
'msgbox',
|
||||
'render',
|
||||
'run_in_thread',
|
||||
'save_log',
|
||||
'sleep',
|
||||
]
|
||||
|
||||
|
||||
TIMEOUT = 10
|
||||
|
||||
PYTHON = 'python'
|
||||
if IS_WIN:
|
||||
PYTHON = 'python.exe'
|
||||
|
||||
FILES = {
|
||||
'CONFIG': 'zaz-{}.json',
|
||||
}
|
||||
|
||||
_EVENTS = {}
|
||||
|
||||
|
||||
def _(msg):
|
||||
if LANG == 'en':
|
||||
|
@ -276,6 +296,24 @@ def sleep(seconds: int):
|
|||
return
|
||||
|
||||
|
||||
def render(template, data):
|
||||
s = Template(template)
|
||||
return s.safe_substitute(**data)
|
||||
|
||||
|
||||
def run_in_thread(fn: Any) -> Any:
|
||||
"""Run any function in thread
|
||||
|
||||
:param fn: Any Python function (macro)
|
||||
:type fn: Function instance
|
||||
"""
|
||||
def run(*k, **kw):
|
||||
t = threading.Thread(target=fn, args=k, kwargs=kw)
|
||||
t.start()
|
||||
return t
|
||||
return run
|
||||
|
||||
|
||||
def set_properties(model, properties):
|
||||
if 'X' in properties:
|
||||
properties['PositionX'] = properties.pop('X')
|
||||
|
@ -481,6 +519,15 @@ class Dates(object):
|
|||
"""
|
||||
return datetime.datetime.now().replace(microsecond=0)
|
||||
|
||||
@classproperty
|
||||
def now_time(cls):
|
||||
"""Current local time
|
||||
|
||||
:return: Return the current local time
|
||||
:rtype: time
|
||||
"""
|
||||
return cls.now.time()
|
||||
|
||||
@classproperty
|
||||
def today(cls):
|
||||
"""Current local date
|
||||
|
@ -1318,13 +1365,13 @@ class Email():
|
|||
return False
|
||||
return False
|
||||
|
||||
def _body(self, msg):
|
||||
def _body_validate(self, msg):
|
||||
body = msg.replace('\n', '<BR>')
|
||||
return body
|
||||
|
||||
def send(self, message):
|
||||
# ~ file_name = 'attachment; filename={}'
|
||||
email = MIMEMultipart()
|
||||
email = MIMEMultipart('alternative')
|
||||
email['From'] = self._sender
|
||||
email['To'] = message['to']
|
||||
email['Cc'] = message.get('cc', '')
|
||||
|
@ -1332,7 +1379,11 @@ class Email():
|
|||
email['Date'] = formatdate(localtime=True)
|
||||
if message.get('confirm', False):
|
||||
email['Disposition-Notification-To'] = email['From']
|
||||
email.attach(MIMEText(self._body(message['body']), 'html'))
|
||||
if 'body_text' in message:
|
||||
email.attach(MIMEText(message['body_text'], 'plain', 'utf-8'))
|
||||
if 'body' in message:
|
||||
body = self._body_validate(message['body'])
|
||||
email.attach(MIMEText(body, 'html', 'utf-8'))
|
||||
|
||||
paths = message.get('files', ())
|
||||
if isinstance(paths, str):
|
||||
|
@ -1407,3 +1458,471 @@ class Email():
|
|||
t = threading.Thread(target=cls._send_email, args=(server, messages))
|
||||
t.start()
|
||||
return
|
||||
|
||||
|
||||
class Macro(object):
|
||||
"""Class for call macro
|
||||
|
||||
`See Scripting Framework <https://wiki.documentfoundation.org/Documentation/DevGuide/Scripting_Framework#Scripting_Framework_URI_Specification>`_
|
||||
"""
|
||||
@classmethod
|
||||
def call(cls, args: dict, in_thread: bool=False):
|
||||
"""Call any macro
|
||||
|
||||
:param args: Dictionary with macro location
|
||||
:type args: dict
|
||||
:param in_thread: If execute in thread
|
||||
:type in_thread: bool
|
||||
:return: Return None or result of call macro
|
||||
:rtype: Any
|
||||
"""
|
||||
|
||||
result = None
|
||||
if in_thread:
|
||||
t = threading.Thread(target=cls._call, args=(args,))
|
||||
t.start()
|
||||
else:
|
||||
result = cls._call(args)
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def get_url_script(cls, args: dict):
|
||||
library = args['library']
|
||||
name = args['name']
|
||||
language = args.get('language', 'Python')
|
||||
location = args.get('location', 'user')
|
||||
module = args.get('module', '.')
|
||||
|
||||
if language == 'Python':
|
||||
module = '.py$'
|
||||
elif language == 'Basic':
|
||||
module = f".{module}."
|
||||
if location == 'user':
|
||||
location = 'application'
|
||||
|
||||
url = 'vnd.sun.star.script'
|
||||
url = f'{url}:{library}{module}{name}?language={language}&location={location}'
|
||||
return url
|
||||
|
||||
@classmethod
|
||||
def _call(cls, args: dict):
|
||||
url = cls.get_url_script(args)
|
||||
args = args.get('args', ())
|
||||
|
||||
service = 'com.sun.star.script.provider.MasterScriptProviderFactory'
|
||||
factory = create_instance(service)
|
||||
script = factory.createScriptProvider('').getScript(url)
|
||||
result = script.invoke(args, None, None)[0]
|
||||
|
||||
return result
|
||||
|
||||
|
||||
class Shell(object):
|
||||
"""Class for subprocess
|
||||
|
||||
`See Subprocess <https://docs.python.org/3.7/library/subprocess.html>`_
|
||||
"""
|
||||
@classmethod
|
||||
def run(cls, command: str, capture: bool=False, split: bool=False):
|
||||
"""Execute commands
|
||||
|
||||
:param command: Command to run
|
||||
:type command: str
|
||||
:param capture: If capture result of command
|
||||
:type capture: bool
|
||||
:param split: Some commands need split.
|
||||
:type split: bool
|
||||
:return: Result of command
|
||||
:rtype: Any
|
||||
"""
|
||||
if split:
|
||||
cmd = shlex.split(command)
|
||||
result = subprocess.run(cmd, capture_output=capture, text=True, shell=IS_WIN)
|
||||
if capture:
|
||||
result = result.stdout
|
||||
else:
|
||||
result = result.returncode
|
||||
else:
|
||||
if capture:
|
||||
result = subprocess.check_output(command, shell=True).decode()
|
||||
else:
|
||||
result = subprocess.Popen(command)
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def popen(cls, command: str):
|
||||
"""Execute commands and return line by line
|
||||
|
||||
:param command: Command to run
|
||||
:type command: str
|
||||
:return: Result of command
|
||||
:rtype: Any
|
||||
"""
|
||||
try:
|
||||
proc = subprocess.Popen(shlex.split(command), shell=IS_WIN,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
for line in proc.stdout:
|
||||
yield line.decode().rstrip()
|
||||
except Exception as e:
|
||||
error(e)
|
||||
yield str(e)
|
||||
|
||||
|
||||
class Hash(object):
|
||||
"""Class for hash
|
||||
"""
|
||||
@classmethod
|
||||
def digest(cls, method: str, data: str, in_hex: bool=True):
|
||||
"""Get digest from data with method
|
||||
|
||||
:param method: Digest method: md5, sha1, sha256, sha512, etc...
|
||||
:type method: str
|
||||
:param data: Data for get digest
|
||||
:type data: str
|
||||
:param in_hex: If True, get digest in hexadecimal, if False, get bytes
|
||||
:type in_hex: bool
|
||||
:return: bytes or hex digest
|
||||
:rtype: bytes or str
|
||||
"""
|
||||
|
||||
result = ''
|
||||
obj = getattr(hashlib, method)(data.encode())
|
||||
if in_hex:
|
||||
result = obj.hexdigest()
|
||||
else:
|
||||
result = obj.digest()
|
||||
return result
|
||||
|
||||
|
||||
class Config(object):
|
||||
"""Class for set and get configurations
|
||||
"""
|
||||
@classmethod
|
||||
def set(cls, prefix: str, values: Any, key: str='') -> bool:
|
||||
"""Save data config in user config like json
|
||||
|
||||
:param prefix: Unique prefix for this data
|
||||
:type prefix: str
|
||||
:param values: Values for save
|
||||
:type values: Any
|
||||
:param key: Key for value
|
||||
:type key: str
|
||||
:return: True if save correctly
|
||||
:rtype: bool
|
||||
"""
|
||||
name_file = FILES['CONFIG'].format(prefix)
|
||||
path = Paths.join(Paths.user_config, name_file)
|
||||
data = values
|
||||
if key:
|
||||
data = cls.get(prefix)
|
||||
data[key] = values
|
||||
result = Paths.save_json(path, data)
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def get(cls, prefix: str, key: str='') -> Any:
|
||||
"""Get data config from user config like json
|
||||
|
||||
:param prefix: Unique prefix for this data
|
||||
:type prefix: str
|
||||
:param key: Key for value
|
||||
:type key: str
|
||||
:return: data
|
||||
:rtype: Any
|
||||
"""
|
||||
data = {}
|
||||
name_file = FILES['CONFIG'].format(prefix)
|
||||
path = Paths.join(Paths.user_config, name_file)
|
||||
if not Paths.exists(path):
|
||||
return data
|
||||
|
||||
data = Paths.read_json(path)
|
||||
if key and key in data:
|
||||
data = data[key]
|
||||
|
||||
return data
|
||||
|
||||
|
||||
class Color():
|
||||
"""Class for colors
|
||||
|
||||
`See Web Colors <https://en.wikipedia.org/wiki/Web_colors>`_
|
||||
"""
|
||||
COLORS = {
|
||||
'aliceblue': 15792383,
|
||||
'antiquewhite': 16444375,
|
||||
'aqua': 65535,
|
||||
'aquamarine': 8388564,
|
||||
'azure': 15794175,
|
||||
'beige': 16119260,
|
||||
'bisque': 16770244,
|
||||
'black': 0,
|
||||
'blanchedalmond': 16772045,
|
||||
'blue': 255,
|
||||
'blueviolet': 9055202,
|
||||
'brown': 10824234,
|
||||
'burlywood': 14596231,
|
||||
'cadetblue': 6266528,
|
||||
'chartreuse': 8388352,
|
||||
'chocolate': 13789470,
|
||||
'coral': 16744272,
|
||||
'cornflowerblue': 6591981,
|
||||
'cornsilk': 16775388,
|
||||
'crimson': 14423100,
|
||||
'cyan': 65535,
|
||||
'darkblue': 139,
|
||||
'darkcyan': 35723,
|
||||
'darkgoldenrod': 12092939,
|
||||
'darkgray': 11119017,
|
||||
'darkgreen': 25600,
|
||||
'darkgrey': 11119017,
|
||||
'darkkhaki': 12433259,
|
||||
'darkmagenta': 9109643,
|
||||
'darkolivegreen': 5597999,
|
||||
'darkorange': 16747520,
|
||||
'darkorchid': 10040012,
|
||||
'darkred': 9109504,
|
||||
'darksalmon': 15308410,
|
||||
'darkseagreen': 9419919,
|
||||
'darkslateblue': 4734347,
|
||||
'darkslategray': 3100495,
|
||||
'darkslategrey': 3100495,
|
||||
'darkturquoise': 52945,
|
||||
'darkviolet': 9699539,
|
||||
'deeppink': 16716947,
|
||||
'deepskyblue': 49151,
|
||||
'dimgray': 6908265,
|
||||
'dimgrey': 6908265,
|
||||
'dodgerblue': 2003199,
|
||||
'firebrick': 11674146,
|
||||
'floralwhite': 16775920,
|
||||
'forestgreen': 2263842,
|
||||
'fuchsia': 16711935,
|
||||
'gainsboro': 14474460,
|
||||
'ghostwhite': 16316671,
|
||||
'gold': 16766720,
|
||||
'goldenrod': 14329120,
|
||||
'gray': 8421504,
|
||||
'grey': 8421504,
|
||||
'green': 32768,
|
||||
'greenyellow': 11403055,
|
||||
'honeydew': 15794160,
|
||||
'hotpink': 16738740,
|
||||
'indianred': 13458524,
|
||||
'indigo': 4915330,
|
||||
'ivory': 16777200,
|
||||
'khaki': 15787660,
|
||||
'lavender': 15132410,
|
||||
'lavenderblush': 16773365,
|
||||
'lawngreen': 8190976,
|
||||
'lemonchiffon': 16775885,
|
||||
'lightblue': 11393254,
|
||||
'lightcoral': 15761536,
|
||||
'lightcyan': 14745599,
|
||||
'lightgoldenrodyellow': 16448210,
|
||||
'lightgray': 13882323,
|
||||
'lightgreen': 9498256,
|
||||
'lightgrey': 13882323,
|
||||
'lightpink': 16758465,
|
||||
'lightsalmon': 16752762,
|
||||
'lightseagreen': 2142890,
|
||||
'lightskyblue': 8900346,
|
||||
'lightslategray': 7833753,
|
||||
'lightslategrey': 7833753,
|
||||
'lightsteelblue': 11584734,
|
||||
'lightyellow': 16777184,
|
||||
'lime': 65280,
|
||||
'limegreen': 3329330,
|
||||
'linen': 16445670,
|
||||
'magenta': 16711935,
|
||||
'maroon': 8388608,
|
||||
'mediumaquamarine': 6737322,
|
||||
'mediumblue': 205,
|
||||
'mediumorchid': 12211667,
|
||||
'mediumpurple': 9662683,
|
||||
'mediumseagreen': 3978097,
|
||||
'mediumslateblue': 8087790,
|
||||
'mediumspringgreen': 64154,
|
||||
'mediumturquoise': 4772300,
|
||||
'mediumvioletred': 13047173,
|
||||
'midnightblue': 1644912,
|
||||
'mintcream': 16121850,
|
||||
'mistyrose': 16770273,
|
||||
'moccasin': 16770229,
|
||||
'navajowhite': 16768685,
|
||||
'navy': 128,
|
||||
'oldlace': 16643558,
|
||||
'olive': 8421376,
|
||||
'olivedrab': 7048739,
|
||||
'orange': 16753920,
|
||||
'orangered': 16729344,
|
||||
'orchid': 14315734,
|
||||
'palegoldenrod': 15657130,
|
||||
'palegreen': 10025880,
|
||||
'paleturquoise': 11529966,
|
||||
'palevioletred': 14381203,
|
||||
'papayawhip': 16773077,
|
||||
'peachpuff': 16767673,
|
||||
'peru': 13468991,
|
||||
'pink': 16761035,
|
||||
'plum': 14524637,
|
||||
'powderblue': 11591910,
|
||||
'purple': 8388736,
|
||||
'red': 16711680,
|
||||
'rosybrown': 12357519,
|
||||
'royalblue': 4286945,
|
||||
'saddlebrown': 9127187,
|
||||
'salmon': 16416882,
|
||||
'sandybrown': 16032864,
|
||||
'seagreen': 3050327,
|
||||
'seashell': 16774638,
|
||||
'sienna': 10506797,
|
||||
'silver': 12632256,
|
||||
'skyblue': 8900331,
|
||||
'slateblue': 6970061,
|
||||
'slategray': 7372944,
|
||||
'slategrey': 7372944,
|
||||
'snow': 16775930,
|
||||
'springgreen': 65407,
|
||||
'steelblue': 4620980,
|
||||
'tan': 13808780,
|
||||
'teal': 32896,
|
||||
'thistle': 14204888,
|
||||
'tomato': 16737095,
|
||||
'turquoise': 4251856,
|
||||
'violet': 15631086,
|
||||
'wheat': 16113331,
|
||||
'white': 16777215,
|
||||
'whitesmoke': 16119285,
|
||||
'yellow': 16776960,
|
||||
'yellowgreen': 10145074,
|
||||
}
|
||||
|
||||
def _get_color(self, index):
|
||||
if isinstance(index, tuple):
|
||||
color = (index[0] << 16) + (index[1] << 8) + index[2]
|
||||
else:
|
||||
if index[0] == '#':
|
||||
r, g, b = bytes.fromhex(index[1:])
|
||||
color = (r << 16) + (g << 8) + b
|
||||
else:
|
||||
color = self.COLORS.get(index.lower(), -1)
|
||||
return color
|
||||
|
||||
def __call__(self, index):
|
||||
return self._get_color(index)
|
||||
|
||||
def __getitem__(self, index):
|
||||
return self._get_color(index)
|
||||
|
||||
|
||||
class Timer(object):
|
||||
"""Class for timer thread"""
|
||||
|
||||
class TimerThread(threading.Thread):
|
||||
|
||||
def __init__(self, event, seconds, macro):
|
||||
threading.Thread.__init__(self)
|
||||
self._event = event
|
||||
self._seconds = seconds
|
||||
self._macro = macro
|
||||
|
||||
def run(self):
|
||||
while not self._event.wait(self._seconds):
|
||||
Macro.call(self._macro)
|
||||
info('\tTimer stopped... ')
|
||||
return
|
||||
|
||||
@classmethod
|
||||
def exists(cls, name):
|
||||
"""Validate in timer **name** exists
|
||||
|
||||
:param name: Timer name, it must be unique
|
||||
:type name: str
|
||||
:return: True if exists timer name
|
||||
:rtype: bool
|
||||
"""
|
||||
global _EVENTS
|
||||
return name in _EVENTS
|
||||
|
||||
@classmethod
|
||||
def start(cls, name: str, seconds: float, macro: dict):
|
||||
"""Start timer **name** every **seconds** and execute **macro**
|
||||
|
||||
:param name: Timer name, it must be unique
|
||||
:type name: str
|
||||
:param seconds: Seconds for wait
|
||||
:type seconds: float
|
||||
:param macro: Macro for execute
|
||||
:type macro: dict
|
||||
"""
|
||||
global _EVENTS
|
||||
|
||||
_EVENTS[name] = threading.Event()
|
||||
info(f"Timer '{name}' started, execute macro: '{macro['name']}'")
|
||||
thread = cls.TimerThread(_EVENTS[name], seconds, macro)
|
||||
thread.start()
|
||||
return
|
||||
|
||||
@classmethod
|
||||
def stop(cls, name: str):
|
||||
"""Stop timer **name**
|
||||
|
||||
:param name: Timer name
|
||||
:type name: str
|
||||
"""
|
||||
global _EVENTS
|
||||
_EVENTS[name].set()
|
||||
del _EVENTS[name]
|
||||
return
|
||||
|
||||
@classmethod
|
||||
def once(cls, name: str, seconds: float, macro: dict):
|
||||
"""Start timer **name** only once in **seconds** and execute **macro**
|
||||
|
||||
:param name: Timer name, it must be unique
|
||||
:type name: str
|
||||
:param seconds: Seconds for wait before execute macro
|
||||
:type seconds: float
|
||||
:param macro: Macro for execute
|
||||
:type macro: dict
|
||||
"""
|
||||
global _EVENTS
|
||||
|
||||
_EVENTS[name] = threading.Timer(seconds, Macro.call, (macro,))
|
||||
_EVENTS[name].start()
|
||||
info(f'Event: "{name}", started... execute in {seconds} seconds')
|
||||
|
||||
return
|
||||
|
||||
@classmethod
|
||||
def cancel(cls, name: str):
|
||||
"""Cancel timer **name** only once events.
|
||||
|
||||
:param name: Timer name, it must be unique
|
||||
:type name: str
|
||||
"""
|
||||
global _EVENTS
|
||||
|
||||
if name in _EVENTS:
|
||||
try:
|
||||
_EVENTS[name].cancel()
|
||||
del _EVENTS[name]
|
||||
info(f'Cancel event: "{name}", ok...')
|
||||
except Exception as e:
|
||||
error(e)
|
||||
else:
|
||||
debug(f'Cancel event: "{name}", not exists...')
|
||||
return
|
||||
|
||||
|
||||
class URL(object):
|
||||
"""Class for simple url open
|
||||
"""
|
||||
@classmethod
|
||||
def get(cls, url: str, **kwargs):
|
||||
return mureq.get(url, **kwargs)
|
||||
|
||||
@classmethod
|
||||
def post(cls, url: str, body=None, **kwargs):
|
||||
return mureq.post(url, body, **kwargs)
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
#!/usr/bin/env python3
|
||||
|
|
@ -0,0 +1,393 @@
|
|||
"""
|
||||
mureq is a replacement for python-requests, intended to be vendored
|
||||
in-tree by Linux systems software and other lightweight applications.
|
||||
|
||||
mureq is copyright 2021 by its contributors and is released under the
|
||||
0BSD ("zero-clause BSD") license.
|
||||
"""
|
||||
import contextlib
|
||||
import io
|
||||
import os.path
|
||||
import socket
|
||||
import ssl
|
||||
import sys
|
||||
import urllib.parse
|
||||
from http.client import HTTPConnection, HTTPSConnection, HTTPMessage, HTTPException
|
||||
|
||||
__version__ = '0.2.0'
|
||||
|
||||
__all__ = ['HTTPException', 'TooManyRedirects', 'Response',
|
||||
'yield_response', 'request', 'get', 'post', 'head', 'put', 'patch', 'delete']
|
||||
|
||||
DEFAULT_TIMEOUT = 15.0
|
||||
|
||||
# e.g. "Python 3.8.10"
|
||||
DEFAULT_UA = "Python " + sys.version.split()[0]
|
||||
|
||||
|
||||
def request(method, url, *, read_limit=None, **kwargs):
|
||||
"""request performs an HTTP request and reads the entire response body.
|
||||
|
||||
:param str method: HTTP method to request (e.g. 'GET', 'POST')
|
||||
:param str url: URL to request
|
||||
:param read_limit: maximum number of bytes to read from the body, or None for no limit
|
||||
:type read_limit: int or None
|
||||
:param kwargs: optional arguments defined by yield_response
|
||||
:return: Response object
|
||||
:rtype: Response
|
||||
:raises: HTTPException
|
||||
"""
|
||||
with yield_response(method, url, **kwargs) as response:
|
||||
try:
|
||||
body = response.read(read_limit)
|
||||
except HTTPException:
|
||||
raise
|
||||
except IOError as e:
|
||||
raise HTTPException(str(e)) from e
|
||||
return Response(response.url, response.status, _prepare_incoming_headers(response.headers), body)
|
||||
|
||||
|
||||
def get(url, **kwargs):
|
||||
"""get performs an HTTP GET request."""
|
||||
return request('GET', url=url, **kwargs)
|
||||
|
||||
|
||||
def post(url, body=None, **kwargs):
|
||||
"""post performs an HTTP POST request."""
|
||||
return request('POST', url=url, body=body, **kwargs)
|
||||
|
||||
|
||||
def head(url, **kwargs):
|
||||
"""head performs an HTTP HEAD request."""
|
||||
return request('HEAD', url=url, **kwargs)
|
||||
|
||||
|
||||
def put(url, body=None, **kwargs):
|
||||
"""put performs an HTTP PUT request."""
|
||||
return request('PUT', url=url, body=body, **kwargs)
|
||||
|
||||
|
||||
def patch(url, body=None, **kwargs):
|
||||
"""patch performs an HTTP PATCH request."""
|
||||
return request('PATCH', url=url, body=body, **kwargs)
|
||||
|
||||
|
||||
def delete(url, **kwargs):
|
||||
"""delete performs an HTTP DELETE request."""
|
||||
return request('DELETE', url=url, **kwargs)
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def yield_response(method, url, *, unix_socket=None, timeout=DEFAULT_TIMEOUT, headers=None,
|
||||
params=None, body=None, form=None, json=None, verify=True, source_address=None,
|
||||
max_redirects=None, ssl_context=None):
|
||||
"""yield_response is a low-level API that exposes the actual
|
||||
http.client.HTTPResponse via a contextmanager.
|
||||
|
||||
Note that unlike mureq.Response, http.client.HTTPResponse does not
|
||||
automatically canonicalize multiple appearances of the same header by
|
||||
joining them together with a comma delimiter. To retrieve canonicalized
|
||||
headers from the response, use response.getheader():
|
||||
https://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.getheader
|
||||
|
||||
:param str method: HTTP method to request (e.g. 'GET', 'POST')
|
||||
:param str url: URL to request
|
||||
:param unix_socket: path to Unix domain socket to query, or None for a normal TCP request
|
||||
:type unix_socket: str or None
|
||||
:param timeout: timeout in seconds, or None for no timeout (default: 15 seconds)
|
||||
:type timeout: float or None
|
||||
:param headers: HTTP headers as a mapping or list of key-value pairs
|
||||
:param params: parameters to be URL-encoded and added to the query string, as a mapping or list of key-value pairs
|
||||
:param body: payload body of the request
|
||||
:type body: bytes or None
|
||||
:param form: parameters to be form-encoded and sent as the payload body, as a mapping or list of key-value pairs
|
||||
:param json: object to be serialized as JSON and sent as the payload body
|
||||
:param bool verify: whether to verify TLS certificates (default: True)
|
||||
:param source_address: source address to bind to for TCP
|
||||
:type source_address: str or tuple(str, int) or None
|
||||
:param max_redirects: maximum number of redirects to follow, or None (the default) for no redirection
|
||||
:type max_redirects: int or None
|
||||
:param ssl_context: TLS config to control certificate validation, or None for default behavior
|
||||
:type ssl_context: ssl.SSLContext or None
|
||||
:return: http.client.HTTPResponse, yielded as context manager
|
||||
:rtype: http.client.HTTPResponse
|
||||
:raises: HTTPException
|
||||
"""
|
||||
method = method.upper()
|
||||
headers = _prepare_outgoing_headers(headers)
|
||||
enc_params = _prepare_params(params)
|
||||
body = _prepare_body(body, form, json, headers)
|
||||
|
||||
visited_urls = []
|
||||
|
||||
while max_redirects is None or len(visited_urls) <= max_redirects:
|
||||
url, conn, path = _prepare_request(method, url, enc_params=enc_params, timeout=timeout, unix_socket=unix_socket, verify=verify, source_address=source_address, ssl_context=ssl_context)
|
||||
enc_params = '' # don't reappend enc_params if we get redirected
|
||||
visited_urls.append(url)
|
||||
try:
|
||||
try:
|
||||
conn.request(method, path, headers=headers, body=body)
|
||||
response = conn.getresponse()
|
||||
except HTTPException:
|
||||
raise
|
||||
except IOError as e:
|
||||
# wrap any IOError that is not already an HTTPException
|
||||
# in HTTPException, exposing a uniform API for remote errors
|
||||
raise HTTPException(str(e)) from e
|
||||
redirect_url = _check_redirect(url, response.status, response.headers)
|
||||
if max_redirects is None or redirect_url is None:
|
||||
response.url = url # https://bugs.python.org/issue42062
|
||||
yield response
|
||||
return
|
||||
else:
|
||||
url = redirect_url
|
||||
if response.status == 303:
|
||||
# 303 See Other: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/303
|
||||
method = 'GET'
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
raise TooManyRedirects(visited_urls)
|
||||
|
||||
|
||||
class Response:
|
||||
"""Response contains a completely consumed HTTP response.
|
||||
|
||||
:ivar str url: the retrieved URL, indicating whether a redirection occurred
|
||||
:ivar int status_code: the HTTP status code
|
||||
:ivar http.client.HTTPMessage headers: the HTTP headers
|
||||
:ivar bytes body: the payload body of the response
|
||||
"""
|
||||
|
||||
__slots__ = ('url', 'status_code', 'headers', 'body')
|
||||
|
||||
def __init__(self, url, status_code, headers, body):
|
||||
self.url, self.status_code, self.headers, self.body = url, status_code, headers, body
|
||||
|
||||
def __repr__(self):
|
||||
return f"Response(status_code={self.status_code:d})"
|
||||
|
||||
@property
|
||||
def ok(self):
|
||||
"""ok returns whether the response had a successful status code
|
||||
(anything other than a 40x or 50x)."""
|
||||
return not (400 <= self.status_code < 600)
|
||||
|
||||
@property
|
||||
def content(self):
|
||||
"""content returns the response body (the `body` member). This is an
|
||||
alias for compatibility with requests.Response."""
|
||||
return self.body
|
||||
|
||||
def raise_for_status(self):
|
||||
"""raise_for_status checks the response's success code, raising an
|
||||
exception for error codes."""
|
||||
if not self.ok:
|
||||
raise HTTPErrorStatus(self.status_code)
|
||||
|
||||
def json(self):
|
||||
"""Attempts to deserialize the response body as UTF-8 encoded JSON."""
|
||||
import json as jsonlib
|
||||
return jsonlib.loads(self.body)
|
||||
|
||||
def _debugstr(self):
|
||||
buf = io.StringIO()
|
||||
print("HTTP", self.status_code, file=buf)
|
||||
for k, v in self.headers.items():
|
||||
print(f"{k}: {v}", file=buf)
|
||||
print(file=buf)
|
||||
try:
|
||||
print(self.body.decode('utf-8'), file=buf)
|
||||
except UnicodeDecodeError:
|
||||
print(f"<{len(self.body)} bytes binary data>", file=buf)
|
||||
return buf.getvalue()
|
||||
|
||||
|
||||
class TooManyRedirects(HTTPException):
|
||||
"""TooManyRedirects is raised when automatic following of redirects was
|
||||
enabled, but the server redirected too many times without completing."""
|
||||
pass
|
||||
|
||||
|
||||
class HTTPErrorStatus(HTTPException):
|
||||
"""HTTPErrorStatus is raised by Response.raise_for_status() to indicate an
|
||||
HTTP error code (a 40x or a 50x). Note that a well-formed response with an
|
||||
error code does not result in an exception unless raise_for_status() is
|
||||
called explicitly.
|
||||
"""
|
||||
|
||||
def __init__(self, status_code):
|
||||
self.status_code = status_code
|
||||
|
||||
def __str__(self):
|
||||
return f"HTTP response returned error code {self.status_code:d}"
|
||||
|
||||
|
||||
# end public API, begin internal implementation details
|
||||
|
||||
_JSON_CONTENTTYPE = 'application/json'
|
||||
_FORM_CONTENTTYPE = 'application/x-www-form-urlencoded'
|
||||
|
||||
|
||||
class UnixHTTPConnection(HTTPConnection):
|
||||
"""UnixHTTPConnection is a subclass of HTTPConnection that connects to a
|
||||
Unix domain stream socket instead of a TCP address.
|
||||
"""
|
||||
|
||||
def __init__(self, path, timeout=DEFAULT_TIMEOUT):
|
||||
super(UnixHTTPConnection, self).__init__('localhost', timeout=timeout)
|
||||
self._unix_path = path
|
||||
|
||||
def connect(self):
|
||||
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
try:
|
||||
sock.settimeout(self.timeout)
|
||||
sock.connect(self._unix_path)
|
||||
except Exception:
|
||||
sock.close()
|
||||
raise
|
||||
self.sock = sock
|
||||
|
||||
|
||||
def _check_redirect(url, status, response_headers):
|
||||
"""Return the URL to redirect to, or None for no redirection."""
|
||||
if status not in (301, 302, 303, 307, 308):
|
||||
return None
|
||||
location = response_headers.get('Location')
|
||||
if not location:
|
||||
return None
|
||||
parsed_location = urllib.parse.urlparse(location)
|
||||
if parsed_location.scheme:
|
||||
# absolute URL
|
||||
return location
|
||||
|
||||
old_url = urllib.parse.urlparse(url)
|
||||
if location.startswith('/'):
|
||||
# absolute path on old hostname
|
||||
return urllib.parse.urlunparse((old_url.scheme, old_url.netloc,
|
||||
parsed_location.path, parsed_location.params,
|
||||
parsed_location.query, parsed_location.fragment))
|
||||
|
||||
# relative path on old hostname
|
||||
old_dir, _old_file = os.path.split(old_url.path)
|
||||
new_path = os.path.join(old_dir, location)
|
||||
return urllib.parse.urlunparse((old_url.scheme, old_url.netloc,
|
||||
new_path, parsed_location.params,
|
||||
parsed_location.query, parsed_location.fragment))
|
||||
|
||||
|
||||
def _prepare_outgoing_headers(headers):
|
||||
if headers is None:
|
||||
headers = HTTPMessage()
|
||||
elif not isinstance(headers, HTTPMessage):
|
||||
new_headers = HTTPMessage()
|
||||
if hasattr(headers, 'items'):
|
||||
iterator = headers.items()
|
||||
else:
|
||||
iterator = iter(headers)
|
||||
for k, v in iterator:
|
||||
new_headers[k] = v
|
||||
headers = new_headers
|
||||
_setdefault_header(headers, 'User-Agent', DEFAULT_UA)
|
||||
return headers
|
||||
|
||||
|
||||
# XXX join multi-headers together so that get(), __getitem__(),
|
||||
# etc. behave intuitively, then stuff them back in an HTTPMessage.
|
||||
def _prepare_incoming_headers(headers):
|
||||
headers_dict = {}
|
||||
for k, v in headers.items():
|
||||
headers_dict.setdefault(k, []).append(v)
|
||||
result = HTTPMessage()
|
||||
# note that iterating over headers_dict preserves the original
|
||||
# insertion order in all versions since Python 3.6:
|
||||
for k, vlist in headers_dict.items():
|
||||
result[k] = ','.join(vlist)
|
||||
return result
|
||||
|
||||
|
||||
def _setdefault_header(headers, name, value):
|
||||
if name not in headers:
|
||||
headers[name] = value
|
||||
|
||||
|
||||
def _prepare_body(body, form, json, headers):
|
||||
if body is not None:
|
||||
if not isinstance(body, bytes):
|
||||
raise TypeError('body must be bytes or None', type(body))
|
||||
return body
|
||||
|
||||
if json is not None:
|
||||
_setdefault_header(headers, 'Content-Type', _JSON_CONTENTTYPE)
|
||||
import json as jsonlib
|
||||
return jsonlib.dumps(json).encode('utf-8')
|
||||
|
||||
if form is not None:
|
||||
_setdefault_header(headers, 'Content-Type', _FORM_CONTENTTYPE)
|
||||
return urllib.parse.urlencode(form, doseq=True)
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def _prepare_params(params):
|
||||
if params is None:
|
||||
return ''
|
||||
return urllib.parse.urlencode(params, doseq=True)
|
||||
|
||||
|
||||
def _prepare_request(method, url, *, enc_params='', timeout=DEFAULT_TIMEOUT, source_address=None, unix_socket=None, verify=True, ssl_context=None):
|
||||
"""Parses the URL, returns the path and the right HTTPConnection subclass."""
|
||||
parsed_url = urllib.parse.urlparse(url)
|
||||
|
||||
is_unix = (unix_socket is not None)
|
||||
scheme = parsed_url.scheme.lower()
|
||||
if scheme.endswith('+unix'):
|
||||
scheme = scheme[:-5]
|
||||
is_unix = True
|
||||
if scheme == 'https':
|
||||
raise ValueError("https+unix is not implemented")
|
||||
|
||||
if scheme not in ('http', 'https'):
|
||||
raise ValueError("unrecognized scheme", scheme)
|
||||
|
||||
is_https = (scheme == 'https')
|
||||
host = parsed_url.hostname
|
||||
port = 443 if is_https else 80
|
||||
if parsed_url.port:
|
||||
port = parsed_url.port
|
||||
|
||||
if is_unix and unix_socket is None:
|
||||
unix_socket = urllib.parse.unquote(parsed_url.netloc)
|
||||
|
||||
path = parsed_url.path
|
||||
if parsed_url.query:
|
||||
if enc_params:
|
||||
path = f'{path}?{parsed_url.query}&{enc_params}'
|
||||
else:
|
||||
path = f'{path}?{parsed_url.query}'
|
||||
else:
|
||||
if enc_params:
|
||||
path = f'{path}?{enc_params}'
|
||||
else:
|
||||
pass # just parsed_url.path in this case
|
||||
|
||||
if isinstance(source_address, str):
|
||||
source_address = (source_address, 0)
|
||||
|
||||
if is_unix:
|
||||
conn = UnixHTTPConnection(unix_socket, timeout=timeout)
|
||||
elif is_https:
|
||||
if ssl_context is None:
|
||||
ssl_context = ssl.create_default_context()
|
||||
if not verify:
|
||||
ssl_context.check_hostname = False
|
||||
ssl_context.verify_mode = ssl.CERT_NONE
|
||||
conn = HTTPSConnection(host, port, source_address=source_address, timeout=timeout,
|
||||
context=ssl_context)
|
||||
else:
|
||||
conn = HTTPConnection(host, port, source_address=source_address, timeout=timeout)
|
||||
|
||||
munged_url = urllib.parse.urlunparse((parsed_url.scheme, parsed_url.netloc,
|
||||
path, parsed_url.params,
|
||||
'', parsed_url.fragment))
|
||||
return munged_url, conn, path
|
Loading…
Reference in New Issue