summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Hallot <olivier.hallot@libreoffice.org>2024-03-05 09:28:47 -0300
committerOlivier Hallot <olivier.hallot@libreoffice.org>2024-03-05 13:34:36 +0100
commitde15ef3b10a2ac49322a363e855a4ef63b45be02 (patch)
tree5ece98fafce38fe82fb24b8903721564f7f6c4e1
parentdd303175ab0882d9e4f41773a1342f51250cb295 (diff)
Add User Guides sanity check scripts
This extension runs several scripts in chapter of the user guides to check compliance with documentation team best practices and chapter template for the current edition. Change-Id: I006ab1ffb193ae32324c204a7423b1c4d765dcdf Reviewed-on: https://gerrit.libreoffice.org/c/dev-tools/+/164421 Tested-by: Olivier Hallot <olivier.hallot@libreoffice.org> Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
-rw-r--r--userguides/sanitycheck/Addons.xcu304
-rw-r--r--userguides/sanitycheck/META-INF/manifest.xml16
-rw-r--r--userguides/sanitycheck/Makefile15
-rw-r--r--userguides/sanitycheck/Office/UI/BaseWindowState.xcu17
-rw-r--r--userguides/sanitycheck/Office/UI/BasicIDEWindowState.xcu17
-rw-r--r--userguides/sanitycheck/Office/UI/CalcWindowState.xcu17
-rw-r--r--userguides/sanitycheck/Office/UI/DrawWindowState.xcu17
-rw-r--r--userguides/sanitycheck/Office/UI/ImpressWindowState.xcu17
-rw-r--r--userguides/sanitycheck/Office/UI/MathWindowState.xcu17
-rw-r--r--userguides/sanitycheck/Office/UI/StartModuleWindowState.xcu17
-rw-r--r--userguides/sanitycheck/Office/UI/WriterWindowState.xcu17
-rw-r--r--userguides/sanitycheck/README11
-rw-r--r--userguides/sanitycheck/SanityCheck/Campos.xba188
-rw-r--r--userguides/sanitycheck/SanityCheck/Comunes.xba322
-rw-r--r--userguides/sanitycheck/SanityCheck/DlgAsistente.xdl55
-rw-r--r--userguides/sanitycheck/SanityCheck/DlgCampos.xdl63
-rw-r--r--userguides/sanitycheck/SanityCheck/DlgEstilos.xdl40
-rw-r--r--userguides/sanitycheck/SanityCheck/DlgFormatos.xdl26
-rw-r--r--userguides/sanitycheck/SanityCheck/DlgImagenes.xdl69
-rw-r--r--userguides/sanitycheck/SanityCheck/DlgRenombrar.xdl28
-rw-r--r--userguides/sanitycheck/SanityCheck/DlgResaltes.xdl33
-rw-r--r--userguides/sanitycheck/SanityCheck/DlgTablas.xdl40
-rw-r--r--userguides/sanitycheck/SanityCheck/Estilos.xba454
-rw-r--r--userguides/sanitycheck/SanityCheck/Formatos.xba309
-rw-r--r--userguides/sanitycheck/SanityCheck/Imagenes.xba550
-rw-r--r--userguides/sanitycheck/SanityCheck/L10n.xba778
-rw-r--r--userguides/sanitycheck/SanityCheck/Renombrar.xba175
-rw-r--r--userguides/sanitycheck/SanityCheck/Resaltes.xba677
-rw-r--r--userguides/sanitycheck/SanityCheck/Tablas.xba273
-rw-r--r--userguides/sanitycheck/SanityCheck/dialog.xlb12
-rw-r--r--userguides/sanitycheck/SanityCheck/script.xlb13
-rw-r--r--userguides/sanitycheck/description.xml21
-rw-r--r--userguides/sanitycheck/dist/Sanitycheck-1.0.0.oxtbin0 -> 110377 bytes
-rw-r--r--userguides/sanitycheck/icons/Image14_16.bmpbin0 -> 3126 bytes
-rw-r--r--userguides/sanitycheck/icons/Image14_26.bmpbin0 -> 3126 bytes
-rw-r--r--userguides/sanitycheck/icons/image11_16.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/icons/image11_26.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/icons/image12_16.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/icons/image12_26.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/icons/image13_16.bmpbin0 -> 3126 bytes
-rw-r--r--userguides/sanitycheck/icons/image13_26.bmpbin0 -> 3126 bytes
-rw-r--r--userguides/sanitycheck/icons/image1_16.bmpbin0 -> 3126 bytes
-rw-r--r--userguides/sanitycheck/icons/image1_26.bmpbin0 -> 3126 bytes
-rw-r--r--userguides/sanitycheck/icons/image2_16.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/icons/image2_26.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/icons/image4_16.bmpbin0 -> 3126 bytes
-rw-r--r--userguides/sanitycheck/icons/image4_26.bmpbin0 -> 3126 bytes
-rw-r--r--userguides/sanitycheck/icons/image5_16.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/icons/image5_26.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/icons/image7_16.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/icons/image7_26.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/icons/image8_16.bmpbin0 -> 3126 bytes
-rw-r--r--userguides/sanitycheck/icons/image8_26.bmpbin0 -> 3126 bytes
-rw-r--r--userguides/sanitycheck/icons/image9_16.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/icons/image9_26.bmpbin0 -> 3354 bytes
-rw-r--r--userguides/sanitycheck/pkg-desc/pkg-description.es4
-rw-r--r--userguides/sanitycheck/pkg-desc/pkg-description.pt4
-rw-r--r--userguides/sanitycheck/pkg-desc/pkg-description.txt5
-rw-r--r--userguides/sanitycheck/registration/LGPLv3.0.txt165
-rw-r--r--userguides/sanitycheck/registration/LGPLv3_es.txt635
-rw-r--r--userguides/sanitycheck/registration/LGPLv3_pt-br.txt167
61 files changed, 5588 insertions, 0 deletions
diff --git a/userguides/sanitycheck/Addons.xcu b/userguides/sanitycheck/Addons.xcu
new file mode 100644
index 00000000..54586968
--- /dev/null
+++ b/userguides/sanitycheck/Addons.xcu
@@ -0,0 +1,304 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<oor:component-data
+ xmlns:oor="http://openoffice.org/2001/registry"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ oor:name="Addons"
+ oor:package="org.openoffice.Office">
+ <node oor:name="AddonUI">
+ <node oor:name="OfficeToolBar">
+ <node oor:name="SanityCheck.OfficeToolBar" oor:op="replace">
+ <node oor:name="m001" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Resaltes.AlternarResalte?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="ImageIdentifier" oor:type="xs:string">
+ <value>%origin%/icons/image1</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Toggle Highlight</value>
+ <value xml:lang="pt-BR">Alternar destaque</value>
+ <value xml:lang="es-ES">Alternar resalte</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ <node oor:name="m002" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value></value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>private:separator</value>
+ </prop>
+ </node>
+ <node oor:name="m003" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Comunes.Dlg_Asist?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="ImageIdentifier" oor:type="xs:string">
+ <value>%origin%/icons/image2</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Wizard</value>
+ <value xml:lang="pt-BR">Asistente</value>
+ <value xml:lang="es-ES">Asistente</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ <node oor:name="m004" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Imagenes.DlgImagenes?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="ImageIdentifier" oor:type="xs:string">
+ <value>%origin%/icons/image14</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Browse images</value>
+ <value xml:lang="pt-BR">Navegar pelas imagens</value>
+ <value xml:lang="es-ES">Recorrer Im&#225;genes</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="OfficeMenuBar">
+ <node oor:name="SanityCheck.OfficeMenuBar" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>SanityChek</value>
+ <value xml:lang="pt-BR">SanityChek</value>
+ <value xml:lang="es-ES">SanityChek</value>
+ </prop>
+ <node oor:name="Submenu">
+ <node oor:name="m001" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Resaltes.AlternarResalte?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="ImageIdentifier" oor:type="xs:string">
+ <value>%origin%/icons/image4</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Toggle Highlight</value>
+ <value xml:lang="pt-BR">Alternar destaque</value>
+ <value xml:lang="es-ES">Alternar resalte</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ <node oor:name="m002" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Comunes.Dlg_Asist?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="ImageIdentifier" oor:type="xs:string">
+ <value>%origin%/icons/image5</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Wizard</value>
+ <value xml:lang="pt-BR">Asistente</value>
+ <value xml:lang="es-ES">Asistente</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ <node oor:name="m003" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>private:separator</value>
+ </prop>
+ </node>
+ <node oor:name="m004" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>1. Prepare document</value>
+ <value xml:lang="pt-BR">1. Preparar documento</value>
+ <value xml:lang="es-ES">1. Preparar documento</value>
+ </prop>
+ <node oor:name="Submenu">
+ <node oor:name="m001" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Campos.Dlg_Campos?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="ImageIdentifier" oor:type="xs:string">
+ <value>%origin%/icons/image7</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Document Fields</value>
+ <value xml:lang="pt-BR">Campos do documento</value>
+ <value xml:lang="es-ES">Campos del documento</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ <node oor:name="m002" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Estilos.ComprobacionEstilos?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="ImageIdentifier" oor:type="xs:string">
+ <value>%origin%/icons/image8</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Check Styles</value>
+ <value xml:lang="pt-PT">Verificar estilos</value>
+ <value xml:lang="es-ES">Verificar estilos</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ <node oor:name="m003" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Renombrar.Dlg_Renombrar?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="ImageIdentifier" oor:type="xs:string">
+ <value>%origin%/icons/image9</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Rename Objects</value>
+ <value xml:lang="pt-BR">Renomear objetos</value>
+ <value xml:lang="es-ES">Renombrar objetos</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="m005" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>2. Clean and adjust</value>
+ <value xml:lang="pt-BR">2. limpeza e ajustes</value>
+ <value xml:lang="es-ES">2. limpeza e ajustes</value>
+ </prop>
+ <node oor:name="Submenu">
+ <node oor:name="m001" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Formatos.Dlg_Formatos?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="ImageIdentifier" oor:type="xs:string">
+ <value>%origin%/icons/image11</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Text and Paragraph Cleaning</value>
+ <value xml:lang="pt-BR">Limpeza de texto e par&#225;grafos</value>
+ <value xml:lang="es-ES">Limpieza de texto y p&#225;rrafos</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ <node oor:name="m002" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Imagenes.F_Ajuste_Imagenes_Marcos?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="ImageIdentifier" oor:type="xs:string">
+ <value>%origin%/icons/image12</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Images and Frames Adjust</value>
+ <value xml:lang="pt-BR">Ajuste de Imagens e quadros</value>
+ <value xml:lang="es-ES">Ajuste de Im&#225;genes y marcos</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ <node oor:name="m003" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Tablas.DlgTablas?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="ImageIdentifier" oor:type="xs:string">
+ <value>%origin%/icons/image13</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Tables Adjust</value>
+ <value xml:lang="pt-BR">Ajuste de tabelas</value>
+ <value xml:lang="es-ES">Ajuste de tablas</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="m006" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>3. Web Publicati&#243;n</value>
+ <value xml:lang="es-ES">3. Publicaci&#243;n Web</value>
+ <value xml:lang="pt-BR">3 Publica&#231;ao Web</value>
+ </prop>
+ <node oor:name="Submenu">
+ <node oor:name="m001" oor:op="replace">
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.sun.star.script:SanityCheck.Imagenes.F_AlternarLeyenda?language=Basic&amp;location=application</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value>Toggle Captions</value>
+ <value xml:lang="pt-BR">Alternar legendas</value>
+ <value xml:lang="en-US">Alternar leyendas</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/META-INF/manifest.xml b/userguides/sanitycheck/META-INF/manifest.xml
new file mode 100644
index 00000000..1bdfb190
--- /dev/null
+++ b/userguides/sanitycheck/META-INF/manifest.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest:manifest>
+ <manifest:file-entry manifest:full-path="SanityCheck/" manifest:media-type="application/vnd.sun.star.basic-library"/>
+ <manifest:file-entry manifest:full-path="pkg-desc/pkg-description.txt" manifest:media-type="application/vnd.sun.star.package-bundle-description"/>
+ <manifest:file-entry manifest:full-path="pkg-desc/pkg-description.pt" manifest:media-type="application/vnd.sun.star.package-bundle-description;locale=pt"/>
+ <manifest:file-entry manifest:full-path="pkg-desc/pkg-description.es" manifest:media-type="application/vnd.sun.star.package-bundle-description;locale=es"/>
+ <manifest:file-entry manifest:full-path="Addons.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/BaseWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/BasicIDEWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/CalcWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/DrawWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/ImpressWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/MathWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/StartModuleWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
+ <manifest:file-entry manifest:full-path="Office/UI/WriterWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
+</manifest:manifest> \ No newline at end of file
diff --git a/userguides/sanitycheck/Makefile b/userguides/sanitycheck/Makefile
new file mode 100644
index 00000000..44e7e464
--- /dev/null
+++ b/userguides/sanitycheck/Makefile
@@ -0,0 +1,15 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at https://mozilla.org/MPL/2.0/.
+#
+
+default:
+ VER=`grep '<version' description.xml | sed -e 's/^.*value="//' -e 's/".*//'` ; \
+ rm -f dist/SanityCheck-$$VER.oxt ; \
+ zip -r dist/Sanitycheck-$$VER.oxt . -x '*.oxt' '.*.sw*' '*.xcf' '*.svg' 'Makefile'
+
+# vim: set noet:
diff --git a/userguides/sanitycheck/Office/UI/BaseWindowState.xcu b/userguides/sanitycheck/Office/UI/BaseWindowState.xcu
new file mode 100644
index 00000000..2ab3d2f3
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/BaseWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ oor:name="BaseWindowState"
+ oor:package="org.openoffice.Office.UI">
+ <node oor:name="UIElements">
+ <node oor:name="States">
+ <node oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>SanityCheck</value>
+ <value xml:lang="pt-BR">SanityChek </value>
+ <value xml:lang="es-ES">SanityChek </value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/BasicIDEWindowState.xcu b/userguides/sanitycheck/Office/UI/BasicIDEWindowState.xcu
new file mode 100644
index 00000000..17f1d6f7
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/BasicIDEWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ oor:name="BasicIDEWindowState"
+ oor:package="org.openoffice.Office.UI">
+ <node oor:name="UIElements">
+ <node oor:name="States">
+ <node oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>SanityCheck</value>
+ <value xml:lang="pt-BR">SanityChek </value>
+ <value xml:lang="es-ES">SanityChek </value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/CalcWindowState.xcu b/userguides/sanitycheck/Office/UI/CalcWindowState.xcu
new file mode 100644
index 00000000..89d12504
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/CalcWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ oor:name="CalcWindowState"
+ oor:package="org.openoffice.Office.UI">
+ <node oor:name="UIElements">
+ <node oor:name="States">
+ <node oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>SanityCheck</value>
+ <value xml:lang="pt-BR">SanityChek </value>
+ <value xml:lang="es-ES">SanityChek </value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/DrawWindowState.xcu b/userguides/sanitycheck/Office/UI/DrawWindowState.xcu
new file mode 100644
index 00000000..6ef2014a
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/DrawWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ oor:name="DrawWindowState"
+ oor:package="org.openoffice.Office.UI">
+ <node oor:name="UIElements">
+ <node oor:name="States">
+ <node oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>SanityCheck</value>
+ <value xml:lang="pt-BR">SanityChek </value>
+ <value xml:lang="es-ES">SanityChek </value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/ImpressWindowState.xcu b/userguides/sanitycheck/Office/UI/ImpressWindowState.xcu
new file mode 100644
index 00000000..50ce3cab
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/ImpressWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ oor:name="ImpressWindowState"
+ oor:package="org.openoffice.Office.UI">
+ <node oor:name="UIElements">
+ <node oor:name="States">
+ <node oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>SanityCheck</value>
+ <value xml:lang="pt-BR">SanityChek </value>
+ <value xml:lang="es-ES">SanityChek </value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/MathWindowState.xcu b/userguides/sanitycheck/Office/UI/MathWindowState.xcu
new file mode 100644
index 00000000..f122dabe
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/MathWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ oor:name="MathWindowState"
+ oor:package="org.openoffice.Office.UI">
+ <node oor:name="UIElements">
+ <node oor:name="States">
+ <node oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>SanityCheck</value>
+ <value xml:lang="pt-BR">SanityChek </value>
+ <value xml:lang="es-ES">SanityChek </value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/StartModuleWindowState.xcu b/userguides/sanitycheck/Office/UI/StartModuleWindowState.xcu
new file mode 100644
index 00000000..62dfcef4
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/StartModuleWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ oor:name="StartModuleWindowState"
+ oor:package="org.openoffice.Office.UI">
+ <node oor:name="UIElements">
+ <node oor:name="States">
+ <node oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>SanityCheck</value>
+ <value xml:lang="pt-BR">SanityChek </value>
+ <value xml:lang="es-ES">SanityChek </value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/Office/UI/WriterWindowState.xcu b/userguides/sanitycheck/Office/UI/WriterWindowState.xcu
new file mode 100644
index 00000000..abdb982f
--- /dev/null
+++ b/userguides/sanitycheck/Office/UI/WriterWindowState.xcu
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ oor:name="WriterWindowState"
+ oor:package="org.openoffice.Office.UI">
+ <node oor:name="UIElements">
+ <node oor:name="States">
+ <node oor:name="private:resource/toolbar/addon_SanityCheck.OfficeToolBar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>SanityCheck</value>
+ <value xml:lang="pt-BR">SanityChek </value>
+ <value xml:lang="es-ES">SanityChek </value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/userguides/sanitycheck/README b/userguides/sanitycheck/README
new file mode 100644
index 00000000..8584226d
--- /dev/null
+++ b/userguides/sanitycheck/README
@@ -0,0 +1,11 @@
+User Guides Sanity Check
+
+This extension performs several checkings on the chapter user guides
+
+To build the extension
+cd userguide/sanitycheck
+make
+
+The extension will pick the version number from the description file.
+the extension is localted in the dist folder.
+
diff --git a/userguides/sanitycheck/SanityCheck/Campos.xba b/userguides/sanitycheck/SanityCheck/Campos.xba
new file mode 100644
index 00000000..d77a1e4b
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/Campos.xba
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Campos" script:language="StarBasic" script:moduleType="normal">REM ***** BASIC Módulo Campos *****
+Option Explicit
+
+ Private oDlgProps
+ Const Extension as string = &quot;Revisiones v 1.0.0&quot;
+
+ Rem ############
+Sub Dlg_Campos
+
+ Call L10n.Trad_Campos
+ If Thiscomponent.HasLocation = false then : Msgbox (C_Txt(16),0+48+0, Extension) : Exit Sub : End If
+ Call Comunes.Carga_Tools
+ DialogLibraries.loadLibrary(&quot;SanityCheck&quot;)
+ oDlgProps = CreateUnoDialog(DialogLibraries.getByName(&quot;SanityCheck&quot;).getByName(&quot;DlgCampos&quot;))
+ Call Campos.Cargar_Parametros
+ oDlgProps.execute
+
+End sub
+
+ Rem ############
+Sub Cargar_Parametros
+
+ Dim oDocprops : oDocProps = ThisComponent.getDocumentProperties
+ Dim oUDP : oUDP = oDocProps().UserDefinedProperties
+ Dim archivo : archivo = ConvertFromURL(GetFileNameWithoutExtension(ThisComponent.getURL(), &quot;/&quot;))
+
+ Dim version
+ With oDlgProps.getModel
+ .TiTle = C_Txt(15)
+ .getbyname(&quot;Lbl_Doc&quot;).label = C_Txt(0)
+ .getbyname(&quot;Lbl_DocT&quot;).label = C_Txt(1)
+ .getbyname(&quot;Lbl_Conex&quot;).label = C_Txt(2)
+ .getbyname(&quot;Lbl_Guía&quot;).label = C_Txt(3)
+ .getbyname(&quot;Lbl_Version&quot;).label = C_Txt(4)
+ &apos; .getbyname(&quot;Lbl_Capitulo&quot;).label = C_Txt(5)
+ .getbyname(&quot;Fr_Titulo&quot;).label = C_Txt(6)
+ .getbyname(&quot;Fr_Publicacion&quot;).label = C_Txt(7)
+ .getbyname(&quot;Btn_Corregir&quot;).label = C_Txt(9)
+ .getbyname(&quot;Btn_Cambia&quot;).label = C_Txt(10)
+ .getbyname(&quot;Lbl_Establecidas&quot;).label = C_Txt(13)
+ &apos; .getbyname(&quot;List_Mes&quot;).StringItemList = Lista
+ .getbyname(&quot;Lbl_Archivo&quot;).label = archivo
+ .getbyname(&quot;Lbl_DocTitle&quot;).label = oDocProps.Title
+
+ If oDocProps.TemplateName &lt;&gt; &quot;&quot; then
+ .getbyname(&quot;Lbl_Plantilla&quot;).label = oDocProps.TemplateName
+ End If
+
+ If NOT oUDP.getPropertySetInfo().hasPropertyByName(&quot;LibreOffice Version&quot;) then
+ .getbyname(&quot;Num_Version&quot;).Value = 24
+ .getbyname(&quot;Num_Sub&quot;).Value = 2
+ Else
+ version = Split(Consulta(&quot;LibreOffice Version&quot;),&quot;.&quot;)
+ .getbyname(&quot;Num_Version&quot;).Value = Version(0)
+ .getbyname(&quot;Num_Sub&quot;).Value = Version(1)
+ End If
+ .getbyname(&quot;Tx_Guia&quot;).Text = Consulta(&quot;Guide Name&quot;)
+&apos; .getbyname(&quot;Num_Cap&quot;).Value = Consulta(&quot;Chapter Number&quot;)
+ .getbyname(&quot;Tx_Cap_N&quot;).Text = Consulta(&quot;Chapter Number&quot;)
+ .getbyname(&quot;Tx_Cap_T&quot;).Text = Consulta(&quot;Chapter Title&quot;)
+ .getbyname(&quot;Lbl_Mes&quot;).Label = Consulta(&quot;Month&quot;)
+ If Consulta(&quot;Year&quot;) = &quot;&quot; then
+ .getbyname(&quot;Num_Ano&quot;).Value = 2024
+ else
+ .getbyname(&quot;Num_Ano&quot;).Value = CSng(Consulta(&quot;Year&quot;))
+ End If
+ .getbyname(&quot;Num_Version&quot;).Enabled = True
+ .getbyname(&quot;Num_Sub&quot;).Enabled = True
+ .getbyname(&quot;Tx_Guia&quot;).Enabled = True
+&apos; .getbyname(&quot;Num_Cap&quot;).Enabled = True
+ .getbyname(&quot;Tx_Cap_N&quot;).Enabled = True
+ .getbyname(&quot;Tx_Cap_T&quot;).Enabled = True
+ .getbyname(&quot;List_Mes&quot;).EnableVisible = True
+ .getbyname(&quot;Num_Ano&quot;).Enabled = True
+ .getbyname(&quot;Lbl_Establecidas&quot;).EnableVisible = False
+ .getbyname(&quot;Btn_Corregir&quot;).EnableVisible = False
+ .getbyname(&quot;Btn_Salir&quot;).Label = C_Txt(12)
+ .getbyname(&quot;Btn_Cambia&quot;).EnableVisible = True
+ End With
+End Sub
+
+ Rem ############
+Sub Cargar_Parametros2
+ With oDlgProps.getModel
+ .getbyname(&quot;Num_Version&quot;).Enabled = False
+ .getbyname(&quot;Num_Sub&quot;).Enabled = False
+ .getbyname(&quot;Tx_Guia&quot;).Enabled = False
+&apos; .getbyname(&quot;Num_Cap&quot;).Enabled = False
+ .getbyname(&quot;Tx_Cap_N&quot;).Enabled = False
+ .getbyname(&quot;Tx_Cap_T&quot;).Enabled = False
+ .getbyname(&quot;Lbl_Mes&quot;).Label = Consulta(&quot;Month&quot;)
+ .getbyname(&quot;List_Mes&quot;).EnableVisible = False
+ .getbyname(&quot;Num_Ano&quot;).Enabled = False
+ .getbyname(&quot;Lbl_Establecidas&quot;).EnableVisible = True
+ .getbyname(&quot;Btn_Corregir&quot;).EnableVisible = True
+ .getbyname(&quot;Btn_Salir&quot;).Label = C_Txt(11)
+ .getbyname(&quot;Btn_Cambia&quot;).EnableVisible = False
+ End With
+End Sub
+
+ Rem ############
+Sub Onbtn_Establecer(oEv)
+
+ Dim Dato as String
+ Dim oDocprops : oDocProps = ThisComponent.getDocumentProperties
+ oDlgProps = oEv.Source.Context
+
+ If oDlgProps.getControl(&quot;List_Mes&quot;).SelectedItem() = &quot;&quot; Then
+ Msgbox (C_Txt(17),,Extension)
+ exit sub
+ End If
+
+ With oDlgProps.getModel
+ Dato = .getbyname(&quot;Tx_Guia&quot;).Text
+ Establece_UDP(&quot;Guide Name&quot;, Dato)
+ Dato = .getbyname(&quot;Num_Version&quot;).Value &amp; &quot;.&quot; &amp; .getbyname(&quot;Num_Sub&quot;).Value
+ Establece_UDP(&quot;LibreOffice Version&quot;, Dato)
+&apos; Dato = .getbyname(&quot;Num_Cap&quot;).Value &apos;en lugar de Tx_Cap_N
+&apos; Establece_UDP(&quot;Chapter Number&quot;,Dato)
+ Dato = .getbyname(&quot;Tx_Cap_N&quot;).Text
+ Establece_UDP(&quot;Chapter Number&quot;, Dato)
+ Dato = .getbyname(&quot;Tx_Cap_T&quot;).Text
+ Establece_UDP(&quot;Chapter Title&quot;, Dato)
+ Dato = oDlgProps.getControl(&quot;List_Mes&quot;).SelectedItem() &apos;No model, sino control
+ Establece_UDP(&quot;Month&quot;, Dato)
+ Dato = CStr(.getbyname(&quot;Num_Ano&quot;).Value)
+ Establece_UDP(&quot;Year&quot;, Dato)
+&apos; Dato = C_Txt(5) &amp; .getbyname(&quot;Num_Cap&quot;).Value &amp; &quot;, &quot; &amp; .getbyname(&quot;Tx_Cap_T&quot;).Text
+&apos; oDocProps.Title = Dato
+&apos; Dato = .getbyname(&quot;Tx_Cap_N&quot;).Text &amp; &quot;, &quot; &amp; .getbyname(&quot;Tx_Cap_T&quot;).Text
+&apos; oDocProps.Title = Dato
+ Dato = .getbyname(&quot;Tx_Guia&quot;).Text &amp; Chr(13)
+ If oDocProps.TemplateName &lt;&gt; &quot;&quot; then
+ Dato = Dato &amp; C_Txt(14) &amp; oDocProps.TemplateName
+ else
+ Dato = Dato &amp; &quot;&quot;
+ End If
+ oDocProps.Description = Dato
+
+ End With
+ Call Campos.Cargar_Parametros2
+End Sub
+
+ Rem ############
+Sub onBtn_Revisar(oEv)
+
+ oDlgProps = oEv.Source.Context
+ Call Campos.Cargar_Parametros
+End Sub
+
+ Rem ############
+Sub onBtn_Salir(oEv)
+
+ oDlgProps = oEv.Source.Context
+ oDlgProps.EndExecute
+End Sub
+
+ Rem ############
+Function Consulta(ByVal Propiedad)
+ Dim oUDP : oUDP = ThisComponent.getDocumentProperties().UserDefinedProperties
+ If NOT oUDP.getPropertySetInfo().hasPropertyByName(Propiedad) then
+ Consulta = &quot;&quot;
+ Else
+ Consulta = oUDP.getPropertyValue(Propiedad)
+ end if
+End Function
+
+ Rem ############
+Sub Establece_UDP(sProp, sVal)
+
+ Dim oDocprops : oDocProps = ThisComponent.getDocumentProperties()
+ Dim oUDP : oUDP = oDocProps().UserDefinedProperties
+
+ If NOT oUDP.getPropertySetInfo().hasPropertyByName(sProp) Then
+ oUDP.addProperty(sProp, _
+ com.sun.star.beans.PropertyAttribute.MAYBEVOID + _
+ com.sun.star.beans.PropertyAttribute.REMOVEABLE + _
+ com.sun.star.beans.PropertyAttribute.MAYBEDEFAULT, sVal)
+ Else
+ oUDP.setPropertyValue(Sprop, sVal)
+ End If
+&apos;removeProperty(name)
+End Sub
+
+ REM ================= Fin Propiedades ===========================================
+</script:module> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/Comunes.xba b/userguides/sanitycheck/SanityCheck/Comunes.xba
new file mode 100644
index 00000000..c99ac5d7
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/Comunes.xba
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Comunes" script:language="StarBasic" script:moduleType="normal">REM ***** BASIC Módulo Comunes *****
+Option Explicit
+
+ Const Extension as string = &quot;Revisiones v 1.0.0&quot;
+ Dim oDlgAsist as Object
+ Dim paso &apos;as integer
+
+ Rem ############
+Sub Dlg_Asist
+
+ Call L10n.Trad_Comunes
+ If Thiscomponent.HasLocation = false then : Msgbox (V_Txt(19),0+48+0, Extension) : Exit Sub : End If
+ If Imagenes.F_Prueba_Sel = 0 Then : Exit Sub : End If
+
+ DialogLibraries.loadLibrary(&quot;SanityCheck&quot;)
+ oDlgAsist = CreateUnoDialog(DialogLibraries.getByName(&quot;SanityCheck&quot;).getByName(&quot;DlgAsistente&quot;))
+ &apos; If Not IsMissing(paso) then: oDlgAsist.Model.Step(paso): else: oDlgAsist.Model.Step(1): end if
+
+ With oDlgAsist.getModel
+ .Step = 1
+ .getbyname(&quot;Btn_Atras&quot;).Label = V_Txt(1)
+ .getbyname(&quot;Btn_Salir&quot;).Label = V_Txt(3)
+ .getbyname(&quot;Btn_Campos&quot;).Label = V_Txt(4)
+ .getbyname(&quot;Btn_Estilos&quot;).Label = V_Txt(5)
+ .getbyname(&quot;Btn_Limpiar&quot;).Label = V_Txt(6)
+ .getbyname(&quot;Btn_Renombrar&quot;).Label = V_Txt(7)
+ .getbyname(&quot;Btn_Corregir&quot;).Label = V_Txt(8)
+ .getbyname(&quot;Btn_Leyendas&quot;).Label = V_Txt(9)
+&apos; .getbyname(&quot;Tx_Registro&quot;).Text = &quot;&quot;
+ End With
+ Call Comunes.ParametrosAsistente
+&apos; If Not IsMissing(paso) then: oDlgAsist.Model.Step(paso): end if&apos;: else: oDlgAsist.Model.Step(1): end if
+ oDlgAsist.execute
+End Sub
+
+ Rem ############
+Sub ParametrosAsistente&apos;(oEv)
+
+ With oDlgAsist.getModel
+ .Title = V_Txt(0)
+ .getbyname(&quot;Lbl_N_Pagina&quot;).label = oDlgAsist.Model.Step()
+ .getbyname(&quot;Btn_Atras&quot;).Label = V_Txt(1)
+ .getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(2)
+
+ Select case oDlgAsist.Model.Step()
+ Case 1 &apos;Campos
+ .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(10)
+ .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+ .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(11)
+ .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(32)
+ Case 2 &apos;Estilos
+ .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(12)
+ .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+ .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(13)
+ .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(33)
+ Case 3 &apos;Renombrar
+ .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(17)
+ .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+ .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(18)
+ .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(35)
+ Case 4 &apos;Limpiar
+ .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(14)
+ .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+ .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(15)
+ .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(34)
+ Case 5 &apos;Corregir Imgs
+ .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(24)
+ .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+ .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(25)
+ .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(36)
+ Case 6 &apos;Leyendas
+ .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(27)
+ .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = True
+ .getByName(&quot;Lbl_P_Info&quot;).Label = V_Txt(28)
+ .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(37)
+ Case 7 &apos;Registro
+ .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(29)
+ .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = False
+ .getbyName(&quot;Tx_Ayuda&quot;).Text = V_Txt(38)
+ Case -1 &apos;Ayuda
+ .getbyName(&quot;Lbl_Pagina&quot;).Label = V_Txt(31)
+ .getbyName(&quot;Lbl_P_Info&quot;).enableVisible = False
+ End select
+ End With
+End sub
+
+ Rem ############
+Sub OnBtn_Atras(oEv)
+
+ oDlgAsist = oEv.Source.Context
+ If oDlgAsist.Model.Step &lt;&gt; 1 then oDlgAsist.Model.Step = oDlgAsist.Model.Step - 1
+ With oDlgAsist.getModel
+ If oDlgAsist.Model.Step &lt;&gt; 7 then .getbyname(&quot;Btn_Omitir&quot;).EnableVisible = True &apos;3
+ If oDlgAsist.Model.Step = 1 then
+ .getbyname(&quot;Btn_Atras&quot;).EnableVisible = False
+ else
+ .getbyname(&quot;Btn_Atras&quot;).EnableVisible = True
+ end If
+ End WIth
+ Call Comunes.ParametrosAsistente
+End Sub
+
+ Rem ############
+Sub OnBtn_Omitir(oEv)&apos;Siguiente
+
+ oDlgAsist = oEv.Source.Context
+ With oDlgAsist.getModel
+ .Step = .Step + 1
+ Call Comunes.ParametrosAsistente
+ If oDlgAsist.Model.Step = 1 then
+ .getbyname(&quot;Btn_Atras&quot;).EnableVisible = False
+ else
+ .getbyname(&quot;Btn_Atras&quot;).EnableVisible = True
+ end If
+ If oDlgAsist.Model.Step = 7 then .getbyname(&quot;Btn_Omitir&quot;).EnableVisible = False&apos;3
+ End With
+End Sub
+
+ Rem ############
+Sub OnBtn_Campos(oEv)
+
+ oDlgAsist = oEv.Source.Context
+ Call Campos.Dlg_Campos
+ oDlgAsist.getModel.getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)
+ Dim s : s = oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text
+ s = s &amp; V_Txt(20) &amp; Chr(13)
+ oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text = s
+End Sub
+
+ Rem ############
+Sub OnBtn_Estilos(oEv)
+
+ oDlgAsist = oEv.Source.Context
+ With oDlgAsist.Model
+ .getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)
+ Call Estilos.ComprobacionEstilos
+ Dim s : s = .getbyname(&quot;Tx_Registro&quot;).Text
+ s = s &amp; V_Txt(21) &amp; Chr(13)
+ .getbyname(&quot;Tx_Registro&quot;).Text = s
+ End With
+End Sub
+
+ Rem ############
+Sub OnBtn_Limpiar(oEv)
+
+ oDlgAsist = oEv.Source.Context
+ oDlgAsist.getModel.getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)
+ Call Formatos.Dlg_Formatos
+ Dim s : s = oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text
+ s = s &amp; V_Txt(22) &amp; Chr(13)
+ oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text = s
+End Sub
+
+ Rem ############
+Sub OnBtn_Renombrar(oEv)
+
+ oDlgAsist = oEv.Source.Context
+ oDlgAsist.getModel.getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)
+ Dim s : s = oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text
+ s = s &amp; V_Txt(23) &amp; Chr(13)
+ oDlgAsist.getModel.getbyname(&quot;Tx_Registro&quot;).Text = s
+ Call Renombrar.Dlg_Renombrar
+
+End sub
+
+ Rem ############
+Sub OnBtn_Corregir(oEv)
+
+ oDlgAsist = oEv.Source.Context
+ oDlgAsist.getModel.getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)
+ Dim ajuste : ajuste = F_Ajuste_Imagenes_Marcos
+ Dim s : s = oDlgAsist.getModel.getbyName(&quot;Tx_Registro&quot;).Text
+ s = s &amp; Ajuste
+ oDlgAsist.getModel.getbyName(&quot;Tx_Registro&quot;).Text = s
+End Sub
+
+ Rem ############
+Sub OnBtn_SubirLeyendas(oEv)
+
+ oDlgAsist = oEv.Source.Context
+ Dim ajuste : ajuste = F_AlternarLeyenda
+ With oDlgAsist.getModel
+ .getbyname(&quot;Btn_Omitir&quot;).Label = V_Txt(30)
+ Dim s : s = .getbyName(&quot;Tx_Registro&quot;).text
+ s = s &amp; Ajuste
+ .getbyName(&quot;Tx_Registro&quot;).Text = s
+ End With
+End Sub
+
+ Rem ############
+Sub OnBtn_Revisar(oEv)
+
+ oDlgAsist = oEv.Source.Context
+ oDlgAsist.EndExecute
+ Call Imagenes.DlgImagenes
+End Sub
+
+ Rem ############
+Sub OnBtn_Ayuda(oEv)
+
+ oDlgAsist = oEv.Source.Context
+ Paso = oDlgAsist.Model.Step
+ oDlgAsist.Model.Step = -1
+
+ With oDlgAsist.getModel
+ .getbyname(&quot;Btn_Volver&quot;).EnableVisible = True
+ .getbyname(&quot;Lbl_N_Pagina&quot;).EnableVisible = False
+ .getbyname(&quot;Btn_Ayuda&quot;).EnableVisible = False
+ .getbyname(&quot;Btn_Omitir&quot;).EnableVisible = False
+ .getbyname(&quot;Btn_Atras&quot;).EnableVisible = False
+ .getbyname(&quot;Btn_Salir&quot;).EnableVisible = False
+ .getbyname(&quot;Lbl_P_Info&quot;).EnableVisible = False
+ End WIth
+End Sub
+
+ Rem ############
+Sub OnBtn_Volver(oEv)
+
+ oDlgAsist = oEv.Source.Context
+
+ With oDlgAsist.getModel
+ .Step = Paso
+ .getbyname(&quot;Btn_Volver&quot;).EnableVisible = False
+ .getbyname(&quot;Lbl_N_Pagina&quot;).EnableVisible = True
+ .getbyname(&quot;Btn_Ayuda&quot;).EnableVisible = True
+ .getbyname(&quot;Btn_Atras&quot;).EnableVisible = True
+ .getbyname(&quot;Btn_Salir&quot;).EnableVisible = True
+ .getbyname(&quot;Lbl_P_Info&quot;).EnableVisible = True
+ If oDlgAsist.Model.Step = 7 Then
+ .getbyname(&quot;Btn_Omitir&quot;).EnableVisible = False
+ else
+ .getbyname(&quot;Btn_Omitir&quot;).EnableVisible = True
+ End If
+ End WIth
+ Call Comunes.ParametrosAsistente
+End Sub
+
+ Rem ############
+Sub InsertAnnotation(oParSection As Object, oCursor As Object, sMytext As String)
+
+ Dim oAnno As Object
+ oAnno = ThisComponent.createInstance(&quot;com.sun.star.text.TextField.Annotation&quot;)
+ oAnno.Content = sMytext
+ oAnno.Author = Extension &apos;MyName
+ oAnno.DateTimeValue = Fecha
+ oParSection.Text.insertTextContent(oCursor, oAnno, True)
+End Sub
+
+ Rem ############
+Function Fecha
+Dim oDT As New com.sun.star.util.DateTime
+ With oDT
+ .Day = Day(Now) : .Month = Month(Now): .Year = Year(Now)
+ .Hours = Hour(Now) : .Minutes = Minute(Now) : .Seconds = Second(Now)
+ &apos;.NanoSeconds = 300&apos;parece que no funciona
+ End With
+ Fecha = oDT
+End Function
+
+ Rem ############
+Function Carga_Tools
+Dim Nombre as String : Nombre = &quot;Tools&quot;
+ If GlobalScope.BasicLibraries.hasByName(Nombre) Then
+ if Not GlobalScope.BasicLibraries.isLibraryLoaded(Nombre) Then
+ GlobalScope.BasicLibraries.LoadLibrary(Nombre)
+ end If
+ Else
+ Msgbox &quot;La biblioteca &quot; &amp; Nombre &amp; &quot; no existe , la macro dará errores&quot;
+ End If
+End Function
+
+
+ Rem ############
+Function F_LOVersion() As String
+&apos;-----------------------------------------------------------------------------------------
+&apos; Devuelve la versión de LibreOffice
+ Dim oSet, oCfgProvider
+ Dim aAux(0) As New com.sun.star.beans.PropertyValue
+
+ oCfgProvider = createUnoService(&quot;com.sun.star.configuration.ConfigurationProvider&quot;)
+ aAux(0).Name = &quot;nodepath&quot;
+ aAux(0).Value = &quot;/org.openoffice.Setup/Product&quot;
+ oSet = oCfgProvider.createInstanceWithArguments(&quot;com.sun.star.configuration.ConfigurationAccess&quot;, aAux())
+ F_LOVersion = oSet.getByName(&quot;ooSetupVersion&quot;)
+End Function
+
+ REM ================= Fin Comunes ===========================================================
+
+
+ Rem ############
+Function MyName
+ Dim aProps(0) As New com.sun.star.beans.PropertyValue
+ Dim oRegKey, oConfig As Object
+ aProps(0).Name = &quot;nodepath&quot;
+ aProps(0).Value = &quot;/org.openoffice.UserProfile/Data/&quot;
+ oConfig = createUnoService(&quot;com.sun.star.configuration.ConfigurationProvider&quot;)
+ oRegKey = oConfig.createInstanceWithArguments(&quot;com.sun.star.configuration.ConfigurationUpdateAccess&quot;, aProps())
+ MyName = oRegKey.givenname &amp; &quot; &quot; &amp; oRegKey.sn
+
+End Function
+
+ Rem ############ posible incorporación? Recargar documento.
+sub ActualizarTodo
+rem ----------------------------------------------------------------------
+rem define variables
+dim document as object
+dim dispatcher as object
+rem ----------------------------------------------------------------------
+rem get access to the document
+document = ThisComponent.CurrentController.Frame
+dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
+
+rem ----------------------------------------------------------------------
+dispatcher.executeDispatch(document, &quot;.uno:UpdateAll&quot;, &quot;&quot;, 0, Array())
+end sub
+
+
+
+
+</script:module>
diff --git a/userguides/sanitycheck/SanityCheck/DlgAsistente.xdl b/userguides/sanitycheck/SanityCheck/DlgAsistente.xdl
new file mode 100644
index 00000000..c81386ab
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgAsistente.xdl
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="Asistente" dlg:tab-index="0" dlg:left="83" dlg:top="110" dlg:width="222" dlg:height="136" dlg:page="1" dlg:closeable="true" dlg:moveable="true" dlg:title="Titulo">
+ <dlg:styles>
+ <dlg:style dlg:style-id="0" dlg:font-height="9" dlg:font-weight="100"/>
+ <dlg:style dlg:style-id="1" dlg:text-color="0xff" dlg:font-height="20" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="2" dlg:font-height="18" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="3" dlg:font-height="13" dlg:font-weight="150"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+ <dlg:button dlg:id="Btn_Renombrar" dlg:tab-index="0" dlg:left="77" dlg:top="115" dlg:width="38" dlg:height="12" dlg:page="3" dlg:value="Btn_Renombrar">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Renombrar?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:style-id="0" dlg:id="Btn_Atras" dlg:tab-index="2" dlg:left="30" dlg:top="115" dlg:width="35" dlg:height="12" dlg:tabstop="false" dlg:value="Btn_Atras">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Atras?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:text dlg:id="Label3" dlg:tab-index="4" dlg:left="135" dlg:top="37" dlg:width="2" dlg:height="0" dlg:page="1" dlg:value="Label3"/>
+ <dlg:button dlg:id="Btn_Salir" dlg:tab-index="5" dlg:left="182" dlg:top="115" dlg:width="30" dlg:height="12" dlg:tabstop="false" dlg:value="Btn_Salir" dlg:button-type="cancel"/>
+ <dlg:button dlg:id="Btn_Corregir" dlg:tab-index="6" dlg:left="80" dlg:top="115" dlg:width="34" dlg:height="12" dlg:page="5" dlg:value="Btn_Corregir">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Corregir?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:id="Btn_Leyendas" dlg:tab-index="7" dlg:left="77" dlg:top="115" dlg:width="38" dlg:height="12" dlg:page="6" dlg:value="Btn_Leyendas">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_SubirLeyendas?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:text dlg:id="Label2" dlg:tab-index="9" dlg:left="29" dlg:top="89" dlg:width="183" dlg:height="26" dlg:page="7" dlg:value="Al pulsar el botón &quot;Revisar&quot;, se cierra este asistente y abrirá el diálogo &quot;Comprobar&quot;. Lo puedes usar para recorrer las imágenes del documento, y modificar sus propiedades." dlg:multiline="true"/>
+ <dlg:button dlg:id="Btn_Revisar" dlg:tab-index="10" dlg:visible="false" dlg:left="79" dlg:top="115" dlg:width="40" dlg:height="12" dlg:page="7" dlg:value="Revisar">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Revisar?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:style-id="0" dlg:id="Btn_Omitir" dlg:tab-index="1" dlg:left="129" dlg:top="115" dlg:width="35" dlg:height="12" dlg:tabstop="false" dlg:value="Btn_Omitir">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Omitir?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:textfield dlg:id="TextField2" dlg:tab-index="12" dlg:left="13" dlg:top="93" dlg:width="0" dlg:height="2" dlg:page="4"/>
+ <dlg:textfield dlg:id="Tx_Registro" dlg:tab-index="11" dlg:left="42" dlg:top="17" dlg:width="171" dlg:height="66" dlg:page="7" dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true"/>
+ <dlg:button dlg:style-id="1" dlg:id="Btn_Ayuda" dlg:tab-index="13" dlg:left="5" dlg:top="32" dlg:width="16" dlg:height="19" dlg:tabstop="false" dlg:value="?">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Ayuda?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:id="Btn_Volver" dlg:tab-index="15" dlg:left="99" dlg:top="115" dlg:width="30" dlg:height="12" dlg:page="-1" dlg:tabstop="false" dlg:value="Volver">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Volver?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:textfield dlg:id="Tx_Ayuda" dlg:tab-index="14" dlg:left="27" dlg:top="13" dlg:width="188" dlg:height="95" dlg:page="-1" dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true" dlg:value="Tx_Ayuda"/>
+ <dlg:text dlg:style-id="2" dlg:id="Lbl_N_Pagina" dlg:tab-index="3" dlg:left="7" dlg:top="6" dlg:width="12" dlg:height="13" dlg:value="X" dlg:align="center"/>
+ <dlg:text dlg:style-id="3" dlg:id="Lbl_Pagina" dlg:tab-index="16" dlg:left="44" dlg:top="0" dlg:width="138" dlg:height="13" dlg:value="Lbl_Pagina" dlg:align="center" dlg:valign="center"/>
+ <dlg:text dlg:id="Lbl_P_Info" dlg:tab-index="8" dlg:left="44" dlg:top="13" dlg:width="171" dlg:height="90" dlg:value="Lbl_P_Info" dlg:multiline="true"/>
+ <dlg:button dlg:id="Btn_Campos" dlg:tab-index="18" dlg:left="80" dlg:top="115" dlg:width="35" dlg:height="12" dlg:page="1" dlg:value="Btn_Campos">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Campos?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:id="Btn_Estilos" dlg:tab-index="17" dlg:left="80" dlg:top="115" dlg:width="34" dlg:height="12" dlg:page="2" dlg:value="Btn_Estilos">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Estilos?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:id="Btn_Limpiar" dlg:tab-index="19" dlg:left="80" dlg:top="115" dlg:width="34" dlg:height="12" dlg:page="4" dlg:value="Btn_Limpiar">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.OnBtn_Limpiar?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:fixedline dlg:id="FixedLine1" dlg:tab-index="20" dlg:left="25" dlg:top="6" dlg:width="2" dlg:height="102" dlg:align="vertical"/>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgCampos.xdl b/userguides/sanitycheck/SanityCheck/DlgCampos.xdl
new file mode 100644
index 00000000..0fe37ad5
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgCampos.xdl
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="Campos" dlg:left="132" dlg:top="116" dlg:width="233" dlg:height="144" dlg:page="2" dlg:closeable="true" dlg:moveable="true" dlg:title="Campos personalizados del documento">
+ <dlg:styles>
+ <dlg:style dlg:style-id="0" dlg:background-color="0xffffff" dlg:font-height="11" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="1" dlg:font-height="9" dlg:font-weight="100"/>
+ <dlg:style dlg:style-id="2" dlg:font-height="10" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="3" dlg:font-height="10"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+ <dlg:textfield dlg:id="TextField6" dlg:tab-index="13" dlg:left="22" dlg:top="85" dlg:width="0" dlg:height="2"/>
+ <dlg:text dlg:id="Lbl_Guía" dlg:tab-index="12" dlg:left="19" dlg:top="45" dlg:width="24" dlg:height="10" dlg:value="Guía:" dlg:valign="center"/>
+ <dlg:text dlg:id="Lbl_Version" dlg:tab-index="14" dlg:left="127" dlg:top="45" dlg:width="40" dlg:height="10" dlg:value="Lbl_Version" dlg:valign="center"/>
+ <dlg:textfield dlg:id="Tx_Guia" dlg:tab-index="1" dlg:left="45" dlg:top="45" dlg:width="77" dlg:height="10" dlg:value="Tx_Guia"/>
+ <dlg:button dlg:id="Btn_Cambia" dlg:tab-index="8" dlg:left="105" dlg:top="127" dlg:width="46" dlg:height="12" dlg:value="Establecer">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Campos.Onbtn_Establecer?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:text dlg:id="Lbl_Plantilla" dlg:tab-index="16" dlg:left="84" dlg:top="30" dlg:width="131" dlg:height="9" dlg:valign="center"/>
+ <dlg:numericfield dlg:id="Num_Ano" dlg:tab-index="7" dlg:left="160" dlg:top="102" dlg:width="42" dlg:height="12" dlg:strict-format="true" dlg:decimal-accuracy="0" dlg:value-min="2024" dlg:value-max="2050" dlg:spin="true"/>
+ <dlg:text dlg:style-id="0" dlg:id="Label1" dlg:tab-index="17" dlg:left="78" dlg:top="70" dlg:width="3" dlg:height="11" dlg:value="," dlg:align="center"/>
+ <dlg:text dlg:style-id="0" dlg:id="Label2" dlg:tab-index="18" dlg:left="197" dlg:top="45" dlg:width="5" dlg:height="11" dlg:value="." dlg:align="center" dlg:valign="center"/>
+ <dlg:text dlg:id="Lbl_Archivo" dlg:tab-index="15" dlg:left="62" dlg:top="9" dlg:width="121" dlg:height="9" dlg:value="lbl_Archivo" dlg:valign="center"/>
+ <dlg:numericfield dlg:id="Num_Version" dlg:tab-index="2" dlg:left="179" dlg:top="45" dlg:width="19" dlg:height="10" dlg:align="right" dlg:strict-format="true" dlg:decimal-accuracy="0" dlg:value="24" dlg:value-min="6" dlg:value-max="44"/>
+ <dlg:numericfield dlg:id="Num_Sub" dlg:tab-index="3" dlg:left="202" dlg:top="45" dlg:width="15" dlg:height="10" dlg:strict-format="true" dlg:decimal-accuracy="0" dlg:value="2" dlg:value-min="1" dlg:value-max="12"/>
+ <dlg:text dlg:id="Label5" dlg:tab-index="21" dlg:left="35" dlg:top="26" dlg:width="0" dlg:height="0" dlg:value="Label5"/>
+ <dlg:text dlg:id="Lbl_DocTitle" dlg:tab-index="20" dlg:left="56" dlg:top="19" dlg:width="160" dlg:height="10" dlg:value="Lbl_DocTitle" dlg:valign="center"/>
+ <dlg:textfield dlg:id="Tx_Cap_T" dlg:tab-index="5" dlg:left="83" dlg:top="70" dlg:width="138" dlg:height="10" dlg:maxlength="60" dlg:value="Tx_Cap_T"/>
+ <dlg:textfield dlg:style-id="1" dlg:id="Tx_Cap_N" dlg:tab-index="4" dlg:left="20" dlg:top="70" dlg:width="57" dlg:height="10" dlg:valign="center" dlg:value="Tx_Cap_N"/>
+ <dlg:text dlg:style-id="2" dlg:id="Lbl_Establecidas" dlg:tab-index="22" dlg:left="17" dlg:top="127" dlg:width="88" dlg:height="12" dlg:value="Lbl_Establecidas" dlg:align="center" dlg:valign="center"/>
+ <dlg:button dlg:id="Btn_Salir" dlg:tab-index="10" dlg:left="167" dlg:top="127" dlg:width="35" dlg:height="12" dlg:value="Cancelar">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Campos.onBtn_Salir?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:text dlg:id="Lbl_Doc" dlg:tab-index="0" dlg:left="19" dlg:top="8" dlg:width="37" dlg:height="10" dlg:value="Lbl_Doc" dlg:valign="center"/>
+ <dlg:text dlg:id="Lbl_DocT" dlg:tab-index="19" dlg:left="19" dlg:top="19" dlg:width="34" dlg:height="8" dlg:value="Lbl_DocT" dlg:valign="center"/>
+ <dlg:text dlg:id="Lbl_Conex" dlg:tab-index="9" dlg:left="19" dlg:top="30" dlg:width="63" dlg:height="10" dlg:value="Lbl_Conex" dlg:valign="center"/>
+ <dlg:menulist dlg:id="List_Mes" dlg:tab-index="6" dlg:left="24" dlg:top="102" dlg:width="73" dlg:height="12" dlg:spin="true" dlg:linecount="12">
+ <dlg:menupopup>
+ <dlg:menuitem dlg:value="Enero"/>
+ <dlg:menuitem dlg:value="Febrero"/>
+ <dlg:menuitem dlg:value="Marzo"/>
+ <dlg:menuitem dlg:value="Abril"/>
+ <dlg:menuitem dlg:value="Mayo"/>
+ <dlg:menuitem dlg:value="Junio"/>
+ <dlg:menuitem dlg:value="Julio"/>
+ <dlg:menuitem dlg:value="Agosto"/>
+ <dlg:menuitem dlg:value="Septiembre"/>
+ <dlg:menuitem dlg:value="Octubre"/>
+ <dlg:menuitem dlg:value="Noviembre"/>
+ <dlg:menuitem dlg:value="Diciembre"/>
+ </dlg:menupopup>
+ </dlg:menulist>
+ <dlg:titledbox dlg:id="Fr_Publicacion" dlg:tab-index="23" dlg:left="12" dlg:top="92" dlg:width="212" dlg:height="27" dlg:page="2">
+ <dlg:title dlg:value="Fr_Publicacion"/>
+ </dlg:titledbox>
+ <dlg:text dlg:style-id="3" dlg:id="Lbl_Mes" dlg:tab-index="24" dlg:left="107" dlg:top="101" dlg:width="42" dlg:height="12" dlg:page="2" dlg:value="Lbl_Mes" dlg:align="right" dlg:valign="center"/>
+ <dlg:titledbox dlg:id="Fr_Titulo" dlg:tab-index="25" dlg:left="12" dlg:top="60" dlg:width="212" dlg:height="24" dlg:page="2">
+ <dlg:title dlg:value="Fr_Titulo"/>
+ </dlg:titledbox>
+ <dlg:button dlg:id="Btn_Corregir" dlg:tab-index="11" dlg:left="118" dlg:top="127" dlg:width="35" dlg:height="12" dlg:value="Btn_Corregir">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Campos.onBtn_Revisar?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgEstilos.xdl b/userguides/sanitycheck/SanityCheck/DlgEstilos.xdl
new file mode 100644
index 00000000..4a5dd1e0
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgEstilos.xdl
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:style-id="4" dlg:id="DlgEstilos" dlg:left="53" dlg:top="38" dlg:width="326" dlg:height="196" dlg:page="1" dlg:closeable="true" dlg:moveable="true" dlg:title="Gestión de estilos">
+ <dlg:styles>
+ <dlg:style dlg:style-id="0" dlg:text-color="0x127622" dlg:font-height="11" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="1" dlg:font-height="10" dlg:font-weight="150" dlg:font-underline="single"/>
+ <dlg:style dlg:style-id="2" dlg:font-height="10" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="3" dlg:text-color="0xff" dlg:font-height="24" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="4" dlg:font-weight="150"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+ <dlg:button dlg:id="Btn_Eliminar_P" dlg:tab-index="2" dlg:left="265" dlg:top="88" dlg:width="49" dlg:height="15" dlg:page="1" dlg:help-text="Selecciona un estilo de la lista para eliminar" dlg:tabstop="true" dlg:value="Btn_Eliminar_P">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Estilos.OnBtEliminar_P?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:id="Btn_Eliminar_C" dlg:tab-index="4" dlg:left="265" dlg:top="169" dlg:width="49" dlg:height="15" dlg:page="1" dlg:help-text="Selecciona un estilo de la lista para eliminar" dlg:tabstop="true" dlg:value="Btn_Eliminar_C">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Estilos.OnBtEliminar_C?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:menulist dlg:id="Lst_Eliminar_P" dlg:tab-index="1" dlg:left="137" dlg:top="33" dlg:width="120" dlg:height="70" dlg:page="1" dlg:tabstop="true" dlg:linecount="10">
+ <script:event script:event-name="on-itemstatechange" script:macro-name="vnd.sun.star.script:SanityCheck.Estilos.OnLstBox_P_Change?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:menulist>
+ <dlg:menulist dlg:id="Lst_Eliminar_C" dlg:tab-index="3" dlg:left="137" dlg:top="114" dlg:width="120" dlg:height="70" dlg:page="1" dlg:tabstop="true" dlg:multiselection="true" dlg:linecount="10">
+ <script:event script:event-name="on-itemstatechange" script:macro-name="vnd.sun.star.script:SanityCheck.Estilos.OnLstBox_C_Change?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:menulist>
+ <dlg:textfield dlg:id="Tx_C_Uso" dlg:tab-index="9" dlg:left="10" dlg:top="114" dlg:width="120" dlg:height="70" dlg:page="1" dlg:tabstop="false" dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true" dlg:value="Tx_C_Uso"/>
+ <dlg:textfield dlg:id="Tx_P_Uso" dlg:tab-index="10" dlg:left="10" dlg:top="33" dlg:width="120" dlg:height="70" dlg:page="1" dlg:tabstop="false" dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true" dlg:value="Tx_P_Uso"/>
+ <dlg:fixedline dlg:id="FixedLine2" dlg:tab-index="11" dlg:left="12" dlg:top="106" dlg:width="302" dlg:height="2" dlg:page="1"/>
+ <dlg:fixedline dlg:id="FixedLine1" dlg:tab-index="12" dlg:left="132" dlg:top="33" dlg:width="2" dlg:height="153" dlg:page="1" dlg:align="vertical"/>
+ <dlg:text dlg:style-id="0" dlg:id="Lbl_Estilos" dlg:tab-index="0" dlg:left="33" dlg:top="5" dlg:width="200" dlg:height="12" dlg:page="1" dlg:value="Lbl_Estilos" dlg:align="center"/>
+ <dlg:text dlg:style-id="1" dlg:id="Lbl_Aplicados" dlg:tab-index="6" dlg:left="10" dlg:top="20" dlg:width="120" dlg:height="10" dlg:page="1" dlg:value="Lbl_Aplicados" dlg:align="center"/>
+ <dlg:text dlg:style-id="1" dlg:id="Lbl_NoUsados" dlg:tab-index="8" dlg:left="141" dlg:top="20" dlg:width="120" dlg:height="10" dlg:page="1" dlg:value="Lbl_NoUsados" dlg:align="center"/>
+ <dlg:text dlg:style-id="2" dlg:id="Lbl_Parrafo" dlg:tab-index="5" dlg:left="259" dlg:top="34" dlg:width="63" dlg:height="8" dlg:page="1" dlg:value="Lbl_Parrafo" dlg:align="center"/>
+ <dlg:text dlg:style-id="2" dlg:id="Lbl_Caracter" dlg:tab-index="7" dlg:left="261" dlg:top="116" dlg:width="62" dlg:height="8" dlg:page="1" dlg:value="Lbl_Caracter" dlg:align="center"/>
+ <dlg:text dlg:id="Lbl_InfoP" dlg:tab-index="13" dlg:left="263" dlg:top="46" dlg:width="55" dlg:height="42" dlg:page="1" dlg:value="Selecciona un estilo de la lista&#x0a; &quot;No utilizados&quot; para eliminarlo" dlg:align="center" dlg:multiline="true"/>
+ <dlg:text dlg:id="Lbl_InfoC" dlg:tab-index="14" dlg:left="263" dlg:top="127" dlg:width="55" dlg:height="42" dlg:page="1" dlg:value="Lbl_InfoC" dlg:align="center" dlg:multiline="true"/>
+ <dlg:button dlg:style-id="3" dlg:id="Btn_Ayuda" dlg:tab-index="15" dlg:left="293" dlg:top="8" dlg:width="20" dlg:height="20" dlg:tabstop="false" dlg:value="?" dlg:valign="center">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Estilos.OnBtn_Ayuda?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:textfield dlg:id="Tx_Ayuda" dlg:tab-index="16" dlg:left="29" dlg:top="17" dlg:width="246" dlg:height="161" dlg:page="2" dlg:multiline="true" dlg:readonly="true" dlg:value="Tx_Ayuda"/>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgFormatos.xdl b/userguides/sanitycheck/SanityCheck/DlgFormatos.xdl
new file mode 100644
index 00000000..29d6e041
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgFormatos.xdl
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="DlgFormatos" dlg:left="257" dlg:top="127" dlg:width="196" dlg:height="135" dlg:page="2" dlg:closeable="true" dlg:moveable="true">
+ <dlg:bulletinboard>
+ <dlg:button dlg:id="Btn_Limpiar" dlg:tab-index="4" dlg:left="70" dlg:top="110" dlg:width="36" dlg:height="12" dlg:page="1" dlg:value="Btn_Limpiar">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.OnBtn_Limpiar?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:id="Btn_Salir" dlg:tab-index="5" dlg:left="131" dlg:top="110" dlg:width="36" dlg:height="12" dlg:value="Btn_Salir">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.onBtn_Salir?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:text dlg:id="Lbl_Info" dlg:tab-index="0" dlg:left="20" dlg:top="10" dlg:width="168" dlg:height="55" dlg:page="1" dlg:value="- Texto: Limpia el formato directo de caracteres aplicado al texto&#x0a;- Parrafos: Limpia el fomato directo aplicado a los párrafos (Incluidas las listas no numeradas)&#x0a;- Numerados: Limpia el formato aplicado a los párrafos de listas numeradas " dlg:multiline="true"/>
+ <dlg:textfield dlg:id="Tx_Registro" dlg:tab-index="6" dlg:left="25" dlg:top="14" dlg:width="150" dlg:height="69" dlg:page="2" dlg:multiline="true" dlg:value="Espere..."/>
+ <dlg:button dlg:id="Btn_Volver" dlg:tab-index="7" dlg:left="78" dlg:top="110" dlg:width="38" dlg:height="12" dlg:page="2" dlg:value="Btn_Volver">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.OnBtn_Volver?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:checkbox dlg:id="Ch_Text" dlg:tab-index="1" dlg:left="48" dlg:top="74" dlg:width="60" dlg:height="12" dlg:page="1" dlg:value="Ch_Text" dlg:valign="center" dlg:checked="false">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.OnCasillaFormatos?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:checkbox>
+ <dlg:checkbox dlg:id="Ch_Par" dlg:tab-index="2" dlg:left="115" dlg:top="74" dlg:width="60" dlg:height="12" dlg:page="1" dlg:value="Ch_Par" dlg:valign="center" dlg:checked="false">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.OnCasillaFormatos?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:checkbox>
+ <dlg:checkbox dlg:id="Ch_Num" dlg:tab-index="3" dlg:left="48" dlg:top="91" dlg:width="73" dlg:height="12" dlg:page="1" dlg:value="Ch_Num" dlg:valign="center" dlg:checked="false">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Formatos.OnCasillaFormatos?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:checkbox>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgImagenes.xdl b/userguides/sanitycheck/SanityCheck/DlgImagenes.xdl
new file mode 100644
index 00000000..67ddfaeb
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgImagenes.xdl
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="Imagenes" dlg:tab-index="0" dlg:left="100" dlg:top="110" dlg:width="233" dlg:height="177" dlg:page="2" dlg:closeable="true" dlg:moveable="true" dlg:title="Revisión">
+ <dlg:styles>
+ <dlg:style dlg:style-id="0" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="1" dlg:font-weight="100"/>
+ <dlg:style dlg:style-id="2" dlg:text-color="0xc9211e" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="3" dlg:font-height="10" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="4" dlg:text-color="0xff" dlg:font-height="20" dlg:font-weight="150"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+ <dlg:text dlg:style-id="0" dlg:id="Lbl_Recorte" dlg:tab-index="0" dlg:left="14" dlg:top="115" dlg:width="135" dlg:height="18" dlg:page="1" dlg:value="Lbl_Recorte" dlg:multiline="true"/>
+ <dlg:text dlg:style-id="0" dlg:id="Lbl_Ancla" dlg:tab-index="11" dlg:left="55" dlg:top="35" dlg:width="53" dlg:height="8" dlg:page="1" dlg:value="Lbl_Ancla" dlg:tabstop="true"/>
+ <dlg:button dlg:style-id="1" dlg:id="Btn_Ancla" dlg:tab-index="3" dlg:left="160" dlg:top="34" dlg:width="50" dlg:height="12" dlg:page="1" dlg:value="Como Carácter">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Ancla?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:style-id="1" dlg:id="Btn_De_Marco" dlg:tab-index="8" dlg:left="157" dlg:top="96" dlg:width="50" dlg:height="12" dlg:page="1" dlg:help-text="Copia la descripción del marco " dlg:value="Desde Marco">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Desde_Marco?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:style-id="1" dlg:id="Btn_Editar" dlg:tab-index="7" dlg:left="155" dlg:top="80" dlg:width="55" dlg:height="12" dlg:page="1" dlg:value="Cambiar /Asignar">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Cambiar_Desc_Img?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:style-id="1" dlg:id="Btn_Img_Name" dlg:tab-index="2" dlg:left="160" dlg:top="14" dlg:width="50" dlg:height="12" dlg:page="1" dlg:value="Cambiar">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Cambiar_Nombre_Img?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:textfield dlg:id="Tx_Desc_Marco" dlg:tab-index="4" dlg:left="14" dlg:top="56" dlg:width="135" dlg:height="10" dlg:page="1">
+ <script:event script:event-name="on-textchange" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnTx_Desc_Marco?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:textfield>
+ <dlg:button dlg:style-id="1" dlg:id="Btn_Desc_Marco" dlg:tab-index="5" dlg:left="160" dlg:top="56" dlg:width="50" dlg:height="12" dlg:page="1" dlg:value="Cambiar">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Cambiar_Desc_Marco?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:style-id="1" dlg:id="Btn_Recorte" dlg:tab-index="9" dlg:left="154" dlg:top="123" dlg:width="57" dlg:height="13" dlg:page="1" dlg:help-text="Abre el programa asociado para editar la imagen (dependiente del S.O.)" dlg:value="Editar (externo)">
+ <script:event script:event-name="on-mousedown" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Editar_pulsado?language=Basic&amp;location=application" script:language="Script"/>
+ <script:event script:event-name="on-mouseup" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Editar_soltado?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:textfield dlg:id="Tx_Desc_Img" dlg:tab-index="6" dlg:left="14" dlg:top="85" dlg:width="135" dlg:height="18" dlg:page="1" dlg:valign="top" dlg:multiline="true">
+ <script:event script:event-name="on-textchange" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnTx_Desc_Img?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:textfield>
+ <dlg:text dlg:style-id="2" dlg:id="Lbl_Escala" dlg:tab-index="13" dlg:left="14" dlg:top="133" dlg:width="135" dlg:height="10" dlg:page="1" dlg:value="Lbl_Escala" dlg:valign="center"/>
+ <dlg:text dlg:style-id="3" dlg:id="Lbl_Ultima" dlg:tab-index="14" dlg:left="105" dlg:top="144" dlg:width="53" dlg:height="12" dlg:page="1" dlg:value="Ultima imagen" dlg:align="center" dlg:valign="center"/>
+ <dlg:text dlg:id="Label3" dlg:tab-index="15" dlg:left="186" dlg:top="176" dlg:width="2" dlg:height="0" dlg:value="Label3"/>
+ <dlg:titledbox dlg:style-id="0" dlg:id="Fr_Img" dlg:tab-index="16" dlg:left="10" dlg:top="6" dlg:width="205" dlg:height="24" dlg:page="1" dlg:help-text="Alterna el orden de las leyendas dentro del marco">
+ <dlg:title dlg:value="Nombre de la imagen"/>
+ </dlg:titledbox>
+ <dlg:textfield dlg:id="Tx_Nombre_Img" dlg:tab-index="1" dlg:left="14" dlg:top="16" dlg:width="135" dlg:height="10" dlg:page="1">
+ <script:event script:event-name="on-textchange" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnTx_Nombre_Img?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:textfield>
+ <dlg:button dlg:style-id="1" dlg:id="Btn_Anterior" dlg:tab-index="19" dlg:left="84" dlg:top="155" dlg:width="36" dlg:height="13" dlg:page="1" dlg:value="&lt; Anterior">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Anterior?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:style-id="1" dlg:id="Btn_Salir" dlg:tab-index="21" dlg:left="186" dlg:top="155" dlg:width="32" dlg:height="13" dlg:page="1" dlg:value="Salir">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Salir?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:style-id="1" dlg:id="Btn_Siguiente" dlg:tab-index="20" dlg:left="131" dlg:top="155" dlg:width="37" dlg:height="13" dlg:page="1" dlg:value="Siguiente &gt;">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Siguiente?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:titledbox dlg:style-id="0" dlg:id="Fr_Marco" dlg:tab-index="17" dlg:left="10" dlg:top="47" dlg:width="205" dlg:height="24" dlg:page="1">
+ <dlg:title dlg:value="Descripción del marco"/>
+ </dlg:titledbox>
+ <dlg:titledbox dlg:style-id="0" dlg:id="Fr_Desc" dlg:tab-index="12" dlg:left="10" dlg:top="74" dlg:width="205" dlg:height="38" dlg:page="1">
+ <dlg:title dlg:value="Descripción de la imagen"/>
+ </dlg:titledbox>
+ <dlg:text dlg:style-id="0" dlg:id="Lbl_Anclaje" dlg:tab-index="10" dlg:left="16" dlg:top="35" dlg:width="34" dlg:height="8" dlg:page="1" dlg:value="Anclaje"/>
+ <dlg:button dlg:style-id="4" dlg:id="Btn_Ayuda" dlg:tab-index="22" dlg:left="18" dlg:top="151" dlg:width="16" dlg:height="19" dlg:tabstop="false" dlg:value="?">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Imagenes.OnBtn_Ayuda?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:textfield dlg:id="Tx_Ayuda" dlg:tab-index="18" dlg:left="14" dlg:top="6" dlg:width="208" dlg:height="143" dlg:page="2" dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true" dlg:value="Tx_Ayuda"/>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgRenombrar.xdl b/userguides/sanitycheck/SanityCheck/DlgRenombrar.xdl
new file mode 100644
index 00000000..b9d64d19
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgRenombrar.xdl
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="Renombrar" dlg:left="253" dlg:top="116" dlg:width="196" dlg:height="135" dlg:page="2" dlg:closeable="true" dlg:moveable="true">
+ <dlg:bulletinboard>
+ <dlg:text dlg:id="Lbl_P_Info" dlg:tab-index="7" dlg:left="13" dlg:top="5" dlg:width="171" dlg:height="50" dlg:page="1" dlg:value="Lbl_P_Info" dlg:multiline="true"/>
+ <dlg:button dlg:id="Btn_Renombrar" dlg:tab-index="5" dlg:left="72" dlg:top="110" dlg:width="38" dlg:height="12" dlg:page="1" dlg:value="Btn_Renombrar">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Renombrar.OnBtn_Renombrar?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:checkbox dlg:id="Ch_Tablas" dlg:tab-index="2" dlg:left="96" dlg:top="75" dlg:width="40" dlg:height="10" dlg:page="1" dlg:value="Ch_Tablas" dlg:checked="false">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.Casillas_Renombrar?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:checkbox>
+ <dlg:button dlg:id="Btn_Salir" dlg:tab-index="0" dlg:left="135" dlg:top="110" dlg:width="30" dlg:height="12" dlg:tabstop="true" dlg:value="Btn_Salir" dlg:button-type="cancel"/>
+ <dlg:text dlg:id="Lbl_Selec" dlg:tab-index="8" dlg:left="44" dlg:top="57" dlg:width="108" dlg:height="10" dlg:page="1" dlg:value="Lbl_Selec"/>
+ <dlg:checkbox dlg:id="Ch_Imgs" dlg:tab-index="1" dlg:left="42" dlg:top="74" dlg:width="40" dlg:height="10" dlg:page="1" dlg:tabstop="true" dlg:value="Ch_Imgs" dlg:checked="false">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.Casillas_Renombrar?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:checkbox>
+ <dlg:checkbox dlg:id="Ch_Marcos" dlg:tab-index="3" dlg:left="42" dlg:top="87" dlg:width="40" dlg:height="10" dlg:page="1" dlg:value="Ch_Marcos" dlg:checked="false">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.Casillas_Renombrar?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:checkbox>
+ <dlg:checkbox dlg:id="Ch_Indice" dlg:tab-index="4" dlg:left="97" dlg:top="89" dlg:width="40" dlg:height="10" dlg:page="1" dlg:value="Ch_Indice" dlg:checked="false">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Comunes.Casillas_Renombrar?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:checkbox>
+ <dlg:textfield dlg:id="Tx_Registro" dlg:tab-index="9" dlg:left="27" dlg:top="17" dlg:width="146" dlg:height="83" dlg:page="2" dlg:multiline="true" dlg:value="Tx_Registro"/>
+ <dlg:button dlg:id="Btn_Volver" dlg:tab-index="6" dlg:left="72" dlg:top="110" dlg:width="38" dlg:height="12" dlg:page="2" dlg:value="Btn_Volver">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Renombrar.OnBtn_Volver?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgResaltes.xdl b/userguides/sanitycheck/SanityCheck/DlgResaltes.xdl
new file mode 100644
index 00000000..3a840974
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgResaltes.xdl
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="DlgResaltes" dlg:tab-index="0" dlg:left="120" dlg:top="30" dlg:width="242" dlg:height="242" dlg:page="1" dlg:closeable="true" dlg:moveable="true" dlg:title="Resaltado de estilos">
+ <dlg:styles>
+ <dlg:style dlg:style-id="0" dlg:text-color="0xc9211e" dlg:font-height="10" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="1" dlg:font-height="28" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="2" dlg:font-height="10" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="3" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="4" dlg:text-color="0x468a1a" dlg:font-height="11" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="5" dlg:font-height="11" dlg:font-weight="150"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+ <dlg:button dlg:id="CommandButton2" dlg:tab-index="2" dlg:left="34" dlg:top="211" dlg:width="0" dlg:height="2" dlg:page="1" dlg:value="CommandButton1"/>
+ <dlg:text dlg:id="Label9" dlg:tab-index="3" dlg:left="102" dlg:top="225" dlg:width="4" dlg:height="0" dlg:page="1" dlg:value="Label8"/>
+ <dlg:text dlg:style-id="0" dlg:id="Lbl_Errores" dlg:tab-index="7" dlg:left="47" dlg:top="37" dlg:width="131" dlg:height="8" dlg:page="1" dlg:value="¡La definición de estilos contiene errores!"/>
+ <dlg:button dlg:style-id="1" dlg:id="Btn_Errores" dlg:tab-index="10" dlg:left="200" dlg:top="27" dlg:width="21" dlg:height="19" dlg:value="𓂀" dlg:valign="center">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Resaltes.OnBtErrores?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:text dlg:style-id="2" dlg:id="Lbl_Sintaxis" dlg:tab-index="6" dlg:left="15" dlg:top="11" dlg:width="91" dlg:height="10" dlg:page="2" dlg:value="Errores de sintáxis:"/>
+ <dlg:button dlg:style-id="3" dlg:id="Btn_Detalles" dlg:tab-index="8" dlg:left="195" dlg:top="11" dlg:width="30" dlg:height="12" dlg:page="1" dlg:tabstop="false" dlg:value="Detalles" dlg:valign="top" dlg:grab-focus="false">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Resaltes.OnBtDetalles?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:text dlg:style-id="3" dlg:id="Lbl_NoPresentes" dlg:tab-index="1" dlg:left="124" dlg:top="146" dlg:width="104" dlg:height="10" dlg:page="1" dlg:value="Lbl_NoPresentes" dlg:align="center"/>
+ <dlg:text dlg:style-id="4" dlg:id="Lbl_NCambios" dlg:tab-index="5" dlg:left="28" dlg:top="12" dlg:width="12" dlg:height="10" dlg:page="1" dlg:value="Lbl_NCambios" dlg:align="right" dlg:valign="center"/>
+ <dlg:text dlg:style-id="5" dlg:id="Lbl_Info" dlg:tab-index="4" dlg:left="47" dlg:top="12" dlg:width="128" dlg:height="10" dlg:page="1" dlg:value="Estilos personalizados modificados" dlg:valign="center"/>
+ <dlg:textfield dlg:id="Tx_C_Encontrados" dlg:tab-index="11" dlg:left="123" dlg:top="62" dlg:width="104" dlg:height="81" dlg:page="1" dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true"/>
+ <dlg:textfield dlg:id="Tx_P_Encontrados" dlg:tab-index="12" dlg:left="13" dlg:top="62" dlg:width="104" dlg:height="161" dlg:page="1" dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true"/>
+ <dlg:textfield dlg:id="Tx_Perdidos" dlg:tab-index="13" dlg:left="124" dlg:top="156" dlg:width="104" dlg:height="66" dlg:page="1" dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true"/>
+ <dlg:text dlg:style-id="3" dlg:id="Lbl_P_Cambiados" dlg:tab-index="0" dlg:left="13" dlg:top="54" dlg:width="104" dlg:height="8" dlg:page="1" dlg:value="Lbl_P_Cambiados" dlg:align="center"/>
+ <dlg:text dlg:style-id="3" dlg:id="Lbl_C_Cambiados" dlg:tab-index="14" dlg:left="126" dlg:top="54" dlg:width="99" dlg:height="8" dlg:page="1" dlg:value="Lbl_C_Cambiados" dlg:align="center"/>
+ <dlg:textfield dlg:id="Tx_ListaErrores" dlg:tab-index="9" dlg:left="13" dlg:top="51" dlg:width="215" dlg:height="171" dlg:page="2" dlg:tabstop="false" dlg:vscroll="true" dlg:multiline="true" dlg:readonly="true" dlg:value="Errores"/>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/DlgTablas.xdl b/userguides/sanitycheck/SanityCheck/DlgTablas.xdl
new file mode 100644
index 00000000..51673fa7
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/DlgTablas.xdl
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="Tablas" dlg:left="100" dlg:top="110" dlg:width="217" dlg:height="138" dlg:closeable="true" dlg:moveable="true" dlg:title="Información de tabla">
+ <dlg:styles>
+ <dlg:style dlg:style-id="0" dlg:font-height="10" dlg:font-weight="150"/>
+ <dlg:style dlg:style-id="1" dlg:font-weight="150"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+ <dlg:button dlg:id="Btn_Siguiente" dlg:tab-index="1" dlg:left="113" dlg:top="116" dlg:width="40" dlg:height="14" dlg:value="Siguiente">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnBtn_Siguiente?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:radiogroup>
+ <dlg:radio dlg:id="Opt_Datos" dlg:tab-index="2" dlg:left="54" dlg:top="46" dlg:width="54" dlg:height="9" dlg:value="Datos">
+ <script:event script:event-name="on-itemstatechange" script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnRadioButtons?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:radio>
+ <dlg:radio dlg:id="Opt_Distribucion" dlg:tab-index="3" dlg:left="114" dlg:top="46" dlg:width="46" dlg:height="9" dlg:value="Distribución">
+ <script:event script:event-name="on-itemstatechange" script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnRadioButtons?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:radio>
+ </dlg:radiogroup>
+ <dlg:text dlg:id="Lbl_Info" dlg:tab-index="5" dlg:left="20" dlg:top="66" dlg:width="170" dlg:height="32" dlg:value="Selecciona un tipo de tabla para optimizar y pulsa &quot;Optimizar &quot;&#x0a;o pulsa en &quot;Siguiente&quot; para omitir la modificación de la tabla " dlg:multiline="true"/>
+ <dlg:text dlg:id="Lbl_Nombre" dlg:tab-index="7" dlg:left="59" dlg:top="11" dlg:width="58" dlg:height="9" dlg:value="Lbl_Nombre"/>
+ <dlg:text dlg:id="Lbl_Estilo" dlg:tab-index="9" dlg:left="58" dlg:top="23" dlg:width="66" dlg:height="9" dlg:value="Lbl_Estilo"/>
+ <dlg:button dlg:id="Btn_Salir" dlg:tab-index="0" dlg:left="170" dlg:top="116" dlg:width="40" dlg:height="14" dlg:value="Salir">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnBtn_Salir?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:id="Btn_Anterior" dlg:tab-index="10" dlg:left="15" dlg:top="116" dlg:width="40" dlg:height="14" dlg:value="Anterior">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnBtn_Anterior?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:text dlg:style-id="0" dlg:id="Lbl_Ultima" dlg:tab-index="11" dlg:left="88" dlg:top="106" dlg:width="50" dlg:height="12" dlg:value="Lbl_Ultima"/>
+ <dlg:button dlg:id="Btn_Optimizar" dlg:tab-index="12" dlg:left="64" dlg:top="116" dlg:width="40" dlg:height="14" dlg:value="Optimizar">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:SanityCheck.Tablas.OnBtn_Optimizar?language=Basic&amp;location=application" script:language="Script"/>
+ </dlg:button>
+ <dlg:text dlg:style-id="1" dlg:id="Lbl_Optimizada" dlg:tab-index="13" dlg:left="64" dlg:top="120" dlg:width="34" dlg:height="11" dlg:value="Optimizada"/>
+ <dlg:text dlg:id="Lbl_EstiloT" dlg:tab-index="8" dlg:left="18" dlg:top="23" dlg:width="38" dlg:height="9" dlg:value="Estilo"/>
+ <dlg:titledbox dlg:id="Fr_Tipo" dlg:tab-index="4" dlg:left="33" dlg:top="34" dlg:width="149" dlg:height="26">
+ <dlg:title dlg:value="Tipo de tabla"/>
+ </dlg:titledbox>
+ <dlg:text dlg:id="Lbl_NombreT" dlg:tab-index="6" dlg:left="18" dlg:top="11" dlg:width="38" dlg:height="9" dlg:value="Nombre"/>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/Estilos.xba b/userguides/sanitycheck/SanityCheck/Estilos.xba
new file mode 100644
index 00000000..f0f8647c
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/Estilos.xba
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Estilos" script:language="StarBasic" script:moduleType="normal">REM ***** BASIC Módulo Estilos *****
+Option Explicit
+
+Global estiloPU(18) as String
+Global estiloCU(22) as String
+Dim oDlgEstilos as Object
+Dim P_Uso, C_Uso, a_P_SinUso as Variant, a_C_SinUso as Variant
+Dim ContadorComentarios as Integer
+
+ Rem ############
+Sub CargaEstilos_PU_Guias
+ Rem Estilos de Párrafo de Usuario de las guías sensibles a mayúculas y minúsculas.
+ Rem Si se amplia la matriz (estilos en plantilla) hay que modificar la definición de
+ Rem la matriz &quot;estiloPU&quot; (inicio de módulo) para igualar con el nº del último elemento
+
+ estiloPU(0) = &quot;Caption Table Listing&quot;
+ estiloPU(1) = &quot;Code&quot;
+ estiloPU(2) = &quot;Column Contents&quot;
+ estiloPU(3) = &quot;Definition Term&quot;
+ estiloPU(4) = &quot;Definition Term 2&quot;
+ estiloPU(5) = &quot;First Heading&quot; &apos; Puede que en la nueva plantilla no aparezca.
+ estiloPU(6) = &quot;Guide Name&quot;
+ estiloPU(7) = &quot;Guide Subtitle&quot;
+ estiloPU(8) = &quot;Guide Title&quot;
+ estiloPU(9) = &quot;Heading Caution&quot;
+ estiloPU(10) = &quot;Heading Note&quot;
+ estiloPU(11) = &quot;Heading Tip&quot;
+ estiloPU(12) = &quot;Legend Numbered&quot;
+ estiloPU(13) = &quot;Listing&quot;
+ estiloPU(14) = &quot;New Chapter&quot;
+ estiloPU(15) = &quot;Page Break&quot;&apos; Creo que está en deshuso
+ estiloPU(16) = &quot;Text Body Indent 2&quot;
+ estiloPU(17) = &quot;Text Body List Intro&quot;
+ estiloPU(18) = &quot;Text Note&quot;
+
+End sub
+
+ Rem ############
+Sub CargaEstilos_CU_Guias
+ Rem Estilos de Párrafo de Usuario de las guías sensibles a mayúculas y minúsculas.
+ Rem Si se amplia la matriz (más estilos en plantilla) hay que modificar la definición de
+ Rem la matriz &quot;estiloPU&quot; (inicio de módulo) para igualar con el nº del último elemento
+ Rem ======================================================
+ estiloCU(0) = &quot;Bullet Symbols&quot;
+ estiloCU(0) = &quot;ch2_Libreoffice&quot;
+ estiloCU(1) = &quot;ch2_libreoffice.Comment&quot;
+ estiloCU(2) = &quot;ch2_libreoffice.Comment.Single&quot;
+ estiloCU(3) = &quot;ch2_libreoffice.Keyword&quot;
+ estiloCU(4) = &quot;ch2_libreoffice.Keyword.Declaration&quot;
+ estiloCU(5) = &quot;ch2_libreoffice.Keyword.Type&quot;
+ estiloCU(6) = &quot;ch2_libreoffice.Literal&quot;
+ estiloCU(7) = &quot;ch2_libreoffice.Literal.Number&quot;
+ estiloCU(8) = &quot;ch2_libreoffice.Literal.Number.Integer&quot;
+ estiloCU(9) = &quot;ch2_libreoffice.Literal.Number.Float&quot;
+ estiloCU(10) = &quot;ch2_libreoffice.Literal.String&quot;
+ estiloCU(11) = &quot;ch2_libreoffice.Literal.String.Double&quot;
+ estiloCU(12) = &quot;ch2_libreoffice.Name&quot;
+ estiloCU(13) = &quot;ch2_libreoffice.Name.Function&quot;
+ estiloCU(14) = &quot;ch2_libreoffice.Name.Variable&quot;
+ estiloCU(15) = &quot;ch2_libreoffice.Operator&quot;
+ estiloCU(16) = &quot;ch2_libreoffice.Operator.Word&quot;
+ estiloCU(17) = &quot;ch2_libreoffice.Punctuation&quot;
+ estiloCU(18) = &quot;ch2_libreoffice.Text&quot;
+ estiloCU(19) = &quot;ch2_libreoffice.Text.Whitespace&quot;
+ estiloCU(20) = &quot;Code&quot;
+ estiloCU(21) = &quot;Keystroke&quot;
+ estiloCU(22) = &quot;SuperScript&quot;
+End sub
+
+ Rem ############
+Sub ComprobacionEstilos
+ Call L10n.Trad_Estilos
+ Avisos_Estilos_Ajenos(&quot;P&quot;)
+ Avisos_Estilos_Ajenos(&quot;C&quot;)
+ Call DialogoEstilos
+End Sub
+
+ Rem ############
+Function Avisos_Estilos_Ajenos(Familia as String)
+ Rem Recopila los estilos ajenos a las guías de la documentación
+ Rem y los separa en aplicados y no aplicados.
+ Rem Muestra mensajes para eliminar los no aplicados y avisar
+ Rem de los aplicados.
+ Rem Argumentos: P = estilos de párrafo / C = de carácter
+ Rem ======================================================
+ If (Not GlobalScope.BasicLibraries.isLibraryLoaded(&quot;Tools&quot;)) Then
+ GlobalScope.BasicLibraries.LoadLibrary(&quot;Tools&quot;)
+ End If
+
+ Dim oEstilos as Object, oEstilo as Object, Estilo_G as Object, N_Familia as String
+ If Familia = &quot;P&quot; then
+ N_Familia = &quot;Estilos de parrafo&quot;
+ oEstilos = ThisComponent.StyleFamilies.getByName(&quot;ParagraphStyles&quot;)
+ Call CargaEstilos_PU_Guias &apos;Carga estilos usuario de las guías
+ estilo_G = estiloPU
+ P_Uso = &quot;&quot; &apos;reset
+ Elseif Familia = &quot;C&quot; then
+ N_Familia = &quot;Estilos de carácter&quot;
+ oEstilos = ThisComponent.StyleFamilies.getByName(&quot;CharacterStyles&quot;)
+ Call CargaEstilos_CU_Guias
+ estilo_G = estiloCU
+ C_Uso = &quot;&quot; &apos;reset
+ End If
+
+ Dim i as integer, u as integer, s as integer, enUso() as Variant, sinUso() as Variant
+ u = -1 : s = -1
+ For i = 0 To oEstilos.getCount -1
+ oEstilo = oEstilos.getByIndex(i)
+ If oEstilo.isUserDefined Then
+ if oEstilo.isInUse Then
+ Redim Preserve enUso(0 To u+1)
+ enUso(u+1) = oEstilo.Name
+ u = UBound(enUso)
+ elseif Not oEstilo.isInUse Then
+ Redim Preserve sinUso(0 To s+1)
+ sinUso(s+1) = oEstilo.Name
+ s = UBound(sinUso)
+ end If
+ End If
+ Next
+
+ BubbleSortList(sinUso)
+
+ sinUso = F_RestaMatrices(Estilo_G,sinuso)&apos;matriz sin estilos guías
+ if ubound(sinUso) = -1 Then
+ Redim sinUso(0)
+ sinUso(0) = E_Txt(8)
+ end if
+ If familia = &quot;P&quot; Then a_P_SinUso = sinUso &apos;matriz Listado Parrafos
+ If familia = &quot;C&quot; Then a_C_SinUso = sinUso &apos;matriz Listado Caracteres
+
+ BubbleSortList(enUso)&apos;(Tools) Array principal para estilo usados
+
+ enUso = F_RestaMatrices(Estilo_G,enUso) &apos;matriz sin estilos guías
+ If Ubound(enUso) = -1 Then
+ if familia = &quot;P&quot; Then
+ P_Uso = E_Txt(8)
+ elseif familia = &quot;C&quot; Then
+ C_Uso = E_Txt(8)
+ endIf
+ ElseIf Ubound(enUso) &lt;&gt; -1 Then
+ if familia = &quot;P&quot; Then
+ P_Uso = F_MatrizCuadroTexto(EnUso) &apos;Convierte la matriz en texto (cuadro de texto estilos párrafo)
+ Call F_Comentar_Parrafos(EnUso) &apos;Comenta los párrafos
+ elseIf familia = &quot;C&quot; Then
+ C_Uso = F_MatrizCuadroTexto(EnUso) &apos;Convierte la matriz en texto (cuadro de texto estilos caracter)
+ end If
+ End If
+End Function
+
+ Rem ############
+Sub DialogoEstilos()
+
+ DialogLibraries.LoadLibrary(&quot;SanityCheck&quot;)
+ oDlgEstilos = createUnoDialog(DialogLibraries.getByName(&quot;SanityCheck&quot;).getbyName(&quot;DlgEstilos&quot;))
+
+ With oDlgEstilos.getModel
+ .Step = 1
+ .Title = E_Txt(0)
+ .getByName(&quot;Lbl_Estilos&quot;).label = E_Txt(1)
+ .getByName(&quot;Lbl_Aplicados&quot;).label = E_Txt(2)
+ .getByName(&quot;Lbl_NoUsados&quot;).label = E_Txt(3)
+ .getByName(&quot;Lbl_Parrafo&quot;).label = E_Txt(4)
+ .getByName(&quot;Lbl_Caracter&quot;).label = E_Txt(5)
+ .getByName(&quot;Btn_Eliminar_P&quot;).label = E_Txt(7)
+ .getByName(&quot;Btn_Eliminar_C&quot;).label = E_Txt(7)
+ .getByName(&quot;Lst_Eliminar_P&quot;).StringItemList = a_P_SinUso
+ .getByName(&quot;Lst_Eliminar_C&quot;).StringItemList = a_C_SinUso
+ .getByName(&quot;Tx_P_Uso&quot;).Text = (P_Uso)
+ .getByName(&quot;Tx_C_Uso&quot;).Text= (C_Uso)
+ .getByName(&quot;Tx_Ayuda&quot;).Text= E_Txt(18)
+
+ If a_P_SinUso(0) = E_Txt(8) Then
+ .getByName(&quot;Btn_Eliminar_P&quot;).enableVisible = False
+ .getByName(&quot;Lbl_InfoP&quot;).label = &quot;&quot;
+ Else
+ .getByName(&quot;Btn_Eliminar_P&quot;).enableVisible = True
+ .getByName(&quot;Lbl_InfoP&quot;).label = E_Txt(6)
+ end if
+
+ If a_C_SinUso(0) = E_Txt(8) Then
+ .getByName(&quot;Btn_Eliminar_C&quot;).enableVisible = False
+ .getByName(&quot;Lbl_InfoC&quot;).label = &quot;&quot;
+ Else
+ .getByName(&quot;Btn_Eliminar_C&quot;).enableVisible = True
+ .getByName(&quot;Lbl_InfoC&quot;).label = E_Txt(6)
+ end if
+ End With
+ oDlgEstilos.getControl(&quot;Btn_Eliminar_P&quot;).Enable = False
+ oDlgEstilos.getControl(&quot;Btn_Eliminar_C&quot;).Enable = False
+
+ oDlgEstilos.execute()
+&apos; If Variable DialogoX = 0 then_____
+End Sub
+
+ Rem ############
+Sub OnBtn_Ayuda(oEv)
+
+ oDlgEstilos = oEv.Source.Context
+ With oDlgEstilos.getModel
+ If .Step = 1 then
+ .Step = 2
+ .getByName(&quot;Btn_Ayuda&quot;).Label = &quot;↫&quot;
+ Else
+ .Step = 1
+ .getByName(&quot;Btn_Ayuda&quot;).Label = &quot;?&quot;
+ End If
+ End With
+End Sub
+
+ Rem ############
+Sub OnLstBox_P_Change(oEv)
+
+ oDlgEstilos = oEv.Source.Context
+ With oDlgEstilos
+ If .getControl(&quot;Lst_Eliminar_P&quot;).SelectedItem &lt;= -1 Then&apos;0
+ .getControl(&quot;Btn_Eliminar_P&quot;).Enable = False
+ Else
+ .getControl(&quot;Btn_Eliminar_P&quot;).Enable = True
+ End If
+ End WIth
+End Sub
+
+ Rem ############
+Sub OnLstBox_C_Change(oEv)
+
+ oDlgEstilos = oEv.Source.Context
+ With oDlgEstilos
+ If .getControl(&quot;Lst_Eliminar_C&quot;).SelectedItem &lt;= -1 Then&apos;0
+ .getControl(&quot;Btn_Eliminar_C&quot;).Enable = False
+ Else
+ .getControl(&quot;Btn_Eliminar_C&quot;).Enable = True
+ End If
+ End With
+End Sub
+
+ Rem ############
+Sub OnBtEliminar_P(oEv)
+
+ Call L10n.Trad_Estilos
+ Dim oCtrl As Object, selPos As Integer, Eliminar As Variant
+ oDlgEstilos = oEv.Source.Context
+ oCtrl = oDlgEstilos.getControl(&quot;Lst_Eliminar_P&quot;)
+ selPos = oCtrl.getSelectedItemPos
+
+ With oDlgEstilos.getModel
+ If oCtrl.getSelectedItem = E_Txt(8) Then
+ .getByName(&quot;Btn_Eliminar_P&quot;).enableVisible = False
+ Exit Sub
+ Else
+ Beep: Eliminar = MsgBox (E_txt(9) &amp; oCtrl.getSelectedItem &amp; E_Txt(11), 4+48+256, E_Txt(12) )
+ if Eliminar = 6 Then
+ Call EliminarEstilo (&quot;P&quot;,oCtrl.getSelectedItem,SelPos)
+ elseif Eliminar = 0 Or Eliminar = 7 Then
+ oCtrl.SelectItemPos(SelPos,False)
+ end If
+ End If
+
+ If octrl.ItemCount = 0 then
+ oCtrl.addItem(E_Txt(8),1) &apos;Item,Posición
+ .getByName(&quot;Lbl_InfoP&quot;).label = &quot;&quot;
+ .getByName(&quot;Btn_Eliminar_P&quot;).enableVisible = False
+ End If
+ End With
+
+End Sub
+
+ Rem ############
+Sub OnBtEliminar_C(oEv)
+&apos; Call L10n.Trad_Estilos
+
+ Dim oCtrl As Object, selPos As Integer, Eliminar As Variant
+
+ oDlgEstilos = oEv.Source.Context
+ oCtrl = oDlgEstilos.getControl(&quot;Lst_Eliminar_C&quot;)
+ SelPos = oCtrl.getSelectedItemPos()
+
+ With oDlgEstilos.getModel
+ If oCtrl.getSelectedItem = E_Txt(8) Then
+ .getByName(&quot;Btn_Eliminar_C&quot;).enableVisible = False
+ Exit Sub
+ Else
+ Beep
+ Eliminar = MsgBox(E_txt(10) &amp; oCtrl.getSelectedItem &amp; E_Txt(11),4+48+256, E_Txt(13))
+ if Eliminar &lt;&gt; 0 and Eliminar = 6 Then
+ Call EliminarEstilo (&quot;C&quot;,oCtrl.getSelectedItem,SelPos)
+ elseIf Eliminar = 0 Or Eliminar = 7 Then
+ oCtrl.SelectItemPos(SelPos,False) &apos;Limpio selección
+ end If
+ End If
+
+ If octrl.ItemCount = 0 then
+ oCtrl.addItem(E_Txt(8),1)
+ .getByName(&quot;Lbl_InfoC&quot;).label = &quot;&quot;
+ .getByName(&quot;Btn_Eliminar_C&quot;).enableVisible = False
+ End If
+ End With
+End Sub
+
+ Rem ############
+Sub EliminarEstilo(Familia As String, ItemName As String, ItemPos As Integer)
+
+ Dim Listbox As String, Enumera As String
+ If Familia = &quot;P&quot; Then
+ Familia = &quot;ParagraphStyles&quot;
+ Listbox = &quot;Lst_Eliminar_P&quot;
+ ElseIf Familia = &quot;C&quot; Then
+ Familia = &quot;CharacterStyles&quot;
+ Listbox = &quot;Lst_Eliminar_C&quot;
+ End If
+
+ If ThisComponent.StyleFamilies.getByName(Familia).HasByName(ItemName) Then
+ ThisComponent.StyleFamilies.getByName(Familia).removeByName(ItemName)
+ End If
+ Rem Resetea controles
+ oDlgEstilos.getControl(Listbox).RemoveItems(ItemPos,1)&apos;(posición y numero de elementos)
+ oDlgEstilos.getControl(&quot;Btn_Eliminar_P&quot;).Enable = False
+ oDlgEstilos.getControl(&quot;Btn_Eliminar_C&quot;).Enable = False
+End Sub
+
+ Rem ############
+
+Function F_RestaMatrices(Grande, Chica) As Variant
+ Rem Elimina los elementos contenidos en la matriz Chica
+ Rem de la matriz Grande (si existen)
+ Rem ======================================================
+ Dim i As Integer, Resultado() As Variant, n As Integer
+ For i = 0 To uBound(Chica)
+ If FieldInArray(Grande(), ubound(Grande), Chica(i)) = False Then
+ if ubound(Resultado) = -1 then
+ redim Resultado(0)
+ Resultado(0) = Chica(i)
+ else
+ n = ubound(Resultado) +1
+ redim Preserve Resultado(n)
+ Resultado(n) = Chica(i)
+ end If
+ End if
+ Next
+ F_RestaMatrices = Resultado
+End Function
+
+ Rem ############
+Function F_MatrizCuadroTexto(Matriz As Variant) As String
+ Rem Convierte una matriz en texto con saltos de linea
+ Rem para mostrar su contenido en Msgbox o cuadros de texto
+ Rem ======================================================
+ Dim i As Integer, s As String
+ For i = 0 To UBound(matriz)
+ s = s &amp; Chr(9) &amp; Matriz(i) &amp; CHR$(13) &apos;matriz(1)
+ Next
+ F_MatrizCuadroTexto = s
+End Function
+
+ Rem ############
+Sub F_Comentar_Parrafos(Matriz as Variant)
+ Rem Recorre el documento buscando estilos de párrafo ajenos
+ Rem y agrega comentarios a los aplicados al documento
+ Rem desde un listado (Matriz) ayudandose de las macros
+ Rem ImplParaStyleChek e InsertAnnotation
+ Rem ======================================================
+ Dim oParEnum
+
+ContadorComentarios = 0
+
+ REM 1 comprobar los párrafos del cuerpo de texto
+ oParEnum = Thiscomponent.Text.createEnumeration()
+ ImplParaStyleCheck(Matriz, oParEnum)
+ Dim oFrameEnum, oFrame
+ REM 2 comprobar los párrafos de los marcos
+ oFrameEnum = ThisComponent.TextFrames.createEnumeration()
+ Do While oFrameEnum.hasMoreElements()
+ oFrame = oFrameEnum.nextElement()
+ oParEnum = oFrame.Text.createEnumeration()
+ ImplParaStyleCheck(Matriz, oParEnum)
+ Loop
+ REM 3 comprobar los párrafos en las tablas
+ Dim oTables as Object, oTable as Object, oRows as Object, oColumns as Object
+ Dim nRow as integer, ncol as Integer, oCell as Object, k as Integer
+ oTables = ThisComponent.TextTables
+ For k=0 To oTables.Count - 1
+ oTable = oTables.getByIndex(k)
+ oRows = oTable.getRows()
+ oColumns = oTable.getColumns()
+ For nRow=0 To oRows.Count - 1
+ For nCol=0 To oColumns.Count - 1
+ oCell = oTable.getCellByPosition(nCol, nRow)
+ oParEnum = oCell.Text.createEnumeration()
+ ImplParaStyleCheck(Matriz, oParEnum)
+ Next
+ Next
+ Next
+ If ContadorComentarios &lt;&gt; 0 then
+ MsgBox (E_Txt(14) &amp; Chr(13) &amp; ContadorComentarios &amp; E_Txt(15) &amp; Chr(13) &amp; E_Txt(16),0+64+0, Extension)
+ End If
+
+End Sub
+
+ Rem ############
+Sub ImplParaStyleCheck(Matriz as Object, oParEnum as Object)
+ Rem Ayuda para la macro ComentarioParrafo
+ Rem ======================================================
+ Dim oPar as Object, oCursor As Object
+ Dim bFound As Boolean, sStyle As String, i as Integer
+
+ Do While oParEnum.hasMoreElements()
+ oPar = oParEnum.nextElement()
+ If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
+ sStyle = oPar.ParaStyleName
+ bFound = False&apos; reset
+ For i = 0 To uBound(Matriz)
+ if sStyle = Matriz(i) Then
+ bFound = True
+ end If
+ Next
+ if (bFound) = True Then
+ oCursor = oPar.getText().createTextCursorByRange(oPar)
+ oCursor.gotoStartOfParagraph(False)
+ Call Comunes.InsertAnnotation (oPar, oCursor, sStyle &amp; Chr(13) &amp; E_Txt(17) )
+ ContadorComentarios= ContadorComentarios +1
+ end If
+ End If
+ Loop
+End Sub
+
+ REM =================Fin Estilos===========================================================
+
+ Rem ############ No usadas
+
+Sub Elimina_Estilos(Matriz as Variant, Familia as String)
+ Rem Elimina los estilos No aplicados listado en matriz
+ Rem Argumentos: (Matriz, Familia[P = de párrafo / C = de carácter])
+ Rem ======================================================
+ Dim i as integer, oEstilos as Object, mensaje as string
+ If Familia = &quot;P&quot; then
+ oEstilos = ThisComponent.StyleFamilies.getByName(&quot;ParagraphStyles&quot;)
+ mensaje = &quot;Estilos ajenos de Parrafo (sin uso) eliminados&quot;
+ Elseif Familia = &quot;C&quot; then
+ oEstilos = ThisComponent.StyleFamilies.getByName(&quot;CharacterStyles&quot;)
+ mensaje = &quot;Estilos ajenos de Caracter (sin uso) eliminados&quot;
+ End if
+ For i = 0 to Ubound(Matriz) &apos;antes 0 to ubound
+ If oEstilos.hasByName(Matriz(i)) Then
+ oEstilos.removeByName(Matriz(i))
+ Else
+ Msgbox (&quot;El estilo &quot; &amp; Matriz(i) &amp; &quot; No existe o no se ha podido eliminar&quot; &amp;_
+ Chr(13) &amp; &quot;inténtalo Manualmente desde la Barra Lateral&quot;,0+64+0, Extension)
+ End If
+ Next
+ Msgbox (mensaje,0,64,0, Extension)
+End Sub
+</script:module> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/Formatos.xba b/userguides/sanitycheck/SanityCheck/Formatos.xba
new file mode 100644
index 00000000..25b19a14
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/Formatos.xba
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Formatos" script:language="StarBasic" script:moduleType="normal">REM ***** BASIC Módulo Formatos *****
+
+ Option Explicit
+ Const Extension as string = &quot;Revisiones v 1.0.0&quot;
+
+ Dim PBcounter as Integer, oDlgFmt as Object
+ Public E_Num(20) as String
+
+
+Sub E_Numerados
+ E_Num(0) = &quot;Legend Numbered&quot;
+ E_Num(1) = &quot;Numbering 1&quot;
+ E_Num(2) = &quot;Numbering 1 Cont.&quot;
+ E_Num(3) = &quot;Numbering 1 End&quot;
+ E_Num(4) = &quot;Numbering 1 Start&quot;
+ E_Num(5) = &quot;Numbering 2&quot;
+ E_Num(6) = &quot;Numbering 2 Cont.&quot;
+ E_Num(7) = &quot;Numbering 2 End&quot;
+ E_Num(8) = &quot;Numbering 2 Start&quot;
+ E_Num(9) = &quot;Numbering 3&quot;
+ E_Num(10) = &quot;Numbering 3 Cont.&quot;
+ E_Num(11) = &quot;Numbering 3 End&quot;
+ E_Num(12) = &quot;Numbering 3 Start&quot;
+ E_Num(13) = &quot;Numbering 4&quot;
+ E_Num(14) = &quot;Numbering 4 Cont.&quot;
+ E_Num(15) = &quot;Numbering 4 End&quot;
+ E_Num(16) = &quot;Numbering 4 Start&quot;
+ E_Num(17) = &quot;Numbering 5&quot;
+ E_Num(18) = &quot;Numbering 5 Cont.&quot;
+ E_Num(19) = &quot;Numbering 5 End&quot;
+ E_Num(20) = &quot;Numbering 5 Start&quot;
+
+&apos;print ubound(Numerados)
+End sub
+
+ Rem ############
+Sub Dlg_Formatos
+&apos; Dim oDlgRenombrar
+ Call L10n.Trad_Formatos
+&apos; If Thiscomponent.HasLocation = false then : Msgbox (Ren_Txt(16),0+48+0,Extension) : Exit Sub : End If
+ DialogLibraries.loadLibrary(&quot;SanityCheck&quot;)
+ oDlgFmt = CreateUnoDialog(DialogLibraries.getByName(&quot;SanityCheck&quot;).getByName(&quot;DlgFormatos&quot;))
+ &apos; If Not IsMissing(paso) then: oDlgAsist.Model.Step(paso): else: oDlgAsist.Model.Step(1): end if
+ With oDlgFmt.getModel
+ .Step = 1
+ .Title = F_Txt(0)&apos; N diálogo
+ .getbyname(&quot;Lbl_Info&quot;).Label = F_Txt(1)
+ .getbyName(&quot;Ch_Text&quot;).Label = F_Txt(2)
+ .getbyName(&quot;Ch_Par&quot;).Label = F_Txt(3)
+ .getbyName(&quot;Ch_Num&quot;).Label = F_Txt(4)
+ .getbyname(&quot;Btn_Limpiar&quot;).Label = F_Txt(5)
+ .getbyname(&quot;Btn_Salir&quot;).Label = F_Txt(6)
+ .getbyname(&quot;Btn_Volver&quot;).Label = F_Txt(7)
+ &apos;.getbyname(&quot;Tx_Registro&quot;).Text = F_Txt(8)
+ End With
+
+ oDlgFmt.execute
+Dim SumaChs
+
+End Sub
+
+ Rem ############
+Sub onBtn_Salir(oEv)
+ oEv.Source.Context.EndExecute
+End Sub
+
+ Rem ############
+Sub OnBtn_Volver(oEv)
+ oEv.Source.Context.getModel.Step = 1
+End Sub
+
+ Rem ############
+Sub OnBtn_Limpiar(oEv)
+
+oDlgFmt = oEv.Source.Context
+
+ Dim Txt as Integer , Par as Integer , Num as Integer , Suma as Integer, s as string
+ Suma = 0 : s = &quot;&quot;
+ With oDlgFmt.Model
+ Suma = 0
+&apos; s = .getbyname(&quot;Tx_Registro&quot;).Text
+ Txt = .getbyname(&quot;Ch_Text&quot;).State
+ Par = .getbyname(&quot;Ch_Par&quot;).State
+ Num = .getbyname(&quot;Ch_Num&quot;).State
+ Suma = Txt + Par + Num
+ If suma = 0 then: Msgbox (F_Txt(15),, Extension): Exit Sub : End If
+ .Step = 2
+ oDlgFmt.getControl(&quot;Btn_Volver&quot;).Enable = False
+ oDlgFmt.getControl(&quot;Btn_Salir&quot;).Enable = False
+ If txt = 1 then
+ .getbyname(&quot;Tx_Registro&quot;).Text = F_Txt(13)
+ s = Formatos.LimpiaTexto &amp; Chr(13)
+ .getbyname(&quot;Tx_Registro&quot;).Text = s
+ End If
+ If Par = 1 then
+ .getbyname(&quot;Tx_Registro&quot;).Text = F_Txt(13)
+ s = s &amp; Formatos.LimpiaParrafos &amp; Chr(13)
+ .getbyname(&quot;Tx_Registro&quot;).Text = s
+ End If
+ If Num = 1 then
+ .getbyname(&quot;Tx_Registro&quot;).Text = F_Txt(13)
+ s = s &amp; Formatos.LimpiaNumerados &amp; Chr(13)
+ .getbyname(&quot;Tx_Registro&quot;).Text = s
+ End If
+ .getbyname(&quot;Tx_Registro&quot;).Text = s
+ .getbyname(&quot;Ch_Text&quot;).State = 0
+ .getbyname(&quot;Ch_Par&quot;).State = 0
+ .getbyname(&quot;Ch_Num&quot;).State = 0
+ oDlgFmt.getControl(&quot;Btn_Volver&quot;).Enable= True
+ oDlgFmt.getControl(&quot;Btn_Salir&quot;).Enable = True
+&apos; oEv.Source.Context.getModel.Step = 2
+ End With
+End Sub
+
+ Rem ############
+Sub OnCasillaFormatos(oEv)
+
+ oDlgFmt = oEv.Source.Context
+ Dim Txt as Integer , Par as Integer , Num as Integer , Suma as Integer, s as string
+ With oDlgFmt.getModel
+ Txt = .getbyname(&quot;Ch_Text&quot;).State
+ Par = .getbyname(&quot;Ch_Par&quot;).State
+ Num = .getbyname(&quot;Ch_Num&quot;).State
+ Suma = Txt + Par + Num
+ If suma &lt;&gt; 0 then
+ .getbyname(&quot;Btn_Limpiar&quot;).State = 1
+ else
+ .getbyname(&quot;Btn_Limpiar&quot;).State = 0
+ End If
+ End With
+End sub
+ Rem ############
+Function LimpiaTexto
+ Rem Limpia el formato Directo del texto (no de párrafos)
+ Rem En el cuerpo de texto, tablas, Marcos de texto y Marcos de texto de Dibujo
+ Rem ======================================================
+
+ Call L10n.Trad_Formatos
+REM Texto en general (incluidas tablas)
+ Dim oCursor as Object : oCursor = ThisComponent.Text.createTextCursor()
+ oCursor.gotoStart(True)
+ oCursor.gotoEnd(True)
+ oCursor.setAllPropertiesToDefault
+
+REM Texto en Marcos de texto (empleado también para leyendas)
+ Dim oFrameEnum as Object, oFrame as Object, oFCursor as object
+ oFrameEnum = ThisComponent.TextFrames.createEnumeration()
+ Do While oFrameEnum.hasMoreElements()
+ oFrame = oFrameEnum.nextElement()
+ oFcursor = oFrame.text.createTextCursor()
+ oFCursor.gotostart(false)
+ oFCursor.gotoEnd(True)
+ oFCursor.setAllPropertiesToDefault
+ Loop
+
+REM Texto en Cuadros de texto (DIBUJO) no usar el cursor o eso creo.
+ Dim oDpage as Object, oShape as Object, otexto as String,i as Integer
+ oDPage = thiscomponent.getdrawpages().getbyindex(0)
+ for i = 0 to oDPage.count -1
+ oShape = oDPage.getbyindex(i)
+ If oShape.supportsService(&quot;com.sun.star.drawing.TextShape&quot;) then
+ otexto = oShape.string
+ oShape.string = otexto
+ end If
+ next
+&apos; Msgbox (F_Txt(9),0+64+0, F_Txt(0))
+ LimpiaTexto = F_Txt(9)
+End Function
+
+ Rem ############
+Function LimpiaParrafos
+ Rem Limpia el formato directo de párrafos (sangrías, listas etc.)
+ Rem En todos los párrafos excepto los Numerados
+ Rem ======================================================
+
+ Call L10n.Trad_Formatos
+ Call Formatos.E_Numerados
+
+ oProgressBar = ThisComponent.CurrentController.getStatusIndicator()
+ oProgressBar.start( F_Txt(13), ThisComponent.ParagraphCount)
+ oProgressBar.setValue( 1 ) : Pbcounter = 0
+
+ Dim oParEnum as Object, oPar as Object
+ oParEnum = Thiscomponent.Text.createEnumeration()
+ Dim oCursor as Object : oCursor = ThisComponent.Text.createTextCursor
+ oCursor.gotoStart(false)
+ Do While oParEnum.hasMoreElements()
+ oPar = oParEnum.nextElement()
+ wait 2 : PbCounter = PBcounter + 1 : oProgressBar.setValue(PbCounter)
+
+ If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
+ oCursor.gotoRange(oPar.Anchor,False)
+ oCursor.gotoendOfparagraph(True)
+ if F_BuscarEnMatriz(E_Num, oPar.Parastylename) = False Then
+ oPar.NumberingLevel = 0 &apos;no sé si es necesario
+ oPar.NumberingStyleName= &quot;&quot;
+ oCursor.setAllPropertiesToDefault REM Resetea TODOS los Párrafos
+ End If
+ End If
+ Loop
+ oProgressBar.end
+&apos; Msgbox (F_Txt(10),0+64+0,F_Txt(0))
+ LimpiaParrafos = F_Txt(10)
+End Function
+
+ Rem ############
+Function LimpiaNumerados
+ Rem Limpia el formato directo de párrafos Numerados
+ Rem e intenta reiniciar la numeración cuando puede
+ Rem inserta un comentario en párrafos con numeración dudosa
+ Rem ======================================================
+
+ Call L10n.Trad_Formatos
+ Dim E_P_Num as Variant, E_P_Ant as Variant, E_Validos as Variant
+ E_P_Num = Array(&quot;Numbering 1&quot;,&quot;Numbering 2&quot;,&quot;Numbering 3&quot;,&quot;LegendNumbered&quot;)
+ E_P_Ant = Array(&quot;Text Body List Intro&quot;,&quot;Numbering 1&quot;,&quot;Numbering 2&quot;,&quot;Body Text&quot;)
+ E_Validos = Array(&quot;Numbering 1&quot;,&quot;Numbering 2&quot;,&quot;Numbering 3&quot;,&quot;Definition Term&quot;,&quot;Figure&quot;,&quot;Text Note&quot;)
+
+ Dim oProgressbar as Object
+ oProgressBar = ThisComponent.CurrentController.getStatusIndicator()
+ oProgressBar.start( F_Txt(13), ThisComponent.ParagraphCount )
+ oProgressBar.setValue(1) : pBCounter = 0
+ Dim contarMarcados as Integer : contarMarcados= 0
+ Dim oParEnum as Object, oPar as Object
+ Dim bFound As Boolean, P_Numerado As String ,P_Anterior as String
+ Dim cursor_Num as Object, cursor_Ant as Object, i as Integer
+ oParEnum = Thiscomponent.Text.createEnumeration()
+ Do While oParEnum.hasMoreElements()
+ oPar = oParEnum.nextElement()
+ Wait 2 : pbCounter = pBcounter + 1 : oProgressBar.setValue(pBCounter)
+ If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
+ P_Numerado = oPar.ParaStyleName
+ bFound = False&apos; reset variable
+ For i = 0 To uBound(E_P_Num)
+ If P_Numerado = E_P_Num(i) Then
+ bFound = True
+ P_Anterior = E_P_Ant(i)
+ End If
+ Next
+ if (bFound) = True Then
+ cursor_Num = oPar.getText().createTextCursorByRange(oPar)
+ cursor_Num.gotoStartOfParagraph(False)
+ oPar.NumberingStyleName= &quot;&quot;
+ oPar.NumberingLevel = 0
+ cursor_Num.setAllPropertiesToDefault
+
+ cursor_Ant = oPar.getText().createTextCursorByRange(oPar)
+ cursor_Ant.gotoStartOfParagraph(False)
+ cursor_Ant.gotoPreviousParagraph(false)
+ REM Reglas de Reinicio
+&apos; mSGBOX &quot;AQUI UN BUCLE QUE REINICIE DESPUÉS DE CIERTOS ESTILOS???.&quot;
+ if cursor_Ant.ParaStyleName = P_Anterior then
+ cursor_Num.NumberingStartValue = 1
+ elseif cursor_Ant.ParaStyleName &lt;&gt; P_Anterior Then
+ if F_BuscarEnMatriz(E_Validos,cursor_Ant.ParaStyleName) = False Then
+ Dim oEstilos: oEstilos = ThisComponent.StyleFamilies.getByName(&quot;ParagraphStyles&quot;)
+ Dim oEstilo: oEstilo = oEstilos.getByName(cursor_ant.ParaStyleName).DisplayName
+ InsertAnnotation (oPar, cursor_Num, P_Numerado &amp; Chr(13) &amp; F_Txt(14) &amp; oEstilo)
+ contarMarcados = contarMarcados +1
+ end if
+ End If
+ End If
+ End If
+ Loop
+ oProgressbar.end
+&apos; Msgbox (F_Txt(11) &amp; Chr(13) &amp; contarMarcados &amp; F_Txt(12) ,0+64+0, F_Txt(0))
+ LimpiaNumerados = F_txt(11) &amp; Chr(13) &amp; Chr(13) &amp; contarMarcados &amp; F_Txt(12)
+End Function
+
+ Rem ############
+Function F_BuscarEnMatriz(Matriz(), Texto as String) as Boolean
+ Rem busca texto en la matriz,
+ Rem Devuelve True o 1 si encuentra el texto en la matriz
+ Rem Devuelve False o O si no lo encunentra
+ Rem ======================================================
+
+Dim i as Integer
+ For i = Lbound(Matriz) To Ubound(Matriz())
+&apos;Msgbox (Matriz(i))
+ If Instr(join(Matriz), Texto) &lt;&gt; 0 Then
+ F_BuscarEnMatriz = True
+&apos;Msgbox &quot;Encontrado = &quot; &amp; Matriz(i) &amp; &quot;-- Indice = &quot; &amp; i
+ Exit Function
+ End If
+ Next i
+ F_BuscarEnMatriz = False
+End Function
+
+ Rem ############
+Function F_CampoEnMatriz(Matriz(), IndiceSup as integer, Campo as String) As Boolean
+ Rem variante de BuscarEnMatriz pero indicando el índice mayor en el que buscar
+ Rem útil si se quiere saber, por ejemplo, si está entre los 10 primeros.
+ Rem Devuelve True o 1 si lo encuentra en la matriz
+ Rem Devuelve False o O si no lo encunentra
+ Rem ======================================================
+ Dim i as integer
+ For i = Lbound(Matriz()) to IndiceSup
+ If UCase(Matriz(i)) = UCase(Campo) Then
+ F_CampoEnMatiz = True
+ Exit Function
+ End if
+ Next
+ F_CampoEnMatriz = False
+End Function
+
+ Rem ==================== Fin Formatos ==================================
+</script:module> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/Imagenes.xba b/userguides/sanitycheck/SanityCheck/Imagenes.xba
new file mode 100644
index 00000000..cc48cb0b
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/Imagenes.xba
@@ -0,0 +1,550 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Imagenes" script:language="StarBasic" script:moduleType="normal">REM ***** BASIC Módulo Imagenes *****
+ Option Explicit
+
+ Const Extension as string = &quot;Revisiones v 1.0.0&quot;
+ Global oImgs as Object
+ Global oImg as Object
+ Global vCursor as Object &apos; CursorVisible
+ Dim oDlgImgs as Object
+ Global Dlg_Activo as Boolean &apos;dlg No modal evita ejecuciones múltiples
+ Global Dlg_Mostrado as Boolean &apos; dlg No modal para cerrar el diálogo
+ Global Indice_Img as Integer
+ Dim Ultima_Img as integer
+ Public oProgressBar
+ Dim PBcounter as Integer
+
+ Rem ############
+ Sub DlgImagenes
+Msgbox &quot;Comprobar renombrado de imágenes&quot;
+ Call L10n.Trad_Imagenes
+ If Thiscomponent.HasLocation = false then : Msgbox (I_Txt(34),0+48+0, Extension) : Exit Sub : End If
+ If Imagenes.F_Prueba_Sel = 0 Then : Exit Sub : End If
+ oImgs = ThisComponent.GraphicObjects()
+ Ultima_Img = oImgs.getCount -1
+ If Ultima_Img &lt; 0 Then : Msgbox (I_Txt(39), 0+48+0,Extension) : Exit Sub : End If
+ Indice_Img = 0
+ oImg = oImgs.getbyIndex(Indice_Img)
+ vCursor = Thiscomponent.CurrentController.getViewCursor()
+ vCursor.gotoStart(False)
+ If Dlg_Activo = False then
+ Dlg_Activo = True
+ Dlg_Mostrado = True
+ DialogLibraries.loadLibrary(&quot;SanityCheck&quot;)
+ oDlgImgs = CreateUnoDialog(DialogLibraries.getByName(&quot;SanityCheck&quot;).getByName(&quot;DlgImagenes&quot;))
+ With oDlgImgs.Model()
+ .TiTle = I_Txt(0): .PositionX = 530: .PositionY = 60: .Step = 1
+ .GetByName(&quot;Btn_Img_Name&quot;).Label = I_Txt(1)
+ .GetByName(&quot;Btn_Ancla&quot;).Label = I_Txt(2)
+ .GetByName(&quot;Btn_Desc_Marco&quot;).Label = I_Txt(1)
+ .GetByName(&quot;Btn_Editar&quot;).Label = I_Txt(3)
+ .GetByName(&quot;Btn_De_Marco&quot;).Label = I_Txt(4)
+ .GetByName(&quot;Btn_Recorte&quot;).Label = I_Txt(5)
+ .GetByName(&quot;Btn_Anterior&quot;).Label = I_Txt(6)
+ .GetByName(&quot;Btn_Siguiente&quot;).Label = I_Txt(7)
+ .GetByName(&quot;Btn_Salir&quot;).Label = I_Txt(8)
+ .GetByName(&quot;Fr_Marco&quot;).Label = I_Txt(10)
+ .GetByName(&quot;Fr_Desc&quot;).Label = I_Txt(11)
+ .GetByName(&quot;Lbl_Anclaje&quot;).Label = I_Txt(12)
+ .GetByName(&quot;Tx_Ayuda&quot;).Text = I_Txt(9)
+ End With
+ Call Imagenes.Cargar_Parametros
+ Do While Dlg_Mostrado = True
+ Wait 200
+ oDlgImgs.SetVisible(True)
+ Loop
+ oDlgImgs.dispose
+ Dlg_Activo= False
+ End If
+end sub
+
+ Rem ############
+Sub Cargar_Parametros
+
+&apos; Call L10n.Trad_Imagenes
+ If not Dlg_Mostrado then : Msgbox I_Txt(33),0+48+0, Extension : exit sub: end if
+ If Imagenes.F_Prueba_Sel = 0 Then : Exit Sub : End If
+ If Ultima_Img &lt; 0 Then : Dlg_Mostrado = False : Msgbox (I_Txt(35),0+48+0, Extension) : Exit Sub : End If &apos;si se borran todas las imágenes
+ Ultima_Img = oImgs.getCount -1
+ oImg = oImgs.getbyIndex(Indice_Img)
+ vCursor.gotoRange(oImg.Anchor,False)
+
+ WITH oDlgImgs.getModel
+ Dim Img_ancla As String , Recorte as String
+ Select case oImg.Anchortype
+ Case 0 : Img_Ancla = I_Txt(13)
+ Case 1 : Img_Ancla = I_Txt(14)
+ Case 2 : Img_Ancla = I_Txt(15)
+ Case 3 : Img_Ancla = I_Txt(16)
+ Case 4 : Img_Ancla = I_Txt(17)
+ End select
+ Dim secuencia
+ If not isempty(oImg.Anchor.TextFrame) Then
+ secuencia = split(oImg.Anchor.getText.string,&quot;: &quot;, 2)(0)
+ Else
+ secuencia = I_Txt(26)
+ End if
+ .getByName(&quot;Fr_Img&quot;).label = I_Txt(18) &amp; Indice_Img +1 &amp; &quot; / &quot; &amp; Ultima_Img + 1 &amp; &quot; (&quot; &amp; secuencia &amp; &quot;)&quot;&apos;oImg.Anchor.gettext().String
+ .getByName(&quot;Tx_Nombre_Img&quot;).text = oImg.Name
+ .getByName(&quot;Tx_Desc_Img&quot;).TextColor = RGB(0,0,0) &apos; RESET
+ .getByName(&quot;Tx_Desc_Marco&quot;).TextColor = RGB(0,0,0) &apos; RESET
+&apos; .getByName(&quot;Btn_Leyendas&quot;).EnableVisible = False &apos; RESET
+ If Indice_Img = 0 then
+ .getByName(&quot;Btn_Anterior&quot;).EnableVisible = False
+ .getByName(&quot;Btn_Siguiente&quot;).EnableVisible = True
+ with .getByName(&quot;Lbl_Ultima&quot;)
+ .EnableVisible = True : .label = I_Txt(19) : .PositionX = 70 : .PositionY = 157
+ End with
+ ElseIf Indice_Img = Ultima_Img then
+ .getByName(&quot;Btn_Siguiente&quot;).EnableVisible = False
+ .getByName(&quot;Btn_Anterior&quot;).EnableVisible = True
+ .getByName(&quot;Btn_Salir&quot;).state = 1
+ with .getByName(&quot;Lbl_Ultima&quot;)
+ .EnableVisible = True : .label = I_Txt(21) : .PositionX = 128 : .PositionY = 157
+ end With
+ Else
+ .getByName(&quot;Lbl_Ultima&quot;).EnableVisible = False
+ .getByName(&quot;Btn_Siguiente&quot;).EnableVisible = True
+ .getByName(&quot;Btn_Anterior&quot;).EnableVisible = True
+ .getByName(&quot;Btn_Salir&quot;).state = 0
+ End If
+ If oImg.AnchorType &lt;&gt; 1 then
+ .getByName(&quot;Lbl_Ancla&quot;).TextColor = RGB(200,0,0)
+ .getByName(&quot;Lbl_Ancla&quot;).label = Img_Ancla
+ .getByName(&quot;Btn_Ancla&quot;).Enabled = True
+ Else
+ .getByName(&quot;Lbl_Ancla&quot;).TextColor = RGB(0,120,0)
+ .getByName(&quot;Lbl_Ancla&quot;).label = Img_Ancla
+ .getByName(&quot;Btn_Ancla&quot;).Enabled = False
+ End If
+ Dim DescMarco As string
+ If not isempty(oImg.Anchor.TextFrame()) then
+ DescMarco = oImg.Anchor.TextFrame().Description
+ Else
+ DescMarco = &quot;&quot;
+ End if
+ Dim oRec : oRec = oImg.GraphicCrop()
+ If oRec.Right + oRec.Left + oRec.Top + oRec.Bottom &lt;&gt; 0 then
+ .getByName(&quot;Btn_Recorte&quot;).EnableVisible = True
+ .getByName(&quot;Lbl_Recorte&quot;).TextColor = RGB(200,0,0)
+ .getByName(&quot;Lbl_Recorte&quot;).label = I_Txt(22)
+ Else
+ .getByName(&quot;Btn_Recorte&quot;).EnableVisible = False
+ .getByName(&quot;Lbl_Recorte&quot;).TextColor = RGB(0,120,0)
+ .getByName(&quot;Lbl_Recorte&quot;).label = I_Txt(23)
+ End if
+ Dim Aspecto as String, Escala as String
+ Aspecto = Format(oImg.ActualSize.Width / oImg.ActualSize.Height, &quot;###00.0&quot;)
+ Escala = Format(oImg.Width / oImg.Height, &quot;###00.0&quot;)
+ If Aspecto &lt;&gt; Escala then
+ .getbyName(&quot;Lbl_Escala&quot;).label= I_Txt(24)
+ .getByName(&quot;Lbl_Escala&quot;).TextColor = RGB(200,0,0)
+ Else
+ .getbyName(&quot;Lbl_Escala&quot;).label = I_Txt(25)
+ .getByName(&quot;Lbl_Escala&quot;).TextColor = RGB(0,120,0)
+ End if
+ If isEmpty(oImg.Anchor.TextFrame()) then
+ .getByName(&quot;Tx_Desc_Marco&quot;).Enabled = False
+ .getByName(&quot;Tx_Desc_Marco&quot;).Text = I_Txt(26)
+ .getByName(&quot;Tx_Desc_Img&quot;).Text = oImg.Description
+ .getByName(&quot;Btn_Desc_Marco&quot;).Enabled = False
+ .getByName(&quot;Btn_De_Marco&quot;).Enabled =False
+ ElseIf Not isEmpty(oImg.Anchor.TextFrame()) then
+ .getByName(&quot;Tx_Desc_Marco&quot;).Enabled = True
+ .getByName(&quot;Btn_Desc_Marco&quot;).Enabled = True
+ .getByName(&quot;Btn_De_Marco&quot;).Enabled = True
+ .getByName(&quot;Tx_Desc_Marco&quot;).Text = &quot;&quot; &apos; RESET
+ .getByName(&quot;Tx_Desc_Img&quot;).Text = oImg.Description
+ .getByName(&quot;Tx_Desc_Marco&quot;).Text = oImg.Anchor.TextFrame.Description
+ End If
+ END WITH
+End Sub
+
+ Rem ############
+sub OnBtn_Anterior(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ If oImgs.getCount -1 &lt;&gt; Ultima_Img Then
+ Ultima_Img = oImgs.getCount -1
+ Msgbox (I_Txt(27), 0+64+0, Extension)
+ Indice_Img = 0
+ ElseIf Not Indice_Img &lt; 0 then
+ Indice_Img = Indice_Img -1
+ End If
+ Call Imagenes.Cargar_Parametros
+end sub
+
+ Rem ############
+Sub OnBtn_Siguiente(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ If oImgs.getCount -1 &lt;&gt; Ultima_Img Then
+ Ultima_Img = oImgs.getCount -1
+ Indice_Img = 0
+ Msgbox (I_Txt(27), 0+64+0, Extension)
+ ElseIf Indice_Img &lt; Ultima_Img Then
+ Indice_Img = Indice_Img + 1
+ End if
+ Call Imagenes.Cargar_Parametros
+End Sub
+
+ Rem ############
+Sub OnBtn_Salir
+ Dlg_Mostrado = False
+ Dlg_Activo = False
+ Msgbox (I_Txt(28), 0+64+0, Extension)
+End Sub
+
+ Rem ############
+Sub OnBtn_Ayuda(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ With oDlgImgs.getModel
+ If .Step = 1 then
+ .Step = 2
+ .getByName(&quot;Btn_Ayuda&quot;).Label = &quot;↫&quot;
+ Else
+ .Step = 1
+ .getByName(&quot;Btn_Ayuda&quot;).Label = &quot;?&quot;
+ End If
+ End With
+End Sub
+
+ Rem ############
+Sub OnTx_Nombre_Img(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ oDlgImgs.getModel.getByName(&quot;Tx_Nombre_Img&quot;).TextColor = RGB(120,0,0)
+End Sub
+
+ Rem ############
+Sub OnBtn_Cambiar_Nombre_Img(oEv)
+
+On error goto ERRORES:
+ oDlgImgs = oEv.Source.Context
+ If oDlgImgs.getModel.getByName(&quot;Tx_Nombre_Img&quot;).Text = &quot;&quot; then
+ Msgbox (I_Txt(30), 0+48+0, &quot;Error&quot;)
+ oDlgImgs.getModel.getByName(&quot;Tx_Nombre_Img&quot;).Text = oImg.name
+ Exit Sub
+ Else
+ oImg.Name = oDlgImgs.getModel.getByName(&quot;Tx_Nombre_Img&quot;).Text
+ oDlgImgs.getModel.getByName(&quot;Tx_Nombre_Img&quot;).TextColor = RGB(0,120,0)
+ End If
+ERRORES:
+ If Err = 1 Then
+ Msgbox (Chr(13) &amp; I_Txt(31), 0+48+0, &quot;Error&quot;)
+ End If
+End Sub
+
+ Rem ############
+Sub OnBtn_Ancla(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ oImg.AnchorType = 1
+ With oDlg.getModel
+ .getByName(&quot;Lbl_Ancla&quot;).label = I_Txt(14)
+ .getByName(&quot;Lbl_Ancla&quot;).TextColor = RGB(0,120,0)
+ End With
+End Sub
+
+ Rem ############
+Sub OnTx_Desc_Marco(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ oDlgImgs.getModel.getByName(&quot;Tx_Desc_Marco&quot;).TextColor = RGB(120,0,0)
+End Sub
+
+ Rem ############
+Sub OnBtn_Cambiar_Desc_Marco(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ oImg.Anchor.TextFrame.Description = oDlgImgs.getModel.getByName(&quot;Tx_Desc_Marco&quot;).Text
+ oDlgImgs.getModel.getByName(&quot;Tx_Desc_Marco&quot;).TextColor = RGB(0,120,0)
+End Sub
+
+ Rem ############
+Sub OnTx_Desc_Img(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ oDlgImgs.getModel.getByName(&quot;Tx_Desc_Img&quot;).TextColor = RGB(120,0,0)
+End Sub
+
+ Rem ############
+Sub OnBtn_Cambiar_Desc_Img(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ oImg.Description = oDlg.getModel.getByName(&quot;Tx_Desc_Img&quot;).Text
+ oDlgImgs.getModel.getByName(&quot;Tx_Desc_Img&quot;).TextColor = RGB(0,120,0)
+End Sub
+
+ Rem ############
+Sub OnBtn_Desde_Marco(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ oImg.Description = oImg.Anchor.TextFrame.Description
+ oDlgImgs.getModel.getByName(&quot;Tx_Desc_Img&quot;).Text = oImg.Description
+ oDlgImgs.getModel.getByName(&quot;Tx_Desc_Img&quot;).TextColor = RGB(0,120,0)
+End Sub
+
+ Rem ############
+Sub OnBtn_Editar_pulsado(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ Dim Miimagen : Miimagen = ThisComponent.GraphicObjects.getbyName(oimg.name)
+ ThisComponent.getCurrentController.select(Miimagen)
+End Sub
+
+ Rem ############
+Sub OnBtn_Editar_soltado(oEv)
+
+ oDlgImgs = oEv.Source.Context
+ Dim Document as Object, Dispatcher as Object
+ Document = ThisComponent.Currentcontroller.Frame
+ Dispatcher = CreateUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
+ Dispatcher.executeDispatch(document, &quot;.uno:ExternalEdit&quot;, &quot;&quot;, 0, Array())
+End Sub
+
+ Rem ############
+Function F_Ajuste_Imagenes_Marcos
+ Rem
+ Rem
+ Rem ======================================================
+
+ Call L10n.Trad_Imagenes
+
+ If Not Thiscomponent.HasLocation then : Msgbox (I_Txt(34),0+48+0,Extension ) : Exit Function : End If
+ REM 1º: Formato de imagen (Obligatorio antes de formato marcos)
+ Dim i as integer
+ Static s as String
+ oImgs = ThisComponent.GraphicObjects()
+ If oImgs.getCount = 0 Then : Msgbox (I_Txt(39), 0+48+0, Extension) : Exit Function : End If
+
+ oProgressBar = ThisComponent.CurrentController.getStatusIndicator()
+ oProgressBar.start( I_Txt(32), oImgs.Count * 2 )
+ oProgressBar.setValue( 1 )
+ Pbcounter = 0
+
+ FOR i = 0 to oImgs.Count-1
+
+ Wait 2
+ pbCounter = pBcounter + 1
+ oProgressBar.setValue(pBCounter)
+
+ oImg = oImgs.getByIndex(i)
+ With oImg
+ .AnchorType = 1
+ .VertOrient = 1
+ .VertOrientRelation = 0
+ .RelativeHeight = 0
+ .RelativeHeightRelation = 0
+ .RelativeWidth = 0
+ .RelativeWidthRelation = 0
+ .getAnchor.ParaStyleName = &quot;Figure&quot;
+ End With
+
+ If oImg.name = &quot; LibreOfficeLogo&quot; then
+ if ThisComponent.StyleFamilies.getByName(&quot;ParagraphStyles&quot;).hasbyName(&quot;New Chapter&quot;) then
+ With oImg
+ .getAnchor.ParaStyleName = &quot;New Chapter&quot;
+ .Description = &quot;LibreOffice Logo&quot;
+ .Title = &quot;LibreOffice Logo&quot;
+ If Comunes.F_LOVersion &lt;= 7.5 then : .Decorative = True : end if
+ End With
+ end If
+ End If
+
+ NEXT
+ s = I_Txt(40)
+ s= s &amp; F_Ajuste_Marcos &apos;Ajuste de marcos y luego Descripciones
+ Msgbox (s,0+64+0, I_Txt(41))
+ F_Ajuste_Imagenes_Marcos = s
+End Function
+
+ Rem ############
+Function F_Ajuste_Marcos
+
+ Dim s : Call L10n.Trad_Imagenes
+ If isEmpty(oProgressBar) then
+ oProgressBar = ThisComponent.CurrentController.getStatusIndicator()
+ oProgressBar.start( I_Txt(32), 1 )
+ oProgressBar.setValue( 1 )
+ Pbcounter = 0
+ End if
+ Dim oFrames as Object, oFrame as Object, oFCursor as Object, i as integer
+ REM Ajuste Marcos
+ oFrames = ThisComponent.TextFrames()
+ FOR i = 0 to oFrames.getcount -1
+ wait 2
+ pbCounter = pBCounter + 1
+ oProgressBar.setValue( pBCounter )
+ oFrame = oFrames.getByIndex(i)
+ With oFrame REM Formato Marco y Descripción
+ .getAnchor().ParaStyleName = &quot;Figure&quot; REM Estilo de párrafo del Marco
+ .AnchorType = 1
+ .SizeType = 0
+ .FrameIsAutomaticHeight = True
+ .VertOrient = 1
+ .IsSyncHeightToWidth = False
+ .IsSyncWidthToHeight = False
+ .RelativeHeight = 0
+ .RelativeHeightRelation = 0
+ .RelativeWidth = 0
+ .RelativeWidthRelation = 0
+ End With
+ NEXT
+ s= s &amp; Chr(13) &amp; I_Txt(42)
+ Rem Descripción Marcos
+ Dim oEnum as Object, oPar, oCursor as Object
+ FOR i = 0 to oFrames.getcount -1
+ pbCounter = pBcounter + 1
+ oFrame = oFrames.getByIndex(i)
+ oFCursor = oFrame.Text.createTextCursor() REM Cursor dentro del marco
+ oEnum = oFrame.Anchor.createEnumeration
+ oFCursor.gotoStart(False)
+ oFCursor.goRight(1, True) REM primer carácter (vací­o = Objeto)
+ Rem Marcos de solo texto -Revisión Leyenda y Descripción
+ IF oFCursor.string &lt;&gt; &quot;&quot; then
+ oFrame.Description = left(oframe.string,40) &amp; &quot;…&quot;
+ Rem comentario marco texto
+ oPar = oEnum.nextElement()
+ oCursor = oPar.getText().createTextCursorByRange(oPar)
+ oCursor.gotoStartOfParagraph(False)
+ Call InsertAnnotation(oPar, oCursor, I_Txt(45))
+ Rem MARCOS CON IMÁGENES - Ancho auto, Compruebo leyenda, Formateo para la descripción y avisos
+ ElSEIF oFCursor.string = &quot;&quot; then
+ oFrame.Width = 2000 &apos;anchura mí­nima
+ oFrame.WidthType = 0&apos;Automático = 0&apos;mínima 2
+ if inStr(oframe.string,&quot;: &quot;) &lt;&gt; 0 then
+ oFrame.Description = split(oframe.string,&quot;: &quot;, 2)(1)
+ else
+ oFCursor.gotoend(False)
+ oFCursor.gotoStartofParagraph(True)
+ oFrame.Description = oFcursor.getString
+ Rem comentario leyenda mal formada
+ oPar = oEnum.nextElement()
+ oCursor = oPar.getText().createTextCursorByRange(oPar)
+ oCursor.gotoEndOfParagraph(False)&apos; Antes start
+ Call InsertAnnotation(oPar, oCursor, I_Txt(46))
+ end if
+ Rem formato párrafo como Caption
+ oFCursor.gotoStart(False) REM inicio del marco
+ oFCursor.goRight(1, False) REM Mismo punto sin selec (asi no borra imagen)
+ if Not oFCursor.isEndOfParagraph then
+ oFCursor.String = Chr(13) REM Salto Parrafo y Formato Leyenda
+ end if
+ oFCursor.gotoNextParagraph(False)
+ oFCursor.ParaStyleName =&quot;Caption&quot;
+ END IF
+ NEXT
+ s = s &amp; Chr(13) &amp; I_Txt(43)
+ Rem Descripciones imágenes y comentarios recortes/escala
+ Dim oImgs as Object, oImg as Object
+ Dim oRec As Object, SinRecortes as Integer
+ Dim Aspecto as Variant, Escala as Variant
+ oImgs = ThisComponent.GraphicObjects()
+ For i = 0 to oImgs.getcount -1
+ pbCounter = pBcounter + 1
+ oImg = oImgs.getByIndex(i)
+ If Not isEmpty(oImg.anchor.TextFrame) then
+ oImg.Description = oImg.anchor.TextFrame.Description
+ oImg.Title = oImg.Description
+ End If
+ Rem Imagen recortada
+ oRec = oImg.GraphicCrop() : SinRecortes = oRec.Right + oRec.Left + oRec.Top + oRec.Bottom
+ oEnum = oImg.Anchor.createEnumeration
+ If SinRecortes &lt;&gt; 0 then&apos;Imagen recortada
+ oPar = oEnum.nextElement()
+ oCursor = oPar.getText().createTextCursorByRange(oPar)
+ oCursor.gotoEndOfParagraph(False) &apos; Antes start
+ Call InsertAnnotation(oPar, oCursor, I_Txt(47))
+ End if
+ Rem Imagen deformada
+ Aspecto = Format(oImg.ActualSize.Width / oImg.ActualSize.Height, &quot;###00.0&quot;)
+ Escala = Format(oImg.Width / oImg.Height, &quot;###00.0&quot;)
+ oEnum = oImg.Anchor.createEnumeration
+ If Aspecto &lt;&gt; Escala And SinRecortes = 0 Then
+ oPar = oEnum.nextElement()
+ oCursor = oPar.getText().createTextCursorByRange(oPar)
+ oCursor.gotoEndOfParagraph(False) &apos; antes start
+ Call InsertAnnotation(oPar, oCursor, I_Txt(48))
+ End if
+ Next
+ s = s &amp; Chr(13) &amp; I_Txt(44)
+ F_Ajuste_Marcos = s
+ Rem Descripción del logo
+ oImg = ThisComponent.GraphicObjects.getByIndex(0)
+ With oImg
+ .Name = &quot; LibreOffice Logo&quot; &apos;espacio la ordena en 1er lugar
+ .Description = &quot;LibreOffice Logo&quot;
+ .Title = &quot;LibreOffice Logo&quot;
+ If Comunes.F_LOVersion &lt;= 7.5 then : .Decorative = True : end if
+ If ThisComponent.StyleFamilies.getByName(&quot;ParagraphStyles&quot;).hasbyName(&quot;New Chapter&quot;) then
+ .getAnchor.ParaStyleName = &quot;New Chapter&quot;
+ End if
+ End With
+ oProgressbar.end
+ F_Ajuste_Marcos = s
+End Function
+
+ Rem ############
+Function F_Prueba_Sel()As Boolean &apos;Pasar prueba selección
+
+ Call L10n.Trad_Imagenes
+ Dim oSel : oSel= ThisComponent.getCurrentSelection
+ On error goto Errores
+ If not oSel.supportsService(&quot;com.sun.star.text.TextRanges&quot;) then
+ Msgbox (I_Txt(37), 0+0+64,Extension)
+ F_Prueba_Sel = 0
+ Exit Function
+ End If
+Errores:
+ if Err = 0 then
+ F_Prueba_Sel = 1
+ Exit Function
+ Elseif Err = 91 then
+ Msgbox (I_Txt(38), 0+64+0,&quot;Error&quot;)
+ Elseif Err &lt;&gt; 0 then
+ Msgbox (I_Txt(36) &amp; Err &amp; &quot; Linea n. &quot; &amp; Erl &amp; CHR(13) &amp; CHR(13) &amp; Error, 0+48+0, &quot;Error&quot;)
+ End if
+ F_Prueba_Sel = 0
+End Function
+
+ Rem ############
+Function F_AlternarLeyenda()
+
+ Call L10n.Trad_Imagenes
+ If ThisComponent.HasLocation = false then : Msgbox (I_Txt(34),0+48+0,Extension): Exit Function : End If
+ If Imagenes.F_Prueba_Sel = 0 Then Exit Function
+ If ThisComponent.TextFrames.Count = 0 Then : Msgbox (I_Txt(53),0+64+0, Extension): Exit Function: End If
+ If Msgbox (I_Txt(50), 4+48+256, Extension) = 6 Then
+ Goto SIGUIENTE
+ else
+ Msgbox (I_Txt(51), 0+64+0, Extension): Exit Function
+ End If
+SIGUIENTE:
+ Dim Document as Object, dispatcher as Object
+ Document = ThisComponent.CurrentController.Frame
+ Dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
+ vCursor = ThisComponent.CurrentController.getViewCursor
+ Dim oImages : oImages = ThisComponent.GraphicObjects()
+ Dim oFCursor as Object, oFrame as Variant, i as Integer
+ For i = 0 to oImages.count - 1
+ oImg = oImages.getbyIndex(i)
+ oFrame = oImg.Anchor.TextFrame()
+ IF Not isEmpty(oImg.Anchor.TextFrame()) then
+ oFCursor = oFrame.Text.createTextCursor&apos; Entro en el marco
+ oFCursor.gotoStart(False)
+ vcursor.gotoRange(oFCursor,False)
+ dispatcher.executeDispatch(document, &quot;.uno:MoveDown&quot;, &quot;&quot;, 0, Array())&apos; End If
+ End If
+ Next
+ Dim marco1 : marco1 = ThisComponent.getTextFrames.getByIndex(0).Anchor
+ vcursor.gotoRange(marco1,False)
+ Msgbox (I_Txt(52),0+64+0, Extension)
+ F_AlternarLeyenda = Chr(13) &amp; I_Txt(52)
+End Function
+ REM ================= Fin Imagenes ===========================================================
+
+
+</script:module> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/L10n.xba b/userguides/sanitycheck/SanityCheck/L10n.xba
new file mode 100644
index 00000000..63661121
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/L10n.xba
@@ -0,0 +1,778 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="L10n" script:language="StarBasic" script:moduleType="normal"> REM ***** BASIC Módulo L10n *****
+ Option explicit
+ Global Const Extension = &quot;Revisiones&quot;
+
+ Public C_Txt(17) as String
+ Public V_Txt(38) as String
+ Public E_Txt(20) as String
+ Public F_Txt(15) as String
+ Public I_Txt(53) as String
+ Public R_Txt(19) as String
+ Public Ren_Txt(16) as String
+ Public T_Txt(26) as String
+
+&apos; Public Lista() as String
+
+ REM ############
+Sub Trad_Campos
+
+ Dim Lista() as String
+ Call Comunes.Carga_Tools
+ Select Case GetStarOfficeLocale.language()&apos;F_getlang()
+
+ case &quot;es&quot;
+ C_Txt(0) = &quot;Documento&quot;
+ C_Txt(1) = &quot;Título Doc.&quot;
+ C_Txt(2) = &quot;Conexión con plantilla&quot;
+ C_Txt(3) = &quot;Guía&quot;
+ C_Txt(4) = &quot;Versión de L.O.&quot;
+ C_Txt(5) = &quot;Capítulo y N.º&quot;
+ C_Txt(6) = &quot;Título Capítulo&quot;
+ C_Txt(7) = &quot;Publicación&quot;
+ C_Txt(8) = &quot;&quot;
+ C_Txt(9) = &quot;Corregir&quot;
+ C_Txt(10) = &quot;Establecer&quot;
+ C_Txt(11) = &quot;Salir&quot;
+ C_Txt(12) = &quot;Cancelar&quot;
+ C_Txt(13) = &quot;Campos establecidos&quot;
+ C_Txt(14) = &quot;Con estilos de la plantilla: &quot;
+ C_Txt(15) = &quot;Campos del documento&quot;
+ C_Txt(16) = &quot;Primero tienes que guardar el documento&quot;
+ C_Txt(17) = &quot;Selecciona un mes de la lista&quot;
+ Lista = Array (&quot;Enero&quot;,&quot;Febrero&quot;,&quot;Marzo&quot;,&quot;Abril&quot;,&quot;Mayo&quot;,&quot;Junio&quot;,&quot;Julio&quot;,&quot;Agosto&quot;,&quot;Septiembre&quot;,&quot;Octubre&quot;,&quot;Noviembre&quot;,&quot;Diciembre&quot;)
+ case &quot;pt&quot;
+ C_Txt(0) = &quot;Documento&quot;
+ C_Txt(1) = &quot;Título Doc.&quot;
+ C_Txt(2) = &quot;Conexão con modelo&quot;
+ C_Txt(3) = &quot;Guia&quot;
+ C_Txt(4) = &quot;LO. Versão&quot;
+ C_Txt(5) = &quot;Capítulo &quot;
+ C_Txt(6) = &quot;Título do Capítulo&quot;
+ C_Txt(7) = &quot;Publicação&quot;
+ C_Txt(8) = &quot;&quot;
+ C_Txt(9) = &quot;Corrigir&quot;
+ C_Txt(10) = &quot;Estabelecer&quot;
+ C_Txt(11) = &quot;Saír&quot;
+ C_Txt(12) = &quot;Cancelar&quot;
+ C_Txt(13) = &quot;Campos Estabelecidos&quot;
+ C_Txt(14) = &quot;Com estilos de modelo:&quot;
+ C_Txt(15) = &quot;Campos do Documento&quot;
+ C_Txt(16) = &quot;Primeiro de tudo você deve salvar o documento&quot;
+ C_Txt(17) = &quot;Selecione um mês da lista&quot;
+ Lista = Array (&quot;janeiro&quot;,&quot;fevereiro&quot;,&quot;março&quot;,&quot;abril&quot;,&quot;maio&quot;,&quot;junho&quot;,&quot;julho&quot;,&quot;agosto&quot;,&quot;setembro&quot;,&quot;outubro&quot;,&quot;novembro&quot;,&quot;dezembro&quot;)
+
+ case else
+ C_Txt(0) = &quot;Document&quot;
+ C_Txt(1) = &quot;Doc. Title&quot;
+ C_Txt(2) = &quot;Template conex&quot;
+ C_Txt(3) = &quot;Guide&quot;
+ C_Txt(4) = &quot;LO. Version&quot;
+ C_Txt(5) = &quot;Chapter &quot;
+ C_Txt(6) = &quot;Chapter Title&quot;
+ C_Txt(7) = &quot;Published&quot;
+ C_Txt(8) = &quot;&quot;
+ C_Txt(9) = &quot;Correct&quot;
+ C_Txt(10) = &quot;Etablish&quot;
+ C_Txt(11) = &quot;Exit&quot;
+ C_Txt(12) = &quot;Cancel&quot;
+ C_Txt(13) = &quot;Fields Establised&quot;
+ C_Txt(14) = &quot;With Styles from Template : &quot;
+ C_Txt(15) = &quot;Document Fields&quot;
+ C_Txt(16) = &quot;First of all You must to save the document&quot;
+ C_Txt(17) = &quot;Select a month from the list&quot;
+ Lista = Array (&quot;January&quot;,&quot;February&quot;,&quot;March&quot;,&quot;April&quot;,&quot;May&quot;,&quot;June&quot;,&quot;July&quot;,&quot;August&quot;,&quot;September&quot;,&quot;October&quot;,&quot;November&quot;,&quot;December&quot;)
+ End select
+End Sub
+
+ REM ############
+Sub Trad_Comunes
+
+ Call Comunes.Carga_Tools
+ Select Case GetStarOfficeLocale.language()&apos;F_getlang()
+
+ Case &quot;es&quot;
+ V_Txt(0) = &quot;Revisión guíada&quot;
+ V_Txt(1) = &quot;&lt; Atrás&quot;
+ V_Txt(2) = &quot;Omitir &gt;&quot;
+ V_Txt(3) = &quot;Salir&quot;
+ V_Txt(4) = &quot;Campos&quot;
+ V_Txt(5) = &quot;Estilos&quot;
+ V_Txt(6) = &quot;Limpiar&quot;
+ V_Txt(7) = &quot;Renombrar&quot;
+ V_Txt(8) = &quot;Corregir&quot;
+ V_Txt(9) = &quot;Cambiar&quot;
+ V_Txt(10) = &quot;Campos&quot;
+ V_Txt(11) = &quot;Este asistente muestra un orden recomendado para usar las macros al revisar un documento.&quot; &amp; Chr(13) &amp; &quot; No es obligatorio y puedes usar las macros de manera aislada, las encontrarás en el menú o herramientas &quot;&quot;SanityCheck&quot;&quot;.&quot; &amp; Chr(13) &amp; &quot; También es posible que tengas que usar de nuevo la macro para renombrar objetos o ajustar imágenes al final de la revisión.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot; El primer paso es estabelecer los campos de usuario que serán utilizados en las guías&quot;
+ V_Txt(12) = &quot;Comprobar Estilos&quot;
+ V_Txt(13) = &quot;Comprueba la existencia de estilos ajenos a las guías con la opción de borrarlos si no están usados&quot; &amp; Chr(13) &amp; &quot;Comenta los párrafos con estilos ajenos aplicados&quot;
+ V_Txt(14) = &quot;Limpieza de Formatos&quot;
+ V_Txt(15) = &quot;Limpia el formato directo de: &quot; &amp; Chr(13) &amp; &quot;- Caracteres (texto)&quot; &amp; Chr(13) &amp; &quot;- Párrafos&quot; &amp; Chr(13) &amp; &quot;- Párrafos con estilos de lista (Bolos y Numeración&quot; &amp; Chr(13) &amp; &quot;- Reinicia las numeraciones de párrafos numerados cuando es posible &quot; &amp; Chr(13) &amp; &quot; Comenta los párrafos con dudas&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Estas tres macros se ejecutan de manera consecutiva.&quot;
+ V_Txt(16) = &quot;Selecciona elementos para limpiar o corregir&quot;
+ V_Txt(17) = &quot;Renombrar Objetos&quot;
+ V_Txt(18) = &quot;Renombra los elementos seleccionados en la secuencia de aparición. Se utiliza el prefijo adecuado (img_, frm_, tb_, y toc_) + los seis primeros caracteres del nombre de archivo + separador + número de 3 dígitos.&quot; &amp; Chr(13) &amp; &quot;Ejemplo imagen 1 del cap 3 de la guía de Draw :&quot; &amp; Chr(13) &amp; &quot; &quot;&quot;img_DG7603-001&quot;&quot; &quot;
+ V_Txt(19) = &quot;Primero tienes que guardar el documento&quot;
+ V_Txt(20) = &quot;Se han verificado los campos&quot;
+ V_Txt(21) = &quot;Se han verificado los estilos&quot;
+ V_Txt(22) = &quot;Se ha limpiado el formato directo&quot;
+ V_Txt(23) = &quot;Se han renombrado objetos&quot;
+ V_Txt(24) = &quot;Imágenes y Marcos&quot;
+ V_Txt(25) = &quot;Aplica estilos de párrafo de marcos e imágenes y establece sus propiedades según estándar de la documentación de L.O.&quot; &amp; Chr(13) &amp; &quot;- Usa el texto de la leyenda (sin Figura.X:) como descripción del marco e imagen.&quot; &amp; Chr(13) &amp; &quot; -Ajusta la anchura de los marcos a la anchura mayor (imagen o leyenda )&quot; &amp; Chr(13) &amp; &quot;- Comenta a las figuras cuando: las leyendas están mal formadas, las imágenes desproporcionadas o recortadas con Writer&quot;
+ V_Txt(26) = &quot;&quot;
+ V_Txt(27) = &quot;Alternar Leyenda&quot;
+ V_Txt(28) = &quot;Alterna la situación de las leyendas con respecto a las imágenes:&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;- Leyendas encima para publicación Web&quot; &amp; Chr(13) &amp; &quot;-Leyendas debajo para publicación ODT o PDF&quot;
+ V_Txt(29) = &quot;Registro&quot;
+ V_Txt(30) = &quot;Siguiente &gt;&quot;
+ V_Txt(31) = &quot;Sugerencias y problemas conocidos&quot;
+ V_Txt(32) = &quot;Aunque se pueden establecer estos campos en el diálogo Propiedades del documento, &quot; &amp; Chr(13) &amp; &quot;con esta macro se crean o establecen y revisan los campos de usuario necesarios en conjunto, sin la necesidad de añadir o modificarlos campos uno por uno.&quot; &amp; Chr(13) &amp; &quot;Además de los campos esta macro añade el nombre de la plantilla usada en el documento (cuando el documento contiene esa información) a los comentarios del documento para una futura referencia &quot;
+ V_Txt(33) = &quot;Para comprobar los estilos ajenos se ha tomado como referencia la plantilla de los capítulos de las guías de la versión 24.2 &quot; &amp; Chr(13) &amp; &quot;si se revisa un documento de una versión anterior o posterior, se reflejarán los estilos erróneamente en los comentarios&quot;
+ V_Txt(34) = &quot;- La limpieza de formato directo de caracteres (texto) se aplica tanto al cuerpo de texto como al texto contenido en los marcos de texto y los cuadros de texto (Dibujo) &quot; &amp; Chr(13) &amp; &quot;- La limpieza de párrafos elimina los formatos directos de los párrafos: sangrías, espaciados y listas, pero no los estilos de lista propios de los estilos de párrafo&quot; &amp; Chr(13) &amp; &quot;- El reinicio de la numeración no es posible cuando hay interrupciones, por lo que se añaden comentarios a los párrafos con dudas&quot;
+ V_Txt(35) = &quot;- Para recorer las imágenes y las tablas en la secuencia de aparición en el documento, es necesario que estén nombradas en secuencia&quot; &amp; Chr(13) &amp; &quot;Si se mueve una imagen o tabla con respecto a las demás, se añaden o eliminan imágenes o tablas, hay que guardar los cambios y recargar el archivo y volver a nombrarlas&quot;
+ V_Txt(36) = &quot;- En situaciones muy especiales algunas imágenes pueden llegar a borrarse al aplicar el formato de marcos e imágenes. Esto es debido a un ancla inapropiado de la imagen&quot; &amp; Chr(13) &amp; &quot;- En algunas ocasiones, aparecen comentarios sobre una mala proporción de las imágenes esto es debido a cálculos internos de L.O.&quot; &amp; Chr(13) &amp; &quot;- Puede ignorar los mensajes si las proporciones de la imagen son correctas&quot;
+ V_Txt(37) = &quot;Los enlaces a las figuras, apuntan a la leyenda de las mismas.&quot; &amp; Chr(13) &amp; &quot;En los documentos ODT y PDF, al pulsar en un enlace, el documento se desplaza mostrando el marco que contiene la leyenda y con ello la figura completa&quot; &amp; Chr(13) &amp; &quot;En la publicación Web, las figuras no tienen marco, por lo que la página se desplaza mostrando la leyenda, quedando oculta la figura si la leyenda está debajo.&quot; &amp; Chr(13) &amp; &quot;Para que se muestre la imagen junto con su leyenda&quot; &amp; Chr(13) &amp; &quot; En los documentos para publicación Web la leyenda tiene que estar encima de la imagen y en ODT o PDF debajo.&quot;
+ V_Txt(38) = &quot;En el registro aparecen los cambios aplicados en una sesión del asistente, si se cierra el asistente no se mantiene el registro&quot;
+
+ Case &quot;pt&quot;
+ V_Txt(0) = &quot;Revisão Guiada&quot;
+ V_Txt(1) = &quot;&lt; Trás&quot;
+ V_Txt(2) = &quot;Pular &gt;&quot;
+ V_Txt(3) = &quot;Sair&quot;
+ V_Txt(4) = &quot;Campos&quot;
+ V_Txt(5) = &quot;Estilos&quot;
+ V_Txt(6) = &quot;Limpar&quot;
+ V_Txt(7) = &quot;Renomear&quot;
+ V_Txt(8) = &quot;Corrija&quot;
+ V_Txt(9) = &quot;Alterar&quot;
+ V_Txt(10) = &quot;Campos&quot;
+ V_Txt(11) = &quot;Este assistente exibe uma ordem recomendada para o uso de macros ao revisar um documento.&quot; &amp; Chr(13) &amp; &quot; Não é obrigatório e você pode usar as macros isoladamente, você as encontrará no menu ou ferramentas &quot;&quot;SanityCheck&quot;&quot;.&quot; &amp; Chr(13) &amp; &quot; Talvez você também precise usar a macro para renomear objetos ou ajustar imagens novamente no final da revisão.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;O primeiro passo é estabelecer os campos do usuário que serão utilizados nos guias&quot;
+ V_Txt(12) = &quot;Verificar estilos&quot;
+ V_Txt(13) = &quot;Verifica a existência de estilos diferentes dos guias com a opção de excluí-los caso não sejam utilizados&quot; &amp; Chr(13) &amp; &quot;Comentário nos parágrafos com estilos estrangeiros aplicados&quot;
+ V_Txt(14) = &quot;Limpeza de formato&quot;
+ V_Txt(15) = &quot;Limpar a formatação direta para: &quot; &amp; Chr(13) &amp; &quot;- Caracteres (texto)&quot; &amp; Chr(13) &amp; &quot;- Parágrafos&quot; &amp; Chr(13) &amp; &quot;- Parágrafos com estilos de lista (marcadores e Numeração&quot; &amp; Chr(13) &amp; &quot;- Reinicia a numeração dos parágrafos numerados quando possível &quot; &amp; Chr(13) &amp; &quot; Comenta parágrafos com dúvidas&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Essas três macros são executadas consecutivamente.&quot;
+ V_Txt(16) = &quot;Selecione itens para limpar ou corrigir&quot;
+ V_Txt(17) = &quot;Renomear objetos&quot;
+ V_Txt(18) = &quot;Renomeia os elementos selecionados na sequência de aparência. O prefixo apropriado é usado (img_, frm_, tb_ e toc_) + os primeiros seis caracteres do nome do arquivo + separador + número de 3 dígitos.&quot; &amp; Chr(13) &amp; &quot;Exemplo de imagem 1 do capítulo 3 do guia do Draw:&quot; &amp; Chr(13) &amp; &quot; &quot;&quot;img_DG7603-001&quot;&quot; &quot;
+ V_Txt(19) = &quot;Primeiro de tudo você deve salvar o documento&quot;
+ V_Txt(20) = &quot;Fields were verified&quot;
+ V_Txt(21) = &quot;Styles have been checked&quot;
+ V_Txt(22) = &quot;Direct format has been cleared&quot;
+ V_Txt(23) = &quot;Objects have been renamed&quot;
+ V_Txt(24) = &quot;Imagens e Quadros&quot;
+ V_Txt(25) = &quot;Aplica estilos de quadro e parágrafo de imagem e define suas propriedades de acordo com o padrão de documentação L.O..&quot; &amp; Chr(13) &amp; &quot;- Usa o texto da legenda (sem Figura.X:) como descrição do quadro e da imagem. &quot; &amp; Chr(13) &amp; &quot; -Ajusta a largura dos frames para a maior largura (imagem ou legenda)&quot; &amp; Chr(13) &amp; &quot;- Comentários sobre as figuras quando: as legendas estão mal formadas, as imagens estão desproporcionais ou recortadas com Writer&quot;
+ V_Txt(26) = &quot;&quot;
+ V_Txt(27) = &quot;Alternar legenda&quot;
+ V_Txt(28) = &quot;Alterna a localização das legendas em relação às imagens:&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;- Legendas acima para publicação na Web&quot; &amp; Chr(13) &amp; &quot;- Legendas abaixo para publicação ODT ou PDF&quot;
+ V_Txt(29) = &quot;Registro&quot;
+ V_Txt(30) = &quot;Seguindo &gt;&quot;
+ V_Txt(31) = &quot;Sugestões e problemas conhecidos&quot;
+ V_Txt(32) = &quot;Embora esses campos possam ser definidos na caixa de diálogo Propriedades do Documento, &quot; &amp; Chr(13) &amp; &quot;esta macro cria ou define e revisa os campos de usuário necessários juntos, sem a necessidade de adicionar ou modificar os campos um por um .&quot; &amp; Chr(13) &amp; &quot;Além dos campos, esta macro adiciona o nome do modelo usado no documento (quando o documento contém essa informação) aos comentários do documento para referência futura&quot;
+ V_Txt(33) = &quot;Para verificar estilos estrangeiros, o modelo dos capítulos dos guias da versão 24.2 foi tomado como referência &quot; &amp; Chr(13) &amp; &quot;se um documento de uma versão anterior ou posterior for revisado, eles serão ser refletido estilos erroneamente nos comentários&quot;
+ V_Txt(34) = &quot;- A limpeza direta da formatação de caracteres (texto) aplica-se tanto ao corpo do texto quanto ao texto contido em quadros de texto e caixas de texto (Desenho) &quot; &amp; Chr(13) &amp; &quot;- A Limpeza o estilo de parágrafo remove os formatos diretos de parágrafo : recuos, espaçamentos e listas, mas não os estilos de lista dos estilos de parágrafo&quot; &amp; Chr(13) &amp; &quot;- Reiniciar a numeração tenta reconstruir a numeração correta, mas isso não é possível quando há interrupções, então comentários são adicionados ao parágrafos com dúvidas&quot;
+ V_Txt(35) = &quot;- Para percorrer as imagens e tabelas na sequência em que aparecem no documento, elas devem ser nomeadas em sequência&quot; &amp; Chr(13) &amp; &quot;Se uma imagem ou tabela for movida em relação às outras , imagens ou tabelas são adicionadas ou excluídas, você deve salvar as alterações e recarregar o arquivo e renomeá-los novamente&quot;
+ V_Txt(36) = &quot;- Em situações muito especiais algumas imagens podem ser apagadas ao aplicar os frames e o formato das imagens. Isto se deve a uma ancoragem inadequada da imagem&quot; &amp; Chr(13) &amp; &quot;- Em algumas ocasiões aparecem comentários sobre uma proporção ruim das imagens se deve a cálculos internos do L.O.&quot; &amp; Chr(13) &amp; &quot;Você pode ignorar mensagens se as proporções da imagem estiverem corretas&quot;
+ V_Txt(37) = &quot;Os links para as figuras apontam para sua legenda.&quot; &amp; Chr(13) &amp; &quot;Em documentos ODT e PDF, ao clicar em um link, o documento rola mostrando o quadro que contém a legenda e assim a figura completa&quot; &amp; Chr(13) &amp; &quot;Na publicação Web, as figuras não não possui moldura, então a página rola mostrando a legenda, ficando a figura oculta se a legenda estiver abaixo.&quot; &amp; Chr(13) &amp; &quot;Então, para que a imagem seja exibida junto com sua legenda&quot; &amp; Chr(13) &amp; &quot;Em documentos para publicação na Web a legenda deve estar acima da imagem e em ODT ou PDF abaixo&quot;
+ V_Txt(38) = &quot;As alterações aplicadas em uma sessão do assistente aparecem no registro; se o assistente for fechado, o registro não é mantido&quot;
+
+ Case Else &apos; Inglés para el resto de idiomas
+ V_Txt(0) = &quot;Guided Review&quot;
+ V_Txt(1) = &quot;&lt; Back&quot;
+ V_Txt(2) = &quot;Skip &gt;&quot;
+ V_Txt(3) = &quot;Exit&quot;
+ V_Txt(4) = &quot;Fields&quot;
+ V_Txt(5) = &quot;Styles&quot;
+ V_Txt(6) = &quot;Clear&quot;
+ V_Txt(7) = &quot;Rename&quot;
+ V_Txt(8) = &quot;Correct&quot;
+ V_Txt(9) = &quot;Change&quot;
+ V_Txt(10) = &quot;Fields&quot;
+ V_Txt(11) = &quot;This wizard displays a recommended order for using macros when reviewing a document.&quot; &amp; Chr(13) &amp; &quot; It is not mandatory and you can use the macros in isolation, you will find them in the menu or toolbar &quot;&quot;SanityCheck&quot;&quot;.&quot; &amp; Chr(13) &amp; &quot; You may also have to use the macro to rename objects ou ajustar imagens again at the end of the review.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;The first step is to establish the user fields that will be used in the guides&quot;
+ V_Txt(13) = &quot;Checks for the existence of styles other than the guides with the option to delete them if they are not used&quot; &amp; Chr(13) &amp; &quot;Comment on the paragraphs with foreign styles applied&quot;
+ V_Txt(14) = &quot;Format Cleaning&quot;
+ V_Txt(15) = &quot;Clean up direct formatting for: &quot; &amp; Chr(13) &amp; &quot;- Characters (text)&quot; &amp; Chr(13) &amp; &quot;- Paragraphs&quot; &amp; Chr(13) &amp; &quot;- Paragraphs with list styles ( Bullets and Numbering&quot; &amp; Chr(13) &amp; &quot;- Resets the numbering of numbered paragraphs when possible &quot; &amp; Chr(13) &amp; &quot; Comment on paragraphs with doubts&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;These three macros are executed consecutively.&quot;
+ V_Txt(16) = &quot;Select items to clean or correct&quot;
+ V_Txt(17) = &quot;Rename Objects&quot;
+ V_Txt(18) = &quot;Renames the selected elements in the appearance sequence. The appropriate prefix is used (img_, frm_, tb_, and toc_) + the first six characters of the file name + separator + 3-digit number.&quot; &amp; Chr(13) &amp; &quot;Example image 1 of chapter 3 of the Draw guide:&quot; &amp; Chr(13) &amp; &quot; &quot;&quot;img_DG7603-001&quot;&quot; &quot;
+ V_Txt(19) = &quot;First of all You must to save the document&quot;
+ V_Txt(20) = &quot;&quot;
+ V_Txt(21) = &quot;&quot;
+ V_Txt(22) = &quot;&quot;
+ V_Txt(23) = &quot;&quot;
+ V_Txt(24) = &quot;Images and Frames&quot;
+ V_Txt(25) = &quot;Applies frame and image paragraph styles and sets their properties according to the L.O. documentation standard.&quot; &amp; Chr(13) &amp; &quot;- Uses the legend text (without Figure.X:) as a description of the frame and image. &quot; &amp; Chr(13) &amp; &quot; -Adjusts the width of the frames to the largest width (image or legend)&quot; &amp; Chr(13) &amp; &quot;- Comments on the figures when: the legends are poorly formed, the images are disproportionated or cropped with Writer&quot;
+ V_Txt(26) = &quot;&quot;
+ V_Txt(27) = &quot;Toggle Legend&quot;
+ V_Txt(28) = &quot;Toggles the location of the legends with respect to the images:&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;- Legends above for Web publication&quot; &amp; Chr(13) &amp; &quot;- Legends below for ODT or PDF publication&quot;
+ V_Txt(29) = &quot;Log&quot;
+ V_Txt(30) = &quot;Next &gt;&quot;
+ V_Txt(31) = &quot;Suggestions and known issues&quot;
+ V_Txt(32) = &quot;Although these fields can be set in the Document Properties dialog, &quot; &amp; Chr(13) &amp; &quot;this macro creates or sets and reviews the necessary user fields together, without the need to add or modify them fields one by one.&quot; &amp; Chr(13) &amp; &quot;In addition to the fields, this macros add the name of the template used in the document (when the document contains that information) to the document comments for future reference&quot;
+ V_Txt(33) = &quot;To check foreign styles, the template of the chapters of the guides of version 24.2 has been taken as a reference &quot; &amp; Chr(13) &amp; &quot;if a document from a previous or later version is reviewed, they will be reflected styles wrongly in the annotations&quot;
+ V_Txt(34) = &quot;- Direct character (text) formatting cleanup applies to both the body of text and the text contained in text frames and text boxes (Drawing) &quot; &amp; Chr(13) &amp; &quot;- Cleanup The paragraph style removes the direct paragraph formats: indents, spacing and lists, but not the list styles of the paragraph styles&quot; &amp; Chr(13) &amp; &quot;- Restarting the numbering attempts to reconstruct the correct numbering, but this not is possible when there are interruptions, so comments are added to the paragraphs with doubts&quot;
+ V_Txt(35) = &quot;- To cycle through the images and tables in the sequence of their appearance in the document, they must be named in sequence&quot; &amp; Chr(13) &amp; &quot;If an image or table is moved with respect to the others , images or tables are added or deleted, you have to save the changes and reload the file and rename them again&quot;
+ V_Txt(36) = &quot;- In very special situations some images may be deleted when applying the frames and images format. This is due to an inappropriate anchoring of the image&quot; &amp; Chr(13) &amp; &quot;- On some occasions, comments appear about a bad proportion of the images this is due to internal calculations of L.O.&quot; &amp; Chr(13) &amp; &quot;You can ignore messages if the image proportions are correct&quot;
+ V_Txt(37) = &quot;The links to the figures point to their legend.&quot; &amp; Chr(13) &amp; &quot;In ODT and PDF documents, when clicking on a link, the document scrolls showing the frame that contains the legend and thus the complete figure&quot; &amp; Chr(13) &amp; &quot;In the Web publication, The figures do not have a frame, so the page scrolls showing the legend, the figure being hidden (if the legend is below.)&quot; &amp; Chr(13) &amp; &quot;So, for the image to be displayed along with its legend&quot; &amp; Chr(13) &amp; &quot;In documents for Web publication the legend must be above the image, and in ODT or PDF below&quot;
+ V_Txt(38) = &quot;The changes applied in a wizard session appear in the registry; if the wizard is closed, the registry is not maintained&quot;
+
+ End Select
+
+End Sub
+ REM ############
+Sub Trad_Estilos
+
+ Call Comunes.Carga_Tools
+ Select Case GetStarOfficeLocale.language()&apos;F_getlang()
+
+ Case &quot;es&quot;
+ E_Txt(0) = &quot;Comprobación de estilos&quot;
+ E_Txt(1) = &quot;Estilos ajenos a las guías&quot;
+ E_Txt(2) = &quot;Aplicados&quot;
+ E_Txt(3) = &quot;No utilizados&quot;
+ E_Txt(4) = &quot;Estilos de párrafo&quot;
+ E_Txt(5) = &quot;Estilos de carácter&quot;
+ E_Txt(6) = &quot;Selecciona un estilo de la lista&quot; &amp; Chr(13) &amp; &quot; &quot;&quot;No utilizados&quot;&quot; para eliminarlo&quot;
+ E_Txt(7) = &quot;Eliminar&quot;
+ E_Txt(8) = &quot;No hay estilos ajenos&quot;
+ E_Txt(9) = &quot;Has seleccionado el estilo de párrafo &quot; &amp; Chr(13)
+ E_Txt(10) = &quot;Has seleccionado el estilo de carácter&quot; &amp; Chr(13)
+ E_Txt(11) = Chr(13) &amp; &quot;¿Quieres Eliminarlo del documento?&quot;
+ E_Txt(13) = &quot;Eliminar Estilo de carácter sin uso&quot;
+ E_Txt(14) = &quot;Se han encontrado&quot;
+ E_Txt(15) = &quot; Párrafos con estilos ajenos (de párrafo) aplicados&quot;
+ E_Txt(16) = &quot;Revisa los comentarios para corregirlo&quot;
+ E_Txt(17) = &quot; - Estilo ajeno, no está en la plantilla&quot;
+ E_Txt(18) = Chr(13) &amp; &quot;– Solo se agregan comentarios a los párrafos con estilo (de párrafo) ajeno aplicado por dos motivos: &quot; &amp; Chr(13) &amp; &quot;1.- la búsqueda de estilos de carácter es complicada y puede ser muy lenta&quot; &amp; Chr(13) &amp; &quot;2.- El documento podría llenarse de comentarios lo que haría dificil leerlos&quot;&amp; Chr(13) &amp; Chr(13) &amp; &quot;– Cuando se corrige un estilo de párrafo aplicado, no hay problema, L.O. actualiza el documento, por lo que se elimina de la lista de estilos aplicados de este diálogo y pasa a la lista de estilos no utilizados.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot; – El problema surge con los estilos de carácter: aunque se cambien borren todas las apariciones del un estilo ajeno en el documento, L.O. no actualiza su lista de estilos de carácter y por tanto sigue apareciendo en estilos aplicados aunque realmente no lo esté.&quot;&amp; Chr(13) &amp; Chr(13) &amp; &quot;La solución consiste en :&quot; &amp; Chr(13) &amp; &quot;1.- Guardar el documento y &quot;&amp; Chr(13) &amp; &quot; 2.- Recargar el documento&quot; &amp; Chr(13) &amp; &quot; Al volver a ejecutar la comprobación de estilos, pasará a la lista de No utilizados&quot;
+
+ Case &quot;pt&quot;
+ E_Txt(0) = &quot;Verificação de estilos&quot;
+ E_Txt(1) = &quot;Estilos fora dos guias&quot;
+ E_Txt(2) = &quot;Aplicado&quot;
+ E_Txt(3) = &quot;Não utilizado&quot;
+ E_Txt(4) = &quot;Estilos de parágrafo&quot;
+ E_Txt(5) = &quot;Estilos de caractere&quot;
+ E_Txt(6) = &quot;Selecione um estilo da lista&quot; &amp; Chr(13) &amp; &quot; &quot;&quot;Não utilizado&quot;&quot; para excluí-lo&quot;
+ E_Txt(7) = &quot;Excluir&quot;
+ E_Txt(8) = &quot;Não existem estilos estrangeiros&quot;
+ E_Txt(9) = &quot;Você selecionou o estilo de parágrafo&quot; &amp; Chr(13)
+ E_Txt(10) = &quot;Você selecionou o estilo do caractere&quot; &amp; Chr(13)
+ E_Txt(11) = Chr(13) &amp; &quot;Deseja excluí-lo do documento?&quot;
+ E_Txt(12) = &quot;Excluir estilo de parágrafo não utilizado&quot;
+ E_Txt(13) = &quot;Remover estilo de caractere não utilizado&quot;
+ E_Txt(14) = &quot;Eles foram encontrados&quot;
+ E_Txt(15) = &quot; Parágrafos com estilos estrangeiros (parágrafo) aplicados&quot;
+ E_Txt(16) = &quot;Verifique os comentários para corrigi-lo&quot;
+ E_Txt(17) = &quot; - Estilo estrangeiro, não no modelo&quot;
+ E_Txt(18) = Chr(13) &amp; &quot;– Os comentários só são adicionados a parágrafos com um estilo estrangeiro (parágrafo) aplicado por dois motivos: &quot; &amp; Chr(13) &amp; &quot;1.- a busca por estilos de caracteres é complicada e pode ser muito lenta e &quot; &amp; Chr (13) &amp; &quot;2.- O documento pode cheiarse de comentários que dificultariam a sua leitura&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;– Ao corrigir um estilo de parágrafo aplicado, não há problema, L.O. atualiza o documento, portanto el estilo é removido da lista de estilos aplicados nesta caixa de diálogo e movido para a lista de estilos Não utilizados.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot; – O problema surge com os estilos de caracteres: mesmo que sejam alteradas todas as ocorrências de um estilo estrangeiro no documento, L.O. não atualiza sua lista de estilos de caracteres e, portanto, continua a aparecer nos estilos aplicados, mesmo que não seja realmente aplicado.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;A solução:&quot; &amp; Chr(13) &amp; &quot;1.- Salve o documento e &quot;&amp; Chr(13) &amp; &quot;2.- Recarregue o documento&quot; &amp; Chr (13) &amp; &quot;Quando você executar a verificação de estilo novamente, ela irá para a lista Não utilizados&quot;
+ Case Else
+
+ E_Txt(0) = &quot;Style Check&quot;
+ E_Txt(1) = &quot;Styles outside the guides&quot;
+ E_Txt(2) = &quot;Applied&quot;
+ E_Txt(3) = &quot;Not used&quot;
+ E_Txt(4) = &quot;Paragraph styles&quot;
+ E_Txt(5) = &quot;Character styles&quot;
+ E_Txt(6) = &quot;Select a style from the list&quot; &amp; Chr(13) &amp; &quot; &quot;&quot;Unused&quot;&quot; to delete it&quot;
+ E_Txt(7) = &quot;Delete&quot;
+ E_Txt(8) = &quot;There are no foreign styles&quot;
+ E_Txt(9) = &quot;You have selected the paragraph style&quot;
+ E_Txt(10) = &quot;You have selected the character style&quot;
+ E_Txt(11) = &quot;Do you want to delete it from the document?&quot;
+ E_Txt(12) = &quot;Delete Unused Paragraph Style&quot;
+ E_Txt(13) = &quot;Remove Unused Character Style&quot;
+ E_Txt(14) = &quot;They have been found&quot;
+ E_Txt(15) = &quot; Paragraphs with foreign (paragraph) styles applied&quot;
+ E_Txt(16) = &quot;Check the comments to correct it&quot;
+ E_Txt(17) = &quot; - Foreign style, not in the template&quot;
+ E_Txt(18) = Chr(13) &amp; &quot;– Comments are only added to paragraphs with a foreign (paragraph) style applied for two reasons: &quot; &amp; Chr(13) &amp; &quot;1.- searching for character styles is complicated and it can be very slow&quot; &amp; Chr(13) &amp; &quot;2.- The document could be filled with comments which would make them difficult to read &quot;&amp; Chr(13) &amp; Chr(13) &amp; &quot;– When correcting an applied paragraph style, there is no problem, L.O. updates the document, so the style is removed from the list of applied styles in this dialog and moved to the list of unused styles.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot; – The problem arises with character styles: even if all occurrences of a foreign style in the document are deleted, L.O. does not update its list of character styles and therefore continues to appear in applied styles even though it is not actually applied. &quot;&amp; Chr(13) &amp; Chr(13) &amp; &quot;The solution:&quot; &amp; Chr(13) &amp; &quot;1.- Save the document and &quot;&amp; Chr(13) &amp; &quot; 2.- Reload the document&quot; &amp; Chr (13) &amp; &quot;When you run the style check again, the style go to the Unused styles list&quot;
+
+ End Select
+End Sub
+
+ REM ############
+Sub Trad_Formatos
+
+ Call Comunes.Carga_Tools
+ Select Case GetStarOfficeLocale.language()&apos;F_getlang()
+
+ Case &quot;es&quot;
+ F_Txt(0) = &quot;Limpieza de formatos&quot;
+ F_Txt(1) = &quot;- Texto: Limpia el formato directo de caracteres aplicado al texto&quot; &amp; Chr(13) &amp; &quot;- Parrafos: Limpia el fomato directo aplicado a los párrafos (Incluidas las listas no numeradas)&quot; &amp; Chr(13) &amp; &quot;-- Numerados: Limpia el formato aplicado a los párrafos de listas numeradas&quot;
+ F_Txt(2) = &quot;Caracteres&quot;
+ F_Txt(3) = &quot;Párrafos&quot;
+ F_Txt(4) = &quot;Párrafos numerados&quot;
+ F_Txt(5) = &quot;Limpiar&quot;
+ F_Txt(6) = &quot;Salir&quot;
+ F_Txt(7) = &quot;Volver&quot;
+ F_Txt(8) = &quot; Aquí va la ayuda&quot;
+ F_Txt(9) = &quot;Limpieza de formato de texto concluída&quot;
+ F_Txt(10) = &quot;Limpieza de formato de párrafos concluída&quot;
+ F_Txt(11) = &quot;Limpieza y Reinicio de Numeraciones concluída &quot;
+ F_Txt(12) = &quot; párrafos se han marcado&quot; &amp; Chr(13) &amp;&quot;Revisa los comentarios&quot;
+ F_Txt(13) = &quot;Procesando ...&quot;
+ F_Txt(14) = &quot; Revisa los estilos y la numeración&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Estilo anterior = &quot;
+ F_Txt(15) = &quot;Selecciona elementos para limpiar&quot;
+
+ Case &quot;pt&quot;
+ F_Txt(0) = &quot;Limpeza de formatos&quot;
+ F_Txt(1) = &quot;- Texto: Limpa a formatação direta de caracteres aplicada ao texto&quot; &amp; Chr(13) &amp; &quot;- Parágrafos: Limpa a formatação direta aplicada a parágrafos (incluindo listas não numeradas)&quot; &amp; Chr(13) &amp; &quot;-- Numerado: Limpa a formatação aplicada aos parágrafos da lista numerada&quot;
+ F_Txt(2) = &quot;Caracteres &quot;
+ F_Txt(3) = &quot;Parágrafos&quot;
+ F_Txt(4) = &quot;Parágrafos numerados&quot;
+ F_Txt(5) = &quot;Limpar&quot;
+ F_Txt(6) = &quot;Sair&quot;
+ F_Txt(7) = &quot;Retornar&quot;
+ F_Txt(8) = &quot;Aqui vai a ajuda&quot;
+ F_Txt(9) = &quot;Limpeza de formatação de texto concluída&quot;
+ F_Txt(10) = &quot;Limpeza de formatação de parágrafos concluída&quot;
+ F_Txt(11) = &quot;Limpeza e redefinição de números concluídas &quot;
+ F_Txt(12) = &quot; parágrafos foram marcados&quot; &amp; Chr(13) &amp; &quot;Verifique os comentários&quot;
+ F_Txt(13) = &quot;Em processamento ...&quot;
+ F_Txt(14) = &quot;Verifique estilos e numeração&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Estilo anterior = &quot;
+ F_Txt(15) = &quot;Seleccione itens para limpar&quot;
+
+ Case else
+ F_Txt(0) = &quot;Format Cleaning&quot;
+ F_Txt(1) = &quot;- Text: Clears direct character formatting applied to text&quot; &amp; Chr(13) &amp; &quot;- Paragraphs: Clears direct formatting applied to paragraphs (Including unnumbered lists)&quot; &amp; Chr(13) &amp; &quot;-- Numbered: Clears the formatting applied to numbered list paragraphs&quot;
+ F_Txt(2) = &quot;Characters&quot;
+ F_Txt(3) = &quot;Paragraphs&quot;
+ F_Txt(4) = &quot;Numbered paragraphs&quot;
+ F_Txt(5) = &quot;Clear&quot;
+ F_Txt(6) = &quot;Exit&quot;
+ F_Txt(7) = &quot;Return&quot;
+ F_Txt(8) = &quot;Here goes the help&quot;
+ F_Txt(9) = &quot;Text format cleanup done&quot;
+ F_Txt(10) = &quot;Paragraph format cleanup done&quot;
+ F_Txt(11) = &quot;Numbering format Cleanup an Reset done &quot;
+ F_Txt(12) = &quot; paragraphs have been marked&quot; &amp; Chr(13) &amp; &quot;Check the annotations&quot;
+ F_Txt(13) = &quot;Working ...&quot;
+ F_Txt(14) = &quot; Check styles and numbering&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Previous style = &quot;
+ F_Txt(15) = &quot;Selecct items to clean&quot;
+ End Select
+End sub
+
+ REM ############
+Sub Trad_Imagenes
+
+ Call Comunes.Carga_Tools
+ Select Case GetStarOfficeLocale.language()&apos;F_getlang()
+
+ case &quot;es&quot;
+ I_Txt(0) = &quot;Revisión de Imágenes&quot;
+ I_Txt(1) = &quot;Cambiar&quot;
+ I_Txt(2) = &quot;Como Carácter&quot;
+ I_Txt(3) = &quot;Cambiar/Asignar&quot;
+ I_Txt(4) = &quot;Desde Marco&quot;
+ I_Txt(5) = &quot;Editar (externo)&quot;
+ I_Txt(6) = &quot;&lt; Anterior&quot;
+ I_Txt(7) = &quot;Siguiente &gt;&quot;
+ I_Txt(8) = &quot;Salir&quot;
+ I_Txt(9) = Chr(13) &amp; &quot;◘ ¿Has hecho Modificaciones en la imagen? &quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot; 1.-Cambia a la siguiente o anterior&quot; &amp; Chr(13) &amp; &quot; 2.- Vuelve para comprobar ver si se han aplicado los cambios.&quot; &amp; Chr(13) &amp;Chr(13) &amp; &quot;– Las figuras no aparecen en la secuencia de aparición en el documento &quot; &amp; Chr(13) &amp; &quot;◘ ¿Has cambiado el orden de las figuras?, ¿Has añadido o borrado imágenes?&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot; 1.- Guarda los cambios&quot; &amp; Chr(13) &amp; &quot; 2.- Recarga el documento&quot; &amp; Chr(13) &amp; &quot; 3.- Renombra las imágenes y marcos&quot;
+ I_Txt(10) = &quot;Descripción del marco&quot;
+ I_Txt(11) = &quot;Descripción de la imagen&quot;
+ I_Txt(12) = &quot;Anclaje&quot;
+ I_Txt(13) = &quot;Al párrafo&quot;
+ I_Txt(14) = &quot;Como carácter&quot;
+ I_Txt(15) = &quot;A la página&quot;
+ I_Txt(16) = &quot;Al marco&quot;
+ I_Txt(17) = &quot;Al carácter&quot;
+ I_Txt(18) = &quot;Nombe Imagen: &quot;
+ I_Txt(19) = &quot;Primera Imagen&quot;
+ I_Txt(20) = &quot;Primera y última imagen&quot; &apos; Pendiente de colocar
+ I_Txt(21) = &quot;Última imagen&quot;
+ I_Txt(22) = &quot;Imagen recortada con Writer&quot; &amp; Chr(13) &amp; &quot; - Usa otro programa para los recortes&quot;
+ I_Txt(23) = &quot;Imagen sin recortes&quot;
+ I_Txt(24) = &quot;Revisa la escala&quot;
+ I_Txt(25) = &quot;Escala correcta de imagen &quot;
+ I_Txt(26) = &quot;Imagen sin marco&quot;
+ I_Txt(27) = &quot;Se han borrado o incorporado imágenes&quot; &amp; Chr(13) &amp; &quot;1) Guarde los cambios&quot; &amp; Chr(13) &amp; &quot;2) Recargue el archivo&quot; &amp; Chr(13) &amp; &quot;3) Renombre las imágenes otra vez.&quot;
+ I_Txt(28) = &quot;Revisión de imágenes detenida&quot;
+ I_Txt(29) = &quot;Revisión Finalizada&quot; &apos;NO usado
+ I_Txt(30) = &quot;El nombre de la imagen no puede quedar vacío&quot;
+ I_Txt(31) = Chr(13) &amp; &quot;Err -1 ¿Nombre duplicado?&quot; &amp; Chr(13) &amp; &quot;Prueba con otro.&quot;
+ I_Txt(32) = &quot;Procesando ...&quot;
+ I_Txt(33) = &quot;Esta macro no funcion aislada.&quot; &amp; Chr(13) &amp; &quot; Se ejecuta desde un diálogo&quot;
+ I_Txt(34) = &quot;Primero tienes que guardar el documento&quot;
+ I_Txt(35) = &quot;Se han borrado todas las imágenes&quot;
+ I_Txt(36) = &quot;Error N. &quot;
+ I_Txt(37) = &quot;Err: 1 - Es posible que esté seleccionado un objeto: imagen, marco, etc.&quot; &amp; chr(13) &amp; chr(13) &amp; &quot;Coloca el cursor en un fragmento de texto y prueba de nuevo&quot;
+ I_Txt(38) = &quot;Err: 91 - Es posible que estés en un comentario&quot; &amp; Chr(13) &amp; chr(13) &amp; &quot;Coloca el cursor en un fragmento de texto y prueba de nuevo&quot;
+ I_Txt(39) = &quot;No hay imágenes en el documento&quot;
+ I_Txt(40) = &quot;Imágenes ajustadas&quot;
+ I_Txt(41) = &quot;Ajuste de imágenes y marcos&quot;
+ I_Txt(42) = &quot;Marcos ajustados&quot;
+ I_Txt(43) = &quot;Descripciones aplicadas a los marcos&quot;
+ I_Txt(44) = &quot;Descripciones aplicadas a las imágenes&quot;
+ I_Txt(45) = &quot;Posible marco sin imagen o leyenda sobre la imagen&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Revisa este marco y su contenido&quot;
+ I_Txt(46) = &quot;Texto de leyenda mal formado.&quot; &amp; Chr(13) &amp; &quot;¿Figura X: y «espacio»?&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Revisa la leyenda y descripciones de marco e imagen&quot;
+ I_Txt(47) = &quot;Imagen recortada con Writer.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Usa otro programa para los recortes&quot;
+ I_Txt(48) = &quot;Revisa la Escala:&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Diálogo «Imagen», pág. «Recortar»&quot; &amp; Chr(13) &amp; &quot;(% Anchura debe ser igual a % Altura)&quot;
+ I_Txt(49) = &quot;Pendiente texto ayuda&quot;
+ Rem --- Macro Leyendas
+ I_Txt(50) = &quot;Solo se deben colocar las leyendas encima de las imágenes&quot; &amp; Chr(13) &amp; &quot;para el formato Web. Si las leyendas están encima, la macro&quot; &amp; Chr(13) &amp; &quot;de ajuste de imágenes y marcos no funcionará correctamente&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;¿Realmente quieres alternar el orden de las leyendas?&quot;
+ I_Txt(51) = &quot;No se ha cambiado la situación de las leyendas&quot;
+ I_Txt(52) = &quot;Situación de Leyendas cambiada&quot;
+ I_Txt(53) = &quot;No hay marcos en el documento&quot;
+
+ case &quot;pt&quot;
+ I_Txt(0) = &quot;Revisão de imagems&quot;
+ I_Txt(1) = &quot;Mudar&quot;
+ I_Txt(2) = &quot;Como caractere&quot;
+ I_Txt(3) = &quot;Alterar/Atribuir&quot;
+ I_Txt(4) = &quot;De Marco&quot;
+ I_Txt(5) = &quot;Editar (externo)&quot;
+ I_Txt(6) = &quot;&lt; Anterior&quot;
+ I_Txt(7) = &quot;Próxima &gt;&quot;
+ I_Txt(8) = &quot;Sair&quot;
+ I_Txt(9) = Chr(13) &amp; &quot;◘ Você fez alguma modificação na imagem?&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot; 1.-Mude para o próximo ou anterior&quot; &amp; Chr(13) &amp; &quot; 2.- Volte para verificar se as alterações foram aplicadas.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;– As figuras não aparecem na sequência de aparição no documento&quot; &amp; Chr(13) &amp; &quot;◘ Você alterou a ordem das figuras, adicionou ou excluiu imagens?&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot; 1.- Salve as alterações&quot; &amp; Chr(13) &amp; &quot; 2.- Recarregue o documento&quot; &amp; Chr(13) &amp; &quot; 3.-Renome imagens e molduras&quot;
+ I_Txt(10) = &quot;Descrição do quadro&quot;
+ I_Txt(11) = &quot;Descrição da imagem&quot;
+ I_Txt(12) = &quot;Ancoragem&quot;
+ I_Txt(13) = &quot;Para o parágrafo&quot;
+ I_Txt(14) = &quot;Como caractere&quot;
+ I_Txt(15) = &quot;Para a página&quot;
+ I_Txt(16) = &quot;Para o quadro&quot;
+ I_Txt(17) = &quot;Para o caractere&quot;
+ I_Txt(18) = &quot;Nome da Imagem: &quot;
+ I_Txt(19) = &quot;Primeira imagem&quot;
+ I_Txt(20) = &quot;Primeira e última imagem&quot; &apos;pendiente de usar o no
+ I_Txt(21) = &quot;Última imagem&quot;
+ I_Txt(22) = &quot;Imagem recortada com Writer&quot; &amp; Chr(13) &amp; &quot; - Use outro programa para recortar&quot;
+ I_Txt(23) = &quot;Imagem sem recorte&quot;
+ I_Txt(24) = &quot;Verifique a escala da imagem&quot;
+ I_Txt(25) = &quot;Escala correta de imagen&quot;
+ I_Txt(26) = &quot;Imagem sem quadro&quot;
+ I_Txt(27) = &quot;As imagens foram excluídas ou adicionadas&quot; &amp; Chr(13) &amp; &quot;1) Salve alterações&quot; &amp; Chr(13) &amp; &quot;2) Recarrege o arquivo&quot; &amp; Chr(13) &amp; &quot;3) Renomeie as imagens novamente.&quot;
+ I_Txt(28) = &quot;Revisão de imagens interrompida&quot;
+ I_Txt(29) = &quot;Revisão concluída.&quot; &apos;NO usado?
+ I_Txt(30) = &quot;O nome da imagem não pode ficar vazio&quot;
+ I_Txt(31) = Chr(13) &amp; &quot;Erro: -1 Nome duplicado?&quot; &amp; Chr(13) &amp; &quot;Tente outro&quot;
+ I_Txt(32) = &quot;Em processamento ...&quot;
+ I_Txt(33) = &quot;Esta macro não funciona isoladamente.&quot; &amp; Chr(13) &amp; &quot;Es executada a partir do diálogo&quot;
+ I_Txt(34) = &quot;Primeiro de tudo você deve salvar o documento&quot;
+ I_Txt(35) = &quot;Todas as imagens foram excluídas&quot;
+ I_Txt(36) = &quot;Error N. &quot;
+ I_Txt(37) = &quot;Erro: 1 - Um objeto pode ser selecionado: imagem, quadro, etc.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Coloque o cursor em um trecho de texto e tente novamente&quot;
+ I_Txt(38) = &quot;Erro: 91 - Você pode estar em um comentário&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Coloque o cursor em um trecho de texto e tente novamente&quot;
+ I_Txt(39) = &quot;Não há imagems no documento&quot;
+ I_Txt(40) = &quot;Imagens ajustadas&quot;
+ I_Txt(41) = &quot;Ajustando imagens e quadros&quot;
+ I_Txt(42) = &quot;Quadros ajustados&quot;
+ I_Txt(43) = &quot;Descrições aplicadas a quadros&quot;
+ I_Txt(44) = &quot;Descrições aplicadas a imagens&quot;
+ I_Txt(45) = &quot;Possível quadro sem imagem ou legenda acima da imagem&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Revise este quadro e seu conteúdo&quot;
+ I_Txt(46) = &quot;Texto da legenda mal formado.&quot; &amp; Chr(13) &amp; &quot;Figura X: e &quot;&quot;espaço&quot;&quot;?&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Verifique a legenda e as descrições dos quadros e das imagens&quot;
+ I_Txt(47) = &quot;A imagem foi cortada com o Writer.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Use outro programa para as culturas&quot;
+ I_Txt(48) = &quot;Verifique a escala:&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Caixa de diálogo &quot;&quot;Imagem&quot;&quot;, guia &quot;&quot;Cortar&quot;&quot;&quot; &amp; Chr(13) &amp; &quot;(% Largura deve ser igual a % Altura)&quot;
+ I_Txt(49) = &quot;Pendiente texto ayuda&quot;
+ Rem --- Macro Leyendas
+ I_Txt(50) = &quot;Apenas legendas devem ser colocadas acima das imagens&quot; &amp; Chr(13) &amp; &quot;para formato Web. Se as legendas estiverem no topo, a macro&quot; &amp; Chr(13) &amp; &quot;ajustar imagens e quadros não funcionará corretamente&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Você realmente quer alternar a ordem das lendas?&quot;
+ I_Txt(51) = &quot;A situação das legendas não foi alterada&quot;
+ I_Txt(52) = &quot;Situação das legendas alterada&quot;
+ I_Txt(53) = &quot;Não há quadros no documento&quot;
+
+ case else
+ I_Txt(0) = &quot;Image Review&quot;
+ I_Txt(1) = &quot;Change&quot;
+ I_Txt(2) = &quot;As Character&quot;
+ I_Txt(3) = &quot;Change/Assign&quot;
+ I_Txt(4) = &quot;From Marco&quot;
+ I_Txt(5) = &quot;Edit (external)&quot;
+ I_Txt(6) = &quot;&lt; Previous&quot;
+ I_Txt(7) = &quot;Next &gt;&quot;
+ I_Txt(8) = &quot;Exit&quot;
+ I_Txt(9) = Chr(13) &amp; &quot; ◘ Have you made any modifications to the image?&quot; &amp; Chr(13) &amp; &quot; 1.-Change to the next or previous&quot; &amp; Chr(13) &amp; &quot; 2.- Go back to check to see if the changes have been applied.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot; – Figures do not appear in the sequence of appearance in the document&quot; &amp; Chr(13) &amp; &quot;◘ Have you changed the order of the figures? Have you added or deleted images?&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot; 1.- Save the changes&quot; &amp; Chr(13) &amp; &quot; 2.- Reload the document&quot; &amp; Chr(13) &amp; &quot; 3.- Rename images and frames&quot;
+ I_Txt(10) = &quot;Frame Description&quot;
+ I_Txt(11) = &quot;Image description&quot;
+ I_Txt(12) = &quot;Anchorage&quot;
+ I_Txt(13) = &quot; To Paragraph&quot;
+ I_Txt(14) = &quot; As Character&quot;
+ I_Txt(15) = &quot; To Page&quot;
+ I_Txt(16) = &quot; To Frame&quot;
+ I_Txt(17) = &quot; To Character&quot;
+ I_Txt(18) = &quot;Image Name: &quot;
+ I_Txt(19) = &quot;First Image&quot;
+ I_Txt(20) = &quot;First and last Image&quot; &apos;pendiente de usar
+ I_Txt(21) = &quot;Last Image&quot;
+ I_Txt(22) = &quot;Image cropped with Writer&quot; &amp; Chr(13) &amp; &quot; - Use another program for cropping&quot;
+ I_Txt(23) = &quot;No cropped Image&quot;
+ I_Txt(24) = &quot;Check the Image scale&quot;
+ I_Txt(25) = &quot;Correct Image scale&quot;
+ I_Txt(26) = &quot;Image without Frame&quot;
+ I_Txt(27) = &quot;Images have been deleted or incorporated&quot; &amp; Chr(13) &amp; &quot;1) Save changes&quot; &amp; Chr(13) &amp; &quot;2) Reload the file.&quot; &amp; Chr(13) &amp; &quot;3) Rename the images again.&quot;
+ I_Txt(28) = &quot;Images review halted&quot;
+ I_Txt(29) = &quot;Revision finished &quot; &apos;NO usado
+ I_Txt(30) = &quot;The image name cannot be empty&quot;
+ I_Txt(31) = Chr(13) &amp; &quot;Err: -1 Duplicate name?&quot; &amp; Chr(13) &amp; &quot;Try another one&quot;
+ I_Txt(32) = &quot;Working ...&quot;
+ I_Txt(33) = &quot;This macro does not work in isolation.&quot; &amp; Chr(13) &amp; &quot;Executed from an dialog.&quot;
+ I_Txt(34) = &quot;First of all You must to save the document&quot;
+ I_Txt(35) = &quot;All images have been deleted&quot;
+ I_Txt(36) = &quot;Error N. &quot;
+ I_Txt(37) = &quot;Err: 1 - An object may be selected: image, frame, etc.&quot; &amp; chr(13) &amp; chr(13) &amp; &quot;Place the cursor on a piece of text and try again&quot;
+ I_Txt(38) = &quot;Err: 91 - You may be in a comment&quot; &amp; Chr(13) &amp; chr(13) &amp; &quot;Place the cursor on a piece of text and try again&quot;
+ I_Txt(39) = &quot;There are not images in the document&quot;
+ I_Txt(40) = &quot;Images adjusted &quot;
+ I_Txt(41) = &quot;Adjusting images and frames&quot;
+ I_Txt(42) = &quot;Frames adjusted&quot;
+ I_Txt(43) = &quot;Descriptions applied to frames&quot;
+ I_Txt(44) = &quot;Descriptions applied to images&quot;
+ I_Txt(45) = &quot;Possible frame without image, or caption above the image&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Review this frame and its contents&quot;
+ I_Txt(46) = &quot;Badly formed legend text.&quot; &amp; Chr(13) &amp; &quot;Figure X: and &apos;space&apos;?&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Check the legend and frame and image descriptions&quot;
+ I_Txt(47) = &quot;Image was cropped with Writer.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Use another program for the crops&quot;
+ I_Txt(48) = &quot;Check the Scale:&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;&quot;&quot;Image&quot;&quot; dialog, &quot;&quot;Crop&quot;&quot; Tab&quot; &amp; Chr(13) &amp; &quot;(% Width must be equal to % Height)&quot;
+ I_Txt(49) = &quot;Pendiente texto ayuda&quot;
+ Rem --- Macro Leyendas
+ I_Txt(50) = &quot;Only captions should be placed above images&quot; &amp; Chr(13) &amp; &quot;for Web format. If the legends are on top, the macro&quot; &amp; Chr(13) &amp; &quot;to fit images and frames will not work correctly&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Do you really want to toggle the order of the legends?&quot;
+ I_Txt(51) = &quot;The order of the legends has not been altered&quot;
+ I_Txt(52) = &quot;Caption situation changed&quot;
+ I_Txt(53) = &quot;There are not Frames in the document&quot;
+
+ End select
+End sub
+
+
+ REM ############
+Sub Trad_Renombrar
+
+ Call Comunes.Carga_Tools
+ Select Case GetStarOfficeLocale.language()&apos;F_getlang()
+
+ case &quot;es&quot;
+ Ren_Txt(0) = &quot;RenombrarObjetos&quot;
+ Ren_Txt(1) = &quot;Salir&quot;
+ Ren_Txt(2) = &quot;&lt; Volver&quot;
+ Ren_Txt(3) = &quot;Renombrar&quot;
+ Ren_Txt(4) = &quot;Renombra los elementos seleccionados en la secuencia de aparición. Se utiliza el prefijo adecuado (img_, frm_, tb_, y toc_) + los seis primeros caracteres del nombre de archivo + separador + número de 3 dígitos.&quot; &amp; Chr(13) &amp; &quot;Ejemplo imagen 1 del cap 3 de la guía de Draw :&quot; &amp; Chr(13) &amp; &quot; &quot;&quot;img_DG7603-001&quot;&quot; &quot;
+ Ren_Txt(5) = &quot;Selecciona elementos para renombrar&quot;
+ Ren_Txt(6) = &quot;Imágenes&quot;
+ Ren_Txt(7) = &quot;Tablas&quot;
+ Ren_Txt(8) = &quot;Marcos&quot;
+ Ren_Txt(9) = &quot;Índice&quot;
+ Ren_Txt(10) = &quot;&quot;
+ Ren_Txt(11) = &quot;&quot;
+ Ren_Txt(12) = &quot;En el documento no hay &quot;
+ Ren_Txt(13) = &quot;Renombrado(a)s&quot;
+ Ren_Txt(14) = &quot;No hay sumarios o hay más de uno&quot;
+ Ren_Txt(15) = &quot;Sumario renombrado&quot;
+ Ren_Txt(16) = &quot;Primero tienes que guardar el documento&quot;
+
+ case &quot;pt&quot;
+ Ren_Txt(0) = &quot;Renomear objetos&quot;
+ Ren_Txt(1) = &quot;Sair&quot;
+ Ren_Txt(2) = &quot;&lt; Voltar&quot;
+ Ren_Txt(3) = &quot;Renomear&quot;
+ Ren_Txt(4) = &quot;Renomeia os elementos selecionados na sequência de aparência. O prefixo apropriado é usado (img_, frm_, tb_ e toc_) + os primeiros seis caracteres do nome do arquivo + separador + número de 3 dígitos.&quot; &amp; Chr(13) &amp; &quot;Exemplo de imagem 1 do capítulo 3 do guia do Draw:&quot; &amp; Chr(13) &amp; &quot; &quot;&quot;img_DG7603-001&quot;&quot; &quot;
+ Ren_Txt(5) = &quot;Selecione os elementos para renomear&quot;
+ Ren_Txt(6) = &quot;Imagens&quot;
+ Ren_Txt(7) = &quot;Tabelas&quot;
+ Ren_Txt(8) = &quot;Quadros&quot;
+ Ren_Txt(9) = &quot;Índice&quot;
+ Ren_Txt(10) = &quot;&quot;
+ Ren_Txt(11) = &quot;&quot;
+ Ren_Txt(12) = &quot;No documento não há &quot;
+ Ren_Txt(13) = &quot; Renomeado(a)s&quot;
+ Ren_Txt(14) = &quot;Não há índices ou há mais de 1 índice&quot;
+ Ren_Txt(15) = &quot;Índice renomeado&quot;
+ Ren_Txt(16) = &quot;Primeiro de tudo você deve salvar o documento&quot;
+
+ case else
+ Ren_Txt(0) = &quot;Rename Objects&quot;
+ Ren_Txt(1) = &quot;Exit&quot;
+ Ren_Txt(2) = &quot;&lt; Back&quot;
+ Ren_Txt(3) = &quot;Rename&quot;
+ Ren_Txt(4) =&quot;Renames the selected elements in the appearance sequence. The appropriate prefix is used (img_, frm_, tb_, and toc_) + the first six characters of the file name + separator + 3-digit number.&quot; &amp; Chr(13) &amp; &quot;Example image 1 of chapter 3 of the Draw guide:&quot; &amp; Chr(13) &amp; &quot; &quot;&quot;img_DG7603-001&quot;&quot; &quot;
+ Ren_Txt(5) = &quot;Select elements to rename&quot;
+ Ren_Txt(6) = &quot;Images&quot;
+ Ren_Txt(7) = &quot;Tables&quot;
+ Ren_Txt(8) = &quot;Frames&quot;
+ Ren_Txt(9) = &quot;Index&quot;
+ Ren_Txt(10) = &quot;&quot;
+ Ren_Txt(11) = &quot;&quot;
+ Ren_Txt(12) = &quot;There are not &quot;
+ Ren_Txt(13) = &quot; Renamed&quot;
+ Ren_Txt(14) = &quot;There are not tables of contents or there are more than 1 indexes&quot;
+ Ren_Txt(15) = &quot;Table of contents Renamed&quot;
+ Ren_Txt(16) = &quot;First of all You must to save the document&quot;
+
+ End Select
+End sub
+
+ REM ############
+Sub Trad_Resaltes
+
+ Call Comunes.Carga_Tools
+ Select Case GetStarOfficeLocale.language()&apos;F_getlang()
+
+ case &quot;es&quot;
+ R_Txt(0) = &quot;Resaltado de estilos&quot;
+ R_Txt(1) = &quot;La definición de estilos contiene errores&quot;
+ R_Txt(2) = &quot;Detalles&quot;
+ R_Txt(3) = &quot;Estilos de párrafo&quot;
+ R_Txt(4) = &quot;Estilos de carácter&quot;
+ R_Txt(5) = &quot;Estilos no existen en el documento&quot;
+ R_Txt(6) = &quot;Errores de sintáxis&quot;
+ R_Txt(7) = &quot;Estilos sin resalte&quot;
+ R_Txt(8) = &quot;Estilos resaltados&quot;
+ R_Txt(9) = &quot;Recuerda quitar resaltes al finalizar la revisión&quot;
+ R_Txt(10) = &quot;Párrafo&quot;
+ R_Txt(11) = &quot;Carácter&quot;
+ R_Txt(12) = &quot;No modificado&quot;
+ R_Txt(13) = &quot; - Error en definición del estilo, ¿falta &quot;&quot;Color&quot;&quot;?&quot;
+ R_Txt(14) = &quot; - &quot;&quot;Linea&quot;&quot;, solo puede ser 1 (Sencilla), 2 (Doble) o 12 (Gruesa)&quot;
+ R_Txt(15) = &quot; - no se ha indicado tipo de linea&quot;
+ R_Txt(16) = &quot; - para &quot;&quot;Subrayado&quot;&quot; no se admite un segundo color&quot;
+ R_Txt(17) = &quot; - El color sólo puede ser &quot;&quot; Auto &quot;&quot; (para Automático) o un valor numérico&quot;
+ R_Txt(18) = &quot; - falta el color para el subrayado (Color2)&quot;
+ R_Txt(19) = &quot; - para &quot;&quot;Resalte&quot;&quot;, solo se admite F (Fondo), L (Letra) o S (Subrayado)&quot;
+
+ case &quot;pt&quot;
+ R_Txt(0) = &quot;Destaque de estilos&quot;
+ R_Txt(1) = &quot;A definição do estilos contém erros&quot;
+ R_Txt(2) = &quot;Detalhes&quot;
+ R_Txt(3) = &quot;Estilos de parágrafo&quot;
+ R_Txt(4) = &quot;Estilos de caractere&quot;
+ R_Txt(5) = &quot;Estilos não existen no documento&quot;
+ R_Txt(6) = &quot;Erros de sintaxe&quot;
+ R_Txt(7) = &quot;Estilos sem destaque&quot;
+ R_Txt(8) = &quot;Estilos destacados&quot;
+ R_Txt(9) = &quot;Lembre-se de remover os destaques quando terminar a revisão&quot;
+ R_Txt(10) = &quot;Parágrafo&quot;
+ R_Txt(11) = &quot;Caractere&quot;
+ R_Txt(12) = &quot;Não modificado&quot;
+ R_Txt(13) = &quot; - Erro na definição do estilo, falta &quot;&quot;Cor&quot;&quot;?&quot;
+ R_Txt(14) = &quot;- &quot;&quot;Linha&quot;&quot;, só pode ser 1 (Simple), 2 (Duplo) ou 12 (Espesso)&quot;
+ R_Txt(15) = &quot;- nenhum tipo de linha foi indicado&quot;
+ R_Txt(16) = &quot; - para &quot;&quot;Sublinhado&quot;&quot; uma segunda cor não é suportada&quot;
+ R_Txt(17) = &quot; - A cor só pode ser &quot;&quot;Auto&quot;&quot; (para Automático) ou um valor numérico&quot;
+ R_Txt(18) = &quot;- falta cor para sublinhado (Color2)&quot;
+ R_Txt(19) = &quot; - para &quot;&quot;Destaque&quot;&quot;, apenas F (fundo), L (letra) ou S (sublinhado) é suportado&quot;
+
+ case else
+ R_Txt(0) = &quot;Style highlighting&quot;
+ R_Txt(1) = &quot;The styles definition contains errors.&quot;
+ R_Txt(2) = &quot;Detail&quot;
+ R_Txt(3) = &quot;Paragraph styles&quot;
+ R_Txt(4) = &quot;Character Styles&quot;
+ R_Txt(5) = &quot;Styles not in document&quot;
+ R_Txt(6) = &quot;Sintax Errors&quot;
+ R_Txt(7) = &quot;7 Unhighligted Styles&quot;
+ R_Txt(8) = &quot;8-Higlighted Styles&quot;
+ R_Txt(9) = &quot;Remember to remove highlights at the end of the revision.&quot;
+ R_Txt(10) = &quot;Paragraph&quot;
+ R_Txt(11) = &quot;Character&quot;
+ R_Txt(12) = &quot;Unmodified&quot;
+ R_Txt(13) = &quot; - Error in style definition, is &quot;&quot;Color&quot;&quot; missing?&quot;
+ R_Txt(14) = &quot; - &quot;&quot;Line&quot;&quot;, can only be 1 (Single), 2 (Double) or 12 (Thick)&quot;
+ R_Txt(15) = &quot; - no line type has been indicated&quot;
+ R_Txt(16) = &quot; - for &quot;&quot;Underline&quot;&quot; a second color is not supported&quot;
+ R_Txt(17) = &quot; - The color can only be &quot;&quot;Auto&quot;&quot; (for Automatic) or a numeric value&quot;
+ R_Txt(18) = &quot; - missing color for underline (Color2)&quot;
+ R_Txt(19) = &quot; - for &quot;&quot;Highlight&quot;&quot;, only F (Background), L (Letter), or S (Underline) is supported&quot;
+
+ End select
+End sub
+
+
+ REM ############
+Sub Trad_Tablas
+ Call Comunes.Carga_Tools
+ Select Case GetStarOfficeLocale.language()&apos;F_getlang()
+
+ case &quot;es&quot;
+ T_Txt(0) = &quot;Revisión de Tablas&quot;
+ T_Txt(1) = &quot;Nombre:&quot;
+ T_Txt(2) = &quot;Estilo&quot;
+ T_Txt(3) = &quot;Tipo de tabla&quot;
+ T_Txt(4) = &quot;Datos&quot;
+ T_Txt(5) = &quot;Distribución&quot;
+ T_Txt(6) = &quot;Selecciona un tipo de tabla para optimizar y pulsa &quot;&quot;Optimizar&quot;&quot;, o pulsa en &quot;&quot;Siguiente&quot;&quot; para omitir la modificación de la tabla&quot;
+ T_Txt(7) = &quot;&lt; Anterior&quot;
+ T_Txt(8) = &quot;Optimizar&quot;
+ T_Txt(9) = &quot;Optimizada&quot;
+ T_Txt(10) = &quot;Siguiente &gt;&quot;
+ T_Txt(11) = &quot;Salir&quot;
+ T_Txt(12) = &quot;Última Tabla&quot;
+ T_Txt(13) = &quot;Primera tabla&quot;
+ T_Txt(14) = &quot;No hay tablas en el documento&quot;
+ T_Txt(15) = &quot;Selecciona un tipo de tabla o pulsa en Siguiente&quot;
+ T_Txt(16) = &quot;Err: 1 - Es posible que esté seleccionado un objeto: imagen, marco, etc.&quot; &amp; chr(13) &amp; chr(13) &amp; &quot;Coloca el cursor en un fragmento de texto y prueba de nuevo&quot;
+ T_Txt(17) = &quot;Err: 91 - Es posible que estés en un comentario&quot; &amp; Chr(13) &amp; chr(13) &amp; &quot;Coloca el cursor en un fragmento de texto y prueba de nuevo&quot;
+ T_Txt(18) = &quot;Se han borrado o añadido tablas&quot; &amp; Chr(13) &amp; &quot;1) Guarda los cambios&quot; &amp; Chr(13) &amp; &quot;2) Recarga el documento&quot; &amp; Chr(13) &amp; &quot;3) Renombra las tablas otra vez.&quot;
+ T_Txt(19) = &quot;Revisión de tablas detenida&quot;&apos;
+ T_Txt(20) = &quot;Se aplica el estilo &quot;&quot;LO_Guides&quot;&quot; a la tabla, se ajusta la anchura al 90%, se centra y optimiza: &quot;
+ T_Txt(21) = &quot;La tabla conservará su aspecto, pero se optimizará: &quot;
+ T_Txt(22) = &quot; - Espaciado de la tabla con el cuerpo de texto, celdas con alineación vertical centrada y altúra mínima.&quot;
+ T_Txt(23) = &quot;Única tabla&quot;
+ T_Txt(24) = &quot;Primero tienes que guardar el documento&quot;
+ T_Txt(25) = &quot;Se han borrado todas las tablas, imposible continuar&quot;
+ T_Txt(26) = &quot;Esta macro no funciona aislada.&quot; &amp; Chr(13) &amp; &quot; Se ejecuta desde un diálogo&quot;
+
+ case &quot;pt&quot;
+ T_Txt(0) = &quot;Revisão de Tabelas&quot;
+ T_Txt(1) = &quot;Nome: &quot;
+ T_Txt(2) = &quot;Estilo&quot;
+ T_Txt(3) = &quot;Tipo de tabela&quot;
+ T_Txt(4) = &quot;Datos&quot;
+ T_Txt(5) = &quot;Distribuição&quot;
+ T_Txt(6) = &quot;Selecione um tipo de tabela para otimizar e clique em &quot;&quot;Otimizar&quot;&quot; ou clique em &quot;&quot;Próxima&quot;&quot; para pular a modificação da tabela&quot;
+ T_Txt(7) = &quot;&lt; Anterior&quot;
+ T_Txt(8) = &quot;Otimizar&quot;
+ T_Txt(9) = &quot;Otimizada&quot;
+ T_Txt(10) = &quot;Próxima &gt;&quot;
+ T_Txt(11) = &quot;Sair&quot;
+ T_Txt(12) = &quot;Última tabela&quot;
+ T_Txt(13) = &quot;Primeira tabela&quot;
+ T_Txt(14) = &quot;No ha tabelas no Documento&quot;
+ T_Txt(15) = &quot;Selecione um tipo de tabela ou pressione Próxima&quot;
+ T_Txt(16) = &quot;Erro: 1 - Um objeto pode ser selecionado: imagem, quadro, etc.&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Coloque o cursor em um trecho de texto e tente novamente&quot;
+ T_Txt(17) = &quot;Erro: 91 - Você pode estar em um comentário&quot; &amp; Chr(13) &amp; Chr(13) &amp; &quot;Coloque o cursor em um trecho de texto e tente novamente&quot;
+ T_Txt(18) = &quot;Foram excluídas ou adicionadas tabelas&quot; &amp; Chr(13) &amp; &quot;1) Salve asalterações&quot; &amp; Chr(13) &amp; &quot;2) Recarrege o documento&quot; &amp; Chr(13) &amp; &quot;3) Renomeie as tabelas novamente.&quot;
+ T_Txt(19) = &quot;Revisão da tabelas interrompida&quot;
+ T_Txt(20) = &quot;O estilo &quot;&quot;LO_Guides&quot;&quot; é aplicado à tabela, a largura é definida como 90%, centralizada e otimizada: &quot;
+ T_Txt(21) = &quot;A tabela manterá sua aparência, mas será otimizada: &quot;
+ T_Txt(22) = &quot; - Espaçamento da tabela com o corpo do texto, células com alinhamento vertical centralizado e altura mínima.&quot;
+ T_Txt(23) = &quot;Única tabela&quot;
+ T_Txt(24) = &quot;Primeiro de tudo você deve salvar o documento&quot;
+ T_Txt(25) = &quot;Todas as tabelas foram excluídas, impossível continuar&quot;
+ T_Txt(26) = &quot;Esta macro não funciona isoladamente.&quot; &amp; Chr(13) &amp; &quot;É executada a partir de uma caixa de diálogo&quot;
+
+ case else
+ T_Txt(0) =&quot;Tables Review&quot;
+ T_Txt(1) =&quot;Name: &quot;
+ T_Txt(2) =&quot;Style&quot;
+ T_Txt(3) =&quot;Table type&quot;
+ T_Txt(4) =&quot;Data&quot;
+ T_Txt(5) =&quot;Distribution&quot;
+ T_Txt(6) =&quot;Select a type of table to optimize and click &quot;&quot;Optimize&quot;&quot; or click &quot;&quot;Next&quot;&quot; to skip modifying the table&quot;
+ T_Txt(7) =&quot;&lt; Previous&quot;
+ T_Txt(8) =&quot;Optimize&quot;
+ T_Txt(9) =&quot;Optimized&quot;
+ T_Txt(10) =&quot;Next &gt;&quot;
+ T_Txt(11) =&quot;Exit&quot;
+ T_Txt(12) =&quot;Last Table&quot;
+ T_Txt(13) =&quot;First Table&quot;
+ T_Txt(14) =&quot;There are not Tables in the document&quot;
+ T_Txt(15) = &quot;Select a table type or press Next&quot;
+ T_Txt(16) = &quot;Err: 1 - An object may be selected: image, frame, etc.&quot; &amp; chr(13) &amp; chr(13) &amp; &quot;Place the cursor on a piece of text and try again&quot;
+ T_Txt(17) = &quot;Err: 91 - You may be in a comment&quot; &amp; Chr(13) &amp; chr(13) &amp; &quot;Place the cursor on a piece of text and try again&quot;
+ T_Txt(18) = &quot;Tables have been deleted or added&quot; &amp; Chr(13) &amp; &quot;1) Save changes&quot; &amp; Chr(13) &amp; &quot;2) Reload the document&quot; &amp; Chr(13) &amp; &quot;3) Rename the tables again.&quot;
+ T_Txt(19) = &quot;Tables review halted&quot;
+ T_Txt(20) = &quot;The &quot;&quot;LO_Guides&quot;&quot; style is applied to the table, the width is set to 90%, centered and optimized: &quot;
+ T_Txt(21) = &quot;The table will retain its appearance, but will be optimized: &quot;
+ T_Txt(22) = &quot; - Spacing of the table with the body of text, cells with centered vertical alignment and minimum height.&quot;
+ T_Txt(23) = &quot;Table unique&quot;
+ T_Txt(24) = &quot;First of all You must to save the document&quot;
+ T_Txt(25) = &quot;All tables have been deleted, impossible to continue&quot;
+ T_Txt(26) = &quot;This macro did not work in isolation.&quot; &amp; Chr(13) &amp; &quot; Executed from a dialog&quot;
+
+ End Select
+End sub
+
+ REM ############
+Function F_getLang as string
+ Call Comunes.Carga_Tools
+ F_getLang = GetStarOfficeLocale.language
+end function
+
+
+</script:module>
diff --git a/userguides/sanitycheck/SanityCheck/Renombrar.xba b/userguides/sanitycheck/SanityCheck/Renombrar.xba
new file mode 100644
index 00000000..ae85866f
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/Renombrar.xba
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Renombrar" script:language="StarBasic" script:moduleType="normal">REM ***** BASIC Módulo Renombrar *****
+Option Explicit
+
+ Const Extension as string = &quot;Revisiones v 1.0.0&quot;
+ Dim oDlgRenombrar
+
+
+ Rem ############
+Sub Dlg_Renombrar
+&apos; Dim oDlgRenombrar
+ Call L10n.Trad_Renombrar
+ If Thiscomponent.HasLocation = false then : Msgbox (Ren_Txt(16),0+48+0,Extension) : Exit Sub : End If
+ DialogLibraries.loadLibrary(&quot;SanityCheck&quot;)
+ oDlgRenombrar = CreateUnoDialog(DialogLibraries.getByName(&quot;SanityCheck&quot;).getByName(&quot;DlgRenombrar&quot;))
+ &apos; If Not IsMissing(paso) then: oDlgAsist.Model.Step(paso): else: oDlgAsist.Model.Step(1): end if
+ With oDlgRenombrar.Model
+ .Title = Ren_Txt(0)
+ .Step = 1
+ .getbyname(&quot;Btn_Salir&quot;).Label = Ren_Txt(1)
+ .getbyname(&quot;Btn_Volver&quot;).Label = Ren_Txt(2)
+ .getbyname(&quot;Btn_Renombrar&quot;).Label = Ren_Txt(3)
+ .getByName(&quot;Lbl_P_Info&quot;).Label = Ren_Txt(4)
+ .getbyName(&quot;Lbl_Selec&quot;).Label = Ren_Txt(5)
+ .getbyName(&quot;Ch_Imgs&quot;).Label = Ren_Txt(6)
+ .getbyName(&quot;Ch_Tablas&quot;).Label = Ren_Txt(7)
+ .getbyName(&quot;Ch_Marcos&quot;).Label = Ren_Txt(8)
+ .getbyName(&quot;Ch_Indice&quot;).Label = Ren_Txt(9)
+ .getbyname(&quot;Tx_Registro&quot;).Text = Ren_Txt(10)
+ End With
+ oDlgRenombrar.execute
+End Sub
+
+ Rem ############
+Sub Casillas_Renombrar(oEv)
+
+ oDlg = oEv.Source.Context
+ Dim Imgs, Marcos, Tablas, Indice, suma
+ With oDlg.getModel
+ Imgs = .getbyname(&quot;Ch_Imgs&quot;).State
+ Tablas = .getbyname(&quot;Ch_Tablas&quot;).State
+ Marcos = .getbyname(&quot;Ch_Marcos&quot;).State
+ Indice = .getbyname(&quot;Ch_Indice&quot;).State
+ suma = Imgs + Marcos + Tablas + Indice
+
+ If suma &lt;&gt; 0 then
+ .getbyname(&quot;Btn_Renombrar&quot;).State = 1
+ else
+ .getbyname(&quot;Btn_Renombrar&quot;).State = 0
+ End If
+ End With
+End Sub
+
+ Rem ############
+Sub OnBtn_Volver(oEv)
+
+ oDlg = oEv.Source.Context
+ oDlg.Model.Step = 1
+End sub
+
+ Rem ############
+Sub OnBtn_Renombrar(oEv)
+
+ oDlg = oEv.Source.Context
+ Dim Imgs , Marcos, Tablas, Indice, s
+ With oDlg.Model
+ s = .getbyname(&quot;Tx_Registro&quot;).Text
+ Imgs = .getbyname(&quot;Ch_Imgs&quot;).State
+ Tablas = .getbyname(&quot;Ch_Tablas&quot;).State
+ Marcos = .getbyname(&quot;Ch_Marcos&quot;).State
+ Indice = .getbyname(&quot;Ch_Indice&quot;).State
+ End With
+
+ Dim suma as integer : suma = Imgs + Marcos + Tablas + Indice
+ If suma = 0 then : Msgbox (Ren_Txt(5), 0+64+0, Extension ) : Exit Sub : end If
+ If Imgs = 1 then : s = s &amp; F_Renombra(&quot;Imagenes&quot;) &amp; Chr(13) : End If
+ If Tablas = 1 then : s = s &amp; F_Renombra(&quot;Tablas&quot;) &amp; Chr(13) : End If
+ If Marcos = 1 then : s = s &amp; F_Renombra(&quot;Marcos&quot;) &amp; Chr(13) : End If
+ If Indice = 1 then : s = s &amp; F_Renombra_Indice &amp; Chr(13) : End If
+
+ With Odlg.Model
+ .getbyname(&quot;Tx_Registro&quot;).Text = s
+ .getbyname(&quot;Ch_Imgs&quot;).State = 0
+ .getbyname(&quot;Ch_Tablas&quot;).State = 0
+ .getbyname(&quot;Ch_Marcos&quot;).State = 0
+ .getbyname(&quot;Ch_Indice&quot;).State = 0
+ .Step = 2
+ End With
+End Sub
+
+
+Sub Corregir_Nombres
+ F_Renombra(&quot;Imagenes&quot;,&quot;$&quot;)
+&apos; F_Renombra(&quot;Imagenes&quot;)
+
+end Sub
+
+ Rem ############
+Function F_Renombra(Objetos as String, Optional separador ) As String
+
+ If Thiscomponent.HasLocation = false then : Msgbox (Ren_Txt(16),0+48+0, &quot;Error&quot;) : Exit Function : End If
+ If IsMissing(separador) then : separador = &quot;-&quot; : End if
+ Call Comunes.Carga_Tools
+
+ Dim oDoc as Object : oDoc = ThisComponent
+ Dim Items as Object, prefijo as String
+
+ Dim Traduc as String
+ If Objetos = &quot;Imagenes&quot; then : Items = oDoc.GraphicObjects() : prefijo = &quot;img_&quot; : Traduc = Ren_Txt(6) : end if
+ If Objetos = &quot;Tablas&quot; then : Items = ThisComponent.TextTables() : prefijo = &quot;tb_&quot; : Traduc = Ren_Txt(7) : end if
+ If Objetos = &quot;Marcos&quot; then : Items = oDoc.TextFrames() : prefijo = &quot;fram_&quot; : Traduc = Ren_Txt(8) : end if
+ If Items.getCount() = 0 then
+ F_Renombra = Ren_Txt(12) &amp; Objetos
+ Exit Function
+ End If
+
+ Dim n_archivo as string, nombre as String, contador as String
+ Dim oItem as Object, i as Integer
+ n_archivo = ConvertFromURL(GetFileNameWithoutExtension(oDoc.getURL(), &quot;/&quot;))
+ n_archivo = Left(n_archivo,6)
+
+ For i = 0 to Items.Count-1
+ oItem = Items.getByIndex(i)
+ If i &lt; 10 Then : Contador = &quot;00&quot; &amp; cStr(i)
+ elseif i &lt; 100 then : Contador = &quot;0&quot; &amp; cStr(i)
+ else : Contador = &quot;&quot; &amp; cStr(i)
+ End if
+ nombre = prefijo &amp; Replace(n_archivo,&quot; &quot;,&quot;&quot;) &amp; separador &amp; contador &apos;Nombres sin espacios
+ If Not Items.hasByName(nombre) Then
+ oItem.Name = nombre
+ Else
+ separador = &quot;_&quot; REM solución temporal par nombres duplicados
+ nombre = prefijo &amp; Replace(n_archivo,&quot; &quot;,&quot;&quot;) &amp; separador &amp; contador
+ oItem.Name = nombre
+ End If
+ Next
+
+ If Objetos = &quot;Imagenes&quot; then
+ oImg = Items.getbyIndex(0)
+ With oImg
+ .Name = &quot; LibreOfficeLogo&quot;
+ .Title = &quot;LibreOfficeLogo&quot;
+ If Comunes.F_LOVersion &lt;= 7.6 then : .Decorative = True : end if
+ End WIth
+ End If
+
+ F_Renombra = Traduc &amp; Ren_Txt(13)
+&apos; Msgbox ( Traduc &amp; Ren_Txt(13), 0+64+0, Extension)
+
+End Function
+
+ Rem ############
+Sub F_Renombra_Indice() As String
+
+ Call Comunes.Carga_Tools
+ Dim oDoc as Object, oIndexes as Object, nombre as String
+ oDoc = ThisComponent
+ oIndexes = ThisComponent.getDocumentIndexes()
+ nombre = Left(ConvertFromURL(GetFileNameWithoutExtension(oDoc.getURL(), &quot;/&quot;)),6)
+ If oIndexes.getCount() &lt;&gt; 1 Then
+ F_Renombra_Indice = Ren_Txt(14)
+&apos; Msgbox (Ren_Txt(14), 0+64+0, Extension)
+ Else
+ if oIndexes.getByIndex(0).supportsService(&quot;com.sun.star.text.ContentIndex&quot;) Then
+ oIndexes.getByIndex(0).Name = &quot;toc_&quot; &amp; nombre
+ oDoc.TextFields.Refresh()
+ F_Renombra_Indice = Ren_Txt(15)
+&apos; Msgbox (Ren_Txt(15), 0+64+0, Extension)
+ end If
+ End If
+End Sub
+
+ REM ================= Fin Renombrar ==================================================
+</script:module> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/Resaltes.xba b/userguides/sanitycheck/SanityCheck/Resaltes.xba
new file mode 100644
index 00000000..9d10f126
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/Resaltes.xba
@@ -0,0 +1,677 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Resaltes" script:language="StarBasic">REM ***** BASIC (&quot;Módulo Resaltes&quot;) *****
+
+ Option Explicit
+ Const Extension as string = &quot;Revisiones v 1.0.0&quot;
+ &apos;Const BASE_KEY As string = &quot;vnd.org.bantoniof.Revisiones.Configuration/&quot;
+ Const Rosado As String = &quot;250,220,230&quot; &apos; Text Body List Intro
+ Const Amar1 As String = &quot;255,228,181&quot; &apos; Lista1
+ Const Amar2 As String = &quot;255, 255, 204&quot; &apos; Lista2
+ Const Amar3 As String = &quot;240,234,214&quot; &apos; Leyendas
+ Const Verde As String = &quot;050,205,050&quot; &apos; KeyStroke
+ Const Verde1 As String = &quot;190, 220,190&quot; &apos; Num1
+ Const Verde2 As String = &quot;220, 240,220&quot; &apos; Num2
+ Const Verde3 As String = &quot;230, 250, 230&quot; &apos; Num3
+ Const Azul As String = &quot;050,170,220&quot; &apos; New Chapter
+ Const Azul1 As String = &quot;200,210,220&quot; &apos; Figura (imagenes)
+ Const Azul2 As String = &quot;210,230,245&quot; &apos; Definition Term
+ Const Azul3 As String = &quot;210,240,255&quot; &apos; Definition Term 2
+ Const Gris1 As String = &quot;240,240,240&quot; &apos; Cuerpo de texto
+ Const Gris2 As String = &quot;240,240,230&quot; &apos; Contenido de tabla
+ Const Rojo As String = &quot;255,055,000&quot; &apos; Destacado y Muy destacado
+ Const Morado As String = &quot;225,180,250&quot; &apos; Sin uso
+ Const Negro As String = &quot;001,001,001&quot; &apos; Sin uso (0, 0, 0 = Auto)
+ Const Linea As Integer = 1 &apos; sencillo= 1 ,doble = 2 , grueso= 12
+
+ Private Enum_P_Encontrados As String, Enum_C_Encontrados As String
+ Private Enum_Perdidos As String, Enum_Errores As String
+ Private i_errores As Integer, i_encontrados As Integer
+ Dim oDlgResaltes as Object, Colorea As Boolean
+
+ Rem ############
+Sub AlternarResalte
+
+ Call Comunes.Carga_Tools
+ Call L10n.Trad_Resaltes
+ If iSNull(oDlgResaltes) Then Call Resaltar
+End Sub
+
+ Rem ############
+Sub Resaltar
+
+ REM Definición de resaltes para aplicar:
+ REM Uso: CambiaParrafo o CambiaCaracter Nombre_Estilo,Resalte, Color, Linea, Color2
+ REM [&quot;Estilo&quot; [F,L o S] Color [1,2,12] Color subrayado
+ REM (La linea puede ser auto en el caso de subrayado)
+
+ Dim oEstilo As Object, i As Integer
+ Rem reinicio contadores y enumeraciones
+ Enum_P_Encontrados = &quot;&quot; : Enum_C_Encontrados = &quot;&quot; : Enum_Perdidos = &quot;&quot; : Enum_Errores = &quot;&quot;
+ i_encontrados = 0 : i_errores = 0
+
+ REM Estilo Patrón para Alternar los resaltes (Cuerpo de texto.)
+ oEstilo = ThisComponent.StyleFamilies.getByName(&quot;ParagraphStyles&quot;).getByName(&quot;Text body&quot;)
+ if oEstilo.getPropertyValue(&quot;ParaBackColor&quot;) = -1 Then
+ Colorea = True &apos;Variable para la comprobación del resaltado
+ else
+ Colorea = False
+ End If
+
+ CambiaParrafo(&quot;Text body&quot;,&quot;F&quot;,F_Conv(Gris1))
+
+&apos;== Párrafos Predeterminados ==
+ CambiaParrafo(&quot;List 1&quot;,&quot;F&quot;,F_conv(Amar1))
+ CambiaParrafo(&quot;List 2&quot;,&quot;F&quot;,F_Conv(Amar2))
+ CambiaParrafo(&quot;Numbering 1&quot;,&quot;F&quot;,F_Conv(Verde1))
+ CambiaParrafo(&quot;Numbering 2&quot;,&quot;F&quot;,F_Conv(Verde2))
+ CambiaParrafo(&quot;Numbering 3&quot;,&quot;F&quot;,F_Conv(Verde3))
+ CambiaParrafo(&quot;Table Contents&quot;,&quot;F&quot;,F_Conv(Gris2))
+ CambiaParrafo(&quot;Figure&quot;,&quot;F&quot;,F_Conv(Azul1))
+ CambiaParrafo(&quot;Caption&quot;,&quot;F&quot;,F_Conv(Amar3))
+&apos;== Caracter Predeterminados ==
+ CambiaCaracter(&quot;Emphasis&quot;,&quot;F&quot;,F_Conv(Rojo))
+ CambiaCaracter(&quot;Strong Emphasis&quot;,&quot;F&quot;,F_Conv(Rojo))
+&apos;== Parrafos Usuario ==
+ CambiaParrafo(&quot;Definition Term&quot;,&quot;F&quot;,F_Conv(Azul2))
+ CambiaParrafo(&quot;Definition Term 2&quot;,&quot;F&quot;,F_Conv(Azul3))&apos;solo fondo
+ CambiaParrafo(&quot;Text Body List Intro&quot;,&quot;F&quot;,F_Conv(Rosado))&apos;solo fondo
+ CambiaParrafo(&quot;Text Note&quot;,&quot;F&quot;,F_Conv(Gris1))&apos;solo fondo
+ CambiaParrafo(&quot;First Heading&quot;,&quot;F&quot;,F_Conv(Gris1))&apos;solo fondo
+ CambiaParrafo(&quot;New Chapter&quot;,&quot;F&quot;,F_Conv(Azul))&apos;solo fondo
+&apos;== Caracter Usuario ==
+ CambiaCaracter(&quot;Keystroke&quot;,&quot;F&quot;,F_Conv(Verde)) &apos;Color = Auto
+ CambiaCaracter(&quot;Code&quot;,&quot;S&quot;,&quot;Auto&quot;,1) &apos;Subrayado de Color Auto
+
+&apos;== Para Comprobar Errores
+&apos; CambiaParrafo (&quot;Code&quot;,&quot;J&quot;,&quot;Auto&quot;,Linea)
+&apos; CambiaCaracter (&quot;J&quot;,&quot;Auto&quot;,Linea)
+
+ Call DialogoResaltes
+End Sub
+
+ Rem ############
+Function F_Conv (Color As String ) As Long
+
+ Dim a : a() = Split(Color,&quot;,&quot;)
+ F_Conv = RGB(a(0),a(1),a(2))
+End Function
+
+ Rem ############
+Sub CambiaParrafo (Nombre As String, Resalte As String,_
+ Color , Optional Linea As String, Optional Color2 )
+&apos; =========================================================================
+ Dim oEstilos As Object, oEstilo As Object, Resalta As String, Tipo As integer
+ On Local Error GoTo CONTROL_ERRORES
+
+ &apos;por si no se olvida definir el color y se define Linea
+ If Not IsMissing (Color) And (Color = 1 Xor Color = 2 Xor Color = 12) Then
+ i_Errores = i_Errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre &amp; &quot; (&quot; &amp; R_Txt(10) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13)_
+ &amp; Chr(9) &amp; R_Txt(13) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End If
+
+ oEstilos = ThisComponent.StyleFamilies.getByName(&quot;ParagraphStyles&quot;)
+
+ If Not oEstilos.HasByName(Nombre) Then
+ Enum_Perdidos = Enum_Perdidos &amp; &quot; &quot; &amp; Nombre &amp; &quot; (&quot; &amp; R_Txt(10) &amp; &quot;)&quot; &amp; Chr(13)
+ Exit Sub
+ End If
+
+ oEstilo = oEstilos.getByName(Nombre)
+ Dim Nombre2 : Nombre2 = oEstilo.DisplayName
+
+ If Not IsMissing (Linea) Then
+ Select Case Linea
+ Case 1, 2, 12 : Tipo = Linea
+ Case Else
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(10) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13) _
+ &amp; Chr(9) &amp; R_Txt(14) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End Select
+ End If
+
+ Select case Resalte
+ Case &quot;S&quot; &apos;Subrayado
+ If IsMissing(Linea) Then
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(10) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13) _
+ &amp; Chr(9) &amp; R_Txt(15) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End If
+ If Not IsMissing(Color2) Then
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(10) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13) &amp;_
+ Chr(9) &amp; R_Txt(16) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End If
+
+ If Not isNumeric(Color) And Color &lt;&gt; &quot;Auto&quot; Then
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(10) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13) _
+ &amp; Chr(9) &amp; R_Txt(17)
+ Exit Sub
+ End If
+ If Colorea = True Then
+ If oEstilo.CharColor &lt;&gt; 0 Then &apos;Si tiene color utilizo el mismo de la letra
+ If Color = &quot;Auto&quot; Then
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,Tipo) &apos;sin color
+ Else
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,True)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,Color)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,Tipo)
+ End If
+ End If
+ ElseIf Colorea = False Then &apos; Lo comentado &apos;&apos; no es necesario
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,False)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,0)
+ End If
+
+ Case &quot;F&quot; &apos;Fondo o área
+ Resalta =&quot;ParaBackColor&quot;
+ If IsMissing (Linea) And Colorea = True Then &apos; si no se subraya.
+ oEstilo.SetPropertyValue(Resalta,Color)
+ ElseIf IsMissing (Linea) And Colorea = False Then
+ oEstilo.SetPropertyValue(Resalta,-1) &apos;ParaBackColor
+ End If
+ If Not IsMissing (Linea) And IsMissing (Color2) Then &apos; No puede faltar el color de S
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(10) &amp; &quot;): - &quot; &amp; R_Txt(12) _
+ &amp; Chr(13) &amp; R_Txt(18) &amp; Chr(13) &amp; Chr(13)
+ i_errores = i_errores + 1
+ Exit Sub
+ End If
+ If not isNumeric (Color) Then
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(10) &amp; &quot;): - &quot; &amp; R_Txt(12) _
+ &amp; Chr(13) &amp; Chr(9) &amp; R_Txt(17) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End If
+ If Not IsMissing (Linea) And Not IsMissing (Color2) Then
+ If Colorea = True Then
+ oEstilo.SetPropertyValue(Resalta,Color)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,Tipo)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,True)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,Color2)
+ ElseIf Colorea = False Then
+ oEstilo.SetPropertyValue(Resalta,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,False)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,0)
+ End If
+ End If
+
+ Case &quot;L&quot; &apos;Letra o carácter
+ Resalta =&quot;CharColor&quot;
+ If IsMissing (Linea) And Colorea = True Then &apos; si no se subraya.
+ oEstilo.SetPropertyValue(Resalta,Color)
+ ElseIf IsMissing (Linea) And Colorea = False Then
+ oEstilo.SetPropertyValue(Resalta,-1)
+ End If
+
+ If not IsNumeric (Color) Then
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(10) &amp; &quot;): - &quot; &amp; R_Txt(12) _
+ &amp; Chr(13) &amp; Chr(9) &amp; R_Txt(17) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End If
+
+ If Not IsMissing (Linea) And IsMissing (Color2) Then &apos; Subrayado Auto
+ If Colorea = True Then
+ oEstilo.SetPropertyValue(Resalta,Color)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,Tipo)
+ ElseIf Colorea = False Then
+ oEstilo.SetPropertyValue(Resalta,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,0)
+ End if
+ End If
+ If Not IsMissing (Linea) And Not IsMissing (Color2) Then &apos; Subrayado Color2
+ If Colorea = True Then
+ oEstilo.SetPropertyValue(Resalta,Color)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,Tipo)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,True)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,Color2)
+ ElseIf Colorea = False Then
+ oEstilo.SetPropertyValue(Resalta,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,False)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,0)
+ End If
+ End If
+
+ Case Else
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(10) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13) _
+ &amp; R_Txt(19) &amp; Chr(13) &amp; Chr(13)
+ i_errores = i_errores + 1
+ Exit Sub
+
+ End Select
+
+ If oEstilos.HasByName(Nombre) Then&apos; And oEstilos.GetByName(Nombre).IsUserDefined() = True Then
+ i_encontrados = i_encontrados + 1
+ Enum_P_Encontrados = Enum_P_Encontrados &amp; &quot; &quot; &amp; Nombre2 &amp; Chr(13)
+ End If
+
+CONTROL_ERRORES:
+
+ If Err &lt;&gt; 0 And Colorea = True Then
+ Select Case Err
+ Case 449 &apos;Print &quot;Error detectado por el programa, cambio descripción&quot;
+ i_Errores = i_Errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(10) &amp; &quot;): - &quot; &amp; R_Txt(12) _
+ &amp; Chr(13) &amp; Chr(9) &amp; R_Txt(13) &amp; Chr(13) &amp; Chr(13)
+ Case Else
+ Msgbox &quot;Error Nº &quot; &amp; Err &amp; Chr(13) &amp; Error &amp; Chr(13) &amp; &quot;En línea: &quot; &amp; Erl
+ End Select
+&apos; On error Goto 0 &apos; No necesaria en &quot;On Local Error&quot;
+ End If
+End Sub
+
+ Rem ############
+Sub CambiaCaracter (Nombre As String, Resalte As String, Color ,_
+ Optional Linea As String, Optional Color2 )
+
+ Dim oEstilos As Object, oEstilo As Object, Resalta As String, Tipo As integer
+
+ On Local Error GoTo CONTROL_ERRORES
+
+ &apos; por si no se olvida definir el color y se define Linea
+ If Not IsMissing (Color) And (Color = 1 Xor Color = 2 Xor Color = 12) Then
+ i_Errores = i_Errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre &amp; &quot; (&quot; &amp; R_Txt(11) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13)_
+ &amp; Chr(9) &amp; R_Txt(13) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End If
+
+ oEstilos = ThisComponent.StyleFamilies.getByName(&quot;CharacterStyles&quot;)
+
+ If Not oEstilos.HasByName(Nombre) Then
+ Enum_Perdidos = Enum_Perdidos &amp; &quot; &quot; &amp; Nombre &amp; &quot; (&quot; &amp; R_Txt(11) &amp; &quot;)&quot; &amp; Chr(13)
+ Exit Sub
+ End If
+
+ oEstilo = oEstilos.getByName(Nombre)
+ Dim Nombre2 : Nombre2 = oEstilo.DisplayName
+
+ If Not IsMissing (Linea) Then
+ Select Case Linea
+ Case 1, 2, 12 : Tipo = Linea
+ Case Else
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(11) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13) _
+ &amp; Chr(9) &amp; R_Txt(14) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End Select
+ End If
+
+ Select case Resalte
+ Case &quot;S&quot; &apos;Subrayado
+ If IsMissing(Linea) Then
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(11) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13) _
+ &amp; Chr(9) &amp; R_Txt(15) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End If
+ If Not IsMissing(Color2) Then
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(11) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13) &amp;_
+ Chr(9) &amp; R_Txt(16) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End If
+ If Not isNumeric(Color) And Color &lt;&gt; &quot;Auto&quot; Then
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(11) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13) _
+ &amp; Chr(9) &amp; R_Txt(17) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End If
+ &apos;Print Colorea &amp; &quot;_________&quot; &amp; oEstilo.CharColor &amp; &quot;_________&quot; &amp; Color
+ If Colorea = True Then
+ If oEstilo.CharColor &lt;&gt; 0 Then &apos;Si tiene color utilizo el mismo de la letra
+ If Color = &quot;Auto&quot; Then &apos;sin color lo toma del mismo estilo
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,Tipo) &apos;sin color lo toma del mismo estilo bueno
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,False)
+ Else
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,True)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,Color)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,Tipo)
+ End If
+ End If
+ ElseIf Colorea = False Then &apos; Lo comentado &apos;&apos; no es necesario
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,False)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,0)
+ End If
+
+ Case &quot;F&quot; &apos;Fondo o área
+ Resalta = &quot;CharBackColor&quot;
+ If IsMissing (Linea) And Colorea = True Then &apos; si no se subraya.
+ oEstilo.SetPropertyValue(Resalta,Color)
+ ElseIf IsMissing (Linea) And Colorea = False Then
+ oEstilo.SetPropertyValue(Resalta,-1)
+ End If
+
+ If Not IsMissing (Linea) And IsMissing (Color2) Then &apos; No puede faltar el color de S
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(11) &amp; &quot;): - &quot; &amp; R_Txt(12) _
+ &amp; Chr(13) &amp; R_Txt(18) &amp; Chr(13) &amp; Chr(13)
+ i_errores = i_errores + 1
+ Exit Sub
+ End If
+
+ If not isNumeric (Color) Then
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(11) &amp; &quot;): - &quot; &amp; R_Txt(12) _
+ &amp; Chr(13) &amp; Chr(9) &amp; R_Txt(17) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End If
+
+ If Not IsMissing (Linea) And Not IsMissing (Color2) Then &apos; Subrayado Color2
+ If Colorea = True Then
+ oEstilo.SetPropertyValue(Resalta,Color)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,Tipo)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,True)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,Color2)
+ ElseIf Colorea = False Then
+ oEstilo.SetPropertyValue(Resalta,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,False)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,0)
+ End If
+ End If
+
+ Case &quot;L&quot; &apos;Letra o carácter
+ Resalta =&quot;CharColor&quot;
+ If IsMissing (Linea) And Colorea = True Then &apos; si no se subraya.
+ oEstilo.SetPropertyValue(Resalta,Color)
+ ElseIf IsMissing (Linea) And Colorea = False Then
+ oEstilo.SetPropertyValue(Resalta,-1)
+ End If
+ If not IsNumeric (Color) Then
+ i_errores = i_errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(11) &amp; &quot;): - &quot; &amp; R_Txt(12) _
+ &amp; Chr(13) &amp; Chr(9) &amp; R_Txt(17) &amp; Chr(13) &amp; Chr(13)
+ Exit Sub
+ End If
+
+ If Not IsMissing (Linea) And IsMissing (Color2) Then &apos; Subrayado Auto
+ If Colorea = True Then
+ oEstilo.SetPropertyValue(Resalta,Color)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,Tipo)
+ ElseIf Colorea = False Then
+ oEstilo.SetPropertyValue(Resalta,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,0)
+ End if
+ End If
+
+ If Not IsMissing (Linea) And Not IsMissing (Color2) Then &apos; Subrayado Color2
+ If Colorea = True Then
+ oEstilo.SetPropertyValue(Resalta,Color)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,Tipo)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,True)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,Color2)
+ ElseIf Colorea = False Then
+ oEstilo.SetPropertyValue(Resalta,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineColor&quot;,-1)
+ oEstilo.SetPropertyValue(&quot;CharUnderlineHasColor&quot;,False)
+ oEstilo.SetPropertyValue(&quot;CharUnderline&quot;,0)
+ End If
+ End If
+
+ Case Else
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(11) &amp; &quot;): - &quot; &amp; R_Txt(12) &amp; Chr(13) _
+ &amp; R_Txt(19) &amp; Chr(13) &amp; Chr(13)
+ i_errores = i_errores + 1
+ Exit Sub
+
+ End Select
+
+ If oEstilos.HasByName(Nombre) Then
+ i_encontrados = i_encontrados + 1
+ Enum_C_Encontrados = Enum_C_Encontrados &amp; &quot; &quot; &amp; Nombre2 &amp; Chr(13)
+ End If
+
+CONTROL_ERRORES:
+ If Err &lt;&gt; 0 And Colorea = True Then
+ Select Case Err
+ Case 449 &apos;Argumento no opcional
+ i_Errores = i_Errores + 1
+ Enum_Errores = Enum_Errores &amp; Nombre2 &amp; &quot; (&quot; &amp; R_Txt(11) &amp; &quot;): - &quot; &amp; R_Txt(12) _
+ &amp; Chr(13) &amp; Chr(9) &amp; R_Txt(13) &amp; Chr(13) &amp; Chr(13)
+ Case Else
+ Msgbox &quot;Error Nº &quot; &amp; Err &amp; Chr(13) &amp; Error &amp; Chr(13) &amp; &quot;En línea: &quot; &amp; Erl
+ End Select
+&apos; On error Goto 0 &apos; No necesaria en &quot;On Local Error&quot;
+ End If
+End Sub
+
+ Rem ############
+Sub DialogoResaltes
+
+ Call Comunes.Carga_Tools
+ DialogLibraries.LoadLibrary(&quot;SanityCheck&quot;)
+ oDlgResaltes = createUnoDialog(DialogLibraries.getByName(&quot;SanityCheck&quot;).getbyName(&quot;DlgResaltes&quot;))
+ oDlgResaltes.Model.Step = 1
+
+ With oDlgResaltes.getModel
+ oDlgResaltes.TiTle = R_Txt(0)
+ .getByName(&quot;Lbl_Errores&quot;).label = R_Txt(1)
+ .getByName(&quot;Btn_Detalles&quot;).label = R_Txt(2)
+ .getByName(&quot;Lbl_P_Cambiados&quot;).label = R_Txt(3)
+ .getByName(&quot;Lbl_C_Cambiados&quot;).label = R_Txt(4)
+ .getByName(&quot;Lbl_NoPresentes&quot;).label = R_Txt(5)
+ .getByName(&quot;Lbl_Sintaxis&quot;).label = R_Txt(6)
+
+ .getByName(&quot;Tx_P_Encontrados&quot;).Text = Enum_P_Encontrados
+ .getByName(&quot;Tx_C_Encontrados&quot;).Text = Enum_C_Encontrados
+ .getByName(&quot;Lbl_NCambios&quot;).label = i_encontrados
+ .getByName(&quot;Tx_Perdidos&quot;).Text = Enum_Perdidos
+
+ If Colorea = False Then
+ .getByName(&quot;Lbl_Info&quot;).Label = R_Txt(7)
+ else
+ .getByName(&quot;Lbl_Info&quot;).Label = R_Txt(8)
+ End If
+
+ If Enum_Errores = &quot;&quot; Then
+ .Height = 25
+ .getByName(&quot;Lbl_Errores&quot;).Enablevisible = False
+ .getByName(&quot;Btn_Errores&quot;).Enablevisible = False
+ Else
+ .Height = 50
+ .getByName(&quot;Lbl_Errores&quot;).Enablevisible = True
+ .getByName(&quot;Btn_Errores&quot;).Enablevisible = True
+ .getByName(&quot;Tx_ListaErrores&quot;).Text = Enum_Errores
+ End If
+ End With
+
+ oDlgResaltes.execute()
+ If Colorea = True then Msgbox (Chr(13) &amp; R_Txt(9),0+48+0,Extension)
+End Sub
+
+ Rem ############
+Sub OnBtErrores(oEv)
+
+ oDlgResaltes = oEv.Source.Context
+ Dim Altura as Integer
+ WIth oDlgResaltes.getModel
+ If oDlgResaltes.Model.Step = 1 Then
+ oDlgResaltes.Model.Step = 2
+ .Height = 242
+ .Width = 242
+ .getByName(&quot;Btn_Errores&quot;).label = &quot;↫&quot;&apos;model().ImageURL = F_GetResourceUrl(&quot;VolverPNG&quot;)
+ ElseIf oDlgResaltes.Model.Step = 2 Then
+ oDlgResaltes.Model.Step = 1
+ .getByName(&quot;Btn_Errores&quot;).label = &quot;𓂀&quot;&apos; model().ImageURL = F_GetResourceUrl(&quot;InfoPNG&quot;)
+ .getByName(&quot;Btn_Detalles&quot;).label = &quot;^&quot;
+ End If
+ End With
+End Sub
+
+ Rem ############
+Sub OnBtDetalles(oEv)
+
+ oDlgResaltes = oEv.Source.Context
+ Dim Altura as Integer : Altura = oDlgResaltes.getModel.Height()
+
+ WIth oDlgResaltes.getModel
+ If Altura &lt; 55 Then
+ .Height = 242
+ .getByName(&quot;Btn_Detalles&quot;).label = &quot;^&quot;
+ Elseif Altura &gt; 55 Then
+ .getByName(&quot;Btn_Detalles&quot;).label = R_Txt(2)
+ &apos; .Height = 50
+ if Enum_Errores = &quot;&quot; Then : .Height = 25 : else :.Height = 50: End If
+ End If
+ End With
+End Sub
+
+
+
+Rem &apos;***************************************************************************************************
+
+ Rem ############
+Sub Ayuda
+
+ Dim archivo as string, Servicio as object, opciones as long
+ Call Comunes.Carga_Tools
+ on error goto Errores
+&apos; helpPath = GetHelpDir(&quot;vnd.org.bantoniof.revisiones.HelpPath&quot;)
+&apos; archivo = helpPath &amp; &quot;AyudaRevisiones.pdf&quot;
+ archivo =F_GetResourceUrl(&quot;AyudaPDF&quot;)
+ if GetGuiType = 1 then
+ archivo = ConvertFromURL(archivo)
+ Opciones = com.sun.star.system.SystemShellExecuteFlags.NO_SYSTEM_ERROR_MESSAGE
+ Servicio = CreateUnoService(&quot;com.sun.star.system.SystemShellExecute&quot;)
+ Servicio.execute(archivo,&quot;1&quot;,Opciones)
+ exit sub
+ end if
+Errores:
+ select case err
+ case 1 : msgbox &quot;No se puede mostrar (Archivo o ruta no válida)&quot;, 16, &quot;Shell&quot;
+ case else : msgbox &quot;Error imprevisto&quot;, 16, &quot;Shell&quot;
+ end select
+&apos; resume Salir
+end sub
+
+ Rem ############
+Function F_GetResourceUrl(sResourceID As String) As String
+
+Dim oRegKey As Object
+ oRegKey = Tools.Misc.GetRegistryKeyContent( BASE_KEY &amp; &quot;FileResources/&quot; &amp; sResourceID )
+ F_GetResourceUrl = F_ExpandMacroFieldExpression( oRegKey.Url )
+End Function
+
+ Rem ############
+Function F_ExpandMacroFieldExpression(sURL As String) As String
+
+ Dim sTemp As String, oSM As Object, oMacroExpander As Object
+ oSM = getProcessServiceManager
+ &apos;get the macro expander
+ oMacroExpander = oSM.DefaultContext.getValueByName(&quot;/singletons/com.sun.star.util.theMacroExpander&quot;)
+ &apos;cut the vnd.sun.star.expand: part
+ sTemp = F_StringReplace(sURL, &quot;vnd.sun.star.expand:&quot;, &quot;&quot;)
+ &apos;Expand the macrofield expression
+ sTemp = oMacroExpander.ExpandMacros(sTemp)
+ sTemp = Trim(sTemp)
+ F_ExpandMacroFieldExpression = sTemp
+End Function
+
+ Rem ############
+Function F_StringReplace(ByVal sText As String, sOld As String, sNew As String) As String
+ Rem Viene a ser lo mismo que la función mid() pero con texto en lugar de posiciones
+
+ F_StringReplace = Join(Split(sText,sOld),sNew)
+End Function
+
+ REM ================= Fin Resaltes ===========================================================*
+ REM sin uso
+
+&apos;&apos;&apos;imgAbout.Model.ImageUrl = GetResourceUrl(&quot;AboutImage&quot;)
+
+ Rem ############
+sub prueba
+ Call Comunes.Carga_Tools
+ Dim texto
+ on error goto Errores
+ &apos;texto = GetResourceUrl(&quot;AboutImage&quot;)
+ &apos;texto = GetResourceUrl(&quot;ImagenAyuda&quot;)
+ texto = F_GetResourceUrl(&quot;AyudaPDF&quot;)
+ print texto
+
+Errores:
+ select case err
+ case 1 : msgbox Error, &quot;Shell&quot;
+ case else : msgbox &quot;Error imprevisto&quot;, 16, &quot;Shell&quot;
+ end select
+ msgbox &quot;Error &quot; &amp; Err &amp; chr(13) &amp; &quot;En linea &quot; &amp; Erl &amp; chr(13) &amp; Error ,0, &quot;Shell&quot;
+end sub
+
+&apos;Const BASE_KEY As String = &quot;/ooo.ext.BasicAddonBuilder.Configuration/&quot;
+&apos;Const BASE_KEY as string = &quot;vnd.org.bantoniof.Revisiones.Configuration/&quot;
+
+ Rem ############
+Function GetHelpDir(idPath as string) as string
+
+ Const sPrefix = &quot;vnd.sun.star.expand:&quot;
+ Dim oConfigProvider as object, oRegKey as object
+ Dim sHelpDir as string
+&apos; * get access to the configuration provider
+ oConfigProvider = CreateUnoService(&quot;com.sun.star.configuration.ConfigurationProvider&quot;)
+&apos; * define the node path, where the Image name is stored in the configuration file ImageLocations.xcu
+ Dim aNodePath(0) As New com.sun.star.beans.PropertyValue
+ aNodePath(0).Name = &quot;nodepath&quot;
+ aNodePath(0).Value = idPath
+&apos; * obtain read-only access to that node
+ oRegKey = oConfigProvider.createInstanceWithArguments(&quot;com.sun.star.configuration.ConfigurationAccess&quot;, aNodePath() )
+&apos; * retrieving the values
+&apos; * the content was &quot;%origin%/images/Image1.png&quot;
+&apos; * during the installation of the extension, %origin% was replaced
+&apos; * with &quot;vnd.sun.star.expand:$UNO_USER_PACKAGES_CACHE/uno_packages/&quot;
+ sHelpDir$ = oRegKey.getByName(&quot;HelpDir&quot;)
+&apos; * cut the &quot;vnd.sun.star.expand:&quot; protocol from the macrofied Url retrieved from the registry
+&apos; sHelpDir = mid(sHelpDir, len(sPrefix)+1)
+&apos; uso en su lugar un array temporal para eliminar datos que no interesan
+ Dim a_Temp() as Variant
+ a_temp = split (shelpDir,&quot;vnd.sun.star.expand:&quot;)
+ shelpdir = join(a_temp(),&quot;&quot;)
+ erase a_Temp() &apos;Borro el array (Libero memoria)
+&apos; * now the &quot;$UNO_USER_PACKAGES_CACHE&quot; has to be replaced with the real location of the files on your system
+&apos; * this will be done by the MacroExpander
+&apos; * get the default context
+ Dim oCtx as object
+ oCtx = getProcessServiceManager().DefaultContext
+&apos; * get the macro expander from the default context
+ Dim oMacroExpander as object
+ oMacroExpander = oCtx.getValueByName(&quot;/singletons/com.sun.star.util.theMacroExpander&quot;)
+&apos; * expand the macrofield expression, which gives us the real location of the files
+ sHelpDir = oMacroExpander.ExpandMacros(sHelpDir)
+&apos;Aunque puede funcionar, elimino una referencia redundantelo de /program/...
+ a_temp = split(shelpDir,&quot;/program/..&quot;)
+ shelpdir = join(a_temp(),&quot;&quot;)
+ erase a_Temp() &apos;Borro el array (Libero memoria)
+ GetHelpDir = sHelpDir
+End Function
+
+ Rem ############
+Sub ExampleEnvironment
+ If GetGUIType = 1 then msgbox &quot;windows&quot;
+End Sub
+
+ Rem ############
+Sub mifunDisplayGUIType()
+
+ Dim s: s = (GetGUIType())
+ select case s
+ Case 1 : s = &quot;Windows&quot; &apos; Documented and in code.
+ Case 2 : s = &quot;OS/2&quot; &apos; No longer documented or set in code.
+ Case 3 : s = &quot;Mac OS&quot; &apos; No longer documented or set in code., I expect Mac to return 4.
+ Case 4 : s = &quot;UNIX&quot; &apos; Documented and in code.
+ Case Else
+ &apos; -1 is Not Documented, but is returned in the code if not Windows or Unix.
+ s = &quot;Unknown value &quot; &amp; CStr(GetGUIType()) &amp; CHR$(10) &amp; &quot;Probably running in Client/Server mode&quot;
+ End Select
+ MsgBox &quot;GUI type is &quot; &amp; s, 0, &quot;GetGUIType()&quot;
+End Sub
+</script:module> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/Tablas.xba b/userguides/sanitycheck/SanityCheck/Tablas.xba
new file mode 100644
index 00000000..3c6a209b
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/Tablas.xba
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Tablas" script:language="StarBasic">REM ***** BASIC Módulo Tablas *****
+Option explicit
+
+ Const Extension as string = &quot;Revisiones v 1.0.0&quot;
+ Global oTablas as Object
+ Global oTabla as Object
+ Global vCursor as Object
+ Dim oDlg as Object
+ &apos;Dim Dlg_Activo as Boolean &apos;dlg No modal evita ejecuciones múltiples
+&apos; Dim Dlg_Mostrado as Boolean &apos; dlg No modal para cerrar el diálogo
+ Global Indice_Tbl as Integer
+ Dim Ultima_Tbl as integer
+
+ Rem ############
+Sub DlgTablas&apos;(oTabla)
+
+ Dim Dlg As Object
+ &apos; Call L10n.Cargar_Idioma
+ Call L10n.Trad_Tablas
+
+ If Thiscomponent.HasLocation = false then : Msgbox (T_Txt(24),0+48+0,Extension) : Exit Sub : End If &apos; Primero tienes que guardar el archivo
+ If Tablas.F_PruebaSelec = 0 Then :Exit Sub : End If
+
+ oTablas = ThisComponent.TextTables
+ Ultima_Tbl = oTablas.getCount -1
+ If Ultima_Tbl &lt; 0 Then : Msgbox (T_Txt(14), 0+48+0,Extension) : Exit Sub : End If &apos; no hay tablas en el documento
+ Indice_Tbl = 0
+ oTabla = oTablas.getbyIndex(Indice_Tbl)
+
+ vCursor = ThisComponent.CurrentController.getViewCursor()
+ vCursor.gotoStart(False)
+ vcursor.gotoRange(oTabla.getAnchor,false)
+
+ If Dlg_Activo = False then
+ DialogLibraries.loadLibrary(&quot;SanityCheck&quot;)
+ oDlg = CreateUnoDialog(DialogLibraries.getByName(&quot;SanityCheck&quot;).getByName(&quot;DlgTablas&quot;))
+ Dlg_Activo = True
+ Dlg_Mostrado = True
+ oDlg.Model.PositionX = 530
+ oDlg.Model.PositionY = 60
+&apos; oDlg.Model.Step = 1
+ Call Parametros_Tablas
+ Do While Dlg_Mostrado = True
+ Wait 200
+ oDlg.SetVisible(True)
+ Loop
+ oDlg.dispose
+ Dlg_Activo= False
+ End If
+End Sub
+
+ sub parar
+ Dlg_Mostrado = False
+ DLg_Activo = False
+end sub
+
+
+ Rem ############
+Sub Parametros_Tablas
+
+ If not Dlg_Mostrado then : Msgbox (T_Txt(26),0+48+0,Extension) : exit sub: end if &apos;Esta macro no se puede ejecutar sola
+ If Thiscomponent.HasLocation = false then : Msgbox (T_Txt(24),0+48+0, Extension) : Exit Sub : End If &apos;Primero guarda el documento.
+ If Imagenes.F_Prueba_Sel = 0 Then : Exit Sub : End If
+ If Ultima_Tbl &lt; 0 Then : Dlg_Mostrado = False : Msgbox (T_txt(25), 0+48+0, Extension) : Exit Sub : End If &apos;si se borran todas las tablas
+
+ Ultima_Tbl = oTablas.getCount -1
+
+ oTabla = oTablas.getbyIndex(Indice_Tbl)
+ vCursor.gotoRange(oTabla.Anchor,False)
+
+With oDlg.getModel
+&apos; oDlg.TiTle = T_Txt(0)
+ .getByName(&quot;Lbl_NombreT&quot;).Label = T_Txt(1)
+ .getByName(&quot;Lbl_EstiloT&quot;).Label = T_Txt(2)
+ .getByName(&quot;Fr_Tipo&quot;).Label = T_Txt(3)
+ .getByName(&quot;Opt_Datos&quot;).Label = T_Txt(4)
+ .getByName(&quot;Opt_Distribucion&quot;).Label = T_Txt(5)
+ .getByName(&quot;Lbl_Info&quot;).Label = T_Txt(6)
+ .getByName(&quot;Btn_Anterior&quot;).Label = T_Txt(7)
+ .getByName(&quot;Btn_Optimizar&quot;).Label = T_Txt(8)
+ .getByName(&quot;Btn_Siguiente&quot;).Label = T_Txt(10)
+ .getByName(&quot;Btn_Salir&quot;).Label = T_Txt(11)
+ .getByName(&quot;Lbl_Nombre&quot;).Label = oTabla.Name
+ .getByName(&quot;Lbl_Estilo&quot;).Label = oTabla.TableTemplateName
+ .getbyName(&quot;Btn_Optimizar&quot;).EnableVisible = True
+ .getbyName(&quot;Lbl_Optimizada&quot;).EnableVisible= False
+ .getbyName(&quot;Opt_Datos&quot;).State= 0
+ .getbyName(&quot;Opt_Distribucion&quot;).State= 0
+
+ If Indice_Tbl = 0 then
+ .getByName(&quot;Btn_Anterior&quot;).EnableVisible = False
+ .getByName(&quot;Btn_Siguiente&quot;).EnableVisible = True
+ WIth .getByName(&quot;Lbl_Ultima&quot;)
+ .EnableVisible = True : .label = T_Txt(13) : .PositionX = 12 : .PositionY = 120
+ End With
+ ElseIf Indice_Tbl = Ultima_Tbl then
+ .getByName(&quot;Btn_Siguiente&quot;).EnableVisible = False
+ .getByName(&quot;Btn_Anterior&quot;).EnableVisible = True
+ .getByName(&quot;Btn_Salir&quot;).state = 1
+ WIth .getByName(&quot;Lbl_Ultima&quot;)
+ .EnableVisible = True : .label = T_Txt(12) : .PositionX = 115 : .PositionY = 120
+ End With
+ Else
+ .getByName(&quot;Lbl_Ultima&quot;).EnableVisible = False
+ .getByName(&quot;Btn_Siguiente&quot;).EnableVisible = True
+ .getByName(&quot;Btn_Anterior&quot;).EnableVisible = True
+ .getByName(&quot;Btn_Salir&quot;).state = 0
+ End If
+end with
+
+End sub
+
+ Rem ############
+sub OnBtn_Anterior(oEv)
+
+ oDlg = oEv.Source.Context
+ If oTablas.getCount -1 &lt;&gt; Ultima_Tbl Then
+ Ultima_Tbl = oTablas.getCount -1
+ Msgbox (T_Txt(18), 0+64+0, Extension )
+ Indice_Tbl = 0
+ ElseIf Not Indice_Tbl &lt; 0 then
+ Indice_Tbl = Indice_Tbl -1
+ End If
+ Call Parametros_Tablas
+end sub
+
+
+ Rem ############
+Sub OnBtn_Siguiente(oEv)
+
+ oDlg = oEv.Source.Context
+ If oTablas.getCount -1 &lt;&gt; Ultima_Tbl Then
+ Ultima_Tbl = oTablas.getCount -1
+ Indice_Tbl = 0
+ Msgbox (T_Txt(18), 0+64+0,Extension )
+ ElseIf Indice_Tbl &lt; Ultima_Tbl Then
+ Indice_Tbl = Indice_Tbl + 1
+ End if
+ Call Parametros_Tablas
+End Sub
+
+ Rem ############
+Sub OnBtn_Salir(oEv)
+ Dlg_Mostrado = False
+ Msgbox (T_Txt(19), 0+64+0, Extension)
+End Sub
+
+ Rem ############
+Sub OnRadioButtons(oEv)
+Dim oDlg : oDlg = oEv.Source.Context
+
+ If oDlg.getModel.getByName(&quot;Opt_Datos&quot;).state = 1 Then
+ oDlg.getModel.getByName(&quot;Lbl_Info&quot;).label = T_Txt(20) &amp; Chr(13) &amp; T_Txt(22)
+ Else
+ oDlg.getModel.getByName(&quot;Lbl_Info&quot;).label = T_Txt(21) &amp; Chr(13) &amp; T_Txt(22)
+ End If
+End Sub
+
+ Rem ############
+Sub OnBtn_Optimizar(oEv)
+
+ oDlg = oEv.Source.Context
+ If oDlg.getModel.getByName(&quot;Opt_Datos&quot;).state = 1 Then
+ Call optimizar(oTabla,1)
+ ElseIf oDlg.getModel.getByName(&quot;Opt_Distribucion&quot;).state = 1 Then
+ Call optimizar(oTabla,0)
+ Else
+ Msgbox (T_Txt(15),, Extension)
+ End if
+ oDlg.getModel.getByName(&quot;Lbl_Optimizada&quot;).label = T_Txt(9)
+End sub
+
+
+ Rem ############
+Sub Optimizar(tabla,Tipo)
+
+ Rem Tabla de datos
+ With oTabla
+ Dim nRow as Integer, nCol as Integer, oCell as Object
+
+ If Tipo = 1 then
+ .RelativeWidth = 90
+ .HoriOrient = 2 &apos;centrada
+ .RepeatHeadline = True
+ .HeaderRowCount = 1
+ .TableBorderDistances.TopDistance = 500
+ For nRow = 0 To oTabla.getRows().getCount() - 1
+ For nCol = 0 To oTabla.getColumns().getCount() - 1
+ oCell = oTabla.getCellByPosition(nCol, nRow)
+ If nRow = 0 Then
+ oCell.BackColor = RGB(230,230,230)
+ Formato_Par(oCell.getText(), &quot;Table Heading&quot;)
+ Else
+ Formato_Par(oCell.getText(), &quot;Table Contents&quot;)
+ End If
+ Next
+ .TableTemplateName = &quot;LO User Guides&quot;
+ Next
+ Rem Tabla de contenido
+ ElseIf Tipo = 0 then
+ .TableBorderDistances.TopDistance = 0
+ .TableTemplateName = &quot;&quot;
+ For nRow = 0 To oTabla.getRows().getCount() - 1
+ For nCol = 0 To oTabla.getColumns().getCount() - 1
+ oCell = oTabla.getCellByPosition(nCol, nRow)
+ Formato_Par(oCell.getText(), &quot;Table Contents&quot;)
+ Next
+ Next
+ End If
+ Rem Comunes
+ .TableBorderDistances.RightDistance = 0
+ .TableBorderDistances.LeftDistance = 0
+ .TableBorderDistances.BottomDistance = 0
+ .CollapsingBorders = True &apos;fusionar lineas bordes
+ .BreakType = 0&apos; Quebrar saltos de página etc
+ .Split = True
+ .BottomMargin =200
+&apos; .TopMargin = 100
+ Dim i as Integer, oRows as Object, oRow as Object
+ For i= 0 to otabla.Rows().count -1
+ oRow = otabla.getRows().getbyIndex(i)
+ oRow.IsAutoHeight= True
+ oRow.Height = 0
+ Next
+ End With
+
+ oDlg.getModel.getbyname(&quot;Btn_Optimizar&quot;).enableVisible = False
+ oDlg.getModel.getbyName(&quot;Lbl_Optimizada&quot;).EnableVisible= True
+End sub
+
+sub pruebaDeprueba
+ If Tablas.F_PruebaSelec = 0 Then :Exit Sub : End If
+ vCursor = ThisComponent.CurrentController.getViewCursor()
+ vCursor.gotoStart(False)
+End sub
+
+
+ Rem ############
+Function F_PruebaSelec()As Boolean &apos;Pasar prueba selección
+
+ Call L10n.Trad_Tablas
+ Dim oSel : oSel= ThisComponent.getCurrentSelection
+ On error goto Errores
+ If not oSel.supportsService(&quot;com.sun.star.text.TextRanges&quot;) then
+ F_PruebaSelec = 0
+ Msgbox (T_Txt(16), 0+64+0,Extension)
+ Exit Function
+ End If
+Errores:
+ if Err = 0 then : F_PruebaSelec = 1 : Exit Function
+ Elseif Err = 91 then : Msgbox (T_Txt(17), 0+64+0, Extension)
+ Elseif Err &lt;&gt; 0 then : Msgbox (&quot;Error N.&quot; &amp; Err &amp; &quot; Linea n. &quot; &amp; Erl &amp; CHR(13) &amp; CHR(13) &amp; Error, 0+48+0, &quot;Error&quot;)
+ End if
+ F_PruebaSelec = 0
+End Function
+
+ Rem ############
+Sub Formato_Par(oText, sParStyle As String)
+ Dim oEnum, oPar
+ oEnum = oText.createEnumeration()
+ Do While oEnum.hasMoreElements()
+ oPar = oEnum.nextElement()
+ If opar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
+ oPar.ParaStyleName = sParStyle
+ oPar.ParaVertAlignment = 3
+ End If
+ Loop
+End Sub
+
+ REM ================= Fin Tablas ===========================================================
+</script:module> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/dialog.xlb b/userguides/sanitycheck/SanityCheck/dialog.xlb
new file mode 100644
index 00000000..c26cb7e6
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/dialog.xlb
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd">
+<library:library xmlns:library="http://openoffice.org/2000/library" library:name="SanityCheck" library:readonly="false" library:passwordprotected="false">
+ <library:element library:name="DlgCampos"/>
+ <library:element library:name="DlgEstilos"/>
+ <library:element library:name="DlgImagenes"/>
+ <library:element library:name="DlgResaltes"/>
+ <library:element library:name="DlgTablas"/>
+ <library:element library:name="DlgAsistente"/>
+ <library:element library:name="DlgRenombrar"/>
+ <library:element library:name="DlgFormatos"/>
+</library:library> \ No newline at end of file
diff --git a/userguides/sanitycheck/SanityCheck/script.xlb b/userguides/sanitycheck/SanityCheck/script.xlb
new file mode 100644
index 00000000..08e704a7
--- /dev/null
+++ b/userguides/sanitycheck/SanityCheck/script.xlb
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd">
+<library:library xmlns:library="http://openoffice.org/2000/library" library:name="SanityCheck" library:readonly="false" library:passwordprotected="false">
+ <library:element library:name="Comunes"/>
+ <library:element library:name="Imagenes"/>
+ <library:element library:name="Formatos"/>
+ <library:element library:name="L10n"/>
+ <library:element library:name="Tablas"/>
+ <library:element library:name="Estilos"/>
+ <library:element library:name="Campos"/>
+ <library:element library:name="Resaltes"/>
+ <library:element library:name="Renombrar"/>
+</library:library> \ No newline at end of file
diff --git a/userguides/sanitycheck/description.xml b/userguides/sanitycheck/description.xml
new file mode 100644
index 00000000..8b0c069d
--- /dev/null
+++ b/userguides/sanitycheck/description.xml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<description
+ xmlns="http://openoffice.org/extensions/description/2006"
+ xmlns:dep="http://openoffice.org/extensions/description/2006"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <identifier value="vnd.b__antonio.sanitycheck"/>
+ <version value="1.0.0"/>
+ <!-- <dependencies>
+ <OpenOffice.org-minimal-version value="2.1" dep:name="OpenOffice.org 2.1"/>
+ </dependencies> -->
+ <publisher>
+ <name lang="de" xlink:href="http://">B. Antonio Fernández</name>
+ </publisher>
+ <registration>
+ <simple-license accept-by="admin" default-license-id="ID0" suppress-on-update="true" >
+ <license-text xlink:href="registration/LGPLv3.0.txt" lang="en" license-id="ID0" />
+ <license-text xlink:href="registration/LGPLv3_pt-br.txt" lang="pt-BR" />
+ <license-text xlink:href="registration/LGPLv3_es.txt" lang="es-ES" />
+ </simple-license>
+ </registration>
+</description>
diff --git a/userguides/sanitycheck/dist/Sanitycheck-1.0.0.oxt b/userguides/sanitycheck/dist/Sanitycheck-1.0.0.oxt
new file mode 100644
index 00000000..562c4e5d
--- /dev/null
+++ b/userguides/sanitycheck/dist/Sanitycheck-1.0.0.oxt
Binary files differ
diff --git a/userguides/sanitycheck/icons/Image14_16.bmp b/userguides/sanitycheck/icons/Image14_16.bmp
new file mode 100644
index 00000000..8fc8ebbe
--- /dev/null
+++ b/userguides/sanitycheck/icons/Image14_16.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/Image14_26.bmp b/userguides/sanitycheck/icons/Image14_26.bmp
new file mode 100644
index 00000000..8fc8ebbe
--- /dev/null
+++ b/userguides/sanitycheck/icons/Image14_26.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image11_16.bmp b/userguides/sanitycheck/icons/image11_16.bmp
new file mode 100644
index 00000000..37ff626e
--- /dev/null
+++ b/userguides/sanitycheck/icons/image11_16.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image11_26.bmp b/userguides/sanitycheck/icons/image11_26.bmp
new file mode 100644
index 00000000..37ff626e
--- /dev/null
+++ b/userguides/sanitycheck/icons/image11_26.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image12_16.bmp b/userguides/sanitycheck/icons/image12_16.bmp
new file mode 100644
index 00000000..1343a08e
--- /dev/null
+++ b/userguides/sanitycheck/icons/image12_16.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image12_26.bmp b/userguides/sanitycheck/icons/image12_26.bmp
new file mode 100644
index 00000000..1343a08e
--- /dev/null
+++ b/userguides/sanitycheck/icons/image12_26.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image13_16.bmp b/userguides/sanitycheck/icons/image13_16.bmp
new file mode 100644
index 00000000..f80ec011
--- /dev/null
+++ b/userguides/sanitycheck/icons/image13_16.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image13_26.bmp b/userguides/sanitycheck/icons/image13_26.bmp
new file mode 100644
index 00000000..f80ec011
--- /dev/null
+++ b/userguides/sanitycheck/icons/image13_26.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image1_16.bmp b/userguides/sanitycheck/icons/image1_16.bmp
new file mode 100644
index 00000000..96973b4c
--- /dev/null
+++ b/userguides/sanitycheck/icons/image1_16.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image1_26.bmp b/userguides/sanitycheck/icons/image1_26.bmp
new file mode 100644
index 00000000..96973b4c
--- /dev/null
+++ b/userguides/sanitycheck/icons/image1_26.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image2_16.bmp b/userguides/sanitycheck/icons/image2_16.bmp
new file mode 100644
index 00000000..e2f09060
--- /dev/null
+++ b/userguides/sanitycheck/icons/image2_16.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image2_26.bmp b/userguides/sanitycheck/icons/image2_26.bmp
new file mode 100644
index 00000000..e2f09060
--- /dev/null
+++ b/userguides/sanitycheck/icons/image2_26.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image4_16.bmp b/userguides/sanitycheck/icons/image4_16.bmp
new file mode 100644
index 00000000..96973b4c
--- /dev/null
+++ b/userguides/sanitycheck/icons/image4_16.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image4_26.bmp b/userguides/sanitycheck/icons/image4_26.bmp
new file mode 100644
index 00000000..96973b4c
--- /dev/null
+++ b/userguides/sanitycheck/icons/image4_26.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image5_16.bmp b/userguides/sanitycheck/icons/image5_16.bmp
new file mode 100644
index 00000000..e2f09060
--- /dev/null
+++ b/userguides/sanitycheck/icons/image5_16.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image5_26.bmp b/userguides/sanitycheck/icons/image5_26.bmp
new file mode 100644
index 00000000..e2f09060
--- /dev/null
+++ b/userguides/sanitycheck/icons/image5_26.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image7_16.bmp b/userguides/sanitycheck/icons/image7_16.bmp
new file mode 100644
index 00000000..1b696527
--- /dev/null
+++ b/userguides/sanitycheck/icons/image7_16.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image7_26.bmp b/userguides/sanitycheck/icons/image7_26.bmp
new file mode 100644
index 00000000..1b696527
--- /dev/null
+++ b/userguides/sanitycheck/icons/image7_26.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image8_16.bmp b/userguides/sanitycheck/icons/image8_16.bmp
new file mode 100644
index 00000000..fa5820f8
--- /dev/null
+++ b/userguides/sanitycheck/icons/image8_16.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image8_26.bmp b/userguides/sanitycheck/icons/image8_26.bmp
new file mode 100644
index 00000000..fa5820f8
--- /dev/null
+++ b/userguides/sanitycheck/icons/image8_26.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image9_16.bmp b/userguides/sanitycheck/icons/image9_16.bmp
new file mode 100644
index 00000000..4f036273
--- /dev/null
+++ b/userguides/sanitycheck/icons/image9_16.bmp
Binary files differ
diff --git a/userguides/sanitycheck/icons/image9_26.bmp b/userguides/sanitycheck/icons/image9_26.bmp
new file mode 100644
index 00000000..4f036273
--- /dev/null
+++ b/userguides/sanitycheck/icons/image9_26.bmp
Binary files differ
diff --git a/userguides/sanitycheck/pkg-desc/pkg-description.es b/userguides/sanitycheck/pkg-desc/pkg-description.es
new file mode 100644
index 00000000..c9e02bf2
--- /dev/null
+++ b/userguides/sanitycheck/pkg-desc/pkg-description.es
@@ -0,0 +1,4 @@
+SanityCheck-1.0.0.oxt
+Copyright (c) 2023 B. Antonio Fernández
+
+Herramientas para la limpieza y ayuda en la revisión de las guías de usuario de Libre Office.
diff --git a/userguides/sanitycheck/pkg-desc/pkg-description.pt b/userguides/sanitycheck/pkg-desc/pkg-description.pt
new file mode 100644
index 00000000..b4c0243a
--- /dev/null
+++ b/userguides/sanitycheck/pkg-desc/pkg-description.pt
@@ -0,0 +1,4 @@
+SanityCheck-1.0.0.oxt
+Copyright (c) 2023 B. Antonio Fernández
+
+Ferramentas para limpar e ajudar a revisar os guias do usuário do Libre Office.
diff --git a/userguides/sanitycheck/pkg-desc/pkg-description.txt b/userguides/sanitycheck/pkg-desc/pkg-description.txt
new file mode 100644
index 00000000..c3172c2f
--- /dev/null
+++ b/userguides/sanitycheck/pkg-desc/pkg-description.txt
@@ -0,0 +1,5 @@
+SanityCheck-1.0.0.oxt
+Copyright (c) 2023 B. Antonio Fernández
+
+Tools for cleaning and help reviewing Libre Office user guides.
+
diff --git a/userguides/sanitycheck/registration/LGPLv3.0.txt b/userguides/sanitycheck/registration/LGPLv3.0.txt
new file mode 100644
index 00000000..0a041280
--- /dev/null
+++ b/userguides/sanitycheck/registration/LGPLv3.0.txt
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/userguides/sanitycheck/registration/LGPLv3_es.txt b/userguides/sanitycheck/registration/LGPLv3_es.txt
new file mode 100644
index 00000000..6980fb71
--- /dev/null
+++ b/userguides/sanitycheck/registration/LGPLv3_es.txt
@@ -0,0 +1,635 @@
+
+****** LICENCIA PÚBLICA GENERAL DE GNU ******
+**** Versión 3, 29 de junio de 2007 ****
+Esta es una traducción no oficial al español de la GNU General Public License.
+No ha sido publicada por la Free Software Foundation, y no establece legalmente
+las condiciones de distribución para el software que usa la GNU GPL –estas
+condiciones se establecen solamente por el texto original, en inglés, de la GNU
+GPL. Sin embargo, esperamos que esta traducción ayude a los hispanohablantes a
+entender mejor la GNU GPL.
+
+This is an unofficial translation of the GNU General Public License into
+Spanish. It was not published by the Free Software Foundation, and does not
+legally state the distribution terms for software that uses the GNU GPL –only
+the original English text of the GNU GPL does that. However, we hope that this
+translation will help Spanish speakers understand the GNU GPL better.
+
+Copyright © 2007 Free Software Foundation, Inc. http://fsf.org/
+
+
+Se permite la copia y distribución de copias literales de este documento, pero
+no se permite su modificación.
+ Preámbulo: La Licencia Pública General de GNU es una licencia libre,
+ bajo “copyleft”, para software y otro tipo de obras.
+ Las licencias para la mayoría del software y otras obras de carácter
+ práctico están diseñadas para privarle de la libertad de compartir y
+ modificar las obras. Por el contrario, la Licencia Pública General de
+ GNU pretende garantizar su libertad de compartir y modificar todas
+ las versiones de un programa –para cerciorar que permanece como
+ software libre para todos sus usuarios. Nosotros, la Free Software
+ Foundation, usamos la Licencia Pública General de GNU para la mayoría
+ de nuestro software; la cual se aplica también a cualquier otra obra
+ publicada de esta forma por parte de sus autores. Usted también puede
+ aplicarla a sus programas.
+ Cuando hablamos de software libre (free software), nos referimos a
+ libertad, no a precio. Nuestras Licencias Públicas Generales están
+ diseñadas para garantizar su libertad de distribuir copias de
+ software libre (y cobrar por ellas si lo desea), recibir el código
+ fuente o poder obtenerlo si quiere, modificar el software o usar
+ fragmentos de él en sus nuevos programas, y que sepa que puede hacer
+ esas cosas.
+ Para proteger sus derechos, necesitamos impedir que otros le
+ denieguen esos derechos o que le pidan que renuncie a ellos. Por
+ ello, tiene ciertas responsabilidades si distribuye copias del
+ software, o si lo modifica: la responsabilidad de respetar la
+ libertad de otros.
+ Por ejemplo, si distribuye copias de un programa, bien sea gratis o
+ por una tasa, debe transferirles a los que lo reciban las mismas
+ libertades que usted recibió. Debe asegurarse que ellos, también,
+ reciben o pueden obtener el código fuente. Y debe mostrarles estos
+ términos para que ellos puedan conocer sus derechos.
+ Los desarrolladores que usan la GNU GPL protegen tus derechos con dos
+ pasos: (1) haciendo valer el derecho de propiedad intelectual en el
+ software, y (2) ofreciéndole esta Licencia que le da el permiso legal
+ para copiarlo, distribuirlo y/o modificarlo.
+ Para la protección de autores y desarrolladores, la GPL explica
+ claramente que no hay garantía para este software libre. Por el bien
+ tanto de usuarios como de autores, la GPL requiere que las versiones
+ modificadas sean marcadas como con cambios, de forma que sus
+ problemas no puedan ser atribuidos de forma errónea a autores de
+ versiones previas.
+ Algunos dispositivos están diseñados para denegar a los usuarios el
+ acceso para instalar o ejecutar versiones modificadas del software en
+ su interior, a pesar de que el fabricante puede hacerlo. Esto es
+ fundamentalmente incompatible con el objetivo de proteger la libertad
+ de los usuarios de modificar el software. El modelo sistemático de
+ este abuso ocurre en el ámbito de los productos de uso personal, lo
+ cual es precisamente donde es más inaceptable. Por consiguiente,
+ hemos diseñado esta versión de la GPL para prohibir la práctica de
+ estos productos. Si estos problemas surgen de forma substancial en
+ otro dominios, estamos preparados para extender esta disposición a
+ esos dominios en futuras versiones de la GPL, así como sea necesario
+ para proteger la libertad de los usuarios.
+ Por último, todo programa es amenazado constantemente por las
+ patentes de software. Los Estados no deberían permitir patentes que
+ restringen el desarrollo y el uso de software en ordenadores de
+ propósito general, pero en aquellos que lo hacen, deseamos evitar el
+ peligro particular de que las patentes aplicadas a un programa libre
+ podrían convertirlo de forma efectiva en propietario. Para prevenir
+ esto, la GPL garantiza que las patentes no pueden ser utilizadas para
+ hacer que el programa no sea libre.
+ Los términos exactos y las condiciones para la copia, distribución y
+ modificación se exponen a continuación.
+Términos y Condiciones
+ 1. Definiciones.
+ “Esta Licencia” se refiere a la versión 3 de la Licencia Pública General
+ de GNU.
+ “Derechos de Autor (“Copyright”)” también incluye a las leyes similares a
+ la de derechos de autor (“copyright”) que se apliquen a otro tipo de
+ obras, tales como las máscaras usadas en la fabricación de
+ semiconductores.
+ “El Programa” se refiere a cualquier obra con derechos de autor
+ (“copyright”) bajo esta Licencia. Cada licenciatario es tratado como
+ “usted”. Los “Licenciatarios” y los “destinatarios” pueden ser individuos
+ u organizaciones.
+ “Modificar” una obra quiere decir copiar de ella o adaptar parte o la
+ totalidad de la obra de una forma que se requieran permisos de derechos
+ de autor (“copyright”), distintos de los de hacer una copia exacta. La
+ obra resultante es llamada “versión modificada” de la obra previa o una
+ obra “basada en” la obra previa.
+ Una “obra amparada” significa o el Programa sin modificar o una obra
+ basada en el Programa.
+ “Difundir” una obra significa hacer cualquier cosa con ella que, sin
+ permiso, le haría responsable de forma directa o indirecta de infringir
+ la ley correspondiente de derechos de autor (“copyright”), excepto
+ ejecutarla en un ordenador o modificar una copia privada. La difusión
+ incluye copiar, la distribución (con o sin modificación), hacerla
+ disponible para el público, y en algunos países también otras
+ actividades.
+ “Transmitir” una obra quiere decir cualquier tipo de difusión que permita
+ a otras partes hacer o recibir copias. La mera interacción con un usuario
+ a través de una red informática, sin la transferencia de una copia, no es
+ transmitir.
+ Una interfaz interactiva de usuario muestra “Avisos Legales Apropiados”
+ en la medida que incluye una característica visible práctica y destacable
+ que (1) muestra un aviso apropiado de derechos de autor (“copyright”), e
+ (2) informa al usuario de que no hay garantía para la obra (excepto las
+ garantías proporcionadas), que los licenciatarios pueden transmitir la
+ obra bajo esta Licencia, y cómo ver una copia de esta Licencia. Si la
+ interfaz presenta una lista de comandos de usuario u opciones, como un
+ menú, un elemento destacado en la lista satisface este criterio.
+ 2. Código Fuente.
+ El “código fuente” de una obra significa la forma preferida de trabajo
+ para hacerle modificaciones. “Código objeto” es cualquier forma no-fuente
+ de una obra.
+ Una “Interfaz Estándar” significa una interfaz que es un estándar oficial
+ definido por un cuerpo de estándares reconocido o, en el caso de
+ interfaces especificadas para un lenguaje de programación en particular,
+ una que es extensamente utilizada entre los desarrolladores que trabajan
+ en ese lenguaje.
+ Las “Bibliotecas del Sistema” de una obra ejecutable incluyen cualquier
+ cosa, diferente de la obra como un todo, que (a) están incluidas en la
+ forma normal de paquetizado de un Componente Importante, y (b) sirve solo
+ para habilitar el uso de la obra con ese Componente Importante, o para
+ implementar una Interfaz Estándar para la cual la implementación está
+ disponible para el público en forma de código fuente. Un “Componente
+ Importante”, en este contexto, significa un componente esencial
+ importante (kernel, sistema de ventanas, etcétera) del sistema operativo
+ en concreto (si hubiese) en el cual el ejecutable funciona, o un
+ compilador utilizado para producir la obra, o un intérprete de código
+ objeto utilizado para hacerlo funcionar.
+ La “Fuente Correspondiente” de una obra en forma de código objeto
+ significa todo el código fuente necesario para generar, instalar, y (para
+ una obra ejecutable) hacer funcionar el código objeto y modificar la
+ obra, incluyendo scripts para controlar dichas actividades. Sin embargo,
+ ello no incluye la obra de las Bibliotecas del Sistema, o herramientas de
+ propósito general o programas de libre disponibilidad general los cuales
+ son usados sin modificaciones para la realización de dichas actividades,
+ pero que no son parte de la obra. Por ejemplo, la Fuente Correspondiente
+ incluye ficheros de definición de interfaces asociados a los ficheros
+ fuente para la obra, y el código fuente para bibliotecas compartidas y
+ subprogramas enlazados dinámicamente para los que la obra está
+ específicamente diseñado para requerir, tales como comunicación de datos
+ intrínseca o flujo de control entre aquellos subprogramas y otras partes
+ de la obra.
+ La Fuente Correspondiente es necesario que no incluya nada que los
+ usuarios puedan regenerar automáticamente desde otras partes de la Fuente
+ Correspondiente.
+ La Fuente Correspondiente de una obra en forma de código fuente es la
+ obra en sí.
+ 3. Permisos básicos.
+ Todos los derechos concedidos bajo esta Licencia se conceden durante la
+ duración de los derechos de autor (“copyright”) del Programa, y son
+ irrevocables siempre que se cumplan las condiciones establecidas. Esta
+ Licencia afirma explícitamente su ilimitado permiso para ejecutar el
+ Programa sin modificar. La salida de la ejecución de una obra amparada
+ está amparada por esta Licencia solo si la salida, dado su contenido,
+ constituye una obra amparada. Esta Licencia reconoce sus derechos de uso
+ razonable u otro equivalente, según lo establecido por la ley de derechos
+ de autor (“copyright”).
+ Usted podrá realizar, ejecutar y difundir obras amparadas que usted no
+ transmita, sin condición alguna, siempre y cuando no tenga otra licencia
+ vigente. Podrá distribuir obras amparadas a terceros con el único
+ propósito de que ellos hagan modificaciones exclusivamente para usted, o
+ proporcionarle ayuda para ejecutar estas obras, siempre y cuando cumpla
+ con los términos de esta Licencia en la transmisión de todo el material
+ del cual usted no controle los derechos de autor (“copyright”). Aquellos
+ que realicen o ejecuten las obras amparadas por usted, deben hacerlo
+ exclusivamente en su nombre, bajo su dirección y control, en los términos
+ que le prohiban realizar ninguna copia de su trabajo con derechos de
+ autor (“copyright”) fuera de su relación con usted.
+ La transmisión bajo otras circunstancias se permite únicamente bajo las
+ condiciones expuestas a continuación. No está permitido sublicenciar, la
+ sección 10 hace que sea innecesario.
+ 4. Protección de los Derechos Legales de los Usuarios frente a la Ley
+ Antievasión.
+ Ninguna obra amparada debe considerarse parte de una medida tecnológica
+ efectiva, a tenor de lo establecido en cualquier ley aplicable que cumpla
+ las obligaciones expresas en el artículo 11 del tratado de derechos de
+ autor (“copyright”) de WIPO adoptado el 20 de diciembre de 1996, o leyes
+ similares que prohiban o restrinjan la evasión de tales medidas.
+ Cuando transmita una obra amparada, renuncia a cualquier poder legal para
+ prohibir la evasión de medidas tecnológicas mientras tales evasiones se
+ realicen en ejercicio de derechos amparados por esta Licencia respecto a
+ la obra amparada; además, usted renunciará a cualquier intención de
+ limitar el uso o modificación del trabajo con el objetivo de imponer,
+ contra el trabajo de los usuarios, sus derechos legales o los de terceros
+ para prohibir la evasión de medidas tecnológicas.
+ 5. Transmisión de copias literales.
+ Usted podrá distribuir copias literales del código fuente del Programa
+ tal cual lo ha recibido, por cualquier medio, siempre que publique
+ visible y apropiadamente en cada copia el correspondiente aviso de
+ derechos de autor (“copyright”); mantenga intactos todos los avisos que
+ establezcan que esta Licencia y cualquier cláusula no-permisiva añadida
+ acorde con la cláusula 7 son aplicables al código; mantenga intactos
+ todos los avisos de ausencia de garantía; y proporcione a todos los
+ destinatarios una copia de esta Licencia junto con el Programa.
+ Usted podrá cobrar cualquier importe o no cobrar nada por cada copia que
+ distribuya, y podrá ofrecer soporte o protección de garantía mediante un
+ pago.
+ 6. Transmisión de Versiones Modificadas de la Fuente.
+ Usted puede transmitir una obra basada en el Programa, o las
+ modificaciones para generarla a partir del Programa, en la forma de
+ código fuente bajo los términos de la sección 4, suponiendo que además
+ cumpla las siguientes condiciones:
+ a. La obra debe incluir avisos destacados indicando que usted la ha
+ modificado y dando una fecha pertinente.
+ b. La obra debe incluir avisos destacados indicando que está liberada
+ bajo esta Licencia y cualquier otra condición añadida bajo la
+ sección 7. Este requerimiento modifica los requerimientos de la
+ sección 4 de “mantener intactos todos los avisos”.
+ c. Usted debe licenciar la obra entera, como una unidad, bajo esta
+ Licencia para cualquier persona que esté en posesión de una copia.
+ Esta Licencia se aplicará por consiguiente, junto con cualquier
+ término aplicable adicional de la sección 7, a la totalidad de la
+ obra, y a todos sus componentes, independientemente de como estén
+ empaquetados. Esta Licencia no da permiso para licenciar la obra de
+ otra forma, pero no invalida esos permisos si usted los ha recibido
+ de forma separada.
+ d. Si la obra tiene interfaces de usuario interactivas, cada una debe
+ mostrar los Avisos Legales Apropiados; sin embargo, si el Programa
+ tiene interfaces interactivas que no muestren los Avisos Legales
+ Apropiados, tampoco es necesario que su obra lo haga.
+ Una recopilación de una obra amparada con otras obras separadas e
+ independientes, que no son por su naturaleza extensiones de la obra
+ amparada, y que no se combinan con ella con el fin de formar un programa
+ más grande, en o sobre un volumen de un medio de almacenamiento o
+ distribución, es llamado un “agregado” si la recopilación y su resultante
+ derechos de autor (“copyright”) no son usados para limitar el acceso o
+ los derechos legales de los usuarios de la recopilación más allá de lo
+ que las obras individuales permitan. La inclusión de una obra amparada en
+ un agregado no provoca que esta Licencia se aplique a los otros
+ componentes del agregado.
+ 7. Transmisión en Forma de No-Fuente.
+ Usted puede transmitir una obra amparada en forma de código objeto bajo
+ los términos de las secciones 4 y 5, siempre que también transmita la
+ Fuente Correspondiente legible por una máquina bajo los términos de esta
+ Licencia, de una de las siguientes formas:
+ a. Transmitir el código objeto en, o embebido en, un producto físico
+ (incluyendo medios de distribución físicos), acompañado de la
+ Fuente Correspondiente en un medio físico duradero habitual para el
+ intercambio de software.
+ b. Transmitir el código objeto en, o embebido en, un producto físico
+ (incluyendo medios de distribución físicos), acompañado de un
+ ofrecimiento escrito, válido durante al menos tres años y válido
+ mientras usted ofrezca recambios o soporte para ese modelo de
+ producto, de dar a cualquiera que posea el código objeto o (1) una
+ copia de la Fuente Correspondiente de todo el software en el
+ producto amparado por esta Licencia, en un medio físico duradero
+ habitual para el intercambio de software, por un precio no más
+ elevado que el coste razonable de la realización física de la
+ transmisión de la fuente, o (2) acceso para copiar la Fuente
+ Correspondiente de un servidor de red sin costo alguno.
+ c. Transmitir copias individuales del código objeto con una copia del
+ ofrecimiento escrito de proveer la Fuente Correspondiente. Esta
+ alternativa está permitida solo ocasionalmente sin fines
+ comerciales, y solo si usted ha recibido el código objeto con ese
+ ofrecimiento, de acuerdo con la subsección 6b.
+ d. Transmitir el código objeto ofreciendo acceso desde un lugar
+ determinado (gratuitamente o mediante pago), y ofrecer acceso
+ equivalente a la Fuente Correspondiente de la misma manera en el
+ mismo lugar sin cargo adicional. No es necesario exigir a los
+ destinatarios que copien la Fuente Correspondiente junto con el
+ código objeto. Si el lugar para copiar el código objeto es un
+ servidor de red, la Fuente Correspondiente puede estar en un
+ servidor diferente (gestionado por usted o un tercero) que soporte
+ facilidades de copia equivalentes, siempre que mantenga
+ instrucciones claras junto al código objeto especificando dónde
+ encontrar la Fuente Correspondiente. Independientemente de qué
+ servidor albergue la Fuente Correspondiente, usted seguirá estando
+ obligado a asegurar que está disponible durante el tiempo que sea
+ necesario para satisfacer estos requisitos.
+ e. Transmitir el código objeto usando una transmisión peer-to-peer,
+ siempre que informe a los otros usuarios donde se ofrece el código
+ objeto y la Fuente Correspondiente de la obra al público general de
+ forma gratuita bajo la subsección 6d.
+ Una porción separable del código objeto, cuyo código fuente está excluido
+ de la Fuente Correspondiente, como una Biblioteca del Sistema, no
+ necesita ser incluida en la distribución del código objeto de la obra.
+ Un “Producto de Usuario” es o (1) un “producto de consumo”, lo que
+ significa cualquier propiedad tangible personal que es usada
+ habitualmente con fines personales, familiares o domésticos, o (2)
+ cualquier cosa diseñada o vendida para ser incorporada en una vivienda. A
+ la hora de determinar cuando un producto es un producto de consumo, los
+ casos dudosos serán resueltos en favor de la cobertura. Para un producto
+ concreto recibido por un usuario concreto, “uso habitual” se refiere a un
+ uso típico y común de esa clase de producto, sin tener en cuenta el
+ estado del usuario concreto o la forma en la que el usuario concreto
+ realmente use, o espera o se espera que use, el producto. Un producto es
+ un producto de consumo independientemente de si el producto tiene usos
+ esencialmente comerciales, industriales o no comerciales, a menos que
+ dicho uso constituya el único modo de uso significativo del producto.
+ La “Información de Instalación” de un Producto de Usuario quiere decir
+ cualquier método, procedimiento, clave de autorización, u otra
+ información requerida para instalar y ejecutar versiones modificadas de
+ la obra amparada en ese Producto de Usuario a partir de una versión
+ modificada de su Fuente Correspondiente. La información debe ser
+ suficiente para garantizar que el funcionamiento continuado del código
+ fuente modificado no es prevenido o interferido por el simple hecho de
+ que ha sido modificado.
+ Si usted transmite una obra en código objeto bajo esta sección en, o con,
+ o específicamete para usar en, un Producto de Usuario, y la transmisión
+ tiene lugar como parte de una transacción en la cual el derecho de
+ posesión y uso de un Producto de Usuario es transferido a un destinatario
+ en perpetuidad o por un periodo establecido (independientemente de cómo
+ se caracterice la operación), la Fuente Correspondiente transmitida bajo
+ esta sección debe estar acompañada de la Información de Instalación. Pero
+ este requisito no se aplica si ni usted ni ningún tercero tiene la
+ capacidad de instalar código objeto modificado en el Producto de Usuario
+ (por ejemplo, la obra ha sido instalada en la ROM).
+ El requisito de proveer de la Información de Instalación no incluye el
+ requisito de continuar proporcionando asistencia, garantía, o
+ actualizaciones para una obra que ha sido modificada o instalada por el
+ destinatario, o para un Producto de Usuario en el cual ha sido modificada
+ o instalada. El acceso a una red puede ser denegado cuando la
+ modificación en sí afecta materialmente y adversamente el funcionamiento
+ de la red o viola las reglas y protocolos de comunicación de la red.
+ La Fuente Correspondiente transmitida, y la Información de Instalación
+ proporcionada, de acuerdo con esta sección debe estar en un formato que
+ sea documentado públicamente (y con una implementación disponible para el
+ público en formato de código fuente), y no deben necesitar contraseñas o
+ claves particulares para la extracción, lectura o copia.
+ 8. Términos adicionales.
+ Los “Permisos adicionales” son términos que se añaden a los términos de
+ esta Licencia haciendo excepciones de una o más de una de sus
+ condiciones. Los permisos adicionales que son aplicables al Programa
+ entero deberán ser tratados como si estuvieran incluidos en esta
+ Licencia, en la medida bajo la ley aplicable. Si los permisos adicionales
+ solo son aplicables a parte del Programa, esa parte debe ser usada
+ separadamente bajo esos permisos, pero el Programa completo queda bajo la
+ autoridad de esta Licencia sin considerar los permisos adicionales.
+ Cuando se transmite una copia de una obra derivada, se puede
+ opcionalmente quitar cualesquiera permisos adicionales de esa copia, o de
+ cualquier parte de ella. Los permisos adicionales pueden ser escritos
+ para requerir su propia eliminación bajo ciertos casos cuando se modifica
+ la obra. Se pueden colocar permisos adicionales en material, añadidos a
+ una obra derivada, para los cuales se establecen o se pueden establecer
+ los permisos de derechos de autor (“copyright”) apropiados.
+ No obstante cualquier otra disposición de esta Licencia, para el material
+ que se añada a una obra derivada, se puede (si está autorizado por los
+ titulares de los derechos de autor (“copyright”) del material) añadir los
+ términos de esta Licencia con los siguientes términos:
+ a. Ausencia de garantía o limitación de responsabilidad diferente de
+ los términos de las secciones 15 y 16 de esta Licencia; o
+ b. Exigir la preservación de determinados avisos legales razonables o
+ atribuciones de autor en ese material o en los Avisos Legales
+ Apropiados mostrados por los obras que lo contengan; o
+ c. Prohibir la tergiversación del origen de ese material, o requerir
+ que las versiones modificadas del material se marquen de maneras
+ razonables como diferentes de la versión original; o
+ d. Limitar el uso con fines publicitarios de los nombres de los
+ licenciantes o autores del material; o
+ e. Negarse a ofrecer derechos concedidos por leyes de registro para el
+ uso de alguno nombres comerciales, marcas registradas o marcas de
+ servicio; o
+ f. Exigir la compensación de los licenciantes y autores de ese
+ material por cualquiera que distribuya el material (o versiones
+ modificadas del mismo) estableciendo obligaciones contractuales de
+ responsabilidad sobre el destinatario, por cualquier
+ responsabilidad que estas obligaciones contractuales impongan
+ directamente sobre los licenciantes y autores.
+ Todos los demás términos adicionales no permisivos son consideradas
+ “restricciones extra” en el sentido de la sección 10. Si el Programa, tal
+ cual se recibió, o cualquier parte del mismo, contiene un aviso indicando
+ que se encuentra cubierto por esta Licencia junto con un término que es
+ otra restricción, se puede quitar ese término. Si un documento de
+ licencia contiene una restricción adicional, pero permite relicenciar o
+ redistribuir bajo esta Licencia, se puede añadir a un material de la obra
+ derivada bajo los términos de ese documento de licencia, a condición de
+ que dicha restricción no sobreviva el relicenciamiento o redistribución.
+ Si se añaden términos a una obra derivada de acuerdo con esta sección, se
+ debe colocar, en los archivos fuente involucrados, una declaración de los
+ términos adicionales aplicables a esos archivos, o un aviso indicando
+ donde encontrar los términos aplicables.
+ Las términos adicionales, permisivos o no permisivos, pueden aparecer en
+ forma de una licencia escrita por separado, o figurar como excepciones;
+ los requisitos anteriores son aplicables en cualquier forma.
+ 9. Conclusiones.
+ Usted no podrá propagar o modificar una obra amparada salvo lo
+ expresamente permitido por esta Licencia. Cualquier intento diferente de
+ propagación o modificación será considerado nulo y automáticamente se
+ anularán sus derechos bajo esta Licencia (incluyendo las licencias de
+ patentes concedidas bajo el tercer párrafo de la sección 11).
+ Sin embargo, si usted deja de violar esta Licencia, entonces su licencia
+ de un titular de los derechos de autor (“copyright”) correspondiente será
+ restituida (a) provisionalmente, a menos que y hasta que el titular de
+ los derechos de autor (“copyright”) explícita y finalmente termine su
+ licencia, y (b) permanentemente, si el titular del copyright no le ha
+ notificado su violación por algún medio razonable antes de los 60 días
+ siguientes a la cesación.
+ Además, su licencia de un titular de los derechos de autor (“copyright”)
+ correspondiente será restituida permanentemente si el titular de los
+ derechos de autor (“copyright”) le notifica la violación por algún medio
+ razonable, siendo ésta la primera vez que recibe la notificación de
+ violación de esta Licencia (para cualquier obra) de ese titular de los
+ derechos de autor (“copyright”), y usted subsana la violación antes de 30
+ días después de la recepción de la notificación.
+ La cancelación de sus derechos bajo esta sección no da por canceladas las
+ licencias de terceros que hayan recibido copias o derechos de usted bajo
+ esta Licencia. Si sus derechos han sido cancelados y no fueran renovados
+ de manera permanente, usted no cumple los requisitos para recibir nuevas
+ licencias para el mismo material bajo la sección 10.
+ 10. Aceptación No Obligatoria por Tenencia de Copias.
+ Usted no está obligado a aceptar esta Licencia por recibir o ejecutar una
+ copia del Programa. La propagación adicional de una obra amparada surgida
+ únicamente como consecuencia de usar una transmisión peer-to-peer para
+ recibir una copia tampoco requiere aceptación. Sin embargo, esta Licencia
+ solo le otorga permiso para propagar o modificar cualquier obra amparada.
+ Estas acciones infringen los derechos de autor (“copyright”) si usted no
+ acepta esta Licencia. Por lo tanto, al modificar o distribuir una obra
+ amparada, usted indica que acepta esta Licencia para poder hacerlo.
+ 11. Herencia Automática de Licencia para Destinatarios.
+ Cada vez que transmita una obra amparada, el destinatario recibirá
+ automáticamente una licencia de los licenciadores originales, para
+ ejecutar, modificar y distribuir esa obra, sujeto a esa Licencia. Usted
+ no será responsable de asegurar el cumplimiento de esta Licencia por
+ terceros.
+ Una “transacción de entidad” es una transacción que transfiere el control
+ de una organización, o sustancialmente todos los bienes de una, o
+ subdivide una organización, o fusiona organizaciones. Si la propagación
+ de una obra amparada surge de una transacción de entidad, cada parte en
+ esa transacción que reciba una copia de la obra también recibe todas las
+ licencias de la obra que la parte interesada tuviese o pudiese ofrecer
+ según el párrafo anterior, además del derecho a tomar posesión de las
+ Fuentes Correspondientes de la obra a través del predecesor interesado,
+ si el predecesor tiene o puede conseguirla con un esfuerzo razonable.
+ Usted no podrá imponer ninguna restricción posterior en el ejercicio de
+ los derechos otorgados o concedidos bajo esta Licencia. Por ejemplo,
+ usted no puede imponer un pago por licencia, derechos u otros cargos por
+ el ejercicio de los derechos otorgados bajo esta Licencia, y no puede
+ iniciar litigios (incluyendo demandas o contrademandas en pleitos)
+ alegando cualquier reclamación de violación de patentes por cambiar,
+ usar, vender, ofrecer en venta o importar el Programa o alguna parte del
+ mismo.
+ 12. Patentes.
+ Un “colaborador” es un titular de los derechos de autor (“copyright”) que
+ autoriza, bajo los términos de la presente Licencia, el uso del Programa
+ o una obra en la que se base el Programa. La obra así licenciada se
+ denomina “versión en colaboración” del colaborador.
+ Las “demandas de patente esenciales” del colaborador son todas las
+ reivindicaciones de patentes poseídas o controladas por el colaborador,
+ ya se encuentren adquiridas o hayan sido adquiridas con posterioridad,
+ que sean infringidas de alguna manera, permitidas por esta Licencia, al
+ hacer, usar o vender la versión en colaboración, pero sin incluir
+ demandas que solo sean infringidas como consecuencia de modificaciones
+ posteriores de la versión en colaboración. Para los propósitos de esta
+ definición, “control” incluye el derecho de conceder sublicencias de
+ patente de forma consistente con los requisitos establecidos en la
+ presente Licencia.
+ Cada colaborador le concede una licencia de la patente no-exclusiva,
+ global y libre de regalías bajo las demandas de patente esenciales del
+ colaborador, para hacer, usar, modificar, vender, ofrecer para venta,
+ importar y otras formas de ejecución, modificación y difusión del
+ contenido de la versión en colaboración.
+ En los siguientes tres párrafos, una “licencia de patente” se define como
+ cualquier acuerdo o compromiso expreso, cualquiera que sea su
+ denominación, que no imponga una patente (como el permiso expreso para
+ ejecutar una patente o acuerdos para no imponer demandas por infracción
+ de patente). “Conceder” una licencias de patente de este tipo a un
+ tercero significa hacer tal tipo de acuerdo o compromiso que no imponga
+ una patente al tercero.
+ Si usted transmite una obra amparada, conociendo que está amparada por
+ una licencia de patente, y las Fuentes Correspondientes no se encuentran
+ disponibles de forma pública para su copia, sin cargo alguno y bajo los
+ términos de esta Licencia, ya sea a través de un servidor público o
+ mediante cualquier otro medio, entonces usted deberá (1) hacer que las
+ Fuentes Correspondientes sean públicas, o (2) tratar de eliminar los
+ beneficios de la licencia de patente para esta obra en particular, o (3)
+ tratar de extender, de manera compatible con los requisitos de esta
+ Licencia, la licencia de patente a terceros. “Conocer que está afectado”
+ significa que usted tiene conocimiento real de que, para la licencia de
+ patente, la distribución de la obra amparada en un país, o el uso de la
+ obra amparada por sus destinatarios en un país, infringiría una o más
+ patentes existentes en ese país que usted considera válidas por algún
+ motivo.
+ Si en virtud de o en conexión con alguna transacción o acuerdo, usted
+ transmite, o difunde con fines de distribución, una obra amparada, y
+ concede una licencia de patente para algún tercero que reciba la obra
+ amparada, y les autorice a usar, transmitir, modificar o difundir una
+ copia específica de la obra amparada, entonces la licencia de patente que
+ usted otorgue se extiende automáticamente a todos los receptores de la
+ obra amparada y cualquier obra basada en ella.
+ Una licencia de patente es “discriminatoria” si no incluye dentro de su
+ ámbito de cobertura, prohibe el ejercicio de, o está condicionada a no
+ ejercitar uno o más de los derechos que están específicamente otorgados
+ por esta Licencia. Usted no debe transmitir una obra amparada si está
+ implicado en un acuerdo con terceros que esté relacionado con el negocio
+ de la distribución de software, en el que usted haga pagos a terceros
+ relacionados con su actividad de distribución de la obra, bajo el que
+ terceros conceden, a cualquier receptor de la obra amparada, una licencia
+ de patente discriminatoria (a) en relación con las copias de la obra
+ amparada transmitidas por usted (o copias hechas a partir de estas), o
+ (b) principalmente para y en relación con productos específicos o
+ compilaciones que contengan la obra amparada, a menos que usted forme
+ parte del acuerdo, o que esa licencia de patente fuese concedida antes
+ del 28 de marzo de 2007.
+ Ninguna cláusula de esta Licencia debe ser considerada como excluyente o
+ limitante de cualquier otra licencia implicada u otras defensas legales a
+ que pudiera tener derecho bajo la ley de propiedad intelectual vigente.
+ 13. No Abandonar la Libertad de Otros.
+ Si se le imponen condiciones (bien sea por orden judicial, acuerdo o de
+ otra manera) que contradicen las condiciones de esta Licencia, estas no
+ le eximen de las condiciones de esta Licencia. Si usted no puede
+ transmitir una obra amparada de forma que pueda satisfacer
+ simultáneamente sus obligaciones bajo esta Licencia y cualesquiera otras
+ obligaciones pertinentes, entonces, como consecuencia, usted no puede
+ transmitirla. Por ejemplo, si usted está de acuerdo con los términos que
+ le obligan a cobrar una regalía por la transmisión a aquellos a los que
+ transmite el Programa, la única forma en la que usted podría satisfacer
+ tanto esos términos como esta Licencia sería abstenerse completamente de
+ transmitir el Programa.
+ 14. Utilización con la Licencia Pública General Affero de GNU.
+ A pesar de cualquier otra disposición de esta Licencia, usted tiene
+ permiso para enlazar o combinar cualquier obra amparada con una obra
+ licenciada bajo la Licencia Pública General Affero de GNU en una única
+ obra combinada, y para transmitir la obra resultante. Los términos de
+ esta Licencia continuarán aplicándose a la parte que es la obra amparada,
+ pero los requisitos particulares de la Licencia Pública General Affero de
+ GNU, sección 13, concernientes a la interacción a través de una red se
+ aplicarán a la combinación como tal.
+ 15. Versiones Revisadas de esta Licencia.
+ La Free Software Foundation puede publicar versiones revisadas y/o nuevas
+ de la Licencia Pública General de GNU de vez en cuando. Cada nueva
+ versión será similar en espíritu a la versión actual, pero puede diferir
+ en detalles para abordar nuevos problemas o preocupaciones.
+ Cada versión recibe un número de versión distintivo. Si el Programa
+ especifica que cierta versión numerada de la Licencia Pública General de
+ GNU “o cualquier versión posterior” se aplica a él, usted tiene la opción
+ de seguir los términos y condiciones de esa versión numerada o de
+ cualquier versión posterior publicada por la Free Software Foundation. Si
+ el Programa no especifica un número de versión de la Licencia Pública
+ General de GNU, usted puede escoger cualquier versión publicada por la
+ Free Software Foundation.
+ Si el Programa escifica que un representante puede decidir que versiones
+ futuras de la Licencia Pública General de GNU pueden ser utilizadas, la
+ declaración pública del representante de aceptar una versión
+ permanentemente le autoriza a usted a elegir esa versión para el
+ Programa.
+ Las versiones posteriores de la licencia pueden darle permisos
+ adicionales o diferentes. No obstante, no se impone a ningún autor o
+ titular de los derechos de autor obligaciones adicionales como resultado
+ de su elección de seguir una versión posterior.
+ 16. Descargo de Responsabilidad de Garantía.
+ NO HAY GARANTÍA PARA EL PROGRAMA, PARA LA EXTENSIÓN PERMITIDA POR LA LEY
+ APLICABLE. EXCEPTO CUANDO SE INDIQUE LO CONTRARIO POR ESCRITO, LOS
+ TITULARES DE LOS DERECHOS DE AUTOR (“COPYRIGHT”) Y/O TERCEROS
+ PROPORCIONAN EL PROGRAMA “TAL CUAL” SIN GARANTÍAS DE NINGÚN TIPO, BIEN
+ SEAN EXPLÍCITAS O IMPLÍCITAS, INCLUYENDO, PERO NO LIMITADO A, LAS
+ GARANTÍAS IMPLÍCITAS DE COMERCIALIZACIÓN Y APTITUD PARA UN PROPÓSITO
+ PARTICULAR. EL RIESGO TOTAL EN CUANTO A CALIDAD Y RENDIMIENTO DEL
+ PROGRAMA ES CON USTED. SI EL PROGRAMA PRESENTA ALGÚN DEFECTO, USTED ASUME
+ EL COSTO DE TODAS LAS REVISIONES NECESARIAS, REPARACIONES O CORRECCIONES.
+ 17. Limitación de la responsabilidad.
+ EN NINGÚN CASO A MENOS QUE SEA REQUERIDO POR UNA LEY APLICABLE O ACUERDO
+ ESCRITO NINGÚN TITULAR DE LOS DERECHOS DE AUTOR (“COPYRIGHT”), O NINGÚN
+ TERCERO QUE MODIFIQUE Y/O TRANSMITA EL PROGRAMA COMO SE PERMITE
+ ANTERIORMENTE, SERÁ RESPONSABLE ANTE USTED POR DAÑOS, INCLUYENDO
+ CUALESQUIERA DAÑOS GENERALES, PARTICULARES, IMPREVISTOS O DERIVADOS DEL
+ USO O IMPOSIBILIDAD DE USO DEL PROGRAMA (INCLUYENDO, PERO NO LIMITADO A,
+ LA PÉRDIDA DE DATOS, DATOS GENERADOS INCORRECTOS, PÉRDIDAS SUFRIDAS POR
+ USTED O POR TERCERAS PERSONAS, O LOS FALLOS DEL PROGRAMA PARA OPERAR CON
+ OTROS PROGRAMAS), INCLUSO SI DICHO TITULAR O UN TERCERO HA SIDO ADVERTIDO
+ DE LA POSIBILIDAD DE TALES DAÑOS.
+ 18. Interpretación de las Secciones 15 y 16.
+ Si el descargo de responsabilidad de garantía y el límite de
+ responsabilidad proporcionado anteriormente no tiene efectos legales de
+ acuerdo a sus términos, los juzgados deberán aplicar la ley local que más
+ se asemeje a una renuncia absoluta de la responsabilidad civil
+ concerniente al Programa, a menos que una garantía o una asunción de
+ responsabilidad acompañe a la copia del Programa como resultado del pago
+ de una tasa.
+ Fin de los términos y condiciones
+
+
+ Cómo Aplicar Estos Términos a Sus Nuevos Programas
+ Si desarrolla un nuevo programa, y quiere que sea lo más usado posible
+ por el público, la mejor manera de conseguirlo es hacerlo software libre
+ para que cualquiera pueda redistribuirlo y modificarlo bajo estos
+ términos.
+ Para ello, añada la siguiente nota al programa. Lo más seguro es añadirla
+ al principio de cada fichero fuente para declarar más efectivamente la
+ exclusión de garantía; y cada fichero debe tener al menos la línea de
+ “derechos de autor (“copyright”)” y un puntero a donde se pueda encontrar
+ la anotación completa.
+ <una línea para dar el nombre del programa y una breve idea de lo que
+ hace>
+ Copyright (C) <año> <nombre del autor>
+
+ Este programa es software libre: puede redistribuirlo y/o modificarlo
+ bajo los términos de la Licencia Pública General de GNU publicada por la
+ Free Software Foundation, ya sea la versión 3 de la Licencia, o (a su
+ elección) cualquier versión posterior.
+
+ Este programa se distribuye con la esperanza de que sea útil pero SIN
+ NINGUNA GARANTÍA; incluso sin la garantía implícita de MERCANTIBILIDAD o
+ CALIFICADA PARA UN PROPÓSITO EN PARTICULAR. Vea la Licencia Pública
+ General de GNU para más detalles.
+
+ Usted ha debido de recibir una copia de la Licencia Pública General
+ de GNU junto con este programa. Si no, vea <http://www.gnu.org/licenses/>.
+
+ También añada información sobre cómo contactarle por correo electrónico u
+ ordinario.
+ Si el programa es interactivo, haga que muestre un breve aviso como el
+ siguiente cuando se inicie en modo interactivo:
+ <programa> Copyright (C) <año> <nombre del autor>
+ Este programa se ofrece SIN GARANTÍA ALGUNA; escriba `show w' para
+ consultar los detalles. Este programa es software libre, y usted puede
+ redistribuirlo bajo ciertas condiciones; escriba `show c' para más
+ información.
+ Los hipotéticos comandos show w y show w deberán mostrar las partes
+ correspondientes de la Licencia Pública General. Por supuesto, los
+ comandos en su programa pueden ser diferentes; para una interfaz gráfica
+ de usuario, puede usar un mensaje del tipo “Acerca de”.
+ También debería conseguir que su empresa (si trabaja como programador) o
+ escuela, en su caso, firme una “renuncia de derechos de autor
+ (“copyright”)” sobre el programa, si fuese necesario. Para más
+ información a este respecto, y saber cómo aplicar y cumplir la licencia
+ GNU GPL, consulte http://www.gnu.org/licenses/.
+ La Licencia Pública General de GNU no permite incorporar sus programas
+ como parte de programas propietarios. Si su programa es una subrutina en
+ una biblioteca, podría considerar mucho más útil permitir el enlace de
+ aplicaciones propietarias con la biblioteca. Si esto es lo que quiere
+ hacer, utilice la GNU Lesser General Public License en vez de esta
+ Licencia. Pero primero, por favor consulte
+ http://www.gnu.org/philosophy/why-not-lgpl.html.
diff --git a/userguides/sanitycheck/registration/LGPLv3_pt-br.txt b/userguides/sanitycheck/registration/LGPLv3_pt-br.txt
new file mode 100644
index 00000000..45e167e9
--- /dev/null
+++ b/userguides/sanitycheck/registration/LGPLv3_pt-br.txt
@@ -0,0 +1,167 @@
+This is an unofficial translation of the GNU General Public License into Brazilian Portuguese. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPLonly the original English text of the GNU GPL does that. However, we hope that this translation will help Brazilian Portuguese speakers understand the GNU GPL better.
+Essa uma traduo no oficial da Licena Pblica Geral GNU para portugus brasileiro. Ela no foi publicada pela Free Software Foundation e no estabelece legalmente os termos de distribuio para software que usa a GNU GPL apenas o texto original em ingls da GNU GPL faz isso. Porm, esperamos que essa traduo venha a ajudar os falantes do portugus brasileiro a melhor entender a GNU GPL.
+You may publish this translation, modified or unmodified, only under the terms at http://www.gnu.org/licenses/translations.html
+Voc pode publicar essa traduo, modificada ou no, somente sob os termos em http://www.gnu.org/licenses/translations.html
+LICENA PBLICA GERAL GNU
+Verso 3, 29 de junho de 2007
+Copyright 2007 Free Software Foundation, Inc. <https://fsf.org/>
+Todos esto autorizados a copiar e distribuir cpias literais deste documento de licena, mas a alterao no permitida.
+Prembulo
+A Licena Pblica Geral GNU uma licena livre, com copyleft, para softwares e outros tipos de trabalhos.
+As licenas para a maioria dos softwares e outros trabalhos prticos so projetadas para tirar sua liberdade de compartilhar e alterar os trabalhos. Em contrapartida, a Licena Pblica Geral GNU destina-se a garantir a sua liberdade de compartilhar e alterar todas as verses de um programa para se certificar de que permanea como software livre para todos os seus usurios. Ns, a Free Software Foundation, usamos a Licena Pblica Geral GNU para a maioria dos nossos softwares; aplica-se tambm a qualquer outro trabalho divulgado desta forma pelos seus autores. Voc tambm pode aplic-la aos seus programas.
+Quando falamos de software livre, estamos nos referindo liberdade, no ao preo. Nossas Licenas Pblicas Gerais so projetadas para garantir que voc tenha a liberdade de distribuir cpias de software livre (e cobrar por elas, se desejar), que voc receba o cdigo-fonte ou possa obt-lo, se desejar, que voc possa mudar o software ou usar partes dele em novos programas livres e que voc saiba que pode fazer essas coisas.
+Para proteger seus direitos, precisamos impedir que outros neguem esses direitos ou peam que voc os renuncie. Portanto, voc tem certas responsabilidades se voc distribui cpias do software, ou se voc o modifica: responsabilidades para respeitar a liberdade dos outros.
+Por exemplo, se voc distribuir cpias de tal programa, gratuitamente ou por uma taxa, voc deve transmitir aos destinatrios as mesmas liberdades que voc recebeu. Voc deve se certificar de que eles, tambm, recebam ou possam obter o cdigo-fonte. E voc deve mostrar esses termos para que eles conheam seus direitos.
+Os desenvolvedores que usam a GNU GPL protegem seus direitos com duas etapas: (1) afirmam direitos autorais sobre o software e (2) oferecem-lhe esta Licena, dando permisso legal para copi-lo, distribu-lo e/ou modific-lo.
+Para a proteo dos desenvolvedores e dos autores, a GPL explica claramente que no h garantia para este software livre. Para o bem de tanto os usurios como os autores, a GPL exige que as verses modificadas sejam marcadas como alteradas, de modo que seus problemas no sejam atribudos erroneamente aos autores de verses anteriores.
+Alguns dispositivos so projetados para negar o acesso aos usurios para instalar ou executar verses modificadas do software dentro deles, embora o fabricante possa faz-lo. Isso fundamentalmente incompatvel com o objetivo de proteger a liberdade dos usurios de mudar o software. O padro sistemtico de tal abuso ocorre na rea de produtos para indivduos usarem, que precisamente onde mais inaceitvel. Portanto, ns criamos essa verso da GPL para proibir a prtica desses produtos. Se esses problemas surgem substancialmente em outros domnios, estamos prontos para estender essa disposio a esses domnios em verses futuras da GPL, conforme necessrio para proteger a liberdade dos usurios.
+Finalmente, todo programa constantemente ameaado por patentes de software. Os Estados no devem permitir que as patentes restrinjam o desenvolvimento e o uso de software em computadores de propsito geral, mas naqueles que o fazem, desejamos evitar o perigo especial de que as patentes aplicadas a um programa livre possam torn-lo efetivamente proprietrio. Para evitar isso, a GPL se assegura que as patentes no possam ser usadas para tornar o programa no livre.
+Os termos e condies precisos para a cpia, distribuio e modificao seguem abaixo.
+TERMOS E CONDIES
+0. Definies.
+Essa Licena refere-se verso 3 da Licena Pblica Geral GNU.
+Copyright, ou direitos autorais, tambm significa leis do tipo direito autoral que se aplicam a outros tipos de trabalhos, tal como mscaras de semicondutores.
+O Programa refere-se a qualquer trabalho com direito autoral licenciado sob esta Licena. Cada licenciado endereado como voc. Licenciados e destinatrios podem ser indivduos ou organizaes.
+Modificar um trabalho significa copiar ou adaptar tudo ou parte do trabalho de uma forma a ser necessrio ter permisso de direitos autorais, alm da criao de uma cpia exata. O trabalho resultante chamado de verso modificada do trabalho anterior ou um trabalho baseado em o trabalho anterior.
+Um trabalho coberto significa o Programa no modificado ou um trabalho baseado no Programa.
+Propagar um trabalho significa fazer qualquer coisa com ele que, sem permisso, faria voc direta ou secundariamente responsvel por infrao de acordo com a lei de direitos autorais aplicvel, exceto executando-o em um computador ou modificando uma cpia privada. A propagao inclui a cpia, distribuio (com ou sem modificao), disponibilizao ao pblico e, em alguns pases, outras atividades tambm.
+Transmitir um trabalho significa qualquer tipo de propagao que permita a terceiros fazer ou receber cpias. A simples interao com um usurio atravs de uma rede de computadores, sem transferncia de uma cpia, no transmisso.
+Uma interface de usurio interativa exibe Avisos Legais Apropriados na medida em que inclui um recurso conveniente e proeminentemente visvel que (1) exibe um aviso de direitos autorais apropriado e (2) diz ao usurio que no h garantia para o trabalho (exceto na extenso em que as garantias so fornecidas), que os licenciados podem transmitir o trabalho sob esta Licena e como visualizar uma cpia desta Licena. Se a interface apresenta uma lista de comandos ou opes ao usurio, como um menu, um item proeminente na lista atende a este critrio.
+1. Cdigo-fonte.
+O cdigo-fonte para um trabalho significa a forma preferida do trabalho para fazer modificaes nele. Cdigo objeto significa qualquer forma no fonte de um trabalho.
+Uma Interface Padro significa uma interface que seja um padro oficial definido por um corpo de padres reconhecido ou, no caso de interfaces especificadas para uma linguagem de programao especfica, que seja amplamente utilizada entre desenvolvedores que trabalham naquela linguagem.
+As Bibliotecas de Sistema de um trabalho executvel incluem qualquer coisa, alm do trabalho como um todo, que (a) est includo na forma normal de empacotamento de um Componente Principal, mas que no faz parte desse Componente Principal, e (b) serve apenas para permitir o uso do trabalho com esse Componente Principal, ou para implementar uma Interface Padro para a qual uma implementao esteja disponvel ao pblico na forma de cdigo-fonte. Um Componente Principal, neste contexto, significa um componente principal essencial (kernel, sistema de janelas e assim por diante) do sistema operacional especfico (se houver) em que o trabalho executvel executado ou um compilador usado para produzir o trabalho, ou um interpretador de cdigo objeto usado para execut-lo.
+O Fonte Correspondente para um trabalho na forma de cdigo objeto significa todo o cdigo-fonte necessrio para gerar, instalar e (para um trabalho executvel) executar o cdigo objeto e modificar o trabalho, incluindo scripts para controlar essas atividades. No entanto, no inclui as Bibliotecas de Sistema do trabalho, nem ferramentas de uso geral ou programas livres geralmente disponveis que so usados na forma no modificada na realizao dessas atividades, mas que no fazem parte do trabalho. Por exemplo, o Fonte Correspondente inclui arquivos de definio de interface associados a arquivos fonte para o trabalho e o cdigo-fonte para bibliotecas compartilhadas e subprogramas vinculados dinamicamente que o trabalho projetado especificamente para exigir, como por comunicao ntima de dados ou fluxo de controle entre esses subprogramas e outras partes do trabalho.
+O Fonte Correspondente no precisa incluir nada que os usurios possam regenerar automaticamente de outras partes do Fonte Correspondente.
+O Fonte Correspondente para um trabalho na forma de cdigo-fonte o mesmo trabalho.
+2. Permisses Bsicas.
+Todos os direitos concedidos sob esta Licena so concedidos para o termo de direito autoral sobre o Programa e so irrevogveis desde que as condies estabelecidas sejam atendidas. Esta Licena afirma explicitamente a sua permisso ilimitada para executar o Programa no modificado. A sada da execuo de um trabalho coberto coberta por esta Licena somente se a sada, dado seu contedo, constituir um trabalho coberto. Esta Licena reconhece seus direitos de uso justo ou outro equivalente, conforme previsto pela lei de direitos autorais.
+Voc pode fazer, executar e propagar trabalhos cobertos que voc no transmite, sem condies, desde que sua licena permanea em vigor. Voc pode transmitir trabalhos cobertos para terceiros com o nico propsito de fazer com que eles faam modificaes exclusivamente para voc ou lhe forneam instalaes para executar esses trabalhos, desde que voc cumpra os termos desta Licena transmitindo todo o material para o qual voc no controla o direito autoral. Aqueles que fazem ou executam os trabalhos cobertos para voc devem faz-lo exclusivamente em seu nome, sob sua direo e controle, em termos que os impeam de fazer cpias de seu material protegido por direito autoral fora do relacionamento deles com voc.
+A transmisso sob qualquer outra circunstncia permitida somente nas condies estabelecidas abaixo. Sublicenciamento no permitido; a seo 10 o torna desnecessrio.
+3. Protegendo os Direitos Legais dos Usurios contra Lei de Anti-Evaso.
+Nenhum trabalho coberto deve ser considerado parte de uma medida tecnolgica efetiva sob qualquer lei aplicvel que cumpra as obrigaes previstas no artigo 11 do tratado de direitos autorais da OMPI, aprovado em 20 de dezembro de 1996, ou leis similares que probam ou restrinjam a evaso de tais medidas.
+Quando voc transmite um trabalho coberto, voc renuncia a qualquer poder legal para proibir a evaso de medidas tecnolgicas, na extenso em que essa evaso seja efetuada exercendo direitos sob esta Licena em relao ao trabalho coberto e voc renuncia a qualquer inteno de limitar operao ou modificao do trabalho como um meio de fazer cumprir, contra os usurios do trabalho, seus os direitos legais ou de terceiros para proibir a evaso de medidas tecnolgicas.
+4. Transmitindo Cpias Literais.
+Voc pode transmitir cpias literais do cdigo-fonte do Programa na medida que voc o recebe, em qualquer meio, desde que voc publique de forma consistente e apropriada em cada cpia um aviso de direitos autorais apropriado; mantenha intactos todos os avisos afirmando que esta Licena e quaisquer termos no permissivos adicionados de acordo com a seo 7 se aplicam ao cdigo; mantenha intactos todos os avisos da ausncia de qualquer garantia; e d a todos os destinatrios uma cpia desta Licena junto com o Programa.
+Voc pode cobrar qualquer preo ou nenhum preo por cada cpia que voc transmite, e voc pode oferecer proteo de suporte ou garantia por uma taxa.
+5. Transmitindo Verses Modificadas dos Fontes.
+Voc pode transmitir um trabalho baseado no Programa, ou as modificaes para produzi-lo a partir do Programa, na forma de cdigo-fonte sob os termos da seo 4, desde que voc tambm atenda a todas essas condies:
+ a) O trabalho deve levar avisos proeminentes afirmando que voc o modificou e dando uma data relevante.
+ b) O trabalho deve levar avisos proeminentes afirmando que ele est lanado sob esta Licena e quaisquer condies adicionadas sob a seo 7. Este requisito modifica o requisito na seo 4 de mantenha intactos todos os avisos.
+ c) Voc deve licenciar o trabalho, como um todo, sob esta Licena para qualquer pessoa que entre na posse de uma cpia. Esta Licena, portanto, se aplicar, juntamente com todos os termos adicionais aplicveis da seo 7, a totalidade do trabalho e todas as suas partes, independentemente de como elas so empacotadas. Esta Licena no d permisso para licenciar o trabalho de qualquer outra forma, mas no invalida tal permisso se voc o recebeu separadamente.
+ d) Se o trabalho tiver interfaces de usurio interativas, cada um deve exibir Avisos Legais Apropriados; no entanto, se o Programa tiver interfaces interativas que no exibam Avisos Legais Apropriados, seu trabalho no precisa exibi-los.
+Uma compilao de um trabalho coberto com outros trabalhos separados e independentes, que no so, por sua natureza, extenses do trabalho coberto e que no esto combinados com ele de modo a formar um programa maior, em um volume de armazenamento ou meio de distribuio, chamada de agregada se a compilao e seus direitos autorais resultantes no forem usados para limitar o acesso ou os direitos legais dos usurios da compilao alm do que trabalhos individuais permitem. A incluso de um trabalho coberto em um agregado no faz com que esta Licena se aplique s outras partes do agregado.
+6. Transmitindo Formas No Fonte.
+Voc pode transmitir um trabalho coberto na forma de cdigo objeto nos termos das sees 4 e 5, desde que voc tambm transmita o Fonte Correspondente legvel por mquina sob os termos desta Licena, de uma dessas maneiras:
+ a) Transmitir o cdigo objeto em, ou incorporado em, um produto fsico (incluindo um meio de distribuio fsica), acompanhado pelo Fonte Correspondente, fixada em um meio fsico durvel usualmente usado para intercmbio de software.
+ b) Transmitir o cdigo objeto em, ou incorporado em, um produto fsico (incluindo um meio de distribuio fsica), acompanhado de uma oferta escrita, vlido por pelo menos trs anos e vlido enquanto voc oferecer peas sobressalentes ou suporte ao cliente para aquele modelo de produto, para fornecer a qualquer pessoa que possua o cdigo objeto (1) uma cpia do Fonte Correspondente para todo o software no produto coberto por esta Licena, em um meio fsico durvel usualmente usado para intercmbio de software, por um preo no mais do que o seu custo razovel de realizar fisicamente esse envio de fonte, ou (2) acessar para copiar o Fonte Correspondente de um servidor de rede sem custo.
+ c) Transmitir cpias individuais do cdigo objeto com uma cpia da oferta escrita para fornecer o Fonte Correspondente. Esta alternativa permitida apenas de forma ocasional e no comercial, e somente se voc recebeu o cdigo objeto com tal oferta, de acordo com a subseo 6b.
+ d) Transmitir o cdigo objeto, oferecendo acesso a partir de um local designado (gratuitamente ou por uma taxa), e oferecer acesso equivalente ao Fonte Correspondente da mesma maneira atravs do mesmo local sem custo adicional. Voc no precisa exigir que os destinatrios copiem o Fonte Correspondente junto com o cdigo objeto. Se o local para copiar o cdigo objeto for um servidor de rede, o Fonte Correspondente pode estar em um servidor diferente (operado por voc ou um terceiro) que suporte instalaes de cpia equivalentes, desde que voc mantenha instrues claras ao lado do cdigo objeto, dizendo onde encontrar o Fonte Correspondente. Independentemente de qual servidor que hospeda o Fonte Correspondente, voc permanece obrigado a garantir que ele esteja disponvel enquanto for necessrio para satisfazer esses requisitos.
+ e) Transmitir o cdigo objeto usando a transmisso ponto a ponto, desde que voc informe outros pares onde o cdigo objeto e o Fonte Correspondente do trabalho esto sendo oferecidos ao pblico em geral sem cobrana nos termos da subseo 6d.
+Uma poro separvel do cdigo objeto, cujo cdigo-fonte excludo do Fonte Correspondente como uma Biblioteca de Sistema, no precisa ser includa na transmisso do trabalho do cdigo objeto.
+Um Produto do Usurio (1) um produto de consumo, o que significa que qualquer propriedade pessoal tangvel que normalmente usada para fins pessoais, familiares ou domsticos, ou (2) qualquer coisa projetada ou vendida para incorporao em uma habitao. Ao determinar se um produto um produto de consumo, os casos duvidosos devem ser resolvidos a favor da cobertura. Para um determinado produto recebido por um determinado usurio, normalmente usado refere-se a um uso tpico ou comum dessa classe de produto, independentemente do status do usurio especfico ou da maneira em que o usurio particular realmente usa, ou espera ou esperado usar, o produto. Um produto um produto de consumo, independentemente de o produto possuir importantes usos comerciais, usos industriais ou sem ser consumidores, a menos que essas utilizaes representem o nico modo significativo de uso do produto.
+Informaes de Instalao para um Produto de Usurio significa que quaisquer mtodos, procedimentos, chaves de autorizao ou outras informaes necessrias para instalar e executar verses modificadas de um trabalho coberto nesse Produto de Usurio de uma verso modificada de seu Fonte Correspondente. As informaes devem ser suficientes para garantir que o contnuo funcionamento do cdigo objeto modificado no seja de modo algum proibido ou interferido apenas porque a modificao foi feita.
+Se voc transmitir um cdigo objeto trabalhando sob esta seo em, ou com, ou especificamente para uso em, um Produto do Usurio, e a transmisso ocorre como parte de uma transao na qual o direito de posse e uso do Produto do Usurio transferido para o destinatrio em perpetuidade ou por um termo fixo (independentemente de como a transao caracterizada), o Fonte Correspondente transmitido sob esta seo deve ser acompanhado das Informaes de Instalao. Mas este requisito no se aplica se nem voc nem um terceiro tiverem a capacidade de instalar o cdigo objeto modificado no Produto do Usurio (por exemplo, o trabalho foi instalado na ROM).
+O requisito de fornecer Informaes de Instalao no inclui um requisito para continuar a fornecer servio de suporte, garantia ou atualizaes para um trabalho que foi modificado ou instalado pelo destinatrio ou para o Produto do Usurio no qual foi modificado ou instalado. O acesso a uma rede pode ser negado quando a modificao propriamente dita afeta materialmente e adversamente a operao da rede ou viola as regras e os protocolos para comunicao em toda a rede.
+O Fonte Correspondente transmitido e as Informaes de Instalao fornecidas, de acordo com esta seo, devem estar em um formato que esteja documentado publicamente (e com uma implementao disponvel ao pblico na forma de cdigo-fonte) e no deve exigir nenhuma senha ou chave especial para desempacotar, ler ou copiar.
+7. Termos Adicionais.
+Permisses adicionais so termos que complementam os termos desta Licena fazendo excees de uma ou mais de suas condies. As permisses adicionais que so aplicveis a todo o Programa devem ser tratadas como se estivessem includas nesta Licena, na extenso que elas sejam vlidas de acordo com a lei aplicvel. Se as permisses adicionais se aplicam apenas a parte do Programa, essa parte pode ser usada separadamente nessas permisses, mas o Programa inteiro permanece governado por esta Licena, independentemente das permisses adicionais.
+Quando voc transmite uma cpia de um trabalho coberto, voc pode, a seu critrio, remover quaisquer permisses adicionais dessa cpia ou de qualquer parte dela. (Permisses adicionais podem ser escritas para requerer sua prpria remoo em certos casos quando voc modifica o trabalho.) Voc pode colocar permisses adicionais em material, adicionado por voc a um trabalho coberto, para o qual voc tenha ou possa dar permisso de direitos autorais apropriados.
+No obstante qualquer outra disposio desta Licena, para o material que voc adiciona a um trabalho coberto, voc pode (se autorizado pelos detentores de direitos autorais desse material) completar os termos desta Licena com os termos:
+ a) Renunciar a garantia ou limitar a responsabilidade, ao contrrio dos termos das sees 15 e 16 desta Licena; ou
+ b) Exigir a preservao de avisos legais razoveis especificados ou atribuies de autor nesse material ou nos Avisos Legais Apropriados exibidos por trabalhos que o contenham; ou
+ c) Proibir a falsa declarao da origem desse material, ou exigir que as verses modificadas de tais materiais sejam marcadas de maneira razovel como diferente da verso original; ou
+ d) Limitar o uso para fins publicitrios de nomes de licenciadores ou autores do material; ou
+ e) Recusar a concesso de direitos sob lei de marca registrada para o uso de alguns nomes comerciais, marcas registradas ou marcas de servio; ou
+ f) Exigir indenizao de licenciadores e autores desse material por qualquer pessoa que transmitir o material (ou verses modificadas dele) com pressupostos contratuais de responsabilidade para o destinatrio, por qualquer responsabilidade que esses pressupostos contratuais impem diretamente aos licenciantes e autores.
+Todos os outros termos adicionais no permissivos so considerados restries adicionais na acepo da seo 10. Se o Programa como voc o recebeu, ou qualquer parte dele, contm um aviso afirmando que regido por esta Licena, juntamente com um termo que uma restrio adicional, voc pode remover esse termo. Se um documento de licena contiver uma restrio adicional, mas permitir o relicenciamento ou transmisso sob esta Licena, voc pode adicionar a um material de trabalho coberto regido pelos termos desse documento de licena, desde que a restrio adicional no sobreviva a tal relicenciamento ou transmisso.
+Se voc adicionar termos a um trabalho coberto de acordo com esta seo, voc deve colocar, nos arquivos fonte relevantes, uma declarao dos termos adicionais que se aplicam a esses arquivos, ou um aviso indicando onde encontrar os termos aplicveis.
+Termos adicionais, permissivos ou no permissivos, podem ser estabelecidos sob a forma de uma licena escrita separadamente ou estabelecidos como excees; os requisitos acima se aplicam de qualquer maneira.
+8. Terminao.
+Voc no pode propagar ou modificar um trabalho coberto, exceto conforme expressamente previsto nesta Licena. Qualquer tentativa de propagar ou modific-la invlida e terminar automaticamente os seus direitos sob esta Licena (incluindo quaisquer licenas de patente concedidas nos termos do terceiro pargrafo da seo 11).
+No entanto, se voc cessar toda violao desta Licena, a sua licena de um detentor de direitos autorais especficos reintegrada (a) provisoriamente, a menos que e at que o detentor dos direitos autorais termine de forma explcita e definitiva sua licena, e (b) permanentemente, se o detentor dos direitos autorais falhar para lhe notificar da violao por algum meio razovel antes de 60 dias aps a cessao.
+Alm disso, a sua licena de um detentor de direitos autorais especfico reintegrada de forma permanente se o detentor dos direitos autorais o notificar da violao por algum meio razovel, esta ser a primeira vez que voc recebe aviso de violao desta Licena (para qualquer trabalho) desse detentor de direitos autorais, e voc resolver a violao antes dos 30 dias aps o recebimento do aviso.
+A terminao de seus direitos sob esta seo no encerra as licenas das partes que receberam cpias ou direitos de voc sob esta Licena. Se seus direitos foram encerrados e no permanentemente reintegrados, voc no se qualifica para receber novas licenas para o mesmo material na seo 10.
+9. Aceitao No Exigida para Ter Cpias.
+Voc no obrigado a aceitar esta Licena para receber ou executar uma cpia do Programa. A propagao auxiliar de um trabalho coberto que ocorre apenas como consequncia da utilizao da transmisso ponto a ponto para receber uma cpia tambm no exige aceitao. No entanto, nada alm dessa Licena lhe concede permisso para propagar ou modificar qualquer trabalho coberto. Essas aes infringem direitos autorais se voc no aceitar esta Licena. Portanto, modificando ou propagando um trabalho coberto, voc indica sua aceitao desta Licena para faz-lo.
+10. Licenciamento Automtico de Destinatrios Downstream.
+Cada vez que voc transmite um trabalho coberto, o destinatrio recebe automaticamente uma licena dos licenciadores originais, para executar, modificar e propagar esse trabalho, sujeito a esta Licena. Voc no responsvel por fazer cumprir a conformidade por terceiros com esta Licena.
+Uma transao de entidade uma transao que transfere o controle de uma organizao, ou substancialmente todos os ativos de uma, ou que subdivide uma organizao ou que funde organizaes. Se a propagao de um trabalho coberto resultar de uma transao de entidade, cada parte para essa transao que recebe uma cpia do trabalho tambm recebe quaisquer licenas para o trabalho que o antecessor da parte de interesse tenha ou possa dar sob o pargrafo anterior, alm de um direito posse do Fonte Correspondente do trabalho do antecessor em interesse, se o antecessor o tiver ou possa obt-lo com esforos razoveis.
+Voc no pode impor restries adicionais sobre o exerccio dos direitos concedidos ou afirmados sob esta Licena. Por exemplo, voc no pode impor uma taxa de licena, royalties ou outra cobrana pelo exerccio de direitos concedidos sob esta Licena e voc no pode iniciar litgio (incluindo uma ao de regresso ou reconveno em um processo judicial) alegando que qualquer reivindicao de patente infringida fazendo, usando, vendendo, oferecendo para venda, ou importando o Programa ou qualquer parte dele.
+11. Patentes.
+Um contribuidor um detentor de direitos autorais que autoriza o uso sob esta Licena do Programa ou um trabalho no qual o Programa se baseia. O trabalho assim licenciado chamado de verso de contribuidor do contribuidor.
+Os pedidos de patente essenciais de um contribuidor so todos os pedidos de patentes pertencentes ou controlados pelo contribuidor, j adquiridos ou adquiridos posteriormente, que seriam violados de alguma forma, permitidos por esta Licena, de fazer, usar ou vender sua verso do contribuidor, mas no inclui alegaes que s seriam violadas como consequncia de uma nova modificao da verso do contribuidor. Para efeitos desta definio, o controle inclui o direito de conceder sublicenas de patentes de forma consistente com os requisitos desta Licena.
+Cada contribuidor concede-lhe uma licena de patente no exclusiva, mundial, livre de royalties sob os principais pedidos de patente do contribuidor, para fazer, usar, vender, oferecer para venda, importar e executar de outra forma, modificar e propagar o contedo da sua verso do contribuidor.
+Nos trs pargrafos seguintes, uma licena de patente qualquer acordo ou compromisso expresso, no entanto, denominado, para no impor uma patente (como uma permisso expressa para praticar uma patente ou convnio para no processar por violao de patente). Para conceder essa licena de patente a uma parte significa fazer tal acordo ou compromisso de no fazer valer uma patente contra a parte.
+Se voc transmitir um trabalho coberto, confiando sabidamente em uma licena de patente, e o Fonte Correspondente do trabalho no estiver disponvel para que qualquer pessoa copie, gratuitamente e sob os termos desta Licena, atravs de um servidor de rede acessvel ao pblico ou outro meio facilmente acessvel, ento voc deve (1) fazer com que o Fonte Correspondente esteja disponvel, ou (2) providenciar para se privar do benefcio da licena de patente para este trabalho especfico, ou (3) providenciar, de forma consistente com os requisitos desta Licena, a ampliao a licena de patente para destinatrios downstream. Confiando sabidamente significa que voc tem conhecimento real de que, exceto pela licena de patente, a sua transmisso do trabalho coberto em um pas, ou o uso do trabalho coberto por seu destinatrio em um pas, violaria uma ou mais patentes identificveis nesse pas que voc tem motivos para acreditar serem vlidos.
+Se, de acordo com ou em conexo com uma nica transao ou arranjo, voc transmite, ou propaga atravs da aquisio de um trabalho coberto e concede uma licena de patente a algumas das partes que recebem o trabalho coberto autorizando-os a usar, propagar, modificar ou transmitir uma cpia especfica do trabalho coberto, a licena de patente que voc concede automaticamente estendida a todos os destinatrios do trabalho coberto e trabalhos baseados nele.
+Uma licena de patente discriminatria se no incluir dentro do escopo de sua cobertura, probe o exerccio ou est condicionada ao no exerccio de um ou mais dos direitos especificamente concedidos sob esta Licena. Voc no pode transmitir um trabalho coberto se voc parte de um acordo com um terceiro que est no negcio de distribuio de software, sob o qual voc efetua o pagamento ao terceiro com base na extenso de sua atividade de transmisso do trabalho e sob a qual o terceiro concede, a qualquer das partes que receberiam o trabalho coberto de voc, uma licena de patente discriminatria (a) em conexo com cpias do trabalho coberto transmitido por voc (ou cpias feitas com essas cpias) ou (b) principalmente para e em conexo com produtos especficos ou compilaes que contenham o trabalho coberto, a menos que voc tenha assinado esse acordo, ou que a licena de patente tenha sido concedida, antes de 28 de maro de 2007.
+Nada nesta Licena deve ser interpretado como excluindo ou limitando qualquer licena implcita ou outras defesas a uma infrao que de outra forma pode estar disponvel para voc de acordo com a lei de patentes aplicvel.
+12. No Entregar a Liberdade dos Outros.
+Se as condies que forem impostas a voc (seja por ordem judicial, acordo ou de outra forma) contradizem as condies desta Licena, elas no lhe eximem das condies desta Licena. Se voc no pode transmitir um trabalho coberto para satisfazer simultaneamente suas obrigaes sob esta Licena e quaisquer outras obrigaes pertinentes, ento, como consequncia, voc no pode transmitir isso. Por exemplo, se voc concordar com termos que obrigam voc a colecionar um royalty para transmitir ainda daqueles a quem voc transmite o Programa, a nica maneira de satisfazer esses termos e esta Licena seria abster-se de transmitir o Programa.
+13. Uso com a Licena Pblica Geral Affero GNU.
+No obstante qualquer outra disposio desta Licena, voc tem permisso para vincular ou combinar qualquer trabalho coberto com um trabalho licenciado sob a verso 3 da Licena Pblica Geral Affero GNU em um nico trabalho combinado e transmitir o trabalho resultante. Os termos desta Licena continuaro a se aplicar parte que o trabalho coberto, mas os requisitos especiais da Licena Pblica Geral Affero GNU, seo 13, referentes interao atravs de uma rede, sero aplicados combinao como tal.
+14. Verses Revisadas desta Licena.
+A Free Software Foundation pode publicar verses peridicas e/ou novas da Licena Pblica Geral GNU de tempos em tempos. Essas novas verses sero semelhantes em esprito verso atual, mas podem diferir em detalhes para resolver novos problemas ou preocupaes.
+Cada verso recebe um nmero de verso distinto. Se o Programa especificar que uma certa verso numerada da Licena Pblica Geral GNU ou qualquer verso posterior se aplica a ele, voc tem a opo de seguir os termos e condies dessa verso numerada ou de qualquer verso posterior publicada pela Free Software Foundation. Se o Programa no especificar um nmero de verso da Licena Pblica Geral GNU, voc pode escolher qualquer verso publicada pela Free Software Foundation.
+Se o Programa especifica que um intermedirio pode decidir quais verses futuras da Licena Pblica Geral GNU podem ser usadas, a declarao pblica do intermedirio de aceitao de uma verso lhe autoriza permanentemente a escolher essa verso para o Programa.
+Verses posteriores da licena podem lhe dar permisses adicionais ou diferentes. No entanto, nenhuma obrigao adicional imposta a qualquer autor ou detentor de direitos autorais como resultado de sua escolha de seguir uma verso posterior.
+15. Aviso Legal de Garantia.
+NO H NENHUMA GARANTIA PARA O PROGRAMA, NA EXTENSO PERMITIDA PELA LEI APLICVEL. EXCETO QUANDO TUDO INDICADO POR ESCRITO, OS DETENTORES DE DIREITOS AUTORAIS E/OU OUTRAS PARTES FORNECEM O PROGRAMA COMO EST SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLCITA, INCLUINDO, MAS NO SE LIMITANDO A, GARANTIAS IMPLCITAS DE COMERCIALIZAO E ADEQUAO PARA UM FIM ESPECFICO. TODO O RISCO SOBRE A QUALIDADE E O DESEMPENHO DO PROGRAMA EST COM VOC. SE O PROGRAMA APRESENTAR DEFEITO, VOC ASSUME O CUSTO DE TODA A MANUTENO, REPARAO OU CORREO NECESSRIA.
+16. Limitao de Responsabilidade.
+EM NENHUM CASO, A MENOS QUE EXIGIDO PELA LEI APLICVEL OU ACORDADO POR ESCRITO, QUALQUER DETENTOR DE DIREITOS AUTORAIS, OU QUALQUER OUTRA PARTE QUE MODIFICA E/OU TRANSMITE O PROGRAMA COMO PERMITIDO ACIMA, SE RESPONSABILIZAR POR DANOS, INCLUINDO QUALQUER DANO GERAL, ESPECIAL, INCIDENTAL OU CONSEQUENCIAL QUE SURGIR DO USO OU INCAPACIDADE DE USAR O PROGRAMA (INCLUINDO, MAS NO SE LIMITANDO PERDA DE DADOS OU DADOS QUE SO PRESTADOS IMPRECISAMENTE OU PERDAS SUSTENTADAS POR VOC OU TERCEIROS OU UMA FALHA DO PROGRAMA A OPERAR COM OUTROS PROGRAMAS), MESMO SE TAL DETENTOR OU OUTRA PARTE TENHA SIDO AVISADO DA POSSIBILIDADE DE TAIS DANOS.
+17. Interpretao das Sees 15 e 16.
+Se a renncia de garantia e a limitao de responsabilidade previstos acima no puderem ter efeito legal local de acordo com seus termos, os tribunais revisionais aplicaro a lei local que se aproxima mais de uma renncia absoluta a toda a responsabilidade civil em conexo com o Programa, a menos que uma garantia ou suposio de responsabilidade acompanhe uma cpia do Programa em troca de uma taxa.
+FIM DOS TERMOS E CONDIES
+Como Aplicar Esses Termos a Seus Novos Programas
+Se voc desenvolver um novo programa, e deseja que seja do melhor uso possvel para o pblico, a melhor maneira de conseguir isso torn-lo software livre, o qual todos podem redistribuir e mudar de acordo sob esses termos.
+Para fazer isso, anexe os seguintes avisos ao programa. mais seguro anex-los ao incio de cada arquivo fonte para indicar com maior eficincia a excluso da garantia; e cada arquivo deve ter pelo menos a linha copyright e apontar para onde o aviso completo encontrado.
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+Em portugus, seria o equivalente a:
+ <uma linha para dar o nome do programa e uma ideia breve do que faz.>
+ Copyright (C) <ano> <nome do autor>
+
+ Este programa um software livre: voc pode redistribu-lo e/ou
+modific-lo sob os termos da Licena Pblica Geral GNU, conforme
+publicado pela Free Software Foundation, seja a verso 3 da Licena
+ou (a seu critrio) qualquer verso posterior.
+
+ Este programa distribudo na esperana de que seja til,
+mas SEM QUALQUER GARANTIA; sem a garantia implcita de
+COMERCIALIZAO OU ADEQUAO A UM DETERMINADO PROPSITO. Veja a
+Licena Pblica Geral GNU para obter mais detalhes.
+
+ Voc deve ter recebido uma cpia da Licena Pblica Geral GNU
+junto com este programa. Se no, veja <https://www.gnu.org/licenses/>.
+Adicione tambm informaes sobre como entrar em contato com voc por correio eletrnico e papel.
+Se o programa faz a interao por terminal, faa com que ele emita um breve aviso como este quando ele comear em um modo interativo:
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+Em portugus, seria o equivalente a:
+ <programa> Copyright (C) <ano> <nome do autor>
+ Este programa vem com ABSOLUTAMENTE NENHUMA GARANTIA; para detalhes,
+ digite `show w'. Este um software livre, e voc pode redistribu-lo
+ sob certas condies; digite `show c' para obter detalhes.
+Os comandos hipotticos `show w' e `show c' devem mostrar as partes apropriadas da Licena Pblica Geral. Claro, os comandos do seu programa podem ser diferentes; para uma interface GUI, voc usaria uma caixa about (sobre).
+Voc tambm deve fazer com que o seu empregador (se voc trabalha como programador) ou a escola, se for o caso, assine uma renncia de copyright para o programa, se necessrio. Para obter mais informaes sobre isso e sobre como aplicar e seguir a GNU GPL, consulte <https://www.gnu.org/licenses/>.
+A Licena Pblica Geral GNU no permite a incorporao do seu programa em programas proprietrios. Se o seu programa uma biblioteca de sub-rotina, voc pode consider-la mais til para permitir a conexo de aplicativos proprietrios com a biblioteca. Se isso for o que voc quer fazer, use a Licena Pblica Geral Menor GNU em vez desta Licena. Mas, primeiro, leia <https://www.gnu.org/licenses/why-not-lgpl.html>.
+
+Traduo: Rafael Fontenelle <rafaelff@gnome.org>
+
+ltima atualizao: 05 de julho de 2020