Compare commits
95 Commits
Author | SHA1 | Date |
---|---|---|
Mauricio Baeza | 58a8970978 | |
Mauricio Baeza | 5144785dda | |
Mauricio Baeza | 9b7fe665cc | |
Mauricio Baeza | f597411d3e | |
Mauricio Baeza | 33c86dcd56 | |
Mauricio Baeza | 23135d9ad7 | |
Mauricio Baeza | cdbb00fad4 | |
Mauricio Baeza | 37fc2568da | |
Mauricio Baeza | 5e2236db54 | |
Mauricio Baeza | d983fac3d1 | |
Mauricio Baeza | 19e211ce0a | |
Mauricio Baeza | 87c8ead015 | |
Mauricio Baeza | 37acf3cc06 | |
Mauricio Baeza | 62d2cd25c1 | |
Mauricio Baeza | b1355d5d88 | |
Mauricio Baeza | 6efa879c85 | |
Mauricio Baeza | 45e3f97e6c | |
Mauricio Baeza | 55dfe77aa9 | |
Mauricio Baeza | 043e5f5f29 | |
Mauricio Baeza | 686f1f6aea | |
Mauricio Baeza | 0e656fbecb | |
Mauricio Baeza | f9b2b7679a | |
Mauricio Baeza | fd2f5631be | |
Mauricio Baeza | 298fceb1e2 | |
Mauricio Baeza | 9f2c0999aa | |
Mauricio Baeza | 370bdae3bb | |
Mauricio Baeza | 42141fa06d | |
Mauricio Baeza | 90dae8a9b4 | |
Mauricio Baeza | 108659da4a | |
Mauricio Baeza | 94d8c43b1b | |
Mauricio Baeza | 467280fca3 | |
Mauricio Baeza | 80691ad797 | |
Mauricio Baeza | 33c2b18c33 | |
Mauricio Baeza | 3674b9f542 | |
Mauricio Baeza | fa781d3da1 | |
Mauricio Baeza | 327dd76291 | |
Mauricio Baeza | 210a79aa41 | |
Mauricio Baeza | b58b1ad093 | |
Mauricio Baeza | 20fbd98157 | |
Mauricio Baeza | 35a0eecd79 | |
Mauricio Baeza | 21fcf5f274 | |
Mauricio Baeza | 081a4fe05f | |
Mauricio Baeza | 2527c60ed0 | |
Mauricio Baeza | 4b9a5e45a5 | |
Mauricio Baeza | 7a58bb695b | |
Mauricio Baeza | abfab3d254 | |
Mauricio Baeza | 205e08fc6e | |
Mauricio Baeza | 27ae3fe66b | |
Mauricio Baeza | 89966c4b04 | |
Mauricio Baeza | 79d44763f6 | |
Mauricio Baeza | bac62657f9 | |
Mauricio Baeza | 69e2ce2b53 | |
Mauricio Baeza | 0c4cce2533 | |
Mauricio Baeza | 6e745a4183 | |
Mauricio Baeza | 70d6e93b90 | |
Mauricio Baeza | 254447bc4d | |
Mauricio Baeza | 25b1170cb4 | |
Mauricio Baeza | 72e175cdeb | |
Mauricio Baeza | ed7ad9e7d7 | |
Mauricio Baeza | 18c9caeb13 | |
Mauricio Baeza | f15cebd20e | |
Mauricio Baeza | afa0b53a1a | |
Mauricio Baeza | 81bea3bb24 | |
Mauricio Baeza | 7d2071f342 | |
Mauricio Baeza | 5b713538f4 | |
Mauricio Baeza | 97ff8c8221 | |
Mauricio Baeza | b416c38921 | |
Mauricio Baeza | 0b450c2436 | |
Mauricio Baeza | 64af685417 | |
Mauricio Baeza | 27d870d3aa | |
Mauricio Baeza | 3c6d21bcbe | |
Mauricio Baeza | 3f42d770fa | |
Mauricio Baeza | aae4aaa385 | |
Mauricio Baeza | 7d22cf9688 | |
Mauricio Baeza | 2cb36cc537 | |
Mauricio Baeza | 8b80a4e5df | |
Mauricio Baeza | fba4a5a6c1 | |
Mauricio Baeza | 9502a9393d | |
Mauricio Baeza | ea1c7f2a01 | |
Mauricio Baeza | 79f316edaa | |
Mauricio Baeza | f0f1ccf19f | |
Mauricio Baeza | 2231df7427 | |
Mauricio Baeza | 303bd62de9 | |
Mauricio Baeza | e549ff9f62 | |
Mauricio Baeza | 64e381c6aa | |
Mauricio Baeza | fde7dd4d95 | |
Mauricio Baeza | 34dae84c58 | |
Mauricio Baeza | ca4553fb62 | |
Mauricio Baeza | dd50b6ba4a | |
Mauricio Baeza | f56142d4bf | |
Mauricio Baeza | cf96f4f1b8 | |
Mauricio Baeza | 4d9cea5dab | |
Mauricio Baeza | 49fa869170 | |
Mauricio Baeza | 1ce51d2905 | |
Mauricio Baeza | 2f57a69cbd |
|
@ -5,7 +5,6 @@ __pycache__/
|
|||
conf.py
|
||||
files/
|
||||
|
||||
docs/
|
||||
source/source/
|
||||
|
||||
# Virtualenv
|
||||
|
|
31
CHANGELOG
31
CHANGELOG
|
@ -1,3 +1,34 @@
|
|||
v 0.19.0 [25-sep-2021]
|
||||
- Writer. Insert shapes. Set zoom.
|
||||
|
||||
|
||||
v 0.18.0 [29-aug-2021]
|
||||
- Writer. Move cursor: start, end, left, right
|
||||
|
||||
|
||||
v 0.17.0 [10-jul-2021]
|
||||
- Add insert math in writer
|
||||
|
||||
|
||||
v 0.16.1 [01-jul-2021]
|
||||
- Change property is_connected in db
|
||||
- Update doc
|
||||
|
||||
|
||||
v 0.16.0 [20-jun-2021]
|
||||
- Add connection for postgres and mariadb
|
||||
- Fix in call macro Basic
|
||||
|
||||
|
||||
v 0.15.0 [05-jun-2021]
|
||||
- Add autostyle for Writer tables
|
||||
|
||||
|
||||
v 0.14.0 [13-apr-2021]
|
||||
- Fix: Get paragraphs in Writer
|
||||
- Add support for data pilots
|
||||
|
||||
|
||||
v 0.13.0 [02-feb-2021]
|
||||
- Fix: menus in AddOns
|
||||
- Refactory many functions
|
||||
|
|
37
README.md
37
README.md
|
@ -4,11 +4,12 @@ Scripts and library for develop macros and extensions for LibreOffice with Pytho
|
|||
|
||||
Develop in pure Python, not need any dependence.
|
||||
|
||||
Python 3.7+
|
||||
LibreOffice 7.0+
|
||||
* Python 3.7+
|
||||
* LibreOffice 7.0+
|
||||
* LibreOffice SDK 7.0+
|
||||
|
||||
* Look [documentation](https://gitlab.com/mauriciobaeza/zaz/wikis/home)
|
||||
* Ver [documentación](https://gitlab.com/mauriciobaeza/zaz/wikis/inicio)
|
||||
|
||||
#### Look [documentation](https://doc.cuates.net/zaz/)
|
||||
|
||||
|
||||
## Free Software, not gratis software
|
||||
|
@ -18,23 +19,27 @@ LibreOffice 7.0+
|
|||
#### but, don't make the mistake of many of *thinking only in gratis software* that so much damage has done to **Free Software**.
|
||||
|
||||
|
||||
This extension have a cost of maintenance of 10 euros every year.
|
||||
This extension have a cost of maintenance of 1 euros every year.
|
||||
|
||||
BCH: `qztd3l00xle5tffdqvh2snvadkuau2ml0uqm4n875d`
|
||||
In order of preferred.
|
||||
|
||||
BTC: `3FhiXcXmAesmQzrNEngjHFnvaJRhU1AGWV`
|
||||
Mauricio Baeza
|
||||
```
|
||||
Euros
|
||||
IBAN: BE60 9671 0556 5870
|
||||
SWIFT / BIC: TRWIBEB1XXX
|
||||
```
|
||||
|
||||
ETH: `0x61a4f614a30ff686445751ed8328b82b77ecfc69`
|
||||
* BCH: `qztd3l00xle5tffdqvh2snvadkuau2ml0uqm4n875d`
|
||||
|
||||
LTC: `MBcgQ3LQJA4W2wsXknTdm2fxRSysLaBJHS`
|
||||
|
||||
You have others cryptos, welcome too!
|
||||
* ETH: `0x61a4f614a30ff686445751ed8328b82b77ecfc69`
|
||||
* XRP: `rLSn6Z3T8uCxbcd1oxwfGQN1Fdn5CyGujK` Tag: `6643162`
|
||||
* LTC: `MBcgQ3LQJA4W2wsXknTdm2fxRSysLaBJHS`
|
||||
* BTC: `3FhiXcXmAesmQzrNEngjHFnvaJRhU1AGWV`
|
||||
|
||||
|
||||
## Extensions develop with ZAZ
|
||||
|
||||
* https://gitlab.com/mauriciobaeza/zaz-barcode
|
||||
* https://gitlab.com/mauriciobaeza/zaz-favorite
|
||||
* https://gitlab.com/mauriciobaeza/zaz-easymacro
|
||||
* https://gitlab.com/mauriciobaeza/zaz-pip
|
||||
* https://gitlab.com/mauriciobaeza/zaz-inspect
|
||||
* https://git.cuates.net/elmau/zaz-pip
|
||||
* https://git.cuates.net/elmau/zaz-favorites
|
||||
* https://git.cuates.net/elmau/zaz-functions
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
# Minimal makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line, and also
|
||||
# from the environment for the first two.
|
||||
SPHINXOPTS ?=
|
||||
SPHINXBUILD ?= sphinx-build
|
||||
SOURCEDIR = source
|
||||
BUILDDIR = build
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
.PHONY: help Makefile
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
@ -0,0 +1,4 @@
|
|||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 9dc485243b09862a9e5c34c02e1c395f
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,25 @@
|
|||
.. ZAZ documentation master file, created by
|
||||
sphinx-quickstart on Thu Feb 4 22:28:30 2021.
|
||||
You can adapt this file completely to your liking, but it should at least
|
||||
contain the root `toctree` directive.
|
||||
|
||||
Welcome to ZAZ's documentation!
|
||||
===============================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Contents:
|
||||
|
||||
main/intro
|
||||
main/config
|
||||
main/easymacro
|
||||
main/examples
|
||||
main/apendixes
|
||||
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`modindex`
|
||||
* :ref:`search`
|
|
@ -0,0 +1,46 @@
|
|||
|
||||
Apendixes
|
||||
---------
|
||||
|
||||
Remember, always import library.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
|
||||
Get all filters in Calc sheet
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
* Fields in filter
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
'Finalized': False,
|
||||
'UIName': 'EPS - Encapsulated PostScript',
|
||||
'UserData': <ByteSequence instance 'b'''>,
|
||||
'TemplateName': '',
|
||||
'Enabled': True,
|
||||
'Mandatory': False,
|
||||
'Name': 'impress_eps_Export',
|
||||
'FilterService': '',
|
||||
'Type': 'eps_Encapsulated_PostScript',
|
||||
'UIComponent': 'com.sun.star.svtools.SvFilterOptionsDialog',
|
||||
'Flags': 1090,
|
||||
'FileFormatVersion': 0,
|
||||
'DocumentService': 'com.sun.star.presentation.PresentationDocument',
|
||||
'UINames': {
|
||||
'en-US': 'EPS - Encapsulated PostScript',
|
||||
'es': 'EPS - PostScript encapsulado'}
|
||||
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
filters = app.get_filters()
|
||||
headers = (('DocumentService', 'UIName', 'Name', 'Type'),)
|
||||
data = [(f['DocumentService'], f['UIName'], f['Name'], f['Type'])
|
||||
for f in filters]
|
||||
|
||||
doc = app.docs.new()
|
||||
doc[0]['A1'].data = headers
|
||||
doc[0]['A2'].data = data
|
|
@ -0,0 +1,510 @@
|
|||
|
||||
Application
|
||||
-----------
|
||||
|
||||
Remember, always import library.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
|
||||
Create instances
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
* Instances without context
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
toolkit = app.create_instance("com.sun.star.awt.Toolkit")
|
||||
|
||||
* Instances with context
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
service = 'com.sun.star.awt.DialogProvider2'
|
||||
dialog = app.create_instance(service, True)
|
||||
|
||||
|
||||
* Get desktop
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
desktop1 = app.create_instance('com.sun.star.frame.Desktop', True)
|
||||
# ~ or
|
||||
desktop2 = app.get_desktop()
|
||||
|
||||
app.msgbox(desktop1 == desktop2)
|
||||
|
||||
|
||||
Current doc
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.title)
|
||||
|
||||
|
||||
Iter docs
|
||||
^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
for doc in app.docs:
|
||||
app.msgbox(doc.title)
|
||||
|
||||
|
||||
Count
|
||||
^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
count = len(app.docs)
|
||||
app.msgbox(count)
|
||||
|
||||
|
||||
Get by name
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
name = 'MyDoc.ods'
|
||||
if name in app.docs:
|
||||
doc = app.docs[name]
|
||||
app.msgbox(doc.title)
|
||||
|
||||
|
||||
If contain
|
||||
^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
result = 'myfile.ods' in app.docs
|
||||
app.msgbox(result)
|
||||
|
||||
|
||||
|
||||
New
|
||||
^^^
|
||||
|
||||
For default create new Calc document.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
app.msgbox(doc.type)
|
||||
|
||||
|
||||
For new Writer document.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new('writer')
|
||||
app.msgbox(doc.type)
|
||||
|
||||
|
||||
With arguments.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
args= {'Hidden': True}
|
||||
doc = app.docs.new('writer', args)
|
||||
msg = f'{doc.type} - {doc.title}'
|
||||
app.msgbox(msg)
|
||||
doc.visible = True
|
||||
|
||||
|
||||
Other documents.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new('draw')
|
||||
app.msgbox(doc.type)
|
||||
|
||||
doc = app.docs.new('impress')
|
||||
app.msgbox(doc.type)
|
||||
|
||||
|
||||
Open
|
||||
^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/MyDoc.ods'
|
||||
doc = app.docs.open(path)
|
||||
|
||||
|
||||
While LibreOffice support format, you can open arbitrary file.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/example.xlsx'
|
||||
doc = app.docs.open(path)
|
||||
|
||||
|
||||
With arguments.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/example.odt'
|
||||
args = {'Password': 'letmein'}
|
||||
doc = app.docs.open(path, args)
|
||||
|
||||
|
||||
Save
|
||||
^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/myfile.ods'
|
||||
doc = app.docs.new()
|
||||
doc.save(path)
|
||||
|
||||
* If previously open and modify any file.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc.save()
|
||||
|
||||
* Open exists file and save with other name.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/myfile.ods'
|
||||
doc = app.docs.open(path)
|
||||
new_path = '/srv/mau/other_name.ods'
|
||||
doc.save(new_path)
|
||||
|
||||
|
||||
Close
|
||||
^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
app.msgbox(doc.title)
|
||||
doc.close()
|
||||
|
||||
|
||||
To PDF
|
||||
^^^^^^
|
||||
|
||||
* Save in path
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
path = '/home/mau/test.pdf'
|
||||
doc.to_pdf(path)
|
||||
|
||||
* Save in memory
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
pdf = doc.to_pdf()
|
||||
|
||||
|
||||
Export
|
||||
^^^^^^
|
||||
|
||||
* Export common formats
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
path = '/home/mau/myfile.xlsx'
|
||||
filter_name = 'xlsx'
|
||||
doc.export(path, filter_name)
|
||||
|
||||
path = '/home/mau/myfile.xls'
|
||||
filter_name = 'xls'
|
||||
doc.export(path, filter_name)
|
||||
|
||||
doc = app.docs.new('writer')
|
||||
path = '/home/mau/myfile.docx'
|
||||
filter_name = 'docx'
|
||||
doc.export(path, filter_name)
|
||||
|
||||
path = '/home/mau/myfile.doc'
|
||||
filter_name = 'doc'
|
||||
doc.export(path, filter_name)
|
||||
|
||||
path = '/home/mau/myfile.rtf'
|
||||
filter_name = 'rtf'
|
||||
doc.export(path, filter_name)
|
||||
|
||||
* For all support formats look `Apendix`_
|
||||
|
||||
* Export in memory.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
filter_name = 'xlsx'
|
||||
excel_doc = doc.export(filter_name=filter_name)
|
||||
|
||||
|
||||
Fonst
|
||||
^^^^^
|
||||
|
||||
* Get all fonts
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
fonts = app.get_fonts()
|
||||
for f in fonts:
|
||||
print(f'Name: {f.Name} - StyleName: {f.StyleName}')
|
||||
|
||||
|
||||
Filters
|
||||
^^^^^^^
|
||||
|
||||
* Get all `support filters`_
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
filters = app.get_filters()
|
||||
ds = []
|
||||
for f in filters:
|
||||
data = f"UI Name: {f['UIName']} - Name: {f['Name']} - Type: {f['Type']}"
|
||||
app.debug(data)
|
||||
|
||||
|
||||
Call dispatch
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
You can call any `dispatch command`_ used only if property or method no exists in original object or in `easymacro.py`
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
command = '.uno:Gallery'
|
||||
app.call_dispatch(doc, command)
|
||||
|
||||
|
||||
Properties
|
||||
^^^^^^^^^^
|
||||
|
||||
obj
|
||||
~~~
|
||||
|
||||
* Get original object pyUNO (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(type(doc))
|
||||
app.msgbox(type(doc.obj))
|
||||
|
||||
|
||||
title
|
||||
~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.title)
|
||||
doc.title = 'New title'
|
||||
app.msgbox(doc.title)
|
||||
|
||||
|
||||
type
|
||||
~~~~
|
||||
|
||||
* Get type document: calc, writer, etc. (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.type)
|
||||
|
||||
|
||||
uid
|
||||
~~~
|
||||
|
||||
* Get internal RuntimeUID form document. (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.uid)
|
||||
|
||||
|
||||
is_saved
|
||||
~~~~~~~~
|
||||
|
||||
* If document is saved in this or not (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.is_saved)
|
||||
|
||||
|
||||
is_modified
|
||||
~~~~~~~~~~~
|
||||
|
||||
* If document has been modified (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.is_modified)
|
||||
|
||||
|
||||
is_read_only
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.is_read_only)
|
||||
|
||||
|
||||
path
|
||||
~~~~
|
||||
|
||||
* Get path of document. (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.path)
|
||||
|
||||
|
||||
dir
|
||||
~~~
|
||||
|
||||
* Get only directory from path saved (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.dir)
|
||||
|
||||
|
||||
file_name
|
||||
~~~~~~~~~
|
||||
|
||||
* Get only file name from path saved (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.file_name)
|
||||
|
||||
|
||||
name
|
||||
~~~~
|
||||
|
||||
* Get only name without extension (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.file_name)
|
||||
|
||||
|
||||
visible
|
||||
~~~~~~~
|
||||
|
||||
* Hide or show document.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.visible = False
|
||||
app.msgbox(doc.visible)
|
||||
doc.visible = True
|
||||
|
||||
|
||||
zoom
|
||||
~~~~
|
||||
|
||||
* Get or set zoom value.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
zoom = doc.zoom
|
||||
app.msgbox(zoom)
|
||||
doc.zoom = zoom * 2
|
||||
app.msgbox(doc.zoom)
|
||||
doc.zoom = zoom
|
||||
|
||||
|
||||
selection
|
||||
~~~~~~~~~
|
||||
|
||||
* **CAUTION**: Selection can be many things.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
selection = doc.selection
|
||||
app.msgbox(selection)
|
||||
|
||||
|
||||
status_bar
|
||||
~~~~~~~~~~
|
||||
|
||||
* Get status bar, always control in other thread.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@app.run_in_thread
|
||||
def update_status_bar(sb, text, limit):
|
||||
sb.start(text, limit)
|
||||
for i in range(limit):
|
||||
sb.setValue(i)
|
||||
app.sleep(1)
|
||||
# ~ Is important free status bar
|
||||
sb.end()
|
||||
return
|
||||
|
||||
def main():
|
||||
doc = app.active
|
||||
update_status_bar(doc.status_bar, 'Line', 10)
|
||||
return
|
||||
|
||||
|
||||
Methods
|
||||
^^^^^^^
|
||||
|
||||
set_focus
|
||||
~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
name = 'MyDoc.ods'
|
||||
if name in app.docs:
|
||||
doc = app.docs[name]
|
||||
doc.set_focus()
|
||||
|
||||
copy
|
||||
~~~~
|
||||
|
||||
* Copy current selection
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.copy()
|
||||
|
||||
|
||||
paste
|
||||
~~~~~
|
||||
|
||||
* Paste any content in clipboard
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.paste()
|
||||
|
||||
|
||||
.. _dispatch command: https://wiki.documentfoundation.org/Development/DispatchCommands
|
||||
.. _support filters: https://help.libreoffice.org/latest/en-US/text/shared/guide/convertfilters.html
|
||||
.. _Apendix: apendixes.html
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
Base
|
||||
----
|
||||
|
||||
Remember, always import library.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
|
||||
New database
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/db.odb'
|
||||
db = app.doc.connect(path)
|
||||
app.msgbox(db.type)
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
Calc
|
||||
----
|
||||
|
||||
Remember, always import library.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
calc_doc.rst
|
||||
calc_sheets.rst
|
||||
calc_ranges.rst
|
||||
calc_ranges2.rst
|
||||
calc_data.rst
|
|
@ -0,0 +1,92 @@
|
|||
|
||||
Data
|
||||
~~~~
|
||||
|
||||
Read
|
||||
^^^^
|
||||
|
||||
* Get value from cell, automatic detect type and get value.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A1']
|
||||
|
||||
value = cell.value
|
||||
info = f'Cell Type = {cell.type}\n\nCell Value = {cell.value}'
|
||||
app.msgbox(info)
|
||||
|
||||
* Get date, time and datetime like data Python.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A1']
|
||||
app.msgbox(cell.date)
|
||||
app.msgbox(cell.time)
|
||||
app.msgbox(cell.datetime)
|
||||
|
||||
* Get values from cell range.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:B5']
|
||||
app.msgbox(rango.data)
|
||||
|
||||
* Get formulas
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:B5']
|
||||
app.msgbox(rango.formula)
|
||||
|
||||
* Get array formula
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['C10:E15']
|
||||
app.msgbox(rango.array_formula)
|
||||
|
||||
* Get like dictionary
|
||||
|
||||
The first row in range are the keys.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:B5']
|
||||
app.msgbox(rango.dict)
|
||||
|
||||
|
||||
Write
|
||||
^^^^^
|
||||
|
||||
* Automatic detect data type.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
|
||||
# ~ Set int
|
||||
sheet['A1'].value = 1
|
||||
|
||||
# ~ Set float
|
||||
sheet['A2'].value = 10.5
|
||||
|
||||
# ~ Set string
|
||||
sheet['A3'].value = 'Damn World'
|
||||
|
||||
# ~ Set formula
|
||||
sheet['A4'].value = '=RAND()'
|
||||
|
||||
# ~ Set date
|
||||
sheet['A5'].value = app.today()
|
||||
|
||||
# ~ Set time
|
||||
sheet['A6'].value = app.now(True)
|
||||
|
||||
# ~ Set datetime
|
||||
sheet['A7'].value = app.now()
|
|
@ -0,0 +1,50 @@
|
|||
Document
|
||||
~~~~~~~~
|
||||
|
||||
Current doc
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.type)
|
||||
|
||||
|
||||
Selection
|
||||
^^^^^^^^^
|
||||
|
||||
* If selection is range get LOCalcRange, if selection is shape get LOShape, other selection get original pyuno object.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
selection = doc.selection
|
||||
app.msgbox(type(selection))
|
||||
|
||||
|
||||
Headers
|
||||
^^^^^^^
|
||||
|
||||
* Hide or show columns and rows headers.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.headers)
|
||||
doc.headers = not doc.headers
|
||||
app.msgbox(doc.headers)
|
||||
doc.headers = not doc.headers
|
||||
|
||||
|
||||
Tabs
|
||||
^^^^
|
||||
|
||||
* Hide or show tab sheets.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.tabs)
|
||||
doc.tabs = not doc.tabs
|
||||
app.msgbox(doc.tabs)
|
||||
doc.tabs = not doc.tabs
|
|
@ -0,0 +1,190 @@
|
|||
Cell and ranges
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Cells
|
||||
^^^^^
|
||||
|
||||
* By name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A1']
|
||||
app.msgbox(cell.name)
|
||||
|
||||
|
||||
* By position [row, column]
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
cell = sheet[1, 4]
|
||||
app.msgbox(cell.name)
|
||||
|
||||
|
||||
Ranges
|
||||
^^^^^^
|
||||
|
||||
* By name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['B2:D5']
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* By position [start_row:end_row, start_column:end_column]
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango = sheet[1:5,1:4]
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Group ranges
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = doc.active
|
||||
last = doc[-1]
|
||||
with doc.ranges as r:
|
||||
# Add one range
|
||||
r.add(sheet['A1:B2'])
|
||||
r2 = sheet['C4:D5']
|
||||
r3 = last['E7:D8']
|
||||
r4 = last['E10:F12']
|
||||
# Add multiple ranges
|
||||
r.add((r2, r3, r4))
|
||||
app.debug(r.names)
|
||||
|
||||
* Get the same range in all sheets
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
ranges = doc.get_ranges('A1:B1')
|
||||
app.debug(ranges.names)
|
||||
|
||||
* Get columns by name.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['B:B']
|
||||
app.debug(rango.name)
|
||||
|
||||
rango = sheet['D:F']
|
||||
app.debug(rango.name)
|
||||
|
||||
* Get columns by position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
# Column B
|
||||
rango = sheet[0:,1]
|
||||
app.debug(rango.name)
|
||||
|
||||
# Columnas D:F
|
||||
rango = sheet[0:,3:6]
|
||||
app.debug(rango.name)
|
||||
|
||||
|
||||
* Get rows
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
# One row
|
||||
row = sheet[1]
|
||||
app.debug(row.name)
|
||||
|
||||
# Range rows
|
||||
row = sheet[3:10,0:]
|
||||
app.debug(row.name)
|
||||
|
||||
|
||||
Info ranges
|
||||
^^^^^^^^^^^
|
||||
|
||||
* Get absolute name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:E10']
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get address
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1']
|
||||
a = rango.address
|
||||
data = f"""Cell Address
|
||||
Row: {a.Row}
|
||||
Column: {a.Column}
|
||||
"""
|
||||
app.msgbox(data)
|
||||
|
||||
rango = sheet['A1:E10']
|
||||
ra = rango.range_address
|
||||
data = (
|
||||
f'Range Address:\n\n'
|
||||
f'Star Row: {ra.StartRow}\n'
|
||||
f'End Row: {ra.EndRow}\n'
|
||||
f'Star Column: {ra.StartColumn}\n'
|
||||
f'End Column: {ra.EndColumn}\n'
|
||||
)
|
||||
app.msgbox(data)
|
||||
|
||||
|
||||
Special ranges
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
* Get used area
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet.used_area
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get current region
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango = sheet['A1'].current_region
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get next free cell
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
cell = sheet['A1'].next_cell
|
||||
app.msgbox(cell.name)
|
||||
|
||||
* Get merged area
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1'].merged_area
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get visible cells
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rangos = sheet['A1:E10'].visible
|
||||
for r in rangos:
|
||||
app.debug(r.name)
|
||||
|
||||
* Get empty cells
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rangos = sheet['A1:E10'].empty
|
||||
for r in rangos:
|
||||
app.debug(r.name)
|
|
@ -0,0 +1,124 @@
|
|||
Manipulate ranges
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
**Not, not is necesary select range for manipulate**
|
||||
|
||||
Select
|
||||
^^^^^^
|
||||
|
||||
* Select from doc
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = app.active_sheet
|
||||
|
||||
cell = sheet['A1']
|
||||
doc.select(cell)
|
||||
|
||||
|
||||
* Select in self range
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C5']
|
||||
rango.select()
|
||||
|
||||
|
||||
Move
|
||||
^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C5']
|
||||
rango.move(sheet['E6'])
|
||||
|
||||
* Move to other sheet
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.move(doc[-1]['E6'])
|
||||
|
||||
|
||||
Insert
|
||||
^^^^^^
|
||||
|
||||
* Default insert down
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C1']
|
||||
rango.insert()
|
||||
|
||||
* Insert and move right
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.insert(app.CellInsertMode.RIGHT)
|
||||
|
||||
* Insert entire rows
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.insert(app.CellInsertMode.ROWS)
|
||||
|
||||
* Insert entire columns
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.insert(app.CellInsertMode.COLUMNS)
|
||||
|
||||
|
||||
Delete
|
||||
^^^^^^
|
||||
|
||||
* Default move up
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C1']
|
||||
rango.delete()
|
||||
|
||||
* Delete and move left
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.delete(app.CellDeleteMode.LEFT)
|
||||
|
||||
* Delete entire rows
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.delete(app.CellDeleteMode.ROWS)
|
||||
|
||||
* Delete entire columns
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.delete(app.CellDeleteMode.COLUMNS)
|
||||
|
||||
|
||||
Copy
|
||||
^^^^
|
||||
|
||||
* Using native method `copyRange`, current range always should be a cell and source should be a range.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A5']
|
||||
source = sheet['D1:E4']
|
||||
cell.copy_from(source)
|
||||
|
||||
* From range to cell
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C5']
|
||||
target = sheet['E1']
|
||||
rango.copy_to(target)
|
|
@ -0,0 +1,332 @@
|
|||
Sheets
|
||||
~~~~~~
|
||||
|
||||
Active sheet
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
# or
|
||||
doc = app.active
|
||||
sheet = doc.active
|
||||
|
||||
|
||||
Get by index
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = doc[0]
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
|
||||
Get by name
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = doc['Sheet1']
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
|
||||
Contains
|
||||
^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox('Sheet1' in doc)
|
||||
|
||||
|
||||
Get tuple with all names
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.names)
|
||||
|
||||
|
||||
Count
|
||||
^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(len(doc))
|
||||
|
||||
New
|
||||
^^^
|
||||
|
||||
* Always validate if new name not exists.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
|
||||
sheet = doc.new_sheet()
|
||||
# CAUTION: If 'NewSheet' exists, reset it to clean sheet.
|
||||
doc['NewSheet'] = sheet
|
||||
|
||||
# ~ or
|
||||
|
||||
sheet = doc.insert('NewSheet2')
|
||||
|
||||
* Insert multiple, get last insert.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
names = ('One', 'Two', 'Three')
|
||||
sheet = doc.insert(names)
|
||||
|
||||
|
||||
Move
|
||||
^^^^
|
||||
|
||||
* Move by object to last position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.move(sheet)
|
||||
|
||||
* Move by name to last position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc.move('Sheet1')
|
||||
|
||||
* Move to position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.move(sheet, 2)
|
||||
|
||||
* Move from sheet
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.move()
|
||||
|
||||
* Move to position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.move(2)
|
||||
|
||||
|
||||
Remove
|
||||
^^^^^^
|
||||
|
||||
* Remove by object.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.remove(sheet)
|
||||
|
||||
* Remove by name.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc.remove('One')
|
||||
|
||||
* Remove from sheet.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.remove()
|
||||
|
||||
|
||||
Copy
|
||||
^^^^
|
||||
|
||||
* Copy inside the same spreadsheet.
|
||||
|
||||
* By object
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.copy_sheet(sheet, 'OtherSheet')
|
||||
|
||||
* By name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc.copy_sheet('Sheet1', 'Sheet2')
|
||||
|
||||
* From sheet
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.copy(sheet.name + '_2')
|
||||
|
||||
|
||||
Copy from
|
||||
^^^^^^^^^
|
||||
|
||||
* Copy sheet from one spreadsheet to other.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc_source = app.docs['Contacts.ods']
|
||||
name_source = 'Names'
|
||||
name_target = 'Names'
|
||||
position = 0
|
||||
doc.copy_from(doc_source, name_source, name_target, position)
|
||||
|
||||
|
||||
Copy to
|
||||
^^^^^^^
|
||||
|
||||
* Copy from sheet with the same name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
sheet = app.active_sheet
|
||||
sheet.copy_to(doc)
|
||||
|
||||
* Used new name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
sheet = app.active_sheet
|
||||
sheet.copy_to(doc, 'NewName')
|
||||
|
||||
|
||||
Sort
|
||||
^^^^
|
||||
|
||||
* Sort sheets by names.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.sort()
|
||||
|
||||
Name
|
||||
^^^^
|
||||
|
||||
* Name visible by the user.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.name)
|
||||
sheet.name = 'NewName'
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
|
||||
Code name
|
||||
^^^^^^^^^
|
||||
|
||||
* Name only accessible by code.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.code_name)
|
||||
sheet.code_name = 'my_name'
|
||||
app.msgbox(sheet.code_name)
|
||||
|
||||
|
||||
Visible
|
||||
^^^^^^^
|
||||
|
||||
* Apply only with spreadsheet with two or more sheets.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.visible)
|
||||
sheet.visible = not sheet.visible
|
||||
app.msgbox(sheet.visible)
|
||||
sheet.visible = not sheet.visible
|
||||
|
||||
|
||||
Is protected
|
||||
^^^^^^^^^^^^
|
||||
|
||||
* If sheet is protected with password.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
|
||||
Set password
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.password = 'letmein'
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
|
||||
Remove password
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.password = 'letmein'
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
sheet.unprotect('letmein')
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
|
||||
Tab color
|
||||
^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.color)
|
||||
|
||||
sheet.color = 'red'
|
||||
app.msgbox(sheet.color)
|
||||
|
||||
# RGB
|
||||
sheet.color = (125, 200, 10)
|
||||
app.msgbox(sheet.color)
|
||||
|
||||
|
||||
Document parent
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = sheet.doc
|
||||
|
||||
|
||||
Activate
|
||||
^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
# Get last sheet
|
||||
sheet = doc[-1]
|
||||
|
||||
# Activate from doc
|
||||
doc.activate(sheet)
|
||||
|
||||
# Activate from sheet
|
||||
sheet.activate()
|
|
@ -0,0 +1,399 @@
|
|||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
* Create new extension:
|
||||
|
||||
``./zaz.py -new -t ~/projects -n MyGreatExtension``
|
||||
|
||||
|
||||
* Move to new folder:
|
||||
|
||||
``cd ~/projects/MyGreatExtension``
|
||||
|
||||
|
||||
* Edit file ``conf.py``
|
||||
|
||||
``vim conf.py``
|
||||
|
||||
|
||||
Parameters
|
||||
----------
|
||||
|
||||
**Configure correctly this options, before you start code your extension.**
|
||||
|
||||
Only modify this options.
|
||||
|
||||
|
||||
Type extension
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
**TYPE_EXTENSION**
|
||||
|
||||
The type extension that you want develop.
|
||||
|
||||
* Integer
|
||||
* 1 = Normal extension
|
||||
* 2 = New components
|
||||
* 3 = Calc addin
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
TYPE_EXTENSION = 1
|
||||
|
||||
|
||||
Version
|
||||
^^^^^^^
|
||||
|
||||
**VERSION**
|
||||
|
||||
* String
|
||||
* The current version of extension, look: `Semantic Versioning`_
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
VERSION = '0.1.0'
|
||||
|
||||
|
||||
Name
|
||||
^^^^
|
||||
|
||||
**NAME**
|
||||
|
||||
* String
|
||||
* Your extension name, not used spaces.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
NAME = 'MyGreatExtension'
|
||||
|
||||
|
||||
ID extension
|
||||
^^^^^^^^^^^^
|
||||
|
||||
The internal name for extension.
|
||||
|
||||
**ID**
|
||||
|
||||
* String
|
||||
* Should be unique, used URL inverse
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
ID = 'org.yourname.extensionname'
|
||||
|
||||
|
||||
Locales
|
||||
^^^^^^^
|
||||
|
||||
If your extension will be multi-language (recommended)
|
||||
|
||||
**USE_LOCALES**
|
||||
|
||||
* Bool
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
USE_LOCALES = True
|
||||
|
||||
|
||||
Domain for locales
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The base name for generate files POT
|
||||
|
||||
**DOMAIN**
|
||||
|
||||
* String
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
DOMAIN = 'base'
|
||||
|
||||
|
||||
Path pyGetText
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
Absolute path for tool `pygettext.py` for generate POT.
|
||||
|
||||
**PATH_PYGETTEXT**
|
||||
|
||||
* String
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
PATH_PYGETTEXT = '/usr/lib/python3.9/Tools/i18n/pygettext.py'
|
||||
|
||||
|
||||
Author
|
||||
^^^^^^
|
||||
|
||||
Your information like author, one or more languages. This information is displayed in the extension manager.
|
||||
|
||||
**PUBLISHER**
|
||||
|
||||
* Dictionary
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
PUBLISHER = {
|
||||
'en': {'text': 'Your name', 'link': 'https://your.page'},
|
||||
'es': {'text': 'Tu nombre', 'link': 'https://elmau.net'},
|
||||
}
|
||||
|
||||
|
||||
Extension icon
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
Path relative or absolute to extension logo. Show in extension manager.
|
||||
|
||||
**ICON**
|
||||
|
||||
* String
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
ICON='images/logo.png'
|
||||
|
||||
|
||||
License
|
||||
^^^^^^^
|
||||
|
||||
The license for your extension, please, used free license.
|
||||
|
||||
**LICENSE**
|
||||
|
||||
* String
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
LICENSE_EN = f"""This file is part of {NAME}.
|
||||
|
||||
{NAME} 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.
|
||||
|
||||
{NAME} 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 {NAME}. If not, see <https://www.gnu.org/licenses/>.
|
||||
"""
|
||||
LICENSE_ES = LICENSE_EN
|
||||
|
||||
|
||||
Information
|
||||
^^^^^^^^^^^
|
||||
|
||||
Information of extension: Display name, description and license to displayed when install.
|
||||
|
||||
**INFO**
|
||||
|
||||
* Dictionary
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
INFO = {
|
||||
'en': {
|
||||
'display_name': 'Test Macro',
|
||||
'description': 'My great extension',
|
||||
'license': LICENSE_EN,
|
||||
},
|
||||
'es': {
|
||||
'display_name': 'Macro de Prueba',
|
||||
'description': 'Mi gran extensión',
|
||||
'license': LICENSE_ES,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Parent menu
|
||||
^^^^^^^^^^^
|
||||
|
||||
Only for normal extension (`TYPE_EXTENSION = 1`), where add extension menu, only two possible values: **AddonMenu** or **OfficeMenuBar**
|
||||
|
||||
**PARENT**
|
||||
|
||||
* String
|
||||
* **AddonMenu**: Show in menu Tools->Add-Ons
|
||||
* **OfficeMenuBar**: Show in LibreOffice menu
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
PARENT = 'OfficeMenuBar'
|
||||
|
||||
|
||||
Main menu
|
||||
^^^^^^^^^
|
||||
|
||||
Only for normal extension (`TYPE_EXTENSION = 1`) and only if parent menu is `OfficeMenuBar`. Can be multi language.
|
||||
|
||||
**MENU_MAIN**
|
||||
|
||||
* Dictionary
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
MENU_MAIN = {
|
||||
'en': 'My Extension',
|
||||
'es': 'Mi Extensión',
|
||||
}
|
||||
|
||||
|
||||
Menus
|
||||
^^^^^
|
||||
|
||||
Each menu for show in parent menu.
|
||||
|
||||
**MENUS**
|
||||
|
||||
* Tuple of dictionaries
|
||||
* **title** = Label showed, can be multi language.
|
||||
* **argument** = Argument to pass to extension, not use spaces.
|
||||
* **context** = In what applications show, if is blank, show in all.
|
||||
* **icon** = Icon to add, the icon should be in format BMP. The name should be NAME_16.bmp or NAME_26.bmp. Set only NAME in this property.
|
||||
* **toolbar** = It is True, add to new toolbar too, used same icon.
|
||||
* **shortcut** = Shortcut keyboard for this menu. For `Shift+Ctrl+Alt+T` used: `T_SHIFT_MOD1_MOD2`
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
MENUS = (
|
||||
{
|
||||
'title': {'en': 'Option 1', 'es': 'Opción 1'},
|
||||
'argument': 'option1',
|
||||
'context': 'calc,writer',
|
||||
'icon': 'icon',
|
||||
'toolbar': True,
|
||||
'shortcut': 'T_SHIFT_MOD1_MOD2',
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
Functions
|
||||
^^^^^^^^^
|
||||
|
||||
Only for Add-in extension (`TYPE_EXTENSION = 2`). Can be multi language.
|
||||
|
||||
The key of dictionary, is the same name of your function. Used exactly you used in your code.
|
||||
|
||||
**FUNCTIONS**
|
||||
|
||||
* Dictionary of dictionaries
|
||||
* **displayname** = Show in function wizard, multi language.
|
||||
* **description** = Show in function wizard, multi language.
|
||||
* **parameters** = Each parameters in your function.
|
||||
* **key** = Is the exactly name for parameter in your code function.
|
||||
* **displayname** = Show in function wizard, multi language.
|
||||
* **description** = Show in function wizard, multi language.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
FUNCTIONS = {
|
||||
'test': {
|
||||
'displayname': {'en': 'test', 'es': 'prueba'},
|
||||
'description': {'en': 'My test', 'es': 'Mi prueba'},
|
||||
'parameters': {
|
||||
'value': {
|
||||
'displayname': {'en': 'value', 'es': 'valor'},
|
||||
'description': {'en': 'The value', 'es': 'El valor'},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Default program
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
Optional. Open automatically when install and test.
|
||||
|
||||
**PROGRAM**
|
||||
|
||||
* String
|
||||
* --calc
|
||||
* --writer
|
||||
* --draw
|
||||
* --impress
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
PROGRAM = '--calc'
|
||||
|
||||
|
||||
File test
|
||||
^^^^^^^^^
|
||||
|
||||
Optional. Open automatically when install and test.
|
||||
|
||||
* String
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
FILE_TEST = '/home/mau/example.ods'
|
||||
|
||||
|
||||
Paths
|
||||
^^^^^
|
||||
|
||||
Paths for install and test. `idlc`, `include` and `remerge` only used en `TYPE_EXTENSION` 2 or 3. `idlc` and path `include` is installed with LibreOffice SDK.
|
||||
|
||||
**PATHS**
|
||||
|
||||
* Dictionary
|
||||
* **idlc** for generate files urd.
|
||||
* **include** path with files idl.
|
||||
* **remerge** for generate files rdb.
|
||||
* **soffice** for open LibreOffice.
|
||||
* **install** for install extension.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
PATHS = {
|
||||
'idlc': '/usr/lib/libreoffice/sdk/bin/idlc',
|
||||
'include': '/usr/share/idl/libreoffice',
|
||||
'regmerge': '/usr/lib/libreoffice/program/regmerge',
|
||||
'soffice': ('soffice', PROGRAM, FILE_TEST),
|
||||
'install': ('unopkg', 'add', '-v', '-f', '-s'),
|
||||
}
|
||||
|
||||
|
||||
.. _Semantic Versioning: https://semver.org/
|
|
@ -0,0 +1,34 @@
|
|||
|
||||
Library easymacro.py
|
||||
====================
|
||||
|
||||
**easymacro.py** it's a library for easily develop macros en LibreOffice con Python. It is an abstraction layer between the extensive and complex LibreOffice API UNO and your code.
|
||||
|
||||
Probably, your will be more happy if used it. :)
|
||||
|
||||
You can used **easymacro.py** with any extension or directly in your macros.
|
||||
|
||||
|
||||
**IMPORTANT**: Majority objects are custom objects, you can always get original UNO object with property `obj`
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
|
||||
app.msgbox(doc)
|
||||
|
||||
app.msgbox(doc.obj)
|
||||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Contents:
|
||||
|
||||
tools_for_debug.rst
|
||||
tools.rst
|
||||
paths.rst
|
||||
email.rst
|
||||
application.rst
|
||||
calc.rst
|
||||
writer.rst
|
||||
base.rst
|
|
@ -0,0 +1,111 @@
|
|||
|
||||
Email
|
||||
-----
|
||||
|
||||
Remember, always import library.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
|
||||
**IMPORTANT:** Always save your config the more security way possible.
|
||||
|
||||
|
||||
Send email
|
||||
^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from conf import PASSWORD
|
||||
|
||||
SERVER = dict(
|
||||
server = 'mail.server.net' ,
|
||||
port = 495,
|
||||
ssl = True,
|
||||
user = 'no-responder@noexiste.mx',
|
||||
password = PASSWORD,
|
||||
)
|
||||
|
||||
body = "Hello Ingrid\n\nWho are you?\n\nBest regards"
|
||||
|
||||
message = dict(
|
||||
to = 'ingrid.bergman@love.you',
|
||||
subject = 'I love you',
|
||||
body = body,
|
||||
)
|
||||
|
||||
app.send_email(SERVER, message)
|
||||
|
||||
* We can use fields `cc`, `bcc` too and send to more than one address emails.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
to = 'mail1@correo.com,mail2@correo.com,mail3@correo.com'
|
||||
cc = 'other@correo.com'
|
||||
bcc = 'hidden@correo.com'
|
||||
|
||||
* We can send too more than one message.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
message1 = dict(
|
||||
to = 'ingrid.bergman@email.net',
|
||||
subject = 'I love you',
|
||||
body = "Hello Ingrid\n\nWho are you?\n\nBest regards",
|
||||
)
|
||||
message2 = dict(
|
||||
to = 'sophia.loren@email.net',
|
||||
subject = 'I love you',
|
||||
body = "Hello Sophia\n\nWho are you?\n\nBest regards",
|
||||
)
|
||||
messages = (message1, message2)
|
||||
|
||||
app.send_email(SERVER, messages)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
30/06/2021 13:43:23 - DEBUG - Connect to: mail.gandi.net
|
||||
30/06/2021 13:43:24 - DEBUG - Email sent...
|
||||
30/06/2021 13:43:26 - DEBUG - Email sent...
|
||||
30/06/2021 13:43:26 - DEBUG - Close connection...
|
||||
|
||||
* Send with attachment
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
files = '/home/mau/file.epub'
|
||||
message = dict(
|
||||
to = 'ingrid.bergman@email.net',
|
||||
subject = 'I love you',
|
||||
body = "Hello Ingrid\n\nWho are you?\n\nBest regards",
|
||||
files = files,
|
||||
)
|
||||
|
||||
* Send more than one file.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
files = (
|
||||
'/home/mau/file1.epub',
|
||||
'/home/mau/file2.epub',
|
||||
)
|
||||
|
||||
* If your client email used `mbox` format, we can save in any path into your email client configuration.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_save = '/home/mau/.thunderbird/7iznrbyw.default/Mail/Local Folders/LibreOffice'
|
||||
message = dict(
|
||||
to = 'ingrid.bergman@email.net',
|
||||
subject = 'I love you',
|
||||
body = "Hello Ingrid\n\nWho are you?\n\nBest regards",
|
||||
path = path_save
|
||||
)
|
||||
app.send_email(SERVER, message)
|
||||
|
||||
|
||||
* All emails always send in other thread.
|
||||
|
||||
|
||||
.. _cryptography: https://github.com/pyca/cryptography
|
|
@ -0,0 +1,15 @@
|
|||
|
||||
Examples
|
||||
========
|
||||
|
||||
Examples of macros used in production.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Contents:
|
||||
|
||||
examples_app.rst
|
||||
examples_calc.rst
|
||||
examples_writer.rst
|
||||
examples_draw.rst
|
||||
examples_base.rst
|
|
@ -0,0 +1,47 @@
|
|||
|
||||
For Application
|
||||
---------------
|
||||
|
||||
Make custom menu
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
Macro example in library ``mymacros``
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def show_info_debug():
|
||||
app.msgbox(app.INFO_DEBUG)
|
||||
return
|
||||
|
||||
|
||||
Insert custom menu in menu Tools in Calc.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def insert_menu_in_calc():
|
||||
menus = app.menus['calc']
|
||||
data = {
|
||||
'Label': 'My Macros',
|
||||
'CommandURL': 'zaz.my.macros',
|
||||
'Index': 0,
|
||||
'Submenu': [
|
||||
{
|
||||
'Label': 'Show info debug',
|
||||
'CommandURL': {'library': 'mymacros', 'name': 'show_info_debug'},
|
||||
'ShortCut': 'Ctrl+Shift+Alt+M'
|
||||
},
|
||||
],
|
||||
}
|
||||
menus.insert('Tools', data)
|
||||
return
|
||||
|
||||
|
||||
Delete menu
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def delete_menu():
|
||||
menus = app.menus['calc']
|
||||
menus.remove('Tools', 'zaz.my.macros')
|
||||
return
|
|
@ -0,0 +1,100 @@
|
|||
|
||||
For Base
|
||||
--------
|
||||
|
||||
You need install ``peewee``
|
||||
|
||||
``pip install -U peewee``
|
||||
|
||||
Create table
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
from peewee import *
|
||||
|
||||
database_proxy = DatabaseProxy()
|
||||
|
||||
class BaseModel(Model):
|
||||
class Meta:
|
||||
database = database_proxy
|
||||
legacy_table_names = False
|
||||
|
||||
|
||||
class Contacts(BaseModel):
|
||||
id = IdentityField()
|
||||
name = CharField()
|
||||
born = app.BaseDateField(null=True)
|
||||
|
||||
|
||||
def create_table():
|
||||
path = '/home/mau/test.odb'
|
||||
if app.paths.exists(path):
|
||||
db = app.docs.connect(path)
|
||||
else:
|
||||
db = app.docs.new('base', {'path': path})
|
||||
|
||||
tables = [Contacts]
|
||||
db.initialize(database_proxy, tables)
|
||||
return
|
||||
|
||||
|
||||
Insert data
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def base_insert_data():
|
||||
path = '/home/mau/test.odb'
|
||||
db = app.docs.connect(path)
|
||||
db.initialize(database_proxy)
|
||||
|
||||
rows = (
|
||||
dict(name = 'Ingrid Bergman', born=app.dates.date(2001, 1, 1)),
|
||||
dict(name = 'Sofia Loren', born=app.dates.date(2002, 2, 2)),
|
||||
dict(name = 'Kim Novak', born=app.dates.date(2003, 3, 3)),
|
||||
dict(name = 'Jane Fonda', born=app.dates.date(2004, 4, 4)),
|
||||
dict(name = 'Marion Cotillar', born=app.dates.date(2005, 5, 5)),
|
||||
)
|
||||
for row in rows:
|
||||
Contactos.insert(**row).execute()
|
||||
|
||||
return
|
||||
|
||||
|
||||
Select data
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def base_select_data():
|
||||
path = '/home/mau/test.odb'
|
||||
db = app.docs.connect(path)
|
||||
db.initialize(database_proxy)
|
||||
|
||||
query = Contactos.select()
|
||||
rows = db.get_query(query).tuples
|
||||
for row in rows:
|
||||
print(row)
|
||||
|
||||
rows = db.get_query(query).dicts
|
||||
for row in rows:
|
||||
print(row)
|
||||
|
||||
return
|
||||
|
||||
You can get tuples or dict::
|
||||
|
||||
(1, 'Ingrid Bergman', datetime.date(2001, 1, 1))
|
||||
(2, 'Sofia Loren', datetime.date(2002, 2, 2))
|
||||
(3, 'Kim Novak', datetime.date(2003, 3, 3))
|
||||
(4, 'Jane Fonda', datetime.date(2004, 4, 4))
|
||||
(5, 'Marion Cotillar', datetime.date(2005, 5, 5))
|
||||
|
||||
{'id': 1, 'name': 'Ingrid Bergman', 'born': datetime.date(2001, 1, 1)}
|
||||
{'id': 2, 'name': 'Sofia Loren', 'born': datetime.date(2002, 2, 2)}
|
||||
{'id': 3, 'name': 'Kim Novak', 'born': datetime.date(2003, 3, 3)}
|
||||
{'id': 4, 'name': 'Jane Fonda', 'born': datetime.date(2004, 4, 4)}
|
||||
{'id': 5, 'name': 'Marion Cotillar', 'born': datetime.date(2005, 5, 5)}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
|
||||
For Calc
|
||||
--------
|
||||
|
||||
Data to cell
|
||||
^^^^^^^^^^^^
|
||||
|
||||
Automatic calculate size range.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def calc_data_to_cell():
|
||||
sheet = app.active_sheet
|
||||
data = (
|
||||
('Month', 'Total'),
|
||||
('January', 100),
|
||||
('February', 200),
|
||||
('March', 300),
|
||||
('April', 400),
|
||||
('May', 500),
|
||||
)
|
||||
sheet['A1'].data = data
|
||||
return
|
||||
|
||||
|
||||
Copy visible cells
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
rangos = doc.active['A1'].current_region.visible
|
||||
doc.select(rangos)
|
||||
doc.copy()
|
||||
|
||||
doc.active['A15'].select()
|
||||
doc.paste()
|
||||
|
||||
|
||||
Merge by row
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango = app.selection
|
||||
rango.merge_by_row()
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
For Draw
|
||||
-----------------
|
||||
|
||||
Save image from clipboard
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def save_image_from_clipboard():
|
||||
# Target path
|
||||
path = '/home/mau/Pictures'
|
||||
|
||||
# Open new hidden Draw doc
|
||||
doc = app.docs.new('draw', {'Hidden': True})
|
||||
|
||||
# Paste image from clipboard and return
|
||||
image = doc.paste()
|
||||
|
||||
# Save image
|
||||
image.save(path)
|
||||
|
||||
# Close document
|
||||
doc.close()
|
||||
|
||||
app.msgbox('Image saved')
|
||||
return
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
For Writer
|
||||
----------
|
||||
|
||||
Set autostyle in table
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def writer_table_set_style():
|
||||
doc = app.active
|
||||
table = doc.tables[0]
|
||||
table.style = 'Academic'
|
||||
return
|
||||
|
||||
|
||||
Insert math formula
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
formula = '%LAMBDA_{deg","t}=1 + %alpha_deg SQRT {M_t over M_{(t=0)}-1}~"."'
|
||||
text = app.selection
|
||||
text.insert_math(formula)
|
|
@ -0,0 +1,86 @@
|
|||
|
||||
Introduction
|
||||
============
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
ZAZ is a script for rapid develop extensions and macros for `LibreOffice`_, in
|
||||
`Python`_ of course.
|
||||
|
||||
With ZAZ, you can create:
|
||||
|
||||
* Extensions for final user
|
||||
* New components for used from Basic
|
||||
* AddIn, new functions for Calc
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
* Python 3.7+
|
||||
* LibreOffice 7.0+ with support for macros Python
|
||||
* LibreOffice SDK, for new components and Add-In
|
||||
|
||||
In:
|
||||
|
||||
* ArchLinux
|
||||
* ``sudo pacman -S libreoffice-fresh-sdk``
|
||||
* Ubuntu 20.04+
|
||||
* ``sudo apt install libreoffice-script-provider-python libreoffice-dev``
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
* Clone this repository (recommended) or download it.
|
||||
|
||||
``git clone https://git.cuates.net/elmau/zaz.git``
|
||||
|
||||
* Move to.
|
||||
|
||||
``cd zaz/source``
|
||||
|
||||
* Start new extension.
|
||||
|
||||
``./zaz.py -new -t ~/projects -n MyFirstExtension``
|
||||
|
||||
|
||||
My first extension
|
||||
------------------
|
||||
|
||||
* Move to:
|
||||
|
||||
``cd ~/projects/MyFirstExtension``
|
||||
|
||||
* Create:
|
||||
|
||||
``python zaz.py -c``::
|
||||
|
||||
↪ python zaz.py -c
|
||||
04/02/2021 23:07:50 - INFO - Created directories...
|
||||
04/02/2021 23:07:50 - INFO - Created files...
|
||||
04/02/2021 23:07:50 - INFO - Don't forget generate DOMAIN.pot for locales
|
||||
04/02/2021 23:07:50 - INFO - New extension: MyFirstExtension make successfully...
|
||||
Now, you can install and test: zaz.py -i
|
||||
|
||||
* Install and test:
|
||||
|
||||
``python zaz.py -i``::
|
||||
|
||||
↪ python zaz.py -i
|
||||
04/02/2021 23:11:40 - INFO - Don't forget generate DOMAIN.pot for locales
|
||||
04/02/2021 23:11:40 - INFO - Compress OXT extension...
|
||||
04/02/2021 23:11:40 - INFO - Extension OXT created successfully...
|
||||
Copying: MyFirstExtension_v0.1.0.oxt
|
||||
|
||||
unopkg done.
|
||||
|
||||
04/02/2021 23:11:41 - INFO - Install extension successfully...
|
||||
04/02/2021 23:11:41 - INFO - Start LibreOffice...
|
||||
04/02/2021 23:11:53 - INFO - Extension make successfully...
|
||||
|
||||
|
||||
|
||||
.. _LibreOffice: https://libreoffice.org
|
||||
.. _Python: https://python.org
|
|
@ -0,0 +1,614 @@
|
|||
|
||||
Paths and files
|
||||
---------------
|
||||
|
||||
Remember, always import library.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
|
||||
Get info path
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/myfile.ods'
|
||||
p = app.paths(path)
|
||||
|
||||
app.debug(p.path)
|
||||
app.debug(p.file_name)
|
||||
app.debug(p.name)
|
||||
app.debug(p.ext)
|
||||
app.debug(p.size)
|
||||
app.debug(p.url)
|
||||
|
||||
Or get information in a tuple
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/myfile.ods'
|
||||
p = app.paths(path)
|
||||
|
||||
app.msgbox(p.info)
|
||||
|
||||
|
||||
Exists path
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/test'
|
||||
app.msgbox(app.paths.exists(path))
|
||||
|
||||
|
||||
Path is file
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/myfile.ott'
|
||||
app.msgbox(app.paths.is_file(path))
|
||||
|
||||
|
||||
Path is dir
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau'
|
||||
app.msgbox(app.paths.is_dir(path))
|
||||
|
||||
|
||||
Get path home
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = app.paths.home
|
||||
app.msgbox(path)
|
||||
|
||||
|
||||
Get path documents
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
* Configurate in LibreOffice Paths
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = app.paths.documents
|
||||
app.msgbox(path)
|
||||
|
||||
|
||||
Get path temp
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = app.paths.temp_dir
|
||||
app.msgbox(path)
|
||||
|
||||
|
||||
Get path from LibreOffice configuration
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
* Default get path documents.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = app.paths.config()
|
||||
app.msgbox(path)
|
||||
|
||||
* All options in `API XPathSettings`_
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = app.paths.config('Config')
|
||||
app.msgbox(path)
|
||||
|
||||
|
||||
Get path executable python
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_python = app.paths.python
|
||||
app.msgbox(path_python)
|
||||
|
||||
|
||||
Save and read text data
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
* Default encoding is UTF8
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
data = """Do you want to know who you are? Don't ask. Act!
|
||||
Action will delineate and define you.
|
||||
|
||||
Thomas Jefferson
|
||||
"""
|
||||
|
||||
path = '/home/mau/temp.txt'
|
||||
app.paths.save(path, data)
|
||||
|
||||
data = app.paths.read(path)
|
||||
app.msgbox(data)
|
||||
|
||||
* Change encoding
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.paths.save(path, data, 'iso-8859-1')
|
||||
|
||||
|
||||
Save and read binary data
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
data = b'Binary data'
|
||||
path = '/home/mau/temp.bin'
|
||||
app.paths.save_bin(path, data)
|
||||
|
||||
data = app.paths.read_bin(path)
|
||||
app.msgbox(data)
|
||||
|
||||
|
||||
Join paths
|
||||
^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_home = app.paths.home
|
||||
file_name = 'test.ods'
|
||||
path = app.paths.join(path_home, file_name)
|
||||
|
||||
app.msgbox(path)
|
||||
|
||||
|
||||
Get a temporal path
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_temp = app.paths.tmp()
|
||||
app.msgbox(path_temp)
|
||||
|
||||
* Get with extension.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_temp = app.paths.tmp('.txt')
|
||||
app.msgbox(path_temp)
|
||||
|
||||
* Save data in a temporal path
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
data = """He who receives an idea from me,
|
||||
receives instruction himself without lessening mine;
|
||||
as he who lights his taper at mine,
|
||||
receives light without darkening me.
|
||||
|
||||
Thomas Jefferson
|
||||
"""
|
||||
path_tmp = app.paths.save_tmp(data)
|
||||
|
||||
app.msgbox(path_tmp)
|
||||
|
||||
|
||||
Get a temporal dir
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
* All content and directory is deleted when exit context.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
data = """Do you want to know who you are? Don't ask. Act!
|
||||
Action will delineate and define you.
|
||||
|
||||
Thomas Jefferson
|
||||
"""
|
||||
|
||||
with app.paths.dir_tmp() as dt:
|
||||
app.debug(app.paths.exists(dt))
|
||||
path = app.paths.join(dt, 'test.txt')
|
||||
app.paths.save(path, data)
|
||||
|
||||
app.debug(app.paths.exists(dt))
|
||||
|
||||
|
||||
Get path for save
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
* Default open in user documents.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = app.paths.get()
|
||||
app.msgbox(path)
|
||||
|
||||
* Open in other path.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_tmp = app.paths.temp_dir
|
||||
path = app.paths.get(path_tmp)
|
||||
app.msgbox(path)
|
||||
|
||||
* Add one filter
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = app.paths.get(filters='xml')
|
||||
app.msgbox(path)
|
||||
|
||||
* Add multiple filters
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = app.paths.get(filters='xml,txt')
|
||||
|
||||
|
||||
Select directory
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
* Default open in user documents.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_dir = app.paths.get_dir()
|
||||
app.msgbox(path_dir)
|
||||
|
||||
* Open in other path.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_tmp = app.paths.temp_dir
|
||||
path_dir = app.paths.get_dir(path_tmp)
|
||||
app.msgbox(path_dir)
|
||||
|
||||
|
||||
Get path exists file
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
* Default open in user documents.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_file = app.paths.get_file()
|
||||
app.msgbox(path_file)
|
||||
|
||||
* Change init dir.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau'
|
||||
path_file = app.paths.get_file(path)
|
||||
app.msgbox(path_file)
|
||||
|
||||
* Add filter or filters.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_file = app.paths.get_file(filters='ods')
|
||||
|
||||
# or
|
||||
|
||||
path_file = app.paths.get_file(filters='ods,odt')
|
||||
|
||||
* Can select multiple files.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_file = app.paths.get_file(multiple=True)
|
||||
|
||||
|
||||
Replace extension
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/myFile.ods'
|
||||
path_new = app.paths.replace_ext(path, 'pdf')
|
||||
app.msgbox(path_new)
|
||||
|
||||
|
||||
Path in format URL <-> System
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/myFile.ods'
|
||||
path_url = app.paths.to_url(path)
|
||||
app.msgbox(path_url)
|
||||
|
||||
path = app.paths.to_system(path_url)
|
||||
app.msgbox(path)
|
||||
|
||||
|
||||
Delete files and directories
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
**CAUTION**: Delete files and directories immediately, always confirm this action.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/temp.bin'
|
||||
result = app.paths.kill(path)
|
||||
app.msgbox(result)
|
||||
|
||||
* Delete directory and all content.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/safe_for_delete'
|
||||
result = app.paths.kill(path)
|
||||
app.msgbox(result)
|
||||
|
||||
|
||||
Get files
|
||||
^^^^^^^^^
|
||||
|
||||
This method use library `pathlib`
|
||||
|
||||
* Get files not recursively
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/Documents'
|
||||
files = app.paths.files(path)
|
||||
for f in files:
|
||||
app.debug(f)
|
||||
|
||||
* Add filter
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
files = app.paths.files(path, '*.pdf')
|
||||
|
||||
* Get from this directory and all subdirectories, recursively
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
files = app.paths.files(path, '**/*.pdf')
|
||||
|
||||
This method use `os.walk`
|
||||
|
||||
* Get content files recursively
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/Documents'
|
||||
files = app.paths.walk(path)
|
||||
for f in files:
|
||||
app.debug(f)
|
||||
|
||||
* Add filters
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
files = app.paths.walk(path, 'ods')
|
||||
|
||||
# or filters
|
||||
|
||||
files = app.paths.walk(path, 'ods|odt')
|
||||
|
||||
|
||||
Get directories
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
This method use library `pathlib`
|
||||
|
||||
* Get directories in path not recursively
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/Documents'
|
||||
folders = app.paths.dirs(path)
|
||||
for f in folders:
|
||||
app.debug(f)
|
||||
|
||||
This method use `os.walk`
|
||||
|
||||
* Get directories in path recursively
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/Documents'
|
||||
folders = app.paths.walk_dirs(path)
|
||||
for f in folders:
|
||||
app.debug(f)
|
||||
|
||||
* Get info in a tuple (ID_FOLDER, ID_PARENT, NAME)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/Documents'
|
||||
folders = app.paths.walk_dirs(path, True)
|
||||
for f in folders:
|
||||
app.debug(f)
|
||||
|
||||
|
||||
Get install path extension from id
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
id_ext = 'net.elmau.zaz.EasyMacro'
|
||||
path = app.paths.from_id(id_ext)
|
||||
app.debug(path)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
24/06/2021 21:47:29 - DEBUG - /home/mau/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu20665x29msz.tmp_/ZAZEasyMacro_v0.1.0.oxt
|
||||
|
||||
|
||||
Verify if application exists
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app_name = 'nosoffice'
|
||||
app.msgbox(app.paths.exists_app(app_name))
|
||||
|
||||
app_name = 'soffice'
|
||||
app.msgbox(app.paths.exists_app(app_name))
|
||||
|
||||
|
||||
Open any type file
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Open with default application in OS.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/Downloads/file.pdf'
|
||||
app.paths.open(path)
|
||||
|
||||
path = '/home/mau/Projects/libre_office/zaz/doc/build/index.html'
|
||||
app.paths.open(path)
|
||||
|
||||
Save and read json
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/data.json'
|
||||
data = {
|
||||
'type': 'calc',
|
||||
'name': 'myfile.ods',
|
||||
}
|
||||
app.paths.to_json(path, data)
|
||||
|
||||
data = app.paths.from_json(path)
|
||||
|
||||
app.msgbox(data)
|
||||
|
||||
|
||||
Save and read csv
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
You can used the same way that `python csv`_
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/data.csv'
|
||||
data = (
|
||||
(1, 'one', app.now()),
|
||||
(2, 'two', app.now()),
|
||||
(3, 'three', app.now()),
|
||||
)
|
||||
app.paths.to_csv(path, data)
|
||||
|
||||
data = app.paths.from_csv(path)
|
||||
|
||||
app.msgbox(data)
|
||||
|
||||
|
||||
Zip, unzip
|
||||
^^^^^^^^^^
|
||||
|
||||
For default, save in the same directory with the same name + `.zip`
|
||||
|
||||
* Zip file
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
source = '/home/mau/logo.svg'
|
||||
path_zip = app.paths.zip(source)
|
||||
app.debug(path_zip)
|
||||
|
||||
* Zip directory
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
source = '/home/mau/test'
|
||||
path_zip = app.paths.zip(source)
|
||||
app.debug(path_zip)
|
||||
|
||||
* Set target
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
source = '/home/mau/logo.svg'
|
||||
target = '/home/mau/myfile.zip'
|
||||
path_zip = app.paths.zip(source, target)
|
||||
app.debug(path_zip)
|
||||
|
||||
* Read content of zip
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_zip = '/home/mau/test.zip'
|
||||
names = app.paths.zip_content(path_zip)
|
||||
for n in names:
|
||||
app.debug(n)
|
||||
|
||||
* Unzip in the same directory
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_zip = '/home/mau/test.zip'
|
||||
app.paths.unzip(path_zip)
|
||||
|
||||
* Unzip in other directory
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_zip = '/home/mau/test.zip'
|
||||
target = '/srv/mau'
|
||||
app.paths.unzip(path_zip, target)
|
||||
|
||||
* Extract one or more files
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path_zip = '/home/mau/test.zip'
|
||||
members = 'calc.ods'
|
||||
app.paths.unzip(path_zip, members=members)
|
||||
|
||||
# or
|
||||
|
||||
members = ('calc.ods', 'subdir/file.md')
|
||||
|
||||
* Merge zips
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
zips = (
|
||||
'/home/mau/test.zip',
|
||||
'/home/mau/pictures.zip',
|
||||
)
|
||||
target = '/srv/mau/file.zip'
|
||||
result = app.paths.merge_zip(target, zips)
|
||||
app.msgbox(result)
|
||||
|
||||
|
||||
Copy files
|
||||
^^^^^^^^^^
|
||||
|
||||
Copy with the same name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/image.png'
|
||||
target = '/home/mau/Pictures'
|
||||
path_new = app.paths.copy(path, target)
|
||||
app.msgbox(path_new)
|
||||
|
||||
Copy with other name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
path = '/home/mau/image.png'
|
||||
target = '/home/mau/Pictures'
|
||||
new_name = 'other_name.png'
|
||||
path_new = app.paths.copy(path, target, name)
|
||||
app.msgbox(path_new)
|
||||
|
||||
|
||||
.. _API XPathSettings: http://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1util_1_1XPathSettings.html
|
||||
.. _python csv: https://docs.python.org/3.7/library/csv.html
|
|
@ -0,0 +1,532 @@
|
|||
|
||||
Tools
|
||||
-----
|
||||
|
||||
Remember, always import library.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
|
||||
Info from PC
|
||||
^^^^^^^^^^^^
|
||||
|
||||
* Operate system
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.OS)
|
||||
|
||||
* Current user
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.USER)
|
||||
|
||||
* Name PC
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.PC)
|
||||
|
||||
* Name desktop, only GNU/Linux
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.DESKTOP)
|
||||
|
||||
* Language
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.LANG)
|
||||
|
||||
* Language with variant
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.LANGUAGE)
|
||||
|
||||
* Application name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.NAME)
|
||||
|
||||
* Application version
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.VERSION)
|
||||
|
||||
* In Windows
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.IS_WIN)
|
||||
|
||||
* In Mac
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.IS_MAC)
|
||||
|
||||
|
||||
Message Box
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.IS_WIN, 'My Macro')
|
||||
|
||||
|
||||
Show warning
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
message = 'Caution, this action is dangerous'
|
||||
title = 'My App'
|
||||
app.warning(message, title)
|
||||
|
||||
|
||||
Show error box
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
message = 'ERROR: Contact technical support'
|
||||
title = 'My App'
|
||||
app.errorbox(message, title)
|
||||
|
||||
|
||||
Make question
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
message = 'Is easy Python?'
|
||||
title = 'My App'
|
||||
result = app.question(message, title)
|
||||
app.msgbox(result)
|
||||
|
||||
|
||||
InputBox
|
||||
^^^^^^^^
|
||||
|
||||
* Normal data
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
message = 'Type your name'
|
||||
default = ''
|
||||
title = 'My App'
|
||||
|
||||
result = app.inputbox(message, default, title)
|
||||
app.msgbox(result)
|
||||
|
||||
* Private data
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
message = 'Type your password'
|
||||
default = ''
|
||||
title = 'My App'
|
||||
echochar = "*"
|
||||
|
||||
result = app.inputbox(message, default, title, echochar)
|
||||
app.msgbox(result)
|
||||
|
||||
|
||||
Date and times
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
* Get today
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.today())
|
||||
|
||||
* Get now
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.now())
|
||||
|
||||
* Get now only time
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.now(True))
|
||||
|
||||
* Get `epoch time`_
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.msgbox(app.get_epoch())
|
||||
|
||||
* Simple measure time
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.start()
|
||||
app.sleep(5)
|
||||
seconds = app.end(True)
|
||||
app.msgbox(seconds)
|
||||
|
||||
|
||||
Thread
|
||||
^^^^^^
|
||||
|
||||
You can execute any macro in thread
|
||||
|
||||
* Normal execution
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def show_time(seconds):
|
||||
app.sleep(seconds)
|
||||
app.msgbox(app.NAME)
|
||||
return
|
||||
|
||||
def main(args=None):
|
||||
show_time(5)
|
||||
app.msgbox('Finish...')
|
||||
return
|
||||
|
||||
* Run in thread
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@app.run_in_thread
|
||||
def show_time(seconds):
|
||||
app.sleep(seconds)
|
||||
app.msgbox(app.NAME)
|
||||
return
|
||||
|
||||
def main(args=None):
|
||||
show_time(5)
|
||||
app.msgbox('Finish...')
|
||||
return
|
||||
|
||||
|
||||
Dictionary <-> properties
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
args = {
|
||||
'Hidden': True,
|
||||
'Password': 'letmein',
|
||||
}
|
||||
properties = app.dict_to_property(args)
|
||||
|
||||
app.msgbox(properties)
|
||||
|
||||
data = app.data_to_dict(properties)
|
||||
|
||||
app.msgbox(data)
|
||||
|
||||
|
||||
Tuples or lists to dictionary
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
tuple_of_tuples = (
|
||||
('Hidden', True),
|
||||
('Password', 'letmein'),
|
||||
)
|
||||
data = app.data_to_dict(tuple_of_tuples)
|
||||
app.msgbox(data)
|
||||
|
||||
list_of_lists = [
|
||||
['Hidden', True],
|
||||
['Password', 'letmein'],
|
||||
]
|
||||
data = app.data_to_dict(list_of_lists)
|
||||
app.msgbox(data)
|
||||
|
||||
|
||||
Json
|
||||
^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
data = {
|
||||
'Hidden': True,
|
||||
'Password': 'letmein',
|
||||
}
|
||||
|
||||
json = app.json_dumps(data)
|
||||
|
||||
app.msgbox(json)
|
||||
|
||||
data = app.json_loads(json)
|
||||
|
||||
app.msgbox(data)
|
||||
|
||||
|
||||
Call Macros
|
||||
^^^^^^^^^^^
|
||||
|
||||
You can any macro, for default call macros Python.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def show_message():
|
||||
app.msgbox(app.INFO_DEBUG)
|
||||
return
|
||||
|
||||
def main(args=None):
|
||||
args = {
|
||||
'library': 'test',
|
||||
'name': 'show_message',
|
||||
}
|
||||
app.call_macro(args)
|
||||
return
|
||||
|
||||
Of course is better call directly if both macros are the same languaje, but, you can call macro in Basic too.
|
||||
|
||||
.. code-block:: vbnet
|
||||
|
||||
Sub show_message()
|
||||
MsgBox "Basic from Python"
|
||||
End Sub
|
||||
|
||||
Call from Python with.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
args = {
|
||||
'language': 'Basic',
|
||||
'library': 'Standard',
|
||||
'module': 'Module1',
|
||||
'name': 'show_message',
|
||||
}
|
||||
app.call_macro(args)
|
||||
|
||||
Execute macro in other thread
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app.call_macro(args, True)
|
||||
|
||||
|
||||
Call external program
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
app_name = 'gnome-calculator'
|
||||
app.run(app_name)
|
||||
app.msgbox('ok')
|
||||
|
||||
Call command line and capture output
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
args = 'ls -lh ~'
|
||||
result = app.run(args, True)
|
||||
app.debug(result)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
21/06/2021 22:27:22 - DEBUG - total 1.3M
|
||||
drwxr-xr-x 5 mau mau 4.0K Jun 17 13:09 Desktop
|
||||
drwxr-xr-x 6 mau mau 4.0K Jun 15 12:35 Documents
|
||||
drwxr-xr-x 2 mau mau 4.0K Jun 21 20:26 Downloads
|
||||
drwxr-xr-x 2 mau mau 4.0K Jun 21 16:18 Pictures
|
||||
drwxr-xr-x 13 mau mau 4.0K Jun 21 15:34 Projects
|
||||
drwxr-xr-x 2 mau mau 4.0K May 11 18:48 Templates
|
||||
drwxr-xr-x 2 mau mau 4.0K Jun 20 23:27 Videos
|
||||
|
||||
Call command line and capture output line by line.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
args = 'ls -lh /home/mau'
|
||||
for line in app.popen(args):
|
||||
app.debug(line)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
21/06/2021 22:34:42 - DEBUG - total 1.3M
|
||||
21/06/2021 22:34:42 - DEBUG - drwxr-xr-x 5 mau mau 4.0K Jun 17 13:09 Desktop
|
||||
21/06/2021 22:34:42 - DEBUG - drwxr-xr-x 6 mau mau 4.0K Jun 15 12:35 Documents
|
||||
21/06/2021 22:34:42 - DEBUG - drwxr-xr-x 2 mau mau 4.0K Jun 21 20:26 Downloads
|
||||
21/06/2021 22:34:42 - DEBUG - -rw-r----- 1 mau mau 1.3M Jun 14 11:53 out.png
|
||||
21/06/2021 22:34:42 - DEBUG - drwxr-xr-x 2 mau mau 4.0K Jun 21 16:18 Pictures
|
||||
21/06/2021 22:34:42 - DEBUG - drwxr-xr-x 13 mau mau 4.0K Jun 21 15:34 Projects
|
||||
21/06/2021 22:34:42 - DEBUG - drwxr-xr-x 2 mau mau 4.0K May 11 18:48 Templates
|
||||
21/06/2021 22:34:42 - DEBUG - drwxr-xr-x 2 mau mau 4.0K Jun 20 23:27 Videos
|
||||
|
||||
|
||||
Timer
|
||||
^^^^^
|
||||
|
||||
Execute any macro every seconds.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
TIMER_NAME = 'clock'
|
||||
|
||||
def show_time():
|
||||
app.debug(app.now(True))
|
||||
return
|
||||
|
||||
def start_clock():
|
||||
seconds = 1
|
||||
macro = {
|
||||
'library': 'test',
|
||||
'name': 'show_time',
|
||||
}
|
||||
app.start_timer(TIMER_NAME, seconds, macro)
|
||||
return
|
||||
|
||||
def stop_clock():
|
||||
app.stop_timer(TIMER_NAME)
|
||||
return
|
||||
|
||||
def main(args=None):
|
||||
start_clock()
|
||||
return
|
||||
|
||||
Execute `stop_clock` for stop timer.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
21/06/2021 22:43:17 - INFO - Timer started... show_time
|
||||
21/06/2021 22:43:18 - DEBUG - 22:43:18.080315
|
||||
21/06/2021 22:43:19 - DEBUG - 22:43:19.082211
|
||||
...
|
||||
21/06/2021 22:43:46 - DEBUG - 22:43:46.126446
|
||||
21/06/2021 22:43:47 - DEBUG - 22:43:47.128487
|
||||
21/06/2021 22:43:47 - INFO - Timer stopped... show_time
|
||||
|
||||
|
||||
Get digest
|
||||
^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
data = 'LibreOffice with Python'
|
||||
|
||||
digest = app.sha256(data)
|
||||
app.msgbox(digest)
|
||||
|
||||
digest = app.sha512(data)
|
||||
app.msgbox(digest)
|
||||
|
||||
|
||||
Save and get configurations
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
You can save any data.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
my_app = 'my_extension'
|
||||
data = {
|
||||
'path': '/home/mau/work',
|
||||
'save_data': True,
|
||||
}
|
||||
|
||||
app.set_config('config', data, my_app)
|
||||
|
||||
app.msgbox('Save config')
|
||||
|
||||
data = app.get_config('config', my_app)
|
||||
|
||||
app.msgbox(data)
|
||||
|
||||
|
||||
Render string
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
template = """Hello $name
|
||||
|
||||
I send you this $file_name
|
||||
|
||||
Best regards
|
||||
"""
|
||||
|
||||
data = {'name': 'Ingrid Bergman', 'file_name': 'letter_love.odt'}
|
||||
|
||||
render = app.render(template, data)
|
||||
|
||||
app.msgbox(render)
|
||||
|
||||
|
||||
Encrypt decrypt
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
You need install library `cryptography`_
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
from conf import PASSWORD
|
||||
|
||||
def encrypt_decrypt():
|
||||
|
||||
data = 'My super secret data'
|
||||
token = app.encrypt(data, PASSWORD)
|
||||
app.msgbox(token)
|
||||
|
||||
data = app.decrypt(token, PASSWORD)
|
||||
app.msgbox(data)
|
||||
|
||||
return
|
||||
|
||||
|
||||
Simple url open
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
* Get text data
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
url = 'https://api.ipify.org'
|
||||
data = app.url_open(url)
|
||||
app.msgbox(data)
|
||||
|
||||
* Get json data
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
url = 'https://api.ipify.org?format=json'
|
||||
data = app.url_open(url, get_json=True)
|
||||
app.msgbox(data)
|
||||
|
||||
For more complex case, you can used `requests`_ or `httpx`_
|
||||
|
||||
|
||||
Color
|
||||
^^^^^
|
||||
|
||||
Look colors that you can used in `web colors`_
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
color_name = 'darkblue'
|
||||
color = app.get_color(color_name)
|
||||
app.msgbox(color)
|
||||
|
||||
color_rgb = (125, 200, 10)
|
||||
color = app.get_color(color_rgb)
|
||||
app.msgbox(color)
|
||||
|
||||
color_html = '#008080'
|
||||
color = app.get_color(color_html)
|
||||
app.msgbox(color)
|
||||
|
||||
|
||||
.. _epoch time: https://en.wikipedia.org/wiki/Unix_time
|
||||
.. _cryptography: https://github.com/pyca/cryptography
|
||||
.. _requests: https://docs.python-requests.org
|
||||
.. _httpx: https://www.python-httpx.org/
|
||||
.. _web colors: https://en.wikipedia.org/wiki/Web_colors
|
|
@ -0,0 +1,153 @@
|
|||
|
||||
Tools for debug
|
||||
---------------
|
||||
|
||||
INFO_DEBUG
|
||||
^^^^^^^^^^
|
||||
|
||||
Show info debug, show in message box.
|
||||
|
||||
If you have any problem in your code, you can `open issue`_ in this project,
|
||||
always copy the information of INFO_DEBUG in your ticket.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
def info():
|
||||
app.msgbox(INFO_DEBUG)
|
||||
return
|
||||
|
||||
Show in shell.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
def info():
|
||||
app.debug(INFO_DEBUG)
|
||||
return
|
||||
|
||||
|
||||
Log error
|
||||
^^^^^^^^^
|
||||
|
||||
Show error message in shell.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
def error():
|
||||
msg = 'My error 500'
|
||||
app.error(msg)
|
||||
return
|
||||
|
||||
|
||||
Log debug
|
||||
^^^^^^^^^
|
||||
|
||||
Show debug message in shell.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
def error():
|
||||
msg = 'Verify this data...'
|
||||
app.debug(msg)
|
||||
return
|
||||
|
||||
|
||||
Log info
|
||||
^^^^^^^^
|
||||
|
||||
Show info message in shell.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
def error():
|
||||
msg = 'Start process...'
|
||||
app.info(msg)
|
||||
return
|
||||
|
||||
|
||||
Log to file
|
||||
^^^^^^^^^^^
|
||||
|
||||
Save log to file, automatic add date and time.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
def log():
|
||||
app.save_log('/home/mau/log.txt', 'PyUNO')
|
||||
app.save_log('/home/mau/log.txt', app.INFO_DEBUG)
|
||||
return
|
||||
|
||||
|
||||
|
||||
Message box
|
||||
^^^^^^^^^^^
|
||||
|
||||
Show any data in message box
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
def message():
|
||||
|
||||
msg = 'Please, save the planet'
|
||||
app.msgbox(msg)
|
||||
|
||||
msg = ('one', 2, 'three')
|
||||
app.msgbox(msg)
|
||||
|
||||
msg = {'name': 'Teresa'}
|
||||
app.msgbox(msg)
|
||||
|
||||
app.msgbox(app)
|
||||
|
||||
return
|
||||
|
||||
|
||||
Catch exceptions
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
Sometimes, for difficult errors, you can catch exceptions.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
@app.catch_exception
|
||||
def test():
|
||||
r = 1 / 0
|
||||
return
|
||||
|
||||
And not, not used you this function in production.
|
||||
|
||||
|
||||
Call MRI
|
||||
^^^^^^^^
|
||||
|
||||
`MRI`_ is the better extension for debug any object in LibreOffice, you need
|
||||
install before call it.
|
||||
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
def error():
|
||||
obj = app.active
|
||||
app.mri(obj)
|
||||
return
|
||||
|
||||
|
||||
.. _MRI: https://github.com/hanya/MRI
|
||||
.. _open issue: https://git.cuates.net/elmau/zaz/issues
|
|
@ -0,0 +1,19 @@
|
|||
|
||||
Writer
|
||||
------
|
||||
|
||||
Remember, always import library.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
|
||||
Current doc
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.type)
|
||||
|
|
@ -0,0 +1,701 @@
|
|||
@import url("basic.css");
|
||||
|
||||
/* -- page layout ----------------------------------------------------------- */
|
||||
|
||||
body {
|
||||
font-family: Georgia, serif;
|
||||
font-size: 17px;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
div.document {
|
||||
width: 940px;
|
||||
margin: 30px auto 0 auto;
|
||||
}
|
||||
|
||||
div.documentwrapper {
|
||||
float: left;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div.bodywrapper {
|
||||
margin: 0 0 0 220px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar {
|
||||
width: 220px;
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
hr {
|
||||
border: 1px solid #B1B4B6;
|
||||
}
|
||||
|
||||
div.body {
|
||||
background-color: #fff;
|
||||
color: #3E4349;
|
||||
padding: 0 30px 0 30px;
|
||||
}
|
||||
|
||||
div.body > .section {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.footer {
|
||||
width: 940px;
|
||||
margin: 20px auto 30px auto;
|
||||
font-size: 14px;
|
||||
color: #888;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.footer a {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
p.caption {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
|
||||
div.relations {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
div.sphinxsidebar a {
|
||||
color: #444;
|
||||
text-decoration: none;
|
||||
border-bottom: 1px dotted #999;
|
||||
}
|
||||
|
||||
div.sphinxsidebar a:hover {
|
||||
border-bottom: 1px solid #999;
|
||||
}
|
||||
|
||||
div.sphinxsidebarwrapper {
|
||||
padding: 18px 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebarwrapper p.logo {
|
||||
padding: 0;
|
||||
margin: -10px 0 0 0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.sphinxsidebarwrapper h1.logo {
|
||||
margin-top: -10px;
|
||||
text-align: center;
|
||||
margin-bottom: 5px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.sphinxsidebarwrapper h1.logo-name {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
div.sphinxsidebarwrapper p.blurb {
|
||||
margin-top: 0;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
div.sphinxsidebar h3,
|
||||
div.sphinxsidebar h4 {
|
||||
font-family: Georgia, serif;
|
||||
color: #444;
|
||||
font-size: 24px;
|
||||
font-weight: normal;
|
||||
margin: 0 0 5px 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
div.sphinxsidebar h4 {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar h3 a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
div.sphinxsidebar p.logo a,
|
||||
div.sphinxsidebar h3 a,
|
||||
div.sphinxsidebar p.logo a:hover,
|
||||
div.sphinxsidebar h3 a:hover {
|
||||
border: none;
|
||||
}
|
||||
|
||||
div.sphinxsidebar p {
|
||||
color: #555;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul {
|
||||
margin: 10px 0;
|
||||
padding: 0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul li.toctree-l1 > a {
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul li.toctree-l2 > a {
|
||||
font-size: 110%;
|
||||
}
|
||||
|
||||
div.sphinxsidebar input {
|
||||
border: 1px solid #CCC;
|
||||
font-family: Georgia, serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
div.sphinxsidebar hr {
|
||||
border: none;
|
||||
height: 1px;
|
||||
color: #AAA;
|
||||
background: #AAA;
|
||||
|
||||
text-align: left;
|
||||
margin-left: 0;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
div.sphinxsidebar .badge {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
div.sphinxsidebar .badge:hover {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* To address an issue with donation coming after search */
|
||||
div.sphinxsidebar h3.donation {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
/* -- body styles ----------------------------------------------------------- */
|
||||
|
||||
a {
|
||||
color: #004B6B;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #6D4100;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
div.body h1,
|
||||
div.body h2,
|
||||
div.body h3,
|
||||
div.body h4,
|
||||
div.body h5,
|
||||
div.body h6 {
|
||||
font-family: Georgia, serif;
|
||||
font-weight: normal;
|
||||
margin: 30px 0px 10px 0px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; }
|
||||
div.body h2 { font-size: 180%; }
|
||||
div.body h3 { font-size: 150%; }
|
||||
div.body h4 { font-size: 130%; }
|
||||
div.body h5 { font-size: 100%; }
|
||||
div.body h6 { font-size: 100%; }
|
||||
|
||||
a.headerlink {
|
||||
color: #DDD;
|
||||
padding: 0 4px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.headerlink:hover {
|
||||
color: #444;
|
||||
background: #EAEAEA;
|
||||
}
|
||||
|
||||
div.body p, div.body dd, div.body li {
|
||||
line-height: 1.4em;
|
||||
}
|
||||
|
||||
div.admonition {
|
||||
margin: 20px 0px;
|
||||
padding: 10px 30px;
|
||||
background-color: #EEE;
|
||||
border: 1px solid #CCC;
|
||||
}
|
||||
|
||||
div.admonition tt.xref, div.admonition code.xref, div.admonition a tt {
|
||||
background-color: #FBFBFB;
|
||||
border-bottom: 1px solid #fafafa;
|
||||
}
|
||||
|
||||
div.admonition p.admonition-title {
|
||||
font-family: Georgia, serif;
|
||||
font-weight: normal;
|
||||
font-size: 24px;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
div.admonition p.last {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.highlight {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
dt:target, .highlight {
|
||||
background: #FAF3E8;
|
||||
}
|
||||
|
||||
div.warning {
|
||||
background-color: #FCC;
|
||||
border: 1px solid #FAA;
|
||||
}
|
||||
|
||||
div.danger {
|
||||
background-color: #FCC;
|
||||
border: 1px solid #FAA;
|
||||
-moz-box-shadow: 2px 2px 4px #D52C2C;
|
||||
-webkit-box-shadow: 2px 2px 4px #D52C2C;
|
||||
box-shadow: 2px 2px 4px #D52C2C;
|
||||
}
|
||||
|
||||
div.error {
|
||||
background-color: #FCC;
|
||||
border: 1px solid #FAA;
|
||||
-moz-box-shadow: 2px 2px 4px #D52C2C;
|
||||
-webkit-box-shadow: 2px 2px 4px #D52C2C;
|
||||
box-shadow: 2px 2px 4px #D52C2C;
|
||||
}
|
||||
|
||||
div.caution {
|
||||
background-color: #FCC;
|
||||
border: 1px solid #FAA;
|
||||
}
|
||||
|
||||
div.attention {
|
||||
background-color: #FCC;
|
||||
border: 1px solid #FAA;
|
||||
}
|
||||
|
||||
div.important {
|
||||
background-color: #EEE;
|
||||
border: 1px solid #CCC;
|
||||
}
|
||||
|
||||
div.note {
|
||||
background-color: #EEE;
|
||||
border: 1px solid #CCC;
|
||||
}
|
||||
|
||||
div.tip {
|
||||
background-color: #EEE;
|
||||
border: 1px solid #CCC;
|
||||
}
|
||||
|
||||
div.hint {
|
||||
background-color: #EEE;
|
||||
border: 1px solid #CCC;
|
||||
}
|
||||
|
||||
div.seealso {
|
||||
background-color: #EEE;
|
||||
border: 1px solid #CCC;
|
||||
}
|
||||
|
||||
div.topic {
|
||||
background-color: #EEE;
|
||||
}
|
||||
|
||||
p.admonition-title {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
p.admonition-title:after {
|
||||
content: ":";
|
||||
}
|
||||
|
||||
pre, tt, code {
|
||||
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.hll {
|
||||
background-color: #FFC;
|
||||
margin: 0 -12px;
|
||||
padding: 0 12px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
img.screenshot {
|
||||
}
|
||||
|
||||
tt.descname, tt.descclassname, code.descname, code.descclassname {
|
||||
font-size: 0.95em;
|
||||
}
|
||||
|
||||
tt.descname, code.descname {
|
||||
padding-right: 0.08em;
|
||||
}
|
||||
|
||||
img.screenshot {
|
||||
-moz-box-shadow: 2px 2px 4px #EEE;
|
||||
-webkit-box-shadow: 2px 2px 4px #EEE;
|
||||
box-shadow: 2px 2px 4px #EEE;
|
||||
}
|
||||
|
||||
table.docutils {
|
||||
border: 1px solid #888;
|
||||
-moz-box-shadow: 2px 2px 4px #EEE;
|
||||
-webkit-box-shadow: 2px 2px 4px #EEE;
|
||||
box-shadow: 2px 2px 4px #EEE;
|
||||
}
|
||||
|
||||
table.docutils td, table.docutils th {
|
||||
border: 1px solid #888;
|
||||
padding: 0.25em 0.7em;
|
||||
}
|
||||
|
||||
table.field-list, table.footnote {
|
||||
border: none;
|
||||
-moz-box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
table.footnote {
|
||||
margin: 15px 0;
|
||||
width: 100%;
|
||||
border: 1px solid #EEE;
|
||||
background: #FDFDFD;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
table.footnote + table.footnote {
|
||||
margin-top: -15px;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
table.field-list th {
|
||||
padding: 0 0.8em 0 0;
|
||||
}
|
||||
|
||||
table.field-list td {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.field-list p {
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
|
||||
/* Cloned from
|
||||
* https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68
|
||||
*/
|
||||
.field-name {
|
||||
-moz-hyphens: manual;
|
||||
-ms-hyphens: manual;
|
||||
-webkit-hyphens: manual;
|
||||
hyphens: manual;
|
||||
}
|
||||
|
||||
table.footnote td.label {
|
||||
width: .1px;
|
||||
padding: 0.3em 0 0.3em 0.5em;
|
||||
}
|
||||
|
||||
table.footnote td {
|
||||
padding: 0.3em 0.5em;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
dl dd {
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 0 30px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
/* Matches the 30px from the narrow-screen "li > ul" selector below */
|
||||
margin: 10px 0 10px 30px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
pre {
|
||||
background: #EEE;
|
||||
padding: 7px 30px;
|
||||
margin: 15px 0px;
|
||||
line-height: 1.3em;
|
||||
}
|
||||
|
||||
div.viewcode-block:target {
|
||||
background: #ffd;
|
||||
}
|
||||
|
||||
dl pre, blockquote pre, li pre {
|
||||
margin-left: 0;
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
tt, code {
|
||||
background-color: #ecf0f3;
|
||||
color: #222;
|
||||
/* padding: 1px 2px; */
|
||||
}
|
||||
|
||||
tt.xref, code.xref, a tt {
|
||||
background-color: #FBFBFB;
|
||||
border-bottom: 1px solid #fff;
|
||||
}
|
||||
|
||||
a.reference {
|
||||
text-decoration: none;
|
||||
border-bottom: 1px dotted #004B6B;
|
||||
}
|
||||
|
||||
/* Don't put an underline on images */
|
||||
a.image-reference, a.image-reference:hover {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
a.reference:hover {
|
||||
border-bottom: 1px solid #6D4100;
|
||||
}
|
||||
|
||||
a.footnote-reference {
|
||||
text-decoration: none;
|
||||
font-size: 0.7em;
|
||||
vertical-align: top;
|
||||
border-bottom: 1px dotted #004B6B;
|
||||
}
|
||||
|
||||
a.footnote-reference:hover {
|
||||
border-bottom: 1px solid #6D4100;
|
||||
}
|
||||
|
||||
a:hover tt, a:hover code {
|
||||
background: #EEE;
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 870px) {
|
||||
|
||||
div.sphinxsidebar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.document {
|
||||
width: 100%;
|
||||
|
||||
}
|
||||
|
||||
div.documentwrapper {
|
||||
margin-left: 0;
|
||||
margin-top: 0;
|
||||
margin-right: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.bodywrapper {
|
||||
margin-top: 0;
|
||||
margin-right: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
li > ul {
|
||||
/* Matches the 30px from the "ul, ol" selector above */
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.document {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.footer {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.bodywrapper {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.footer {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.github {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@media screen and (max-width: 875px) {
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 20px 30px;
|
||||
}
|
||||
|
||||
div.documentwrapper {
|
||||
float: none;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
div.sphinxsidebar {
|
||||
display: block;
|
||||
float: none;
|
||||
width: 102.5%;
|
||||
margin: 50px -30px -20px -30px;
|
||||
padding: 10px 20px;
|
||||
background: #333;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
|
||||
div.sphinxsidebar h3 a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
div.sphinxsidebar a {
|
||||
color: #AAA;
|
||||
}
|
||||
|
||||
div.sphinxsidebar p.logo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.document {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.footer {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.bodywrapper {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.body {
|
||||
min-height: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.rtd_doc_footer {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.document {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.footer {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.footer {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.github {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* misc. */
|
||||
|
||||
.revsys-inline {
|
||||
display: none!important;
|
||||
}
|
||||
|
||||
/* Make nested-list/multi-paragraph items look better in Releases changelog
|
||||
* pages. Without this, docutils' magical list fuckery causes inconsistent
|
||||
* formatting between different release sub-lists.
|
||||
*/
|
||||
div#changelog > div.section > ul > li > p:only-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Hide fugly table cell borders in ..bibliography:: directive output */
|
||||
table.docutils.citation, table.docutils.citation td, table.docutils.citation th {
|
||||
border: none;
|
||||
/* Below needed in some edge cases; if not applied, bottom shadows appear */
|
||||
-moz-box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
|
||||
/* relbar */
|
||||
|
||||
.related {
|
||||
line-height: 30px;
|
||||
width: 100%;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.related.top {
|
||||
border-bottom: 1px solid #EEE;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.related.bottom {
|
||||
border-top: 1px solid #EEE;
|
||||
}
|
||||
|
||||
.related ul {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.related li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
nav#rellinks {
|
||||
float: right;
|
||||
}
|
||||
|
||||
nav#rellinks li+li:before {
|
||||
content: "|";
|
||||
}
|
||||
|
||||
nav#breadcrumbs li+li:before {
|
||||
content: "\00BB";
|
||||
}
|
||||
|
||||
/* Hide certain items when printing */
|
||||
@media print {
|
||||
div.related {
|
||||
display: none;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,904 @@
|
|||
/*
|
||||
* basic.css
|
||||
* ~~~~~~~~~
|
||||
*
|
||||
* Sphinx stylesheet -- basic theme.
|
||||
*
|
||||
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
/* -- main layout ----------------------------------------------------------- */
|
||||
|
||||
div.clearer {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
div.section::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- relbar ---------------------------------------------------------------- */
|
||||
|
||||
div.related {
|
||||
width: 100%;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
div.related h3 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.related ul {
|
||||
margin: 0;
|
||||
padding: 0 0 0 10px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.related li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
div.related li.right {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
/* -- sidebar --------------------------------------------------------------- */
|
||||
|
||||
div.sphinxsidebarwrapper {
|
||||
padding: 10px 5px 0 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar {
|
||||
float: left;
|
||||
width: 230px;
|
||||
margin-left: -100%;
|
||||
font-size: 90%;
|
||||
word-wrap: break-word;
|
||||
overflow-wrap : break-word;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul,
|
||||
div.sphinxsidebar ul.want-points {
|
||||
margin-left: 20px;
|
||||
list-style: square;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sphinxsidebar form {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar input {
|
||||
border: 1px solid #98dbcc;
|
||||
font-family: sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox form.search {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="text"] {
|
||||
float: left;
|
||||
width: 80%;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="submit"] {
|
||||
float: left;
|
||||
width: 20%;
|
||||
border-left: none;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* -- search page ----------------------------------------------------------- */
|
||||
|
||||
ul.search {
|
||||
margin: 10px 0 0 20px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul.search li {
|
||||
padding: 5px 0 5px 20px;
|
||||
background-image: url(file.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 7px;
|
||||
}
|
||||
|
||||
ul.search li a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.search li p.context {
|
||||
color: #888;
|
||||
margin: 2px 0 0 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
ul.keywordmatches li.goodmatch a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* -- index page ------------------------------------------------------------ */
|
||||
|
||||
table.contentstable {
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.contentstable p.biglink {
|
||||
line-height: 150%;
|
||||
}
|
||||
|
||||
a.biglink {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
span.linkdescr {
|
||||
font-style: italic;
|
||||
padding-top: 5px;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
/* -- general index --------------------------------------------------------- */
|
||||
|
||||
table.indextable {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.indextable td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.indextable ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
table.indextable > tbody > tr > td > ul {
|
||||
padding-left: 0em;
|
||||
}
|
||||
|
||||
table.indextable tr.pcap {
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
table.indextable tr.cap {
|
||||
margin-top: 10px;
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
img.toggler {
|
||||
margin-right: 3px;
|
||||
margin-top: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.modindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
div.genindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
/* -- domain module index --------------------------------------------------- */
|
||||
|
||||
table.modindextable td {
|
||||
padding: 2px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
/* -- general body styles --------------------------------------------------- */
|
||||
|
||||
div.body {
|
||||
min-width: 450px;
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
div.body p, div.body dd, div.body li, div.body blockquote {
|
||||
-moz-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
a.brackets:before,
|
||||
span.brackets > a:before{
|
||||
content: "[";
|
||||
}
|
||||
|
||||
a.brackets:after,
|
||||
span.brackets > a:after {
|
||||
content: "]";
|
||||
}
|
||||
|
||||
h1:hover > a.headerlink,
|
||||
h2:hover > a.headerlink,
|
||||
h3:hover > a.headerlink,
|
||||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink,
|
||||
caption:hover > a.headerlink,
|
||||
p.caption:hover > a.headerlink,
|
||||
div.code-block-caption:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
div.body p.caption {
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
div.body td {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.first {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
p.rubric {
|
||||
margin-top: 30px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
img.align-left, figure.align-left, .figure.align-left, object.align-left {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
img.align-right, figure.align-right, .figure.align-right, object.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
img.align-center, figure.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
img.align-default, figure.align-default, .figure.align-default {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-default {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* -- sidebars -------------------------------------------------------------- */
|
||||
|
||||
div.sidebar,
|
||||
aside.sidebar {
|
||||
margin: 0 0 0.5em 1em;
|
||||
border: 1px solid #ddb;
|
||||
padding: 7px;
|
||||
background-color: #ffe;
|
||||
width: 40%;
|
||||
float: right;
|
||||
clear: right;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
p.sidebar-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.admonition, div.topic, blockquote {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- topics ---------------------------------------------------------------- */
|
||||
|
||||
div.topic {
|
||||
border: 1px solid #ccc;
|
||||
padding: 7px;
|
||||
margin: 10px 0 10px 0;
|
||||
}
|
||||
|
||||
p.topic-title {
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
/* -- admonitions ----------------------------------------------------------- */
|
||||
|
||||
div.admonition {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
div.admonition dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p.admonition-title {
|
||||
margin: 0px 10px 5px 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.body p.centered {
|
||||
text-align: center;
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
/* -- content of sidebars/topics/admonitions -------------------------------- */
|
||||
|
||||
div.sidebar > :last-child,
|
||||
aside.sidebar > :last-child,
|
||||
div.topic > :last-child,
|
||||
div.admonition > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sidebar::after,
|
||||
aside.sidebar::after,
|
||||
div.topic::after,
|
||||
div.admonition::after,
|
||||
blockquote::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/* -- tables ---------------------------------------------------------------- */
|
||||
|
||||
table.docutils {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
border: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-default {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table caption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
table caption span.caption-text {
|
||||
}
|
||||
|
||||
table.docutils td, table.docutils th {
|
||||
padding: 1px 8px 1px 5px;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid #aaa;
|
||||
}
|
||||
|
||||
table.footnote td, table.footnote th {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
table.citation td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
th > :first-child,
|
||||
td > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
th > :last-child,
|
||||
td > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
/* -- figures --------------------------------------------------------------- */
|
||||
|
||||
div.figure, figure {
|
||||
margin: 0.5em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
div.figure p.caption, figcaption {
|
||||
padding: 0.3em;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-number,
|
||||
figcaption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-text,
|
||||
figcaption span.caption-text {
|
||||
}
|
||||
|
||||
/* -- field list styles ----------------------------------------------------- */
|
||||
|
||||
table.field-list td, table.field-list th {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
.field-list ul {
|
||||
margin: 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.field-list p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.field-name {
|
||||
-moz-hyphens: manual;
|
||||
-ms-hyphens: manual;
|
||||
-webkit-hyphens: manual;
|
||||
hyphens: manual;
|
||||
}
|
||||
|
||||
/* -- hlist styles ---------------------------------------------------------- */
|
||||
|
||||
table.hlist {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
table.hlist td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* -- object description styles --------------------------------------------- */
|
||||
|
||||
.sig {
|
||||
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||
}
|
||||
|
||||
.sig-name, code.descname {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.sig-name {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
code.descname {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.sig-prename, code.descclassname {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.optional {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.sig-paren {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.sig-param.n {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* C++ specific styling */
|
||||
|
||||
.sig-inline.c-texpr,
|
||||
.sig-inline.cpp-texpr {
|
||||
font-family: unset;
|
||||
}
|
||||
|
||||
.sig.c .k, .sig.c .kt,
|
||||
.sig.cpp .k, .sig.cpp .kt {
|
||||
color: #0033B3;
|
||||
}
|
||||
|
||||
.sig.c .m,
|
||||
.sig.cpp .m {
|
||||
color: #1750EB;
|
||||
}
|
||||
|
||||
.sig.c .s, .sig.c .sc,
|
||||
.sig.cpp .s, .sig.cpp .sc {
|
||||
color: #067D17;
|
||||
}
|
||||
|
||||
|
||||
/* -- other body styles ----------------------------------------------------- */
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha;
|
||||
}
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha;
|
||||
}
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman;
|
||||
}
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:first-child > :first-child,
|
||||
:not(li) > ul > li:first-child > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:last-child > :last-child,
|
||||
:not(li) > ul > li:last-child > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
ol.simple ol p,
|
||||
ol.simple ul p,
|
||||
ul.simple ol p,
|
||||
ul.simple ul p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple > li:not(:first-child) > p,
|
||||
ul.simple > li:not(:first-child) > p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple p,
|
||||
ul.simple p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dl.footnote > dt,
|
||||
dl.citation > dt {
|
||||
float: left;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
|
||||
dl.footnote > dd,
|
||||
dl.citation > dd {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
dl.footnote > dd:after,
|
||||
dl.citation > dd:after {
|
||||
content: "";
|
||||
clear: both;
|
||||
}
|
||||
|
||||
dl.field-list {
|
||||
display: grid;
|
||||
grid-template-columns: fit-content(30%) auto;
|
||||
}
|
||||
|
||||
dl.field-list > dt {
|
||||
font-weight: bold;
|
||||
word-break: break-word;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
dl.field-list > dt:after {
|
||||
content: ":";
|
||||
}
|
||||
|
||||
dl.field-list > dd {
|
||||
padding-left: 0.5em;
|
||||
margin-top: 0em;
|
||||
margin-left: 0em;
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
dd > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
dd ul, dd table {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 10px;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
dl > dd:last-child,
|
||||
dl > dd:last-child > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt:target, span.highlighted {
|
||||
background-color: #fbe54e;
|
||||
}
|
||||
|
||||
rect.highlighted {
|
||||
fill: #fbe54e;
|
||||
}
|
||||
|
||||
dl.glossary dt {
|
||||
font-weight: bold;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.versionmodified {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.system-message {
|
||||
background-color: #fda;
|
||||
padding: 5px;
|
||||
border: 3px solid red;
|
||||
}
|
||||
|
||||
.footnote:target {
|
||||
background-color: #ffa;
|
||||
}
|
||||
|
||||
.line-block {
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.line-block .line-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
.guilabel, .menuselection {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.accelerator {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.classifier {
|
||||
font-style: oblique;
|
||||
}
|
||||
|
||||
.classifier:before {
|
||||
font-style: normal;
|
||||
margin: 0.5em;
|
||||
content: ":";
|
||||
}
|
||||
|
||||
abbr, acronym {
|
||||
border-bottom: dotted 1px;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
/* -- code displays --------------------------------------------------------- */
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
||||
}
|
||||
|
||||
pre, div[class*="highlight-"] {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
span.pre {
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
div[class*="highlight-"] {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
td.linenos pre {
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
table.highlighttable {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tbody {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tr {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
table.highlighttable td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos {
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
|
||||
table.highlighttable td.code {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.highlight .hll {
|
||||
display: block;
|
||||
}
|
||||
|
||||
div.highlight pre,
|
||||
table.highlighttable pre {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption + div {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption {
|
||||
margin-top: 1em;
|
||||
padding: 2px 5px;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
div.code-block-caption code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos,
|
||||
span.linenos,
|
||||
div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */
|
||||
user-select: none;
|
||||
-webkit-user-select: text; /* Safari fallback only */
|
||||
-webkit-user-select: none; /* Chrome/Safari */
|
||||
-moz-user-select: none; /* Firefox */
|
||||
-ms-user-select: none; /* IE10+ */
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-number {
|
||||
padding: 0.1em 0.3em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-text {
|
||||
}
|
||||
|
||||
div.literal-block-wrapper {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
code.xref, a code {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.viewcode-link {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.viewcode-back {
|
||||
float: right;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
div.viewcode-block:target {
|
||||
margin: -1px -10px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
/* -- math display ---------------------------------------------------------- */
|
||||
|
||||
img.math {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
div.body div.math p {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
span.eqno {
|
||||
float: right;
|
||||
}
|
||||
|
||||
span.eqno a.headerlink {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
div.math:hover a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/* -- printout stylesheet --------------------------------------------------- */
|
||||
|
||||
@media print {
|
||||
div.document,
|
||||
div.documentwrapper,
|
||||
div.bodywrapper {
|
||||
margin: 0 !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div.sphinxsidebar,
|
||||
div.related,
|
||||
div.footer,
|
||||
#top-link {
|
||||
display: none;
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
/* This file intentionally left blank. */
|
|
@ -0,0 +1,321 @@
|
|||
/*
|
||||
* doctools.js
|
||||
* ~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx JavaScript utilities for all documentation.
|
||||
*
|
||||
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* select a different prefix for underscore
|
||||
*/
|
||||
$u = _.noConflict();
|
||||
|
||||
/**
|
||||
* make the code below compatible with browsers without
|
||||
* an installed firebug like debugger
|
||||
if (!window.console || !console.firebug) {
|
||||
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
|
||||
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
|
||||
"profile", "profileEnd"];
|
||||
window.console = {};
|
||||
for (var i = 0; i < names.length; ++i)
|
||||
window.console[names[i]] = function() {};
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* small helper function to urldecode strings
|
||||
*
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
|
||||
*/
|
||||
jQuery.urldecode = function(x) {
|
||||
if (!x) {
|
||||
return x
|
||||
}
|
||||
return decodeURIComponent(x.replace(/\+/g, ' '));
|
||||
};
|
||||
|
||||
/**
|
||||
* small helper function to urlencode strings
|
||||
*/
|
||||
jQuery.urlencode = encodeURIComponent;
|
||||
|
||||
/**
|
||||
* This function returns the parsed url parameters of the
|
||||
* current request. Multiple values per key are supported,
|
||||
* it will always return arrays of strings for the value parts.
|
||||
*/
|
||||
jQuery.getQueryParameters = function(s) {
|
||||
if (typeof s === 'undefined')
|
||||
s = document.location.search;
|
||||
var parts = s.substr(s.indexOf('?') + 1).split('&');
|
||||
var result = {};
|
||||
for (var i = 0; i < parts.length; i++) {
|
||||
var tmp = parts[i].split('=', 2);
|
||||
var key = jQuery.urldecode(tmp[0]);
|
||||
var value = jQuery.urldecode(tmp[1]);
|
||||
if (key in result)
|
||||
result[key].push(value);
|
||||
else
|
||||
result[key] = [value];
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* highlight a given string on a jquery object by wrapping it in
|
||||
* span elements with the given class name.
|
||||
*/
|
||||
jQuery.fn.highlightText = function(text, className) {
|
||||
function highlight(node, addItems) {
|
||||
if (node.nodeType === 3) {
|
||||
var val = node.nodeValue;
|
||||
var pos = val.toLowerCase().indexOf(text);
|
||||
if (pos >= 0 &&
|
||||
!jQuery(node.parentNode).hasClass(className) &&
|
||||
!jQuery(node.parentNode).hasClass("nohighlight")) {
|
||||
var span;
|
||||
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
|
||||
if (isInSVG) {
|
||||
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
||||
} else {
|
||||
span = document.createElement("span");
|
||||
span.className = className;
|
||||
}
|
||||
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
||||
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
|
||||
document.createTextNode(val.substr(pos + text.length)),
|
||||
node.nextSibling));
|
||||
node.nodeValue = val.substr(0, pos);
|
||||
if (isInSVG) {
|
||||
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||
var bbox = node.parentElement.getBBox();
|
||||
rect.x.baseVal.value = bbox.x;
|
||||
rect.y.baseVal.value = bbox.y;
|
||||
rect.width.baseVal.value = bbox.width;
|
||||
rect.height.baseVal.value = bbox.height;
|
||||
rect.setAttribute('class', className);
|
||||
addItems.push({
|
||||
"parent": node.parentNode,
|
||||
"target": rect});
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!jQuery(node).is("button, select, textarea")) {
|
||||
jQuery.each(node.childNodes, function() {
|
||||
highlight(this, addItems);
|
||||
});
|
||||
}
|
||||
}
|
||||
var addItems = [];
|
||||
var result = this.each(function() {
|
||||
highlight(this, addItems);
|
||||
});
|
||||
for (var i = 0; i < addItems.length; ++i) {
|
||||
jQuery(addItems[i].parent).before(addItems[i].target);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/*
|
||||
* backward compatibility for jQuery.browser
|
||||
* This will be supported until firefox bug is fixed.
|
||||
*/
|
||||
if (!jQuery.browser) {
|
||||
jQuery.uaMatch = function(ua) {
|
||||
ua = ua.toLowerCase();
|
||||
|
||||
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(msie) ([\w.]+)/.exec(ua) ||
|
||||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
||||
[];
|
||||
|
||||
return {
|
||||
browser: match[ 1 ] || "",
|
||||
version: match[ 2 ] || "0"
|
||||
};
|
||||
};
|
||||
jQuery.browser = {};
|
||||
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Small JavaScript module for the documentation.
|
||||
*/
|
||||
var Documentation = {
|
||||
|
||||
init : function() {
|
||||
this.fixFirefoxAnchorBug();
|
||||
this.highlightSearchWords();
|
||||
this.initIndexTable();
|
||||
if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
|
||||
this.initOnKeyListeners();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* i18n support
|
||||
*/
|
||||
TRANSLATIONS : {},
|
||||
PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
|
||||
LOCALE : 'unknown',
|
||||
|
||||
// gettext and ngettext don't access this so that the functions
|
||||
// can safely bound to a different name (_ = Documentation.gettext)
|
||||
gettext : function(string) {
|
||||
var translated = Documentation.TRANSLATIONS[string];
|
||||
if (typeof translated === 'undefined')
|
||||
return string;
|
||||
return (typeof translated === 'string') ? translated : translated[0];
|
||||
},
|
||||
|
||||
ngettext : function(singular, plural, n) {
|
||||
var translated = Documentation.TRANSLATIONS[singular];
|
||||
if (typeof translated === 'undefined')
|
||||
return (n == 1) ? singular : plural;
|
||||
return translated[Documentation.PLURALEXPR(n)];
|
||||
},
|
||||
|
||||
addTranslations : function(catalog) {
|
||||
for (var key in catalog.messages)
|
||||
this.TRANSLATIONS[key] = catalog.messages[key];
|
||||
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
|
||||
this.LOCALE = catalog.locale;
|
||||
},
|
||||
|
||||
/**
|
||||
* add context elements like header anchor links
|
||||
*/
|
||||
addContextElements : function() {
|
||||
$('div[id] > :header:first').each(function() {
|
||||
$('<a class="headerlink">\u00B6</a>').
|
||||
attr('href', '#' + this.id).
|
||||
attr('title', _('Permalink to this headline')).
|
||||
appendTo(this);
|
||||
});
|
||||
$('dt[id]').each(function() {
|
||||
$('<a class="headerlink">\u00B6</a>').
|
||||
attr('href', '#' + this.id).
|
||||
attr('title', _('Permalink to this definition')).
|
||||
appendTo(this);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* workaround a firefox stupidity
|
||||
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
|
||||
*/
|
||||
fixFirefoxAnchorBug : function() {
|
||||
if (document.location.hash && $.browser.mozilla)
|
||||
window.setTimeout(function() {
|
||||
document.location.href += '';
|
||||
}, 10);
|
||||
},
|
||||
|
||||
/**
|
||||
* highlight the search words provided in the url in the text
|
||||
*/
|
||||
highlightSearchWords : function() {
|
||||
var params = $.getQueryParameters();
|
||||
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
|
||||
if (terms.length) {
|
||||
var body = $('div.body');
|
||||
if (!body.length) {
|
||||
body = $('body');
|
||||
}
|
||||
window.setTimeout(function() {
|
||||
$.each(terms, function() {
|
||||
body.highlightText(this.toLowerCase(), 'highlighted');
|
||||
});
|
||||
}, 10);
|
||||
$('<p class="highlight-link"><a href="javascript:Documentation.' +
|
||||
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
|
||||
.appendTo($('#searchbox'));
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* init the domain index toggle buttons
|
||||
*/
|
||||
initIndexTable : function() {
|
||||
var togglers = $('img.toggler').click(function() {
|
||||
var src = $(this).attr('src');
|
||||
var idnum = $(this).attr('id').substr(7);
|
||||
$('tr.cg-' + idnum).toggle();
|
||||
if (src.substr(-9) === 'minus.png')
|
||||
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
|
||||
else
|
||||
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
|
||||
}).css('display', '');
|
||||
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
|
||||
togglers.click();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to hide the search marks again
|
||||
*/
|
||||
hideSearchWords : function() {
|
||||
$('#searchbox .highlight-link').fadeOut(300);
|
||||
$('span.highlighted').removeClass('highlighted');
|
||||
},
|
||||
|
||||
/**
|
||||
* make the url absolute
|
||||
*/
|
||||
makeURL : function(relativeURL) {
|
||||
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
|
||||
},
|
||||
|
||||
/**
|
||||
* get the current relative url
|
||||
*/
|
||||
getCurrentURL : function() {
|
||||
var path = document.location.pathname;
|
||||
var parts = path.split(/\//);
|
||||
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
|
||||
if (this === '..')
|
||||
parts.pop();
|
||||
});
|
||||
var url = parts.join('/');
|
||||
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
|
||||
},
|
||||
|
||||
initOnKeyListeners: function() {
|
||||
$(document).keydown(function(event) {
|
||||
var activeElementType = document.activeElement.tagName;
|
||||
// don't navigate when in search box, textarea, dropdown or button
|
||||
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT'
|
||||
&& activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey
|
||||
&& !event.shiftKey) {
|
||||
switch (event.keyCode) {
|
||||
case 37: // left
|
||||
var prevHref = $('link[rel="prev"]').prop('href');
|
||||
if (prevHref) {
|
||||
window.location.href = prevHref;
|
||||
return false;
|
||||
}
|
||||
case 39: // right
|
||||
var nextHref = $('link[rel="next"]').prop('href');
|
||||
if (nextHref) {
|
||||
window.location.href = nextHref;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// quick alias for translations
|
||||
_ = Documentation.gettext;
|
||||
|
||||
$(document).ready(function() {
|
||||
Documentation.init();
|
||||
});
|
|
@ -0,0 +1,12 @@
|
|||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
|
||||
VERSION: '',
|
||||
LANGUAGE: 'en',
|
||||
COLLAPSE_INDEX: false,
|
||||
BUILDER: 'html',
|
||||
FILE_SUFFIX: '.html',
|
||||
LINK_SUFFIX: '.html',
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt',
|
||||
NAVIGATION_WITH_KEYS: false
|
||||
};
|
Binary file not shown.
After Width: | Height: | Size: 286 B |
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,297 @@
|
|||
/*
|
||||
* language_data.js
|
||||
* ~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* This script contains the language-specific data used by searchtools.js,
|
||||
* namely the list of stopwords, stemmer, scorer and splitter.
|
||||
*
|
||||
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
|
||||
|
||||
|
||||
/* Non-minified version is copied as a separate JS file, is available */
|
||||
|
||||
/**
|
||||
* Porter Stemmer
|
||||
*/
|
||||
var Stemmer = function() {
|
||||
|
||||
var step2list = {
|
||||
ational: 'ate',
|
||||
tional: 'tion',
|
||||
enci: 'ence',
|
||||
anci: 'ance',
|
||||
izer: 'ize',
|
||||
bli: 'ble',
|
||||
alli: 'al',
|
||||
entli: 'ent',
|
||||
eli: 'e',
|
||||
ousli: 'ous',
|
||||
ization: 'ize',
|
||||
ation: 'ate',
|
||||
ator: 'ate',
|
||||
alism: 'al',
|
||||
iveness: 'ive',
|
||||
fulness: 'ful',
|
||||
ousness: 'ous',
|
||||
aliti: 'al',
|
||||
iviti: 'ive',
|
||||
biliti: 'ble',
|
||||
logi: 'log'
|
||||
};
|
||||
|
||||
var step3list = {
|
||||
icate: 'ic',
|
||||
ative: '',
|
||||
alize: 'al',
|
||||
iciti: 'ic',
|
||||
ical: 'ic',
|
||||
ful: '',
|
||||
ness: ''
|
||||
};
|
||||
|
||||
var c = "[^aeiou]"; // consonant
|
||||
var v = "[aeiouy]"; // vowel
|
||||
var C = c + "[^aeiouy]*"; // consonant sequence
|
||||
var V = v + "[aeiou]*"; // vowel sequence
|
||||
|
||||
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
|
||||
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
|
||||
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
|
||||
var s_v = "^(" + C + ")?" + v; // vowel in stem
|
||||
|
||||
this.stemWord = function (w) {
|
||||
var stem;
|
||||
var suffix;
|
||||
var firstch;
|
||||
var origword = w;
|
||||
|
||||
if (w.length < 3)
|
||||
return w;
|
||||
|
||||
var re;
|
||||
var re2;
|
||||
var re3;
|
||||
var re4;
|
||||
|
||||
firstch = w.substr(0,1);
|
||||
if (firstch == "y")
|
||||
w = firstch.toUpperCase() + w.substr(1);
|
||||
|
||||
// Step 1a
|
||||
re = /^(.+?)(ss|i)es$/;
|
||||
re2 = /^(.+?)([^s])s$/;
|
||||
|
||||
if (re.test(w))
|
||||
w = w.replace(re,"$1$2");
|
||||
else if (re2.test(w))
|
||||
w = w.replace(re2,"$1$2");
|
||||
|
||||
// Step 1b
|
||||
re = /^(.+?)eed$/;
|
||||
re2 = /^(.+?)(ed|ing)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(fp[1])) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
}
|
||||
else if (re2.test(w)) {
|
||||
var fp = re2.exec(w);
|
||||
stem = fp[1];
|
||||
re2 = new RegExp(s_v);
|
||||
if (re2.test(stem)) {
|
||||
w = stem;
|
||||
re2 = /(at|bl|iz)$/;
|
||||
re3 = new RegExp("([^aeiouylsz])\\1$");
|
||||
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||
if (re2.test(w))
|
||||
w = w + "e";
|
||||
else if (re3.test(w)) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
else if (re4.test(w))
|
||||
w = w + "e";
|
||||
}
|
||||
}
|
||||
|
||||
// Step 1c
|
||||
re = /^(.+?)y$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(s_v);
|
||||
if (re.test(stem))
|
||||
w = stem + "i";
|
||||
}
|
||||
|
||||
// Step 2
|
||||
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
suffix = fp[2];
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(stem))
|
||||
w = stem + step2list[suffix];
|
||||
}
|
||||
|
||||
// Step 3
|
||||
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
suffix = fp[2];
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(stem))
|
||||
w = stem + step3list[suffix];
|
||||
}
|
||||
|
||||
// Step 4
|
||||
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
|
||||
re2 = /^(.+?)(s|t)(ion)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(mgr1);
|
||||
if (re.test(stem))
|
||||
w = stem;
|
||||
}
|
||||
else if (re2.test(w)) {
|
||||
var fp = re2.exec(w);
|
||||
stem = fp[1] + fp[2];
|
||||
re2 = new RegExp(mgr1);
|
||||
if (re2.test(stem))
|
||||
w = stem;
|
||||
}
|
||||
|
||||
// Step 5
|
||||
re = /^(.+?)e$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(mgr1);
|
||||
re2 = new RegExp(meq1);
|
||||
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
|
||||
w = stem;
|
||||
}
|
||||
re = /ll$/;
|
||||
re2 = new RegExp(mgr1);
|
||||
if (re.test(w) && re2.test(w)) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
|
||||
// and turn initial Y back to y
|
||||
if (firstch == "y")
|
||||
w = firstch.toLowerCase() + w.substr(1);
|
||||
return w;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var splitChars = (function() {
|
||||
var result = {};
|
||||
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
|
||||
1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
|
||||
2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
|
||||
2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
|
||||
3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
|
||||
3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
|
||||
4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
|
||||
8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
|
||||
11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
|
||||
43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
|
||||
var i, j, start, end;
|
||||
for (i = 0; i < singles.length; i++) {
|
||||
result[singles[i]] = true;
|
||||
}
|
||||
var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
|
||||
[722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
|
||||
[1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
|
||||
[1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
|
||||
[1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
|
||||
[2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
|
||||
[2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
|
||||
[2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
|
||||
[2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
|
||||
[2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
|
||||
[2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
|
||||
[2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
|
||||
[3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
|
||||
[3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
|
||||
[3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
|
||||
[3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
|
||||
[3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
|
||||
[3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
|
||||
[4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
|
||||
[4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
|
||||
[4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
|
||||
[4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
|
||||
[5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
|
||||
[6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
|
||||
[6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
|
||||
[6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
|
||||
[6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
|
||||
[7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
|
||||
[7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
|
||||
[8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
|
||||
[8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
|
||||
[8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
|
||||
[10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
|
||||
[11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
|
||||
[12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
|
||||
[12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
|
||||
[12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
|
||||
[19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
|
||||
[42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
|
||||
[42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
|
||||
[43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
|
||||
[43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
|
||||
[43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
|
||||
[43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
|
||||
[44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
|
||||
[57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
|
||||
[64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
|
||||
[65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
|
||||
[65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
|
||||
for (i = 0; i < ranges.length; i++) {
|
||||
start = ranges[i][0];
|
||||
end = ranges[i][1];
|
||||
for (j = start; j <= end; j++) {
|
||||
result[j] = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
})();
|
||||
|
||||
function splitQuery(query) {
|
||||
var result = [];
|
||||
var start = -1;
|
||||
for (var i = 0; i < query.length; i++) {
|
||||
if (splitChars[query.charCodeAt(i)]) {
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start, i));
|
||||
start = -1;
|
||||
}
|
||||
} else if (start === -1) {
|
||||
start = i;
|
||||
}
|
||||
}
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 90 B |
Binary file not shown.
After Width: | Height: | Size: 90 B |
|
@ -0,0 +1,82 @@
|
|||
pre { line-height: 125%; }
|
||||
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||||
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||||
.highlight .hll { background-color: #ffffcc }
|
||||
.highlight { background: #f8f8f8; }
|
||||
.highlight .c { color: #8f5902; font-style: italic } /* Comment */
|
||||
.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */
|
||||
.highlight .g { color: #000000 } /* Generic */
|
||||
.highlight .k { color: #004461; font-weight: bold } /* Keyword */
|
||||
.highlight .l { color: #000000 } /* Literal */
|
||||
.highlight .n { color: #000000 } /* Name */
|
||||
.highlight .o { color: #582800 } /* Operator */
|
||||
.highlight .x { color: #000000 } /* Other */
|
||||
.highlight .p { color: #000000; font-weight: bold } /* Punctuation */
|
||||
.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */
|
||||
.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #8f5902 } /* Comment.Preproc */
|
||||
.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */
|
||||
.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { color: #a40000 } /* Generic.Deleted */
|
||||
.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #ef2929 } /* Generic.Error */
|
||||
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||
.highlight .gi { color: #00A000 } /* Generic.Inserted */
|
||||
.highlight .go { color: #888888 } /* Generic.Output */
|
||||
.highlight .gp { color: #745334 } /* Generic.Prompt */
|
||||
.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||
.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */
|
||||
.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */
|
||||
.highlight .ld { color: #000000 } /* Literal.Date */
|
||||
.highlight .m { color: #990000 } /* Literal.Number */
|
||||
.highlight .s { color: #4e9a06 } /* Literal.String */
|
||||
.highlight .na { color: #c4a000 } /* Name.Attribute */
|
||||
.highlight .nb { color: #004461 } /* Name.Builtin */
|
||||
.highlight .nc { color: #000000 } /* Name.Class */
|
||||
.highlight .no { color: #000000 } /* Name.Constant */
|
||||
.highlight .nd { color: #888888 } /* Name.Decorator */
|
||||
.highlight .ni { color: #ce5c00 } /* Name.Entity */
|
||||
.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #000000 } /* Name.Function */
|
||||
.highlight .nl { color: #f57900 } /* Name.Label */
|
||||
.highlight .nn { color: #000000 } /* Name.Namespace */
|
||||
.highlight .nx { color: #000000 } /* Name.Other */
|
||||
.highlight .py { color: #000000 } /* Name.Property */
|
||||
.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */
|
||||
.highlight .nv { color: #000000 } /* Name.Variable */
|
||||
.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */
|
||||
.highlight .mb { color: #990000 } /* Literal.Number.Bin */
|
||||
.highlight .mf { color: #990000 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #990000 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #990000 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #990000 } /* Literal.Number.Oct */
|
||||
.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */
|
||||
.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #4e9a06 } /* Literal.String.Char */
|
||||
.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */
|
||||
.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */
|
||||
.highlight .se { color: #4e9a06 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #4e9a06 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */
|
||||
.highlight .fm { color: #000000 } /* Name.Function.Magic */
|
||||
.highlight .vc { color: #000000 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #000000 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #000000 } /* Name.Variable.Instance */
|
||||
.highlight .vm { color: #000000 } /* Name.Variable.Magic */
|
||||
.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */
|
|
@ -0,0 +1,522 @@
|
|||
/*
|
||||
* searchtools.js
|
||||
* ~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx JavaScript utilities for the full-text search.
|
||||
*
|
||||
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
if (!Scorer) {
|
||||
/**
|
||||
* Simple result scoring code.
|
||||
*/
|
||||
var Scorer = {
|
||||
// Implement the following function to further tweak the score for each result
|
||||
// The function takes a result array [filename, title, anchor, descr, score]
|
||||
// and returns the new score.
|
||||
/*
|
||||
score: function(result) {
|
||||
return result[4];
|
||||
},
|
||||
*/
|
||||
|
||||
// query matches the full name of an object
|
||||
objNameMatch: 11,
|
||||
// or matches in the last dotted part of the object name
|
||||
objPartialMatch: 6,
|
||||
// Additive scores depending on the priority of the object
|
||||
objPrio: {0: 15, // used to be importantResults
|
||||
1: 5, // used to be objectResults
|
||||
2: -5}, // used to be unimportantResults
|
||||
// Used when the priority is not in the mapping.
|
||||
objPrioDefault: 0,
|
||||
|
||||
// query found in title
|
||||
title: 15,
|
||||
partialTitle: 7,
|
||||
// query found in terms
|
||||
term: 5,
|
||||
partialTerm: 2
|
||||
};
|
||||
}
|
||||
|
||||
if (!splitQuery) {
|
||||
function splitQuery(query) {
|
||||
return query.split(/\s+/);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Search Module
|
||||
*/
|
||||
var Search = {
|
||||
|
||||
_index : null,
|
||||
_queued_query : null,
|
||||
_pulse_status : -1,
|
||||
|
||||
htmlToText : function(htmlString) {
|
||||
var virtualDocument = document.implementation.createHTMLDocument('virtual');
|
||||
var htmlElement = $(htmlString, virtualDocument);
|
||||
htmlElement.find('.headerlink').remove();
|
||||
docContent = htmlElement.find('[role=main]')[0];
|
||||
if(docContent === undefined) {
|
||||
console.warn("Content block not found. Sphinx search tries to obtain it " +
|
||||
"via '[role=main]'. Could you check your theme or template.");
|
||||
return "";
|
||||
}
|
||||
return docContent.textContent || docContent.innerText;
|
||||
},
|
||||
|
||||
init : function() {
|
||||
var params = $.getQueryParameters();
|
||||
if (params.q) {
|
||||
var query = params.q[0];
|
||||
$('input[name="q"]')[0].value = query;
|
||||
this.performSearch(query);
|
||||
}
|
||||
},
|
||||
|
||||
loadIndex : function(url) {
|
||||
$.ajax({type: "GET", url: url, data: null,
|
||||
dataType: "script", cache: true,
|
||||
complete: function(jqxhr, textstatus) {
|
||||
if (textstatus != "success") {
|
||||
document.getElementById("searchindexloader").src = url;
|
||||
}
|
||||
}});
|
||||
},
|
||||
|
||||
setIndex : function(index) {
|
||||
var q;
|
||||
this._index = index;
|
||||
if ((q = this._queued_query) !== null) {
|
||||
this._queued_query = null;
|
||||
Search.query(q);
|
||||
}
|
||||
},
|
||||
|
||||
hasIndex : function() {
|
||||
return this._index !== null;
|
||||
},
|
||||
|
||||
deferQuery : function(query) {
|
||||
this._queued_query = query;
|
||||
},
|
||||
|
||||
stopPulse : function() {
|
||||
this._pulse_status = 0;
|
||||
},
|
||||
|
||||
startPulse : function() {
|
||||
if (this._pulse_status >= 0)
|
||||
return;
|
||||
function pulse() {
|
||||
var i;
|
||||
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
||||
var dotString = '';
|
||||
for (i = 0; i < Search._pulse_status; i++)
|
||||
dotString += '.';
|
||||
Search.dots.text(dotString);
|
||||
if (Search._pulse_status > -1)
|
||||
window.setTimeout(pulse, 500);
|
||||
}
|
||||
pulse();
|
||||
},
|
||||
|
||||
/**
|
||||
* perform a search for something (or wait until index is loaded)
|
||||
*/
|
||||
performSearch : function(query) {
|
||||
// create the required interface elements
|
||||
this.out = $('#search-results');
|
||||
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
|
||||
this.dots = $('<span></span>').appendTo(this.title);
|
||||
this.status = $('<p class="search-summary"> </p>').appendTo(this.out);
|
||||
this.output = $('<ul class="search"/>').appendTo(this.out);
|
||||
|
||||
$('#search-progress').text(_('Preparing search...'));
|
||||
this.startPulse();
|
||||
|
||||
// index already loaded, the browser was quick!
|
||||
if (this.hasIndex())
|
||||
this.query(query);
|
||||
else
|
||||
this.deferQuery(query);
|
||||
},
|
||||
|
||||
/**
|
||||
* execute search (requires search index to be loaded)
|
||||
*/
|
||||
query : function(query) {
|
||||
var i;
|
||||
|
||||
// stem the searchterms and add them to the correct list
|
||||
var stemmer = new Stemmer();
|
||||
var searchterms = [];
|
||||
var excluded = [];
|
||||
var hlterms = [];
|
||||
var tmp = splitQuery(query);
|
||||
var objectterms = [];
|
||||
for (i = 0; i < tmp.length; i++) {
|
||||
if (tmp[i] !== "") {
|
||||
objectterms.push(tmp[i].toLowerCase());
|
||||
}
|
||||
|
||||
if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i] === "") {
|
||||
// skip this "word"
|
||||
continue;
|
||||
}
|
||||
// stem the word
|
||||
var word = stemmer.stemWord(tmp[i].toLowerCase());
|
||||
// prevent stemmer from cutting word smaller than two chars
|
||||
if(word.length < 3 && tmp[i].length >= 3) {
|
||||
word = tmp[i];
|
||||
}
|
||||
var toAppend;
|
||||
// select the correct list
|
||||
if (word[0] == '-') {
|
||||
toAppend = excluded;
|
||||
word = word.substr(1);
|
||||
}
|
||||
else {
|
||||
toAppend = searchterms;
|
||||
hlterms.push(tmp[i].toLowerCase());
|
||||
}
|
||||
// only add if not already in the list
|
||||
if (!$u.contains(toAppend, word))
|
||||
toAppend.push(word);
|
||||
}
|
||||
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
||||
|
||||
// console.debug('SEARCH: searching for:');
|
||||
// console.info('required: ', searchterms);
|
||||
// console.info('excluded: ', excluded);
|
||||
|
||||
// prepare search
|
||||
var terms = this._index.terms;
|
||||
var titleterms = this._index.titleterms;
|
||||
|
||||
// array of [filename, title, anchor, descr, score]
|
||||
var results = [];
|
||||
$('#search-progress').empty();
|
||||
|
||||
// lookup as object
|
||||
for (i = 0; i < objectterms.length; i++) {
|
||||
var others = [].concat(objectterms.slice(0, i),
|
||||
objectterms.slice(i+1, objectterms.length));
|
||||
results = results.concat(this.performObjectSearch(objectterms[i], others));
|
||||
}
|
||||
|
||||
// lookup as search terms in fulltext
|
||||
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
|
||||
|
||||
// let the scorer override scores with a custom scoring function
|
||||
if (Scorer.score) {
|
||||
for (i = 0; i < results.length; i++)
|
||||
results[i][4] = Scorer.score(results[i]);
|
||||
}
|
||||
|
||||
// now sort the results by score (in opposite order of appearance, since the
|
||||
// display function below uses pop() to retrieve items) and then
|
||||
// alphabetically
|
||||
results.sort(function(a, b) {
|
||||
var left = a[4];
|
||||
var right = b[4];
|
||||
if (left > right) {
|
||||
return 1;
|
||||
} else if (left < right) {
|
||||
return -1;
|
||||
} else {
|
||||
// same score: sort alphabetically
|
||||
left = a[1].toLowerCase();
|
||||
right = b[1].toLowerCase();
|
||||
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
||||
}
|
||||
});
|
||||
|
||||
// for debugging
|
||||
//Search.lastresults = results.slice(); // a copy
|
||||
//console.info('search results:', Search.lastresults);
|
||||
|
||||
// print the results
|
||||
var resultCount = results.length;
|
||||
function displayNextItem() {
|
||||
// results left, load the summary and display it
|
||||
if (results.length) {
|
||||
var item = results.pop();
|
||||
var listItem = $('<li></li>');
|
||||
var requestUrl = "";
|
||||
var linkUrl = "";
|
||||
if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') {
|
||||
// dirhtml builder
|
||||
var dirname = item[0] + '/';
|
||||
if (dirname.match(/\/index\/$/)) {
|
||||
dirname = dirname.substring(0, dirname.length-6);
|
||||
} else if (dirname == 'index/') {
|
||||
dirname = '';
|
||||
}
|
||||
requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + dirname;
|
||||
linkUrl = requestUrl;
|
||||
|
||||
} else {
|
||||
// normal html builders
|
||||
requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX;
|
||||
linkUrl = item[0] + DOCUMENTATION_OPTIONS.LINK_SUFFIX;
|
||||
}
|
||||
listItem.append($('<a/>').attr('href',
|
||||
linkUrl +
|
||||
highlightstring + item[2]).html(item[1]));
|
||||
if (item[3]) {
|
||||
listItem.append($('<span> (' + item[3] + ')</span>'));
|
||||
Search.output.append(listItem);
|
||||
setTimeout(function() {
|
||||
displayNextItem();
|
||||
}, 5);
|
||||
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
||||
$.ajax({url: requestUrl,
|
||||
dataType: "text",
|
||||
complete: function(jqxhr, textstatus) {
|
||||
var data = jqxhr.responseText;
|
||||
if (data !== '' && data !== undefined) {
|
||||
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
|
||||
}
|
||||
Search.output.append(listItem);
|
||||
setTimeout(function() {
|
||||
displayNextItem();
|
||||
}, 5);
|
||||
}});
|
||||
} else {
|
||||
// no source available, just display title
|
||||
Search.output.append(listItem);
|
||||
setTimeout(function() {
|
||||
displayNextItem();
|
||||
}, 5);
|
||||
}
|
||||
}
|
||||
// search finished, update title and status message
|
||||
else {
|
||||
Search.stopPulse();
|
||||
Search.title.text(_('Search Results'));
|
||||
if (!resultCount)
|
||||
Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
|
||||
else
|
||||
Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
|
||||
Search.status.fadeIn(500);
|
||||
}
|
||||
}
|
||||
displayNextItem();
|
||||
},
|
||||
|
||||
/**
|
||||
* search for object names
|
||||
*/
|
||||
performObjectSearch : function(object, otherterms) {
|
||||
var filenames = this._index.filenames;
|
||||
var docnames = this._index.docnames;
|
||||
var objects = this._index.objects;
|
||||
var objnames = this._index.objnames;
|
||||
var titles = this._index.titles;
|
||||
|
||||
var i;
|
||||
var results = [];
|
||||
|
||||
for (var prefix in objects) {
|
||||
for (var name in objects[prefix]) {
|
||||
var fullname = (prefix ? prefix + '.' : '') + name;
|
||||
var fullnameLower = fullname.toLowerCase()
|
||||
if (fullnameLower.indexOf(object) > -1) {
|
||||
var score = 0;
|
||||
var parts = fullnameLower.split('.');
|
||||
// check for different match types: exact matches of full name or
|
||||
// "last name" (i.e. last dotted part)
|
||||
if (fullnameLower == object || parts[parts.length - 1] == object) {
|
||||
score += Scorer.objNameMatch;
|
||||
// matches in last name
|
||||
} else if (parts[parts.length - 1].indexOf(object) > -1) {
|
||||
score += Scorer.objPartialMatch;
|
||||
}
|
||||
var match = objects[prefix][name];
|
||||
var objname = objnames[match[1]][2];
|
||||
var title = titles[match[0]];
|
||||
// If more than one term searched for, we require other words to be
|
||||
// found in the name/title/description
|
||||
if (otherterms.length > 0) {
|
||||
var haystack = (prefix + ' ' + name + ' ' +
|
||||
objname + ' ' + title).toLowerCase();
|
||||
var allfound = true;
|
||||
for (i = 0; i < otherterms.length; i++) {
|
||||
if (haystack.indexOf(otherterms[i]) == -1) {
|
||||
allfound = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!allfound) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
var descr = objname + _(', in ') + title;
|
||||
|
||||
var anchor = match[3];
|
||||
if (anchor === '')
|
||||
anchor = fullname;
|
||||
else if (anchor == '-')
|
||||
anchor = objnames[match[1]][1] + '-' + fullname;
|
||||
// add custom score for some objects according to scorer
|
||||
if (Scorer.objPrio.hasOwnProperty(match[2])) {
|
||||
score += Scorer.objPrio[match[2]];
|
||||
} else {
|
||||
score += Scorer.objPrioDefault;
|
||||
}
|
||||
results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
},
|
||||
|
||||
/**
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
|
||||
*/
|
||||
escapeRegExp : function(string) {
|
||||
return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
||||
},
|
||||
|
||||
/**
|
||||
* search for full-text terms in the index
|
||||
*/
|
||||
performTermsSearch : function(searchterms, excluded, terms, titleterms) {
|
||||
var docnames = this._index.docnames;
|
||||
var filenames = this._index.filenames;
|
||||
var titles = this._index.titles;
|
||||
|
||||
var i, j, file;
|
||||
var fileMap = {};
|
||||
var scoreMap = {};
|
||||
var results = [];
|
||||
|
||||
// perform the search on the required terms
|
||||
for (i = 0; i < searchterms.length; i++) {
|
||||
var word = searchterms[i];
|
||||
var files = [];
|
||||
var _o = [
|
||||
{files: terms[word], score: Scorer.term},
|
||||
{files: titleterms[word], score: Scorer.title}
|
||||
];
|
||||
// add support for partial matches
|
||||
if (word.length > 2) {
|
||||
var word_regex = this.escapeRegExp(word);
|
||||
for (var w in terms) {
|
||||
if (w.match(word_regex) && !terms[word]) {
|
||||
_o.push({files: terms[w], score: Scorer.partialTerm})
|
||||
}
|
||||
}
|
||||
for (var w in titleterms) {
|
||||
if (w.match(word_regex) && !titleterms[word]) {
|
||||
_o.push({files: titleterms[w], score: Scorer.partialTitle})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// no match but word was a required one
|
||||
if ($u.every(_o, function(o){return o.files === undefined;})) {
|
||||
break;
|
||||
}
|
||||
// found search word in contents
|
||||
$u.each(_o, function(o) {
|
||||
var _files = o.files;
|
||||
if (_files === undefined)
|
||||
return
|
||||
|
||||
if (_files.length === undefined)
|
||||
_files = [_files];
|
||||
files = files.concat(_files);
|
||||
|
||||
// set score for the word in each file to Scorer.term
|
||||
for (j = 0; j < _files.length; j++) {
|
||||
file = _files[j];
|
||||
if (!(file in scoreMap))
|
||||
scoreMap[file] = {};
|
||||
scoreMap[file][word] = o.score;
|
||||
}
|
||||
});
|
||||
|
||||
// create the mapping
|
||||
for (j = 0; j < files.length; j++) {
|
||||
file = files[j];
|
||||
if (file in fileMap && fileMap[file].indexOf(word) === -1)
|
||||
fileMap[file].push(word);
|
||||
else
|
||||
fileMap[file] = [word];
|
||||
}
|
||||
}
|
||||
|
||||
// now check if the files don't contain excluded terms
|
||||
for (file in fileMap) {
|
||||
var valid = true;
|
||||
|
||||
// check if all requirements are matched
|
||||
var filteredTermCount = // as search terms with length < 3 are discarded: ignore
|
||||
searchterms.filter(function(term){return term.length > 2}).length
|
||||
if (
|
||||
fileMap[file].length != searchterms.length &&
|
||||
fileMap[file].length != filteredTermCount
|
||||
) continue;
|
||||
|
||||
// ensure that none of the excluded terms is in the search result
|
||||
for (i = 0; i < excluded.length; i++) {
|
||||
if (terms[excluded[i]] == file ||
|
||||
titleterms[excluded[i]] == file ||
|
||||
$u.contains(terms[excluded[i]] || [], file) ||
|
||||
$u.contains(titleterms[excluded[i]] || [], file)) {
|
||||
valid = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// if we have still a valid result we can add it to the result list
|
||||
if (valid) {
|
||||
// select one (max) score for the file.
|
||||
// for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
|
||||
var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
|
||||
results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to return a node containing the
|
||||
* search summary for a given text. keywords is a list
|
||||
* of stemmed words, hlwords is the list of normal, unstemmed
|
||||
* words. the first one is used to find the occurrence, the
|
||||
* latter for highlighting it.
|
||||
*/
|
||||
makeSearchSummary : function(htmlText, keywords, hlwords) {
|
||||
var text = Search.htmlToText(htmlText);
|
||||
var textLower = text.toLowerCase();
|
||||
var start = 0;
|
||||
$.each(keywords, function() {
|
||||
var i = textLower.indexOf(this.toLowerCase());
|
||||
if (i > -1)
|
||||
start = i;
|
||||
});
|
||||
start = Math.max(start - 120, 0);
|
||||
var excerpt = ((start > 0) ? '...' : '') +
|
||||
$.trim(text.substr(start, 240)) +
|
||||
((start + 240 - text.length) ? '...' : '');
|
||||
var rv = $('<p class="context"></p>').text(excerpt);
|
||||
$.each(hlwords, function() {
|
||||
rv = rv.highlightText(this, 'highlighted');
|
||||
});
|
||||
return rv;
|
||||
}
|
||||
};
|
||||
|
||||
$(document).ready(function() {
|
||||
Search.init();
|
||||
});
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,108 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Index — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/alabaster.css" />
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="#" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
|
||||
<h1 id="index">Index</h1>
|
||||
|
||||
<div class="genindex-jumpbox">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/config.html">Configuration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/easymacro.html">Library easymacro.py</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,158 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Welcome to ZAZ’s documentation! — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/alabaster.css" />
|
||||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||||
<script src="_static/jquery.js"></script>
|
||||
<script src="_static/underscore.js"></script>
|
||||
<script src="_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="Introduction" href="main/intro.html" />
|
||||
|
||||
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="welcome-to-zaz-s-documentation">
|
||||
<h1>Welcome to ZAZ’s documentation!<a class="headerlink" href="#welcome-to-zaz-s-documentation" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/intro.html">Introduction</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/intro.html#overview">Overview</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/intro.html#requirements">Requirements</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/intro.html#installation">Installation</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/intro.html#my-first-extension">My first extension</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/config.html">Configuration</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/config.html#parameters">Parameters</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/easymacro.html">Library easymacro.py</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/application.html">Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/examples.html">Examples</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/examples_app.html">For Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/examples_calc.html">For Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/examples_writer.html">For Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/examples_draw.html">For Draw</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/examples_base.html">For Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/apendixes.html">Apendixes</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="main/apendixes.html#get-all-filters-in-calc-sheet">Get all filters in Calc sheet</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
<section id="indices-and-tables">
|
||||
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
|
||||
<ul class="simple">
|
||||
<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
|
||||
<li><p><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></p></li>
|
||||
<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></p></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="#">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/config.html">Configuration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/easymacro.html">Library easymacro.py</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="main/apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="#">Documentation overview</a><ul>
|
||||
<li>Next: <a href="main/intro.html" title="next chapter">Introduction</a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="_sources/index.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,152 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Apendixes — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="prev" title="For Base" href="examples_base.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="apendixes">
|
||||
<h1>Apendixes<a class="headerlink" href="#apendixes" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Remember, always import library.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<section id="get-all-filters-in-calc-sheet">
|
||||
<h2>Get all filters in Calc sheet<a class="headerlink" href="#get-all-filters-in-calc-sheet" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Fields in filter</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="s1">'Finalized'</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<span class="s1">'UIName'</span><span class="p">:</span> <span class="s1">'EPS - Encapsulated PostScript'</span><span class="p">,</span>
|
||||
<span class="s1">'UserData'</span><span class="p">:</span> <span class="o"><</span><span class="n">ByteSequence</span> <span class="n">instance</span> <span class="s1">'b'''</span><span class="o">></span><span class="p">,</span>
|
||||
<span class="s1">'TemplateName'</span><span class="p">:</span> <span class="s1">''</span><span class="p">,</span>
|
||||
<span class="s1">'Enabled'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<span class="s1">'Mandatory'</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<span class="s1">'Name'</span><span class="p">:</span> <span class="s1">'impress_eps_Export'</span><span class="p">,</span>
|
||||
<span class="s1">'FilterService'</span><span class="p">:</span> <span class="s1">''</span><span class="p">,</span>
|
||||
<span class="s1">'Type'</span><span class="p">:</span> <span class="s1">'eps_Encapsulated_PostScript'</span><span class="p">,</span>
|
||||
<span class="s1">'UIComponent'</span><span class="p">:</span> <span class="s1">'com.sun.star.svtools.SvFilterOptionsDialog'</span><span class="p">,</span>
|
||||
<span class="s1">'Flags'</span><span class="p">:</span> <span class="mi">1090</span><span class="p">,</span>
|
||||
<span class="s1">'FileFormatVersion'</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||||
<span class="s1">'DocumentService'</span><span class="p">:</span> <span class="s1">'com.sun.star.presentation.PresentationDocument'</span><span class="p">,</span>
|
||||
<span class="s1">'UINames'</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s1">'en-US'</span><span class="p">:</span> <span class="s1">'EPS - Encapsulated PostScript'</span><span class="p">,</span>
|
||||
<span class="s1">'es'</span><span class="p">:</span> <span class="s1">'EPS - PostScript encapsulado'</span><span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">filters</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_filters</span><span class="p">()</span>
|
||||
<span class="n">headers</span> <span class="o">=</span> <span class="p">((</span><span class="s1">'DocumentService'</span><span class="p">,</span> <span class="s1">'UIName'</span><span class="p">,</span> <span class="s1">'Name'</span><span class="p">,</span> <span class="s1">'Type'</span><span class="p">),)</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">[(</span><span class="n">f</span><span class="p">[</span><span class="s1">'DocumentService'</span><span class="p">],</span> <span class="n">f</span><span class="p">[</span><span class="s1">'UIName'</span><span class="p">],</span> <span class="n">f</span><span class="p">[</span><span class="s1">'Name'</span><span class="p">],</span> <span class="n">f</span><span class="p">[</span><span class="s1">'Type'</span><span class="p">])</span>
|
||||
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">filters</span><span class="p">]</span>
|
||||
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
|
||||
<span class="n">doc</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'A1'</span><span class="p">]</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">headers</span>
|
||||
<span class="n">doc</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">'A2'</span><span class="p">]</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">data</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="easymacro.html">Library easymacro.py</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Apendixes</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#get-all-filters-in-calc-sheet">Get all filters in Calc sheet</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li>Previous: <a href="examples_base.html" title="previous chapter">For Base</a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/apendixes.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,560 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Application — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Calc" href="calc.html" />
|
||||
<link rel="prev" title="Email" href="email.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="application">
|
||||
<h1>Application<a class="headerlink" href="#application" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Remember, always import library.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<section id="create-instances">
|
||||
<h2>Create instances<a class="headerlink" href="#create-instances" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Instances without context</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">toolkit</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">create_instance</span><span class="p">(</span><span class="s2">"com.sun.star.awt.Toolkit"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Instances with context</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">service</span> <span class="o">=</span> <span class="s1">'com.sun.star.awt.DialogProvider2'</span>
|
||||
<span class="n">dialog</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">create_instance</span><span class="p">(</span><span class="n">service</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get desktop</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">desktop1</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">create_instance</span><span class="p">(</span><span class="s1">'com.sun.star.frame.Desktop'</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="c1"># ~ or</span>
|
||||
<span class="n">desktop2</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_desktop</span><span class="p">()</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">desktop1</span> <span class="o">==</span> <span class="n">desktop2</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="current-doc">
|
||||
<h2>Current doc<a class="headerlink" href="#current-doc" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="iter-docs">
|
||||
<h2>Iter docs<a class="headerlink" href="#iter-docs" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">doc</span> <span class="ow">in</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="p">:</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="count">
|
||||
<h2>Count<a class="headerlink" href="#count" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">count</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-by-name">
|
||||
<h2>Get by name<a class="headerlink" href="#get-by-name" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">name</span> <span class="o">=</span> <span class="s1">'MyDoc.ods'</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="p">:</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="if-contain">
|
||||
<h2>If contain<a class="headerlink" href="#if-contain" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">result</span> <span class="o">=</span> <span class="s1">'myfile.ods'</span> <span class="ow">in</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="new">
|
||||
<h2>New<a class="headerlink" href="#new" title="Permalink to this headline">¶</a></h2>
|
||||
<p>For default create new Calc document.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>For new Writer document.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'writer'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>With arguments.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">args</span><span class="o">=</span> <span class="p">{</span><span class="s1">'Hidden'</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'writer'</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="n">doc</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="s1"> - </span><span class="si">{</span><span class="n">doc</span><span class="o">.</span><span class="n">title</span><span class="si">}</span><span class="s1">'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">visible</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Other documents.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'draw'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'impress'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="open">
|
||||
<h2>Open<a class="headerlink" href="#open" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/MyDoc.ods'</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>While LibreOffice support format, you can open arbitrary file.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/example.xlsx'</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>With arguments.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/example.odt'</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'Password'</span><span class="p">:</span> <span class="s1">'letmein'</span><span class="p">}</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="save">
|
||||
<h2>Save<a class="headerlink" href="#save" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.ods'</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>If previously open and modify any file.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Open exists file and save with other name.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.ods'</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">new_path</span> <span class="o">=</span> <span class="s1">'/srv/mau/other_name.ods'</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">new_path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="close">
|
||||
<h2>Close<a class="headerlink" href="#close" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="to-pdf">
|
||||
<h2>To PDF<a class="headerlink" href="#to-pdf" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Save in path</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/test.pdf'</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">to_pdf</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Save in memory</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">pdf</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">to_pdf</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="export">
|
||||
<h2>Export<a class="headerlink" href="#export" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Export common formats</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.xlsx'</span>
|
||||
<span class="n">filter_name</span> <span class="o">=</span> <span class="s1">'xlsx'</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">filter_name</span><span class="p">)</span>
|
||||
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.xls'</span>
|
||||
<span class="n">filter_name</span> <span class="o">=</span> <span class="s1">'xls'</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">filter_name</span><span class="p">)</span>
|
||||
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'writer'</span><span class="p">)</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.docx'</span>
|
||||
<span class="n">filter_name</span> <span class="o">=</span> <span class="s1">'docx'</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">filter_name</span><span class="p">)</span>
|
||||
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.doc'</span>
|
||||
<span class="n">filter_name</span> <span class="o">=</span> <span class="s1">'doc'</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">filter_name</span><span class="p">)</span>
|
||||
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.rtf'</span>
|
||||
<span class="n">filter_name</span> <span class="o">=</span> <span class="s1">'rtf'</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">filter_name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>For all support formats look <a class="reference external" href="apendixes.html">Apendix</a></p></li>
|
||||
<li><p>Export in memory.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
|
||||
<span class="n">filter_name</span> <span class="o">=</span> <span class="s1">'xlsx'</span>
|
||||
<span class="n">excel_doc</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">filter_name</span><span class="o">=</span><span class="n">filter_name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="fonst">
|
||||
<h2>Fonst<a class="headerlink" href="#fonst" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Get all fonts</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">fonts</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_fonts</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">fonts</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Name: </span><span class="si">{</span><span class="n">f</span><span class="o">.</span><span class="n">Name</span><span class="si">}</span><span class="s1"> - StyleName: </span><span class="si">{</span><span class="n">f</span><span class="o">.</span><span class="n">StyleName</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="filters">
|
||||
<h2>Filters<a class="headerlink" href="#filters" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Get all <a class="reference external" href="https://help.libreoffice.org/latest/en-US/text/shared/guide/convertfilters.html">support filters</a></p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">filters</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_filters</span><span class="p">()</span>
|
||||
<span class="n">ds</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">filters</span><span class="p">:</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UI Name: </span><span class="si">{</span><span class="n">f</span><span class="p">[</span><span class="s1">'UIName'</span><span class="p">]</span><span class="si">}</span><span class="s2"> - Name: </span><span class="si">{</span><span class="n">f</span><span class="p">[</span><span class="s1">'Name'</span><span class="p">]</span><span class="si">}</span><span class="s2"> - Type: </span><span class="si">{</span><span class="n">f</span><span class="p">[</span><span class="s1">'Type'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="call-dispatch">
|
||||
<h2>Call dispatch<a class="headerlink" href="#call-dispatch" title="Permalink to this headline">¶</a></h2>
|
||||
<p>You can call any <a class="reference external" href="https://wiki.documentfoundation.org/Development/DispatchCommands">dispatch command</a> used only if property or method no exists in original object or in <cite>easymacro.py</cite></p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">command</span> <span class="o">=</span> <span class="s1">'.uno:Gallery'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">call_dispatch</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">command</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="properties">
|
||||
<h2>Properties<a class="headerlink" href="#properties" title="Permalink to this headline">¶</a></h2>
|
||||
<section id="obj">
|
||||
<h3>obj<a class="headerlink" href="#obj" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get original object pyUNO (read only)</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">doc</span><span class="p">))</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">obj</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="title">
|
||||
<h3>title<a class="headerlink" href="#title" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="s1">'New title'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="type">
|
||||
<h3>type<a class="headerlink" href="#type" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get type document: calc, writer, etc. (read only)</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="uid">
|
||||
<h3>uid<a class="headerlink" href="#uid" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get internal RuntimeUID form document. (read only)</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">uid</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="is-saved">
|
||||
<h3>is_saved<a class="headerlink" href="#is-saved" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>If document is saved in this or not (read only)</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">is_saved</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="is-modified">
|
||||
<h3>is_modified<a class="headerlink" href="#is-modified" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>If document has been modified (read only)</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">is_modified</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="is-read-only">
|
||||
<h3>is_read_only<a class="headerlink" href="#is-read-only" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">is_read_only</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="path">
|
||||
<h3>path<a class="headerlink" href="#path" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get path of document. (read only)</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="dir">
|
||||
<h3>dir<a class="headerlink" href="#dir" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get only directory from path saved (read only)</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">dir</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="file-name">
|
||||
<h3>file_name<a class="headerlink" href="#file-name" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get only file name from path saved (read only)</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">file_name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="name">
|
||||
<h3>name<a class="headerlink" href="#name" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get only name without extension (read only)</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">file_name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="visible">
|
||||
<h3>visible<a class="headerlink" href="#visible" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Hide or show document.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">visible</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">visible</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">visible</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="zoom">
|
||||
<h3>zoom<a class="headerlink" href="#zoom" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get or set zoom value.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">zoom</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">zoom</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">zoom</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">zoom</span> <span class="o">=</span> <span class="n">zoom</span> <span class="o">*</span> <span class="mi">2</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">zoom</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">zoom</span> <span class="o">=</span> <span class="n">zoom</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="selection">
|
||||
<h3>selection<a class="headerlink" href="#selection" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong>CAUTION</strong>: Selection can be many things.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">selection</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">selection</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">selection</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="status-bar">
|
||||
<h3>status_bar<a class="headerlink" href="#status-bar" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get status bar, always control in other thread.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@app</span><span class="o">.</span><span class="n">run_in_thread</span>
|
||||
<span class="k">def</span> <span class="nf">update_status_bar</span><span class="p">(</span><span class="n">sb</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">limit</span><span class="p">):</span>
|
||||
<span class="n">sb</span><span class="o">.</span><span class="n">start</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">limit</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">limit</span><span class="p">):</span>
|
||||
<span class="n">sb</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="c1"># ~ Is important free status bar</span>
|
||||
<span class="n">sb</span><span class="o">.</span><span class="n">end</span><span class="p">()</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">update_status_bar</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">status_bar</span><span class="p">,</span> <span class="s1">'Line'</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="methods">
|
||||
<h2>Methods<a class="headerlink" href="#methods" title="Permalink to this headline">¶</a></h2>
|
||||
<section id="set-focus">
|
||||
<h3>set_focus<a class="headerlink" href="#set-focus" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">name</span> <span class="o">=</span> <span class="s1">'MyDoc.ods'</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="p">:</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">set_focus</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy">
|
||||
<h3>copy<a class="headerlink" href="#copy" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Copy current selection</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="paste">
|
||||
<h3>paste<a class="headerlink" href="#paste" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Paste any content in clipboard</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">paste</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li>Previous: <a href="email.html" title="previous chapter">Email</a></li>
|
||||
<li>Next: <a href="calc.html" title="next chapter">Calc</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/application.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,136 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Base — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Examples" href="examples.html" />
|
||||
<link rel="prev" title="Writer" href="writer.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="base">
|
||||
<h1>Base<a class="headerlink" href="#base" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Remember, always import library.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<section id="new-database">
|
||||
<h2>New database<a class="headerlink" href="#new-database" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/db.odb'</span>
|
||||
<span class="n">db</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">doc</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li>Previous: <a href="writer.html" title="previous chapter">Writer</a></li>
|
||||
<li>Next: <a href="examples.html" title="next chapter">Examples</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/base.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,185 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Calc — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Document" href="calc_doc.html" />
|
||||
<link rel="prev" title="Application" href="application.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="calc">
|
||||
<h1>Calc<a class="headerlink" href="#calc" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Remember, always import library.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc_doc.html">Document</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_doc.html#current-doc">Current doc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_doc.html#selection">Selection</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_doc.html#headers">Headers</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_doc.html#tabs">Tabs</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc_sheets.html">Sheets</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#active-sheet">Active sheet</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#get-by-index">Get by index</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#get-by-name">Get by name</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#contains">Contains</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#get-tuple-with-all-names">Get tuple with all names</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#count">Count</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#new">New</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#move">Move</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#remove">Remove</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#copy">Copy</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#copy-from">Copy from</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#copy-to">Copy to</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#sort">Sort</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#name">Name</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#code-name">Code name</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#visible">Visible</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#is-protected">Is protected</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#set-password">Set password</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#remove-password">Remove password</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#tab-color">Tab color</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#document-parent">Document parent</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#activate">Activate</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc_ranges.html">Cell and ranges</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges.html#cells">Cells</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges.html#ranges">Ranges</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges.html#info-ranges">Info ranges</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges.html#special-ranges">Special ranges</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc_ranges2.html">Manipulate ranges</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html#select">Select</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html#move">Move</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html#insert">Insert</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html#delete">Delete</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html#copy">Copy</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc_data.html">Data</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_data.html#read">Read</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_data.html#write">Write</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li>Previous: <a href="application.html" title="previous chapter">Application</a></li>
|
||||
<li>Next: <a href="calc_doc.html" title="next chapter">Document</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/calc.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,214 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Data — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Writer" href="writer.html" />
|
||||
<link rel="prev" title="Manipulate ranges" href="calc_ranges2.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="data">
|
||||
<h1>Data<a class="headerlink" href="#data" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="read">
|
||||
<h2>Read<a class="headerlink" href="#read" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Get value from cell, automatic detect type and get value.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span>
|
||||
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">cell</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="n">info</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'Cell Type = </span><span class="si">{</span><span class="n">cell</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="se">\n\n</span><span class="s1">Cell Value = </span><span class="si">{</span><span class="n">cell</span><span class="o">.</span><span class="n">value</span><span class="si">}</span><span class="s1">'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">info</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get date, time and datetime like data Python.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">date</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">time</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">datetime</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get values from cell range.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:B5'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get formulas</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:B5'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">formula</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get array formula</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'C10:E15'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">array_formula</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get like dictionary</p></li>
|
||||
</ul>
|
||||
<p>The first row in range are the keys.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:B5'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">dict</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="write">
|
||||
<h2>Write<a class="headerlink" href="#write" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Automatic detect data type.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
|
||||
<span class="c1"># ~ Set int</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="c1"># ~ Set float</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A2'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="mf">10.5</span>
|
||||
|
||||
<span class="c1"># ~ Set string</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A3'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="s1">'Damn World'</span>
|
||||
|
||||
<span class="c1"># ~ Set formula</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A4'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="s1">'=RAND()'</span>
|
||||
|
||||
<span class="c1"># ~ Set date</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A5'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">today</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># ~ Set time</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A6'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">now</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># ~ Set datetime</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A7'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li><a href="calc.html">Calc</a><ul>
|
||||
<li>Previous: <a href="calc_ranges2.html" title="previous chapter">Manipulate ranges</a></li>
|
||||
<li>Next: <a href="writer.html" title="next chapter">Writer</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/calc_data.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,171 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Document — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Sheets" href="calc_sheets.html" />
|
||||
<link rel="prev" title="Calc" href="calc.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="document">
|
||||
<h1>Document<a class="headerlink" href="#document" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="current-doc">
|
||||
<h2>Current doc<a class="headerlink" href="#current-doc" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="selection">
|
||||
<h2>Selection<a class="headerlink" href="#selection" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>If selection is range get LOCalcRange, if selection is shape get LOShape, other selection get original pyuno object.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">selection</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">selection</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">selection</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="headers">
|
||||
<h2>Headers<a class="headerlink" href="#headers" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Hide or show columns and rows headers.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">headers</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">headers</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">doc</span><span class="o">.</span><span class="n">headers</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">headers</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">headers</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">doc</span><span class="o">.</span><span class="n">headers</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="tabs">
|
||||
<h2>Tabs<a class="headerlink" href="#tabs" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Hide or show tab sheets.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">tabs</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">tabs</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">doc</span><span class="o">.</span><span class="n">tabs</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">tabs</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">tabs</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">doc</span><span class="o">.</span><span class="n">tabs</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li><a href="calc.html">Calc</a><ul>
|
||||
<li>Previous: <a href="calc.html" title="previous chapter">Calc</a></li>
|
||||
<li>Next: <a href="calc_sheets.html" title="next chapter">Sheets</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/calc_doc.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,310 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Cell and ranges — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Manipulate ranges" href="calc_ranges2.html" />
|
||||
<link rel="prev" title="Sheets" href="calc_sheets.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="cell-and-ranges">
|
||||
<h1>Cell and ranges<a class="headerlink" href="#cell-and-ranges" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="cells">
|
||||
<h2>Cells<a class="headerlink" href="#cells" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>By name</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>By position [row, column]</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="ranges">
|
||||
<h2>Ranges<a class="headerlink" href="#ranges" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>By name</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'B2:D5'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>By position [start_row:end_row, start_column:end_column]</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">5</span><span class="p">,</span><span class="mi">1</span><span class="p">:</span><span class="mi">4</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Group ranges</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">last</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">with</span> <span class="n">doc</span><span class="o">.</span><span class="n">ranges</span> <span class="k">as</span> <span class="n">r</span><span class="p">:</span>
|
||||
<span class="c1"># Add one range</span>
|
||||
<span class="n">r</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:B2'</span><span class="p">])</span>
|
||||
<span class="n">r2</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'C4:D5'</span><span class="p">]</span>
|
||||
<span class="n">r3</span> <span class="o">=</span> <span class="n">last</span><span class="p">[</span><span class="s1">'E7:D8'</span><span class="p">]</span>
|
||||
<span class="n">r4</span> <span class="o">=</span> <span class="n">last</span><span class="p">[</span><span class="s1">'E10:F12'</span><span class="p">]</span>
|
||||
<span class="c1"># Add multiple ranges</span>
|
||||
<span class="n">r</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="n">r2</span><span class="p">,</span> <span class="n">r3</span><span class="p">,</span> <span class="n">r4</span><span class="p">))</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">names</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get the same range in all sheets</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">ranges</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">get_ranges</span><span class="p">(</span><span class="s1">'A1:B1'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">ranges</span><span class="o">.</span><span class="n">names</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get columns by name.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'B:B'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'D:F'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get columns by position.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="c1"># Column B</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">0</span><span class="p">:,</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Columnas D:F</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">0</span><span class="p">:,</span><span class="mi">3</span><span class="p">:</span><span class="mi">6</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get rows</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="c1"># One row</span>
|
||||
<span class="n">row</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">row</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Range rows</span>
|
||||
<span class="n">row</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">3</span><span class="p">:</span><span class="mi">10</span><span class="p">,</span><span class="mi">0</span><span class="p">:]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">row</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="info-ranges">
|
||||
<h2>Info ranges<a class="headerlink" href="#info-ranges" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Get absolute name</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:E10'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get address</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="n">rango</span><span class="o">.</span><span class="n">address</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""Cell Address</span>
|
||||
<span class="s2">Row: </span><span class="si">{</span><span class="n">a</span><span class="o">.</span><span class="n">Row</span><span class="si">}</span><span class="s2"></span>
|
||||
<span class="s2">Column: </span><span class="si">{</span><span class="n">a</span><span class="o">.</span><span class="n">Column</span><span class="si">}</span><span class="s2"></span>
|
||||
<span class="s2">"""</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:E10'</span><span class="p">]</span>
|
||||
<span class="n">ra</span> <span class="o">=</span> <span class="n">rango</span><span class="o">.</span><span class="n">range_address</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s1">'Range Address:</span><span class="se">\n\n</span><span class="s1">'</span>
|
||||
<span class="sa">f</span><span class="s1">'Star Row: </span><span class="si">{</span><span class="n">ra</span><span class="o">.</span><span class="n">StartRow</span><span class="si">}</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="sa">f</span><span class="s1">'End Row: </span><span class="si">{</span><span class="n">ra</span><span class="o">.</span><span class="n">EndRow</span><span class="si">}</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="sa">f</span><span class="s1">'Star Column: </span><span class="si">{</span><span class="n">ra</span><span class="o">.</span><span class="n">StartColumn</span><span class="si">}</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="sa">f</span><span class="s1">'End Column: </span><span class="si">{</span><span class="n">ra</span><span class="o">.</span><span class="n">EndColumn</span><span class="si">}</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="special-ranges">
|
||||
<h2>Special ranges<a class="headerlink" href="#special-ranges" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Get used area</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="o">.</span><span class="n">used_area</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get current region</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span><span class="o">.</span><span class="n">current_region</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get next free cell</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span><span class="o">.</span><span class="n">next_cell</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get merged area</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span><span class="o">.</span><span class="n">merged_area</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get visible cells</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rangos</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:E10'</span><span class="p">]</span><span class="o">.</span><span class="n">visible</span>
|
||||
<span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">rangos</span><span class="p">:</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get empty cells</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rangos</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:E10'</span><span class="p">]</span><span class="o">.</span><span class="n">empty</span>
|
||||
<span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">rangos</span><span class="p">:</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li><a href="calc.html">Calc</a><ul>
|
||||
<li>Previous: <a href="calc_sheets.html" title="previous chapter">Sheets</a></li>
|
||||
<li>Next: <a href="calc_ranges2.html" title="next chapter">Manipulate ranges</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/calc_ranges.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,242 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Manipulate ranges — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Data" href="calc_data.html" />
|
||||
<link rel="prev" title="Cell and ranges" href="calc_ranges.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="manipulate-ranges">
|
||||
<h1>Manipulate ranges<a class="headerlink" href="#manipulate-ranges" title="Permalink to this headline">¶</a></h1>
|
||||
<p><strong>Not, not is necesary select range for manipulate</strong></p>
|
||||
<section id="select">
|
||||
<h2>Select<a class="headerlink" href="#select" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Select from doc</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
|
||||
<span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">cell</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Select in self range</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:C5'</span><span class="p">]</span>
|
||||
<span class="n">rango</span><span class="o">.</span><span class="n">select</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="move">
|
||||
<h2>Move<a class="headerlink" href="#move" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:C5'</span><span class="p">]</span>
|
||||
<span class="n">rango</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">sheet</span><span class="p">[</span><span class="s1">'E6'</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Move to other sheet</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">doc</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="s1">'E6'</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="insert">
|
||||
<h2>Insert<a class="headerlink" href="#insert" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Default insert down</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:C1'</span><span class="p">]</span>
|
||||
<span class="n">rango</span><span class="o">.</span><span class="n">insert</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Insert and move right</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellInsertMode</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Insert entire rows</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellInsertMode</span><span class="o">.</span><span class="n">ROWS</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Insert entire columns</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellInsertMode</span><span class="o">.</span><span class="n">COLUMNS</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="delete">
|
||||
<h2>Delete<a class="headerlink" href="#delete" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Default move up</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:C1'</span><span class="p">]</span>
|
||||
<span class="n">rango</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Delete and move left</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellDeleteMode</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Delete entire rows</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellDeleteMode</span><span class="o">.</span><span class="n">ROWS</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Delete entire columns</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellDeleteMode</span><span class="o">.</span><span class="n">COLUMNS</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy">
|
||||
<h2>Copy<a class="headerlink" href="#copy" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Using native method <cite>copyRange</cite>, current range always should be a cell and source should be a range.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A5'</span><span class="p">]</span>
|
||||
<span class="n">source</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'D1:E4'</span><span class="p">]</span>
|
||||
<span class="n">cell</span><span class="o">.</span><span class="n">copy_from</span><span class="p">(</span><span class="n">source</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>From range to cell</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:C5'</span><span class="p">]</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'E1'</span><span class="p">]</span>
|
||||
<span class="n">rango</span><span class="o">.</span><span class="n">copy_to</span><span class="p">(</span><span class="n">target</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li><a href="calc.html">Calc</a><ul>
|
||||
<li>Previous: <a href="calc_ranges.html" title="previous chapter">Cell and ranges</a></li>
|
||||
<li>Next: <a href="calc_data.html" title="next chapter">Data</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/calc_ranges2.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,426 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Sheets — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Cell and ranges" href="calc_ranges.html" />
|
||||
<link rel="prev" title="Document" href="calc_doc.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="sheets">
|
||||
<h1>Sheets<a class="headerlink" href="#sheets" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="active-sheet">
|
||||
<h2>Active sheet<a class="headerlink" href="#active-sheet" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># or</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">active</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-by-index">
|
||||
<h2>Get by index<a class="headerlink" href="#get-by-index" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-by-name">
|
||||
<h2>Get by name<a class="headerlink" href="#get-by-name" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="s1">'Sheet1'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="contains">
|
||||
<h2>Contains<a class="headerlink" href="#contains" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="s1">'Sheet1'</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-tuple-with-all-names">
|
||||
<h2>Get tuple with all names<a class="headerlink" href="#get-tuple-with-all-names" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">names</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="count">
|
||||
<h2>Count<a class="headerlink" href="#count" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">doc</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="new">
|
||||
<h2>New<a class="headerlink" href="#new" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Always validate if new name not exists.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">new_sheet</span><span class="p">()</span>
|
||||
<span class="c1"># CAUTION: If 'NewSheet' exists, reset it to clean sheet.</span>
|
||||
<span class="n">doc</span><span class="p">[</span><span class="s1">'NewSheet'</span><span class="p">]</span> <span class="o">=</span> <span class="n">sheet</span>
|
||||
|
||||
<span class="c1"># ~ or</span>
|
||||
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="s1">'NewSheet2'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Insert multiple, get last insert.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">names</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'One'</span><span class="p">,</span> <span class="s1">'Two'</span><span class="p">,</span> <span class="s1">'Three'</span><span class="p">)</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">names</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="move">
|
||||
<h2>Move<a class="headerlink" href="#move" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Move by object to last position.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">sheet</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Move by name to last position.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="s1">'Sheet1'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Move to position.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">sheet</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Move from sheet</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">move</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Move to position.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="remove">
|
||||
<h2>Remove<a class="headerlink" href="#remove" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Remove by object.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">sheet</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Remove by name.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s1">'One'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Remove from sheet.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">remove</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy">
|
||||
<h2>Copy<a class="headerlink" href="#copy" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Copy inside the same spreadsheet.</p></li>
|
||||
<li><p>By object</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">copy_sheet</span><span class="p">(</span><span class="n">sheet</span><span class="p">,</span> <span class="s1">'OtherSheet'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>By name</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span><span class="o">.</span><span class="n">copy_sheet</span><span class="p">(</span><span class="s1">'Sheet1'</span><span class="p">,</span> <span class="s1">'Sheet2'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>From sheet</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s1">'_2'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy-from">
|
||||
<h2>Copy from<a class="headerlink" href="#copy-from" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Copy sheet from one spreadsheet to other.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">doc_source</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="p">[</span><span class="s1">'Contacts.ods'</span><span class="p">]</span>
|
||||
<span class="n">name_source</span> <span class="o">=</span> <span class="s1">'Names'</span>
|
||||
<span class="n">name_target</span> <span class="o">=</span> <span class="s1">'Names'</span>
|
||||
<span class="n">position</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">copy_from</span><span class="p">(</span><span class="n">doc_source</span><span class="p">,</span> <span class="n">name_source</span><span class="p">,</span> <span class="n">name_target</span><span class="p">,</span> <span class="n">position</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy-to">
|
||||
<h2>Copy to<a class="headerlink" href="#copy-to" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Copy from sheet with the same name</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">copy_to</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Used new name</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">copy_to</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="s1">'NewName'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="sort">
|
||||
<h2>Sort<a class="headerlink" href="#sort" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Sort sheets by names.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="name">
|
||||
<h2>Name<a class="headerlink" href="#name" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Name visible by the user.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s1">'NewName'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="code-name">
|
||||
<h2>Code name<a class="headerlink" href="#code-name" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Name only accessible by code.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">code_name</span><span class="p">)</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">code_name</span> <span class="o">=</span> <span class="s1">'my_name'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">code_name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="visible">
|
||||
<h2>Visible<a class="headerlink" href="#visible" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Apply only with spreadsheet with two or more sheets.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">visible</span><span class="p">)</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">visible</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">sheet</span><span class="o">.</span><span class="n">visible</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">visible</span><span class="p">)</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">visible</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">sheet</span><span class="o">.</span><span class="n">visible</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="is-protected">
|
||||
<h2>Is protected<a class="headerlink" href="#is-protected" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>If sheet is protected with password.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">is_protected</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="set-password">
|
||||
<h2>Set password<a class="headerlink" href="#set-password" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="s1">'letmein'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">is_protected</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="remove-password">
|
||||
<h2>Remove password<a class="headerlink" href="#remove-password" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="s1">'letmein'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">is_protected</span><span class="p">)</span>
|
||||
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">unprotect</span><span class="p">(</span><span class="s1">'letmein'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">is_protected</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="tab-color">
|
||||
<h2>Tab color<a class="headerlink" href="#tab-color" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">color</span><span class="p">)</span>
|
||||
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="s1">'red'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">color</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># RGB</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="p">(</span><span class="mi">125</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">color</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="document-parent">
|
||||
<h2>Document parent<a class="headerlink" href="#document-parent" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">sheet</span><span class="o">.</span><span class="n">doc</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="activate">
|
||||
<h2>Activate<a class="headerlink" href="#activate" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="c1"># Get last sheet</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># Activate from doc</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">activate</span><span class="p">(</span><span class="n">sheet</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Activate from sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">activate</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li><a href="calc.html">Calc</a><ul>
|
||||
<li>Previous: <a href="calc_doc.html" title="previous chapter">Document</a></li>
|
||||
<li>Next: <a href="calc_ranges.html" title="next chapter">Cell and ranges</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/calc_sheets.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,518 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Configuration — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Library easymacro.py" href="easymacro.html" />
|
||||
<link rel="prev" title="Introduction" href="intro.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="configuration">
|
||||
<h1>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h1>
|
||||
<ul class="simple">
|
||||
<li><p>Create new extension:</p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">./zaz.py</span> <span class="pre">-new</span> <span class="pre">-t</span> <span class="pre">~/projects</span> <span class="pre">-n</span> <span class="pre">MyGreatExtension</span></code></p>
|
||||
<ul class="simple">
|
||||
<li><p>Move to new folder:</p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">cd</span> <span class="pre">~/projects/MyGreatExtension</span></code></p>
|
||||
<ul class="simple">
|
||||
<li><p>Edit file <code class="docutils literal notranslate"><span class="pre">conf.py</span></code></p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">vim</span> <span class="pre">conf.py</span></code></p>
|
||||
<section id="parameters">
|
||||
<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline">¶</a></h2>
|
||||
<p><strong>Configure correctly this options, before you start code your extension.</strong></p>
|
||||
<p>Only modify this options.</p>
|
||||
<section id="type-extension">
|
||||
<h3>Type extension<a class="headerlink" href="#type-extension" title="Permalink to this headline">¶</a></h3>
|
||||
<p><strong>TYPE_EXTENSION</strong></p>
|
||||
<p>The type extension that you want develop.</p>
|
||||
<ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>Integer</dt><dd><ul>
|
||||
<li><p>1 = Normal extension</p></li>
|
||||
<li><p>2 = New components</p></li>
|
||||
<li><p>3 = Calc addin</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">TYPE_EXTENSION</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="version">
|
||||
<h3>Version<a class="headerlink" href="#version" title="Permalink to this headline">¶</a></h3>
|
||||
<p><strong>VERSION</strong></p>
|
||||
<ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>String</dt><dd><ul>
|
||||
<li><p>The current version of extension, look: <a class="reference external" href="https://semver.org/">Semantic Versioning</a></p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">VERSION</span> <span class="o">=</span> <span class="s1">'0.1.0'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="name">
|
||||
<h3>Name<a class="headerlink" href="#name" title="Permalink to this headline">¶</a></h3>
|
||||
<p><strong>NAME</strong></p>
|
||||
<ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>String</dt><dd><ul>
|
||||
<li><p>Your extension name, not used spaces.</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">NAME</span> <span class="o">=</span> <span class="s1">'MyGreatExtension'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="id-extension">
|
||||
<h3>ID extension<a class="headerlink" href="#id-extension" title="Permalink to this headline">¶</a></h3>
|
||||
<p>The internal name for extension.</p>
|
||||
<p><strong>ID</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>String</dt><dd><ul>
|
||||
<li><p>Should be unique, used URL inverse</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">ID</span> <span class="o">=</span> <span class="s1">'org.yourname.extensionname'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="locales">
|
||||
<h3>Locales<a class="headerlink" href="#locales" title="Permalink to this headline">¶</a></h3>
|
||||
<p>If your extension will be multi-language (recommended)</p>
|
||||
<p><strong>USE_LOCALES</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p>Bool</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">USE_LOCALES</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="domain-for-locales">
|
||||
<h3>Domain for locales<a class="headerlink" href="#domain-for-locales" title="Permalink to this headline">¶</a></h3>
|
||||
<p>The base name for generate files POT</p>
|
||||
<p><strong>DOMAIN</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p>String</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">DOMAIN</span> <span class="o">=</span> <span class="s1">'base'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="path-pygettext">
|
||||
<h3>Path pyGetText<a class="headerlink" href="#path-pygettext" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Absolute path for tool <cite>pygettext.py</cite> for generate POT.</p>
|
||||
<p><strong>PATH_PYGETTEXT</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p>String</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">PATH_PYGETTEXT</span> <span class="o">=</span> <span class="s1">'/usr/lib/python3.9/Tools/i18n/pygettext.py'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="author">
|
||||
<h3>Author<a class="headerlink" href="#author" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Your information like author, one or more languages. This information is displayed in the extension manager.</p>
|
||||
<p><strong>PUBLISHER</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p>Dictionary</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">PUBLISHER</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'en'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'text'</span><span class="p">:</span> <span class="s1">'Your name'</span><span class="p">,</span> <span class="s1">'link'</span><span class="p">:</span> <span class="s1">'https://your.page'</span><span class="p">},</span>
|
||||
<span class="s1">'es'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'text'</span><span class="p">:</span> <span class="s1">'Tu nombre'</span><span class="p">,</span> <span class="s1">'link'</span><span class="p">:</span> <span class="s1">'https://elmau.net'</span><span class="p">},</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="extension-icon">
|
||||
<h3>Extension icon<a class="headerlink" href="#extension-icon" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Path relative or absolute to extension logo. Show in extension manager.</p>
|
||||
<p><strong>ICON</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p>String</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">ICON</span><span class="o">=</span><span class="s1">'images/logo.png'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="license">
|
||||
<h3>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h3>
|
||||
<p>The license for your extension, please, used free license.</p>
|
||||
<p><strong>LICENSE</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p>String</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">LICENSE_EN</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""This file is part of </span><span class="si">{</span><span class="n">NAME</span><span class="si">}</span><span class="s2">.</span>
|
||||
|
||||
<span class="s2"> </span><span class="si">{</span><span class="n">NAME</span><span class="si">}</span><span class="s2"> is free software: you can redistribute it and/or modify</span>
|
||||
<span class="s2"> it under the terms of the GNU General Public License as published by</span>
|
||||
<span class="s2"> the Free Software Foundation, either version 3 of the License, or</span>
|
||||
<span class="s2"> (at your option) any later version.</span>
|
||||
|
||||
<span class="s2"> </span><span class="si">{</span><span class="n">NAME</span><span class="si">}</span><span class="s2"> is distributed in the hope that it will be useful,</span>
|
||||
<span class="s2"> but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
|
||||
<span class="s2"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
|
||||
<span class="s2"> GNU General Public License for more details.</span>
|
||||
|
||||
<span class="s2"> You should have received a copy of the GNU General Public License</span>
|
||||
<span class="s2"> along with </span><span class="si">{</span><span class="n">NAME</span><span class="si">}</span><span class="s2">. If not, see <https://www.gnu.org/licenses/>.</span>
|
||||
<span class="s2">"""</span>
|
||||
<span class="n">LICENSE_ES</span> <span class="o">=</span> <span class="n">LICENSE_EN</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="information">
|
||||
<h3>Information<a class="headerlink" href="#information" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Information of extension: Display name, description and license to displayed when install.</p>
|
||||
<p><strong>INFO</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p>Dictionary</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">INFO</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'en'</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s1">'display_name'</span><span class="p">:</span> <span class="s1">'Test Macro'</span><span class="p">,</span>
|
||||
<span class="s1">'description'</span><span class="p">:</span> <span class="s1">'My great extension'</span><span class="p">,</span>
|
||||
<span class="s1">'license'</span><span class="p">:</span> <span class="n">LICENSE_EN</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="s1">'es'</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s1">'display_name'</span><span class="p">:</span> <span class="s1">'Macro de Prueba'</span><span class="p">,</span>
|
||||
<span class="s1">'description'</span><span class="p">:</span> <span class="s1">'Mi gran extensión'</span><span class="p">,</span>
|
||||
<span class="s1">'license'</span><span class="p">:</span> <span class="n">LICENSE_ES</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="parent-menu">
|
||||
<h3>Parent menu<a class="headerlink" href="#parent-menu" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Only for normal extension (<cite>TYPE_EXTENSION = 1</cite>), where add extension menu, only two possible values: <strong>AddonMenu</strong> or <strong>OfficeMenuBar</strong></p>
|
||||
<p><strong>PARENT</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>String</dt><dd><ul>
|
||||
<li><p><strong>AddonMenu</strong>: Show in menu Tools->Add-Ons</p></li>
|
||||
<li><p><strong>OfficeMenuBar</strong>: Show in LibreOffice menu</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">PARENT</span> <span class="o">=</span> <span class="s1">'OfficeMenuBar'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="main-menu">
|
||||
<h3>Main menu<a class="headerlink" href="#main-menu" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Only for normal extension (<cite>TYPE_EXTENSION = 1</cite>) and only if parent menu is <cite>OfficeMenuBar</cite>. Can be multi language.</p>
|
||||
<p><strong>MENU_MAIN</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p>Dictionary</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">MENU_MAIN</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'en'</span><span class="p">:</span> <span class="s1">'My Extension'</span><span class="p">,</span>
|
||||
<span class="s1">'es'</span><span class="p">:</span> <span class="s1">'Mi Extensión'</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="menus">
|
||||
<h3>Menus<a class="headerlink" href="#menus" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Each menu for show in parent menu.</p>
|
||||
<p><strong>MENUS</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>Tuple of dictionaries</dt><dd><ul>
|
||||
<li><p><strong>title</strong> = Label showed, can be multi language.</p></li>
|
||||
<li><p><strong>argument</strong> = Argument to pass to extension, not use spaces.</p></li>
|
||||
<li><p><strong>context</strong> = In what applications show, if is blank, show in all.</p></li>
|
||||
<li><p><strong>icon</strong> = Icon to add, the icon should be in format BMP. The name should be NAME_16.bmp or NAME_26.bmp. Set only NAME in this property.</p></li>
|
||||
<li><p><strong>toolbar</strong> = It is True, add to new toolbar too, used same icon.</p></li>
|
||||
<li><p><strong>shortcut</strong> = Shortcut keyboard for this menu. For <cite>Shift+Ctrl+Alt+T</cite> used: <cite>T_SHIFT_MOD1_MOD2</cite></p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">MENUS</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s1">'title'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'en'</span><span class="p">:</span> <span class="s1">'Option 1'</span><span class="p">,</span> <span class="s1">'es'</span><span class="p">:</span> <span class="s1">'Opción 1'</span><span class="p">},</span>
|
||||
<span class="s1">'argument'</span><span class="p">:</span> <span class="s1">'option1'</span><span class="p">,</span>
|
||||
<span class="s1">'context'</span><span class="p">:</span> <span class="s1">'calc,writer'</span><span class="p">,</span>
|
||||
<span class="s1">'icon'</span><span class="p">:</span> <span class="s1">'icon'</span><span class="p">,</span>
|
||||
<span class="s1">'toolbar'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<span class="s1">'shortcut'</span><span class="p">:</span> <span class="s1">'T_SHIFT_MOD1_MOD2'</span><span class="p">,</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="functions">
|
||||
<h3>Functions<a class="headerlink" href="#functions" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Only for Add-in extension (<cite>TYPE_EXTENSION = 2</cite>). Can be multi language.</p>
|
||||
<p>The key of dictionary, is the same name of your function. Used exactly you used in your code.</p>
|
||||
<p><strong>FUNCTIONS</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>Dictionary of dictionaries</dt><dd><ul>
|
||||
<li><p><strong>displayname</strong> = Show in function wizard, multi language.</p></li>
|
||||
<li><p><strong>description</strong> = Show in function wizard, multi language.</p></li>
|
||||
<li><dl class="simple">
|
||||
<dt><strong>parameters</strong> = Each parameters in your function.</dt><dd><ul>
|
||||
<li><dl class="simple">
|
||||
<dt><strong>key</strong> = Is the exactly name for parameter in your code function.</dt><dd><ul>
|
||||
<li><p><strong>displayname</strong> = Show in function wizard, multi language.</p></li>
|
||||
<li><p><strong>description</strong> = Show in function wizard, multi language.</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'test'</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s1">'displayname'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'en'</span><span class="p">:</span> <span class="s1">'test'</span><span class="p">,</span> <span class="s1">'es'</span><span class="p">:</span> <span class="s1">'prueba'</span><span class="p">},</span>
|
||||
<span class="s1">'description'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'en'</span><span class="p">:</span> <span class="s1">'My test'</span><span class="p">,</span> <span class="s1">'es'</span><span class="p">:</span> <span class="s1">'Mi prueba'</span><span class="p">},</span>
|
||||
<span class="s1">'parameters'</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s1">'value'</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s1">'displayname'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'en'</span><span class="p">:</span> <span class="s1">'value'</span><span class="p">,</span> <span class="s1">'es'</span><span class="p">:</span> <span class="s1">'valor'</span><span class="p">},</span>
|
||||
<span class="s1">'description'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'en'</span><span class="p">:</span> <span class="s1">'The value'</span><span class="p">,</span> <span class="s1">'es'</span><span class="p">:</span> <span class="s1">'El valor'</span><span class="p">},</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="default-program">
|
||||
<h3>Default program<a class="headerlink" href="#default-program" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Optional. Open automatically when install and test.</p>
|
||||
<p><strong>PROGRAM</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>String</dt><dd><ul>
|
||||
<li><p>–calc</p></li>
|
||||
<li><p>–writer</p></li>
|
||||
<li><p>–draw</p></li>
|
||||
<li><p>–impress</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">PROGRAM</span> <span class="o">=</span> <span class="s1">'--calc'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="file-test">
|
||||
<h3>File test<a class="headerlink" href="#file-test" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Optional. Open automatically when install and test.</p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><p>String</p></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">FILE_TEST</span> <span class="o">=</span> <span class="s1">'/home/mau/example.ods'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="paths">
|
||||
<h3>Paths<a class="headerlink" href="#paths" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Paths for install and test. <cite>idlc</cite>, <cite>include</cite> and <cite>remerge</cite> only used en <cite>TYPE_EXTENSION</cite> 2 or 3. <cite>idlc</cite> and path <cite>include</cite> is installed with LibreOffice SDK.</p>
|
||||
<p><strong>PATHS</strong></p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>Dictionary</dt><dd><ul>
|
||||
<li><p><strong>idlc</strong> for generate files urd.</p></li>
|
||||
<li><p><strong>include</strong> path with files idl.</p></li>
|
||||
<li><p><strong>remerge</strong> for generate files rdb.</p></li>
|
||||
<li><p><strong>soffice</strong> for open LibreOffice.</p></li>
|
||||
<li><p><strong>install</strong> for install extension.</p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>Example:</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">PATHS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'idlc'</span><span class="p">:</span> <span class="s1">'/usr/lib/libreoffice/sdk/bin/idlc'</span><span class="p">,</span>
|
||||
<span class="s1">'include'</span><span class="p">:</span> <span class="s1">'/usr/share/idl/libreoffice'</span><span class="p">,</span>
|
||||
<span class="s1">'regmerge'</span><span class="p">:</span> <span class="s1">'/usr/lib/libreoffice/program/regmerge'</span><span class="p">,</span>
|
||||
<span class="s1">'soffice'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'soffice'</span><span class="p">,</span> <span class="n">PROGRAM</span><span class="p">,</span> <span class="n">FILE_TEST</span><span class="p">),</span>
|
||||
<span class="s1">'install'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'unopkg'</span><span class="p">,</span> <span class="s1">'add'</span><span class="p">,</span> <span class="s1">'-v'</span><span class="p">,</span> <span class="s1">'-f'</span><span class="p">,</span> <span class="s1">'-s'</span><span class="p">),</span>
|
||||
<span class="p">}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Configuration</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#parameters">Parameters</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="easymacro.html">Library easymacro.py</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li>Previous: <a href="intro.html" title="previous chapter">Introduction</a></li>
|
||||
<li>Next: <a href="easymacro.html" title="next chapter">Library easymacro.py</a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/config.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,245 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Library easymacro.py — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Tools for debug" href="tools_for_debug.html" />
|
||||
<link rel="prev" title="Configuration" href="config.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="library-easymacro-py">
|
||||
<h1>Library easymacro.py<a class="headerlink" href="#library-easymacro-py" title="Permalink to this headline">¶</a></h1>
|
||||
<p><strong>easymacro.py</strong> it’s a library for easily develop macros en LibreOffice con Python. It is an abstraction layer between the extensive and complex LibreOffice API UNO and your code.</p>
|
||||
<p>Probably, your will be more happy if used it. :)</p>
|
||||
<p>You can used <strong>easymacro.py</strong> with any extension or directly in your macros.</p>
|
||||
<p><strong>IMPORTANT</strong>: Majority objects are custom objects, you can always get original UNO object with property <cite>obj</cite></p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">obj</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html#info-debug">INFO_DEBUG</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html#log-error">Log error</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html#log-debug">Log debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html#log-info">Log info</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html#log-to-file">Log to file</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html#message-box">Message box</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html#catch-exceptions">Catch exceptions</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html#call-mri">Call MRI</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="tools.html">Tools</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#info-from-pc">Info from PC</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#message-box">Message Box</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#show-warning">Show warning</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#show-error-box">Show error box</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#make-question">Make question</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#inputbox">InputBox</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#date-and-times">Date and times</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#thread">Thread</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#dictionary-properties">Dictionary <-> properties</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#tuples-or-lists-to-dictionary">Tuples or lists to dictionary</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#json">Json</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#call-macros">Call Macros</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#call-external-program">Call external program</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#timer">Timer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#get-digest">Get digest</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#save-and-get-configurations">Save and get configurations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#render-string">Render string</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#encrypt-decrypt">Encrypt decrypt</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#simple-url-open">Simple url open</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html#color">Color</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="paths.html">Paths and files</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-info-path">Get info path</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#exists-path">Exists path</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#path-is-file">Path is file</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#path-is-dir">Path is dir</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-path-home">Get path home</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-path-documents">Get path documents</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-path-temp">Get path temp</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-path-from-libreoffice-configuration">Get path from LibreOffice configuration</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-path-executable-python">Get path executable python</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#save-and-read-text-data">Save and read text data</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#save-and-read-binary-data">Save and read binary data</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#join-paths">Join paths</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-a-temporal-path">Get a temporal path</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-a-temporal-dir">Get a temporal dir</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-path-for-save">Get path for save</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#select-directory">Select directory</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-path-exists-file">Get path exists file</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#replace-extension">Replace extension</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#path-in-format-url-system">Path in format URL <-> System</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#delete-files-and-directories">Delete files and directories</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-files">Get files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-directories">Get directories</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#get-install-path-extension-from-id">Get install path extension from id</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#verify-if-application-exists">Verify if application exists</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#open-any-type-file">Open any type file</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#save-and-read-json">Save and read json</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#save-and-read-csv">Save and read csv</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#zip-unzip">Zip, unzip</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html#copy-files">Copy files</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="email.html">Email</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html#send-email">Send email</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="application.html">Application</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#create-instances">Create instances</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#current-doc">Current doc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#iter-docs">Iter docs</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#count">Count</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#get-by-name">Get by name</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#if-contain">If contain</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#new">New</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#open">Open</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#save">Save</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#close">Close</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#to-pdf">To PDF</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#export">Export</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#fonst">Fonst</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#filters">Filters</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#call-dispatch">Call dispatch</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#properties">Properties</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#methods">Methods</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc.html">Calc</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_doc.html">Document</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html">Sheets</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges.html">Cell and ranges</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html">Manipulate ranges</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_data.html">Data</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="writer.html">Writer</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html#current-doc">Current doc</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="base.html">Base</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html#new-database">New database</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Library easymacro.py</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li>Previous: <a href="config.html" title="previous chapter">Configuration</a></li>
|
||||
<li>Next: <a href="tools_for_debug.html" title="next chapter">Tools for debug</a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/easymacro.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,223 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Email — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Application" href="application.html" />
|
||||
<link rel="prev" title="Paths and files" href="paths.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="email">
|
||||
<h1>Email<a class="headerlink" href="#email" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Remember, always import library.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>IMPORTANT:</strong> Always save your config the more security way possible.</p>
|
||||
<section id="send-email">
|
||||
<h2>Send email<a class="headerlink" href="#send-email" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">conf</span> <span class="kn">import</span> <span class="n">PASSWORD</span>
|
||||
|
||||
<span class="n">SERVER</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="n">server</span> <span class="o">=</span> <span class="s1">'mail.server.net'</span> <span class="p">,</span>
|
||||
<span class="n">port</span> <span class="o">=</span> <span class="mi">495</span><span class="p">,</span>
|
||||
<span class="n">ssl</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">user</span> <span class="o">=</span> <span class="s1">'no-responder@noexiste.mx'</span><span class="p">,</span>
|
||||
<span class="n">password</span> <span class="o">=</span> <span class="n">PASSWORD</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">body</span> <span class="o">=</span> <span class="s2">"Hello Ingrid</span><span class="se">\n\n</span><span class="s2">Who are you?</span><span class="se">\n\n</span><span class="s2">Best regards"</span>
|
||||
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="n">to</span> <span class="o">=</span> <span class="s1">'ingrid.bergman@love.you'</span><span class="p">,</span>
|
||||
<span class="n">subject</span> <span class="o">=</span> <span class="s1">'I love you'</span><span class="p">,</span>
|
||||
<span class="n">body</span> <span class="o">=</span> <span class="n">body</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">send_email</span><span class="p">(</span><span class="n">SERVER</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>We can use fields <cite>cc</cite>, <cite>bcc</cite> too and send to more than one address emails.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">to</span> <span class="o">=</span> <span class="s1">'mail1@correo.com,mail2@correo.com,mail3@correo.com'</span>
|
||||
<span class="n">cc</span> <span class="o">=</span> <span class="s1">'other@correo.com'</span>
|
||||
<span class="n">bcc</span> <span class="o">=</span> <span class="s1">'hidden@correo.com'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>We can send too more than one message.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">message1</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="n">to</span> <span class="o">=</span> <span class="s1">'ingrid.bergman@email.net'</span><span class="p">,</span>
|
||||
<span class="n">subject</span> <span class="o">=</span> <span class="s1">'I love you'</span><span class="p">,</span>
|
||||
<span class="n">body</span> <span class="o">=</span> <span class="s2">"Hello Ingrid</span><span class="se">\n\n</span><span class="s2">Who are you?</span><span class="se">\n\n</span><span class="s2">Best regards"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">message2</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="n">to</span> <span class="o">=</span> <span class="s1">'sophia.loren@email.net'</span><span class="p">,</span>
|
||||
<span class="n">subject</span> <span class="o">=</span> <span class="s1">'I love you'</span><span class="p">,</span>
|
||||
<span class="n">body</span> <span class="o">=</span> <span class="s2">"Hello Sophia</span><span class="se">\n\n</span><span class="s2">Who are you?</span><span class="se">\n\n</span><span class="s2">Best regards"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">messages</span> <span class="o">=</span> <span class="p">(</span><span class="n">message1</span><span class="p">,</span> <span class="n">message2</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">send_email</span><span class="p">(</span><span class="n">SERVER</span><span class="p">,</span> <span class="n">messages</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="m">30</span>/06/2021 <span class="m">13</span>:43:23 - DEBUG - Connect to: mail.gandi.net
|
||||
<span class="m">30</span>/06/2021 <span class="m">13</span>:43:24 - DEBUG - Email sent...
|
||||
<span class="m">30</span>/06/2021 <span class="m">13</span>:43:26 - DEBUG - Email sent...
|
||||
<span class="m">30</span>/06/2021 <span class="m">13</span>:43:26 - DEBUG - Close connection...
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Send with attachment</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">files</span> <span class="o">=</span> <span class="s1">'/home/mau/file.epub'</span>
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="n">to</span> <span class="o">=</span> <span class="s1">'ingrid.bergman@email.net'</span><span class="p">,</span>
|
||||
<span class="n">subject</span> <span class="o">=</span> <span class="s1">'I love you'</span><span class="p">,</span>
|
||||
<span class="n">body</span> <span class="o">=</span> <span class="s2">"Hello Ingrid</span><span class="se">\n\n</span><span class="s2">Who are you?</span><span class="se">\n\n</span><span class="s2">Best regards"</span><span class="p">,</span>
|
||||
<span class="n">files</span> <span class="o">=</span> <span class="n">files</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Send more than one file.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">files</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s1">'/home/mau/file1.epub'</span><span class="p">,</span>
|
||||
<span class="s1">'/home/mau/file2.epub'</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>If your client email used <cite>mbox</cite> format, we can save in any path into your email client configuration.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_save</span> <span class="o">=</span> <span class="s1">'/home/mau/.thunderbird/7iznrbyw.default/Mail/Local Folders/LibreOffice'</span>
|
||||
<span class="n">message</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="n">to</span> <span class="o">=</span> <span class="s1">'ingrid.bergman@email.net'</span><span class="p">,</span>
|
||||
<span class="n">subject</span> <span class="o">=</span> <span class="s1">'I love you'</span><span class="p">,</span>
|
||||
<span class="n">body</span> <span class="o">=</span> <span class="s2">"Hello Ingrid</span><span class="se">\n\n</span><span class="s2">Who are you?</span><span class="se">\n\n</span><span class="s2">Best regards"</span><span class="p">,</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">path_save</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">send_email</span><span class="p">(</span><span class="n">SERVER</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>All emails always send in other thread.</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li>Previous: <a href="paths.html" title="previous chapter">Paths and files</a></li>
|
||||
<li>Next: <a href="application.html" title="next chapter">Application</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/email.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,152 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Examples — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="For Application" href="examples_app.html" />
|
||||
<link rel="prev" title="Base" href="base.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="examples">
|
||||
<h1>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Examples of macros used in production.</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples_app.html">For Application</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_app.html#make-custom-menu">Make custom menu</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_app.html#delete-menu">Delete menu</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples_calc.html">For Calc</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_calc.html#data-to-cell">Data to cell</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_calc.html#copy-visible-cells">Copy visible cells</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_calc.html#merge-by-row">Merge by row</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples_writer.html">For Writer</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_writer.html#set-autostyle-in-table">Set autostyle in table</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_writer.html#insert-math-formula">Insert math formula</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples_draw.html">For Draw</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_draw.html#save-image-from-clipboard">Save image from clipboard</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples_base.html">For Base</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_base.html#create-table">Create table</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_base.html#insert-data">Insert data</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_base.html#select-data">Select data</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="easymacro.html">Library easymacro.py</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Examples</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_app.html">For Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_calc.html">For Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_writer.html">For Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_draw.html">For Draw</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_base.html">For Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li>Previous: <a href="base.html" title="previous chapter">Base</a></li>
|
||||
<li>Next: <a href="examples_app.html" title="next chapter">For Application</a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/examples.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,158 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>For Application — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="For Calc" href="examples_calc.html" />
|
||||
<link rel="prev" title="Examples" href="examples.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="for-application">
|
||||
<h1>For Application<a class="headerlink" href="#for-application" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="make-custom-menu">
|
||||
<h2>Make custom menu<a class="headerlink" href="#make-custom-menu" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Macro example in library <code class="docutils literal notranslate"><span class="pre">mymacros</span></code></p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">show_info_debug</span><span class="p">():</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">INFO_DEBUG</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Insert custom menu in menu Tools in Calc.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">insert_menu_in_calc</span><span class="p">():</span>
|
||||
<span class="n">menus</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">menus</span><span class="p">[</span><span class="s1">'calc'</span><span class="p">]</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'Label'</span><span class="p">:</span> <span class="s1">'My Macros'</span><span class="p">,</span>
|
||||
<span class="s1">'CommandURL'</span><span class="p">:</span> <span class="s1">'zaz.my.macros'</span><span class="p">,</span>
|
||||
<span class="s1">'Index'</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||||
<span class="s1">'Submenu'</span><span class="p">:</span> <span class="p">[</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s1">'Label'</span><span class="p">:</span> <span class="s1">'Show info debug'</span><span class="p">,</span>
|
||||
<span class="s1">'CommandURL'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'library'</span><span class="p">:</span> <span class="s1">'mymacros'</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">:</span> <span class="s1">'show_info_debug'</span><span class="p">},</span>
|
||||
<span class="s1">'ShortCut'</span><span class="p">:</span> <span class="s1">'Ctrl+Shift+Alt+M'</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">],</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">menus</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="s1">'Tools'</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="delete-menu">
|
||||
<h2>Delete menu<a class="headerlink" href="#delete-menu" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">delete_menu</span><span class="p">():</span>
|
||||
<span class="n">menus</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">menus</span><span class="p">[</span><span class="s1">'calc'</span><span class="p">]</span>
|
||||
<span class="n">menus</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s1">'Tools'</span><span class="p">,</span> <span class="s1">'zaz.my.macros'</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="easymacro.html">Library easymacro.py</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="examples.html">Examples</a><ul class="current">
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">For Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_calc.html">For Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_writer.html">For Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_draw.html">For Draw</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_base.html">For Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="examples.html">Examples</a><ul>
|
||||
<li>Previous: <a href="examples.html" title="previous chapter">Examples</a></li>
|
||||
<li>Next: <a href="examples_calc.html" title="next chapter">For Calc</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/examples_app.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,208 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>For Base — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="prev" title="For Draw" href="examples_draw.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="for-base">
|
||||
<h1>For Base<a class="headerlink" href="#for-base" title="Permalink to this headline">¶</a></h1>
|
||||
<p>You need install <code class="docutils literal notranslate"><span class="pre">peewee</span></code></p>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">-U</span> <span class="pre">peewee</span></code></p>
|
||||
<section id="create-table">
|
||||
<h2>Create table<a class="headerlink" href="#create-table" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
<span class="kn">from</span> <span class="nn">peewee</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="n">database_proxy</span> <span class="o">=</span> <span class="n">DatabaseProxy</span><span class="p">()</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">BaseModel</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
|
||||
<span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
|
||||
<span class="n">database</span> <span class="o">=</span> <span class="n">database_proxy</span>
|
||||
<span class="n">legacy_table_names</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">Contacts</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
|
||||
<span class="nb">id</span> <span class="o">=</span> <span class="n">IdentityField</span><span class="p">()</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">CharField</span><span class="p">()</span>
|
||||
<span class="n">born</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">BaseDateField</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">create_table</span><span class="p">():</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/test.odb'</span>
|
||||
<span class="k">if</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
|
||||
<span class="n">db</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">db</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'base'</span><span class="p">,</span> <span class="p">{</span><span class="s1">'path'</span><span class="p">:</span> <span class="n">path</span><span class="p">})</span>
|
||||
|
||||
<span class="n">tables</span> <span class="o">=</span> <span class="p">[</span><span class="n">Contacts</span><span class="p">]</span>
|
||||
<span class="n">db</span><span class="o">.</span><span class="n">initialize</span><span class="p">(</span><span class="n">database_proxy</span><span class="p">,</span> <span class="n">tables</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="insert-data">
|
||||
<h2>Insert data<a class="headerlink" href="#insert-data" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">base_insert_data</span><span class="p">():</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/test.odb'</span>
|
||||
<span class="n">db</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">db</span><span class="o">.</span><span class="n">initialize</span><span class="p">(</span><span class="n">database_proxy</span><span class="p">)</span>
|
||||
|
||||
<span class="n">rows</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="nb">dict</span><span class="p">(</span><span class="n">name</span> <span class="o">=</span> <span class="s1">'Ingrid Bergman'</span><span class="p">,</span> <span class="n">born</span><span class="o">=</span><span class="n">app</span><span class="o">.</span><span class="n">dates</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2001</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)),</span>
|
||||
<span class="nb">dict</span><span class="p">(</span><span class="n">name</span> <span class="o">=</span> <span class="s1">'Sofia Loren'</span><span class="p">,</span> <span class="n">born</span><span class="o">=</span><span class="n">app</span><span class="o">.</span><span class="n">dates</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2002</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)),</span>
|
||||
<span class="nb">dict</span><span class="p">(</span><span class="n">name</span> <span class="o">=</span> <span class="s1">'Kim Novak'</span><span class="p">,</span> <span class="n">born</span><span class="o">=</span><span class="n">app</span><span class="o">.</span><span class="n">dates</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2003</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">)),</span>
|
||||
<span class="nb">dict</span><span class="p">(</span><span class="n">name</span> <span class="o">=</span> <span class="s1">'Jane Fonda'</span><span class="p">,</span> <span class="n">born</span><span class="o">=</span><span class="n">app</span><span class="o">.</span><span class="n">dates</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2004</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">)),</span>
|
||||
<span class="nb">dict</span><span class="p">(</span><span class="n">name</span> <span class="o">=</span> <span class="s1">'Marion Cotillar'</span><span class="p">,</span> <span class="n">born</span><span class="o">=</span><span class="n">app</span><span class="o">.</span><span class="n">dates</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2005</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">)),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span>
|
||||
<span class="n">Contactos</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="o">**</span><span class="n">row</span><span class="p">)</span><span class="o">.</span><span class="n">execute</span><span class="p">()</span>
|
||||
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="select-data">
|
||||
<h2>Select data<a class="headerlink" href="#select-data" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">base_select_data</span><span class="p">():</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/test.odb'</span>
|
||||
<span class="n">db</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">db</span><span class="o">.</span><span class="n">initialize</span><span class="p">(</span><span class="n">database_proxy</span><span class="p">)</span>
|
||||
|
||||
<span class="n">query</span> <span class="o">=</span> <span class="n">Contactos</span><span class="o">.</span><span class="n">select</span><span class="p">()</span>
|
||||
<span class="n">rows</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">get_query</span><span class="p">(</span><span class="n">query</span><span class="p">)</span><span class="o">.</span><span class="n">tuples</span>
|
||||
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">row</span><span class="p">)</span>
|
||||
|
||||
<span class="n">rows</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">get_query</span><span class="p">(</span><span class="n">query</span><span class="p">)</span><span class="o">.</span><span class="n">dicts</span>
|
||||
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">row</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>You can get tuples or dict:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'Ingrid Bergman'</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2001</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s1">'Sofia Loren'</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2002</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span>
|
||||
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s1">'Kim Novak'</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2003</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span>
|
||||
<span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="s1">'Jane Fonda'</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2004</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span>
|
||||
<span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="s1">'Marion Cotillar'</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2005</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
|
||||
|
||||
<span class="p">{</span><span class="s1">'id'</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Ingrid Bergman'</span><span class="p">,</span> <span class="s1">'born'</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2001</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)}</span>
|
||||
<span class="p">{</span><span class="s1">'id'</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Sofia Loren'</span><span class="p">,</span> <span class="s1">'born'</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2002</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)}</span>
|
||||
<span class="p">{</span><span class="s1">'id'</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Kim Novak'</span><span class="p">,</span> <span class="s1">'born'</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2003</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">)}</span>
|
||||
<span class="p">{</span><span class="s1">'id'</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Jane Fonda'</span><span class="p">,</span> <span class="s1">'born'</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2004</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">)}</span>
|
||||
<span class="p">{</span><span class="s1">'id'</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Marion Cotillar'</span><span class="p">,</span> <span class="s1">'born'</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">2005</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">)}</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="easymacro.html">Library easymacro.py</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="examples.html">Examples</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_app.html">For Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_calc.html">For Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_writer.html">For Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_draw.html">For Draw</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">For Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="examples.html">Examples</a><ul>
|
||||
<li>Previous: <a href="examples_draw.html" title="previous chapter">For Draw</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/examples_base.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,159 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>For Calc — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="For Writer" href="examples_writer.html" />
|
||||
<link rel="prev" title="For Application" href="examples_app.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="for-calc">
|
||||
<h1>For Calc<a class="headerlink" href="#for-calc" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="data-to-cell">
|
||||
<h2>Data to cell<a class="headerlink" href="#data-to-cell" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Automatic calculate size range.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">calc_data_to_cell</span><span class="p">():</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="p">(</span><span class="s1">'Month'</span><span class="p">,</span> <span class="s1">'Total'</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s1">'January'</span><span class="p">,</span> <span class="mi">100</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s1">'February'</span><span class="p">,</span> <span class="mi">200</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s1">'March'</span><span class="p">,</span> <span class="mi">300</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s1">'April'</span><span class="p">,</span> <span class="mi">400</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s1">'May'</span><span class="p">,</span> <span class="mi">500</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">data</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy-visible-cells">
|
||||
<h2>Copy visible cells<a class="headerlink" href="#copy-visible-cells" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">rangos</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">active</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span><span class="o">.</span><span class="n">current_region</span><span class="o">.</span><span class="n">visible</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">rangos</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">active</span><span class="p">[</span><span class="s1">'A15'</span><span class="p">]</span><span class="o">.</span><span class="n">select</span><span class="p">()</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">paste</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="merge-by-row">
|
||||
<h2>Merge by row<a class="headerlink" href="#merge-by-row" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">selection</span>
|
||||
<span class="n">rango</span><span class="o">.</span><span class="n">merge_by_row</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="easymacro.html">Library easymacro.py</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="examples.html">Examples</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_app.html">For Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">For Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_writer.html">For Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_draw.html">For Draw</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_base.html">For Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="examples.html">Examples</a><ul>
|
||||
<li>Previous: <a href="examples_app.html" title="previous chapter">For Application</a></li>
|
||||
<li>Next: <a href="examples_writer.html" title="next chapter">For Writer</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/examples_calc.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,144 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>For Draw — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="For Base" href="examples_base.html" />
|
||||
<link rel="prev" title="For Writer" href="examples_writer.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="for-draw">
|
||||
<h1>For Draw<a class="headerlink" href="#for-draw" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="save-image-from-clipboard">
|
||||
<h2>Save image from clipboard<a class="headerlink" href="#save-image-from-clipboard" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">save_image_from_clipboard</span><span class="p">():</span>
|
||||
<span class="c1"># Target path</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/Pictures'</span>
|
||||
|
||||
<span class="c1"># Open new hidden Draw doc</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">'draw'</span><span class="p">,</span> <span class="p">{</span><span class="s1">'Hidden'</span><span class="p">:</span> <span class="kc">True</span><span class="p">})</span>
|
||||
|
||||
<span class="c1"># Paste image from clipboard and return</span>
|
||||
<span class="n">image</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">paste</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># Save image</span>
|
||||
<span class="n">image</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Close document</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="s1">'Image saved'</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="easymacro.html">Library easymacro.py</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="examples.html">Examples</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_app.html">For Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_calc.html">For Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_writer.html">For Writer</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">For Draw</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_base.html">For Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="examples.html">Examples</a><ul>
|
||||
<li>Previous: <a href="examples_writer.html" title="previous chapter">For Writer</a></li>
|
||||
<li>Next: <a href="examples_base.html" title="next chapter">For Base</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/examples_draw.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,140 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>For Writer — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="For Draw" href="examples_draw.html" />
|
||||
<link rel="prev" title="For Calc" href="examples_calc.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="for-writer">
|
||||
<h1>For Writer<a class="headerlink" href="#for-writer" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="set-autostyle-in-table">
|
||||
<h2>Set autostyle in table<a class="headerlink" href="#set-autostyle-in-table" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">writer_table_set_style</span><span class="p">():</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">tables</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="s1">'Academic'</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="insert-math-formula">
|
||||
<h2>Insert math formula<a class="headerlink" href="#insert-math-formula" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">formula</span> <span class="o">=</span> <span class="s1">'%LAMBDA_{deg","t}=1 + </span><span class="si">%a</span><span class="s1">lpha_deg SQRT {M_t over M_{(t=0)}-1}~"."'</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">selection</span>
|
||||
<span class="n">text</span><span class="o">.</span><span class="n">insert_math</span><span class="p">(</span><span class="n">formula</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="easymacro.html">Library easymacro.py</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="examples.html">Examples</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_app.html">For Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_calc.html">For Calc</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">For Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_draw.html">For Draw</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="examples_base.html">For Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="examples.html">Examples</a><ul>
|
||||
<li>Previous: <a href="examples_calc.html" title="previous chapter">For Calc</a></li>
|
||||
<li>Next: <a href="examples_draw.html" title="next chapter">For Draw</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/examples_writer.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,205 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Introduction — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Configuration" href="config.html" />
|
||||
<link rel="prev" title="Welcome to ZAZ’s documentation!" href="../index.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="introduction">
|
||||
<h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="overview">
|
||||
<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
|
||||
<p>ZAZ is a script for rapid develop extensions and macros for <a class="reference external" href="https://libreoffice.org">LibreOffice</a>, in
|
||||
<a class="reference external" href="https://python.org">Python</a> of course.</p>
|
||||
<p>With ZAZ, you can create:</p>
|
||||
<ul class="simple">
|
||||
<li><p>Extensions for final user</p></li>
|
||||
<li><p>New components for used from Basic</p></li>
|
||||
<li><p>AddIn, new functions for Calc</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="requirements">
|
||||
<h2>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Python 3.7+</p></li>
|
||||
<li><p>LibreOffice 7.0+ with support for macros Python</p></li>
|
||||
<li><p>LibreOffice SDK, for new components and Add-In</p></li>
|
||||
</ul>
|
||||
<p>In:</p>
|
||||
<ul class="simple">
|
||||
<li><dl class="simple">
|
||||
<dt>ArchLinux</dt><dd><ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">pacman</span> <span class="pre">-S</span> <span class="pre">libreoffice-fresh-sdk</span></code></p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
<li><dl class="simple">
|
||||
<dt>Ubuntu 20.04+</dt><dd><ul>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">apt</span> <span class="pre">install</span> <span class="pre">libreoffice-script-provider-python</span> <span class="pre">libreoffice-dev</span></code></p></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="installation">
|
||||
<h2>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Clone this repository (recommended) or download it.</p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">clone</span> <span class="pre">https://git.cuates.net/elmau/zaz.git</span></code></p>
|
||||
<ul class="simple">
|
||||
<li><p>Move to.</p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">cd</span> <span class="pre">zaz/source</span></code></p>
|
||||
<ul class="simple">
|
||||
<li><p>Start new extension.</p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">./zaz.py</span> <span class="pre">-new</span> <span class="pre">-t</span> <span class="pre">~/projects</span> <span class="pre">-n</span> <span class="pre">MyFirstExtension</span></code></p>
|
||||
</section>
|
||||
<section id="my-first-extension">
|
||||
<h2>My first extension<a class="headerlink" href="#my-first-extension" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Move to:</p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">cd</span> <span class="pre">~/projects/MyFirstExtension</span></code></p>
|
||||
<ul class="simple">
|
||||
<li><p>Create:</p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">zaz.py</span> <span class="pre">-c</span></code>:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>↪ python zaz.py -c
|
||||
04/02/2021 23:07:50 - INFO - Created directories...
|
||||
04/02/2021 23:07:50 - INFO - Created files...
|
||||
04/02/2021 23:07:50 - INFO - Don't forget generate DOMAIN.pot for locales
|
||||
04/02/2021 23:07:50 - INFO - New extension: MyFirstExtension make successfully...
|
||||
Now, you can install and test: zaz.py -i
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Install and test:</p></li>
|
||||
</ul>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">zaz.py</span> <span class="pre">-i</span></code>:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>↪ python zaz.py -i
|
||||
04/02/2021 23:11:40 - INFO - Don't forget generate DOMAIN.pot for locales
|
||||
04/02/2021 23:11:40 - INFO - Compress OXT extension...
|
||||
04/02/2021 23:11:40 - INFO - Extension OXT created successfully...
|
||||
Copying: MyFirstExtension_v0.1.0.oxt
|
||||
|
||||
unopkg done.
|
||||
|
||||
04/02/2021 23:11:41 - INFO - Install extension successfully...
|
||||
04/02/2021 23:11:41 - INFO - Start LibreOffice...
|
||||
04/02/2021 23:11:53 - INFO - Extension make successfully...
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Introduction</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#overview">Overview</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#requirements">Requirements</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#installation">Installation</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#my-first-extension">My first extension</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="easymacro.html">Library easymacro.py</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li>Previous: <a href="../index.html" title="previous chapter">Welcome to ZAZ’s documentation!</a></li>
|
||||
<li>Next: <a href="config.html" title="next chapter">Configuration</a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/intro.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,669 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Paths and files — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Email" href="email.html" />
|
||||
<link rel="prev" title="Tools" href="tools.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="paths-and-files">
|
||||
<h1>Paths and files<a class="headerlink" href="#paths-and-files" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Remember, always import library.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<section id="get-info-path">
|
||||
<h2>Get info path<a class="headerlink" href="#get-info-path" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.ods'</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">file_name</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">ext</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">size</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">url</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Or get information in a tuple</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.ods'</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">info</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="exists-path">
|
||||
<h2>Exists path<a class="headerlink" href="#exists-path" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/test'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">path</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="path-is-file">
|
||||
<h2>Path is file<a class="headerlink" href="#path-is-file" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.ott'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">is_file</span><span class="p">(</span><span class="n">path</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="path-is-dir">
|
||||
<h2>Path is dir<a class="headerlink" href="#path-is-dir" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">is_dir</span><span class="p">(</span><span class="n">path</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-path-home">
|
||||
<h2>Get path home<a class="headerlink" href="#get-path-home" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">home</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-path-documents">
|
||||
<h2>Get path documents<a class="headerlink" href="#get-path-documents" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Configurate in LibreOffice Paths</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">documents</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-path-temp">
|
||||
<h2>Get path temp<a class="headerlink" href="#get-path-temp" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">temp_dir</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-path-from-libreoffice-configuration">
|
||||
<h2>Get path from LibreOffice configuration<a class="headerlink" href="#get-path-from-libreoffice-configuration" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Default get path documents.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">config</span><span class="p">()</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>All options in <a class="reference external" href="http://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1util_1_1XPathSettings.html">API XPathSettings</a></p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">config</span><span class="p">(</span><span class="s1">'Config'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-path-executable-python">
|
||||
<h2>Get path executable python<a class="headerlink" href="#get-path-executable-python" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_python</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">python</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_python</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="save-and-read-text-data">
|
||||
<h2>Save and read text data<a class="headerlink" href="#save-and-read-text-data" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Default encoding is UTF8</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="s2">"""Do you want to know who you are? Don't ask. Act!</span>
|
||||
<span class="s2">Action will delineate and define you.</span>
|
||||
|
||||
<span class="s2">Thomas Jefferson</span>
|
||||
<span class="s2">"""</span>
|
||||
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/temp.txt'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Change encoding</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="s1">'iso-8859-1'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="save-and-read-binary-data">
|
||||
<h2>Save and read binary data<a class="headerlink" href="#save-and-read-binary-data" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'Binary data'</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/temp.bin'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">save_bin</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">read_bin</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="join-paths">
|
||||
<h2>Join paths<a class="headerlink" href="#join-paths" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_home</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">home</span>
|
||||
<span class="n">file_name</span> <span class="o">=</span> <span class="s1">'test.ods'</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path_home</span><span class="p">,</span> <span class="n">file_name</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-a-temporal-path">
|
||||
<h2>Get a temporal path<a class="headerlink" href="#get-a-temporal-path" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_temp</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">tmp</span><span class="p">()</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_temp</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get with extension.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_temp</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">tmp</span><span class="p">(</span><span class="s1">'.txt'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_temp</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Save data in a temporal path</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="s2">"""He who receives an idea from me,</span>
|
||||
<span class="s2">receives instruction himself without lessening mine;</span>
|
||||
<span class="s2">as he who lights his taper at mine,</span>
|
||||
<span class="s2">receives light without darkening me.</span>
|
||||
|
||||
<span class="s2">Thomas Jefferson</span>
|
||||
<span class="s2">"""</span>
|
||||
<span class="n">path_tmp</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">save_tmp</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_tmp</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-a-temporal-dir">
|
||||
<h2>Get a temporal dir<a class="headerlink" href="#get-a-temporal-dir" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>All content and directory is deleted when exit context.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="s2">"""Do you want to know who you are? Don't ask. Act!</span>
|
||||
<span class="s2">Action will delineate and define you.</span>
|
||||
|
||||
<span class="s2">Thomas Jefferson</span>
|
||||
<span class="s2">"""</span>
|
||||
|
||||
<span class="k">with</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">dir_tmp</span><span class="p">()</span> <span class="k">as</span> <span class="n">dt</span><span class="p">:</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">dt</span><span class="p">))</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">dt</span><span class="p">,</span> <span class="s1">'test.txt'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">dt</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-path-for-save">
|
||||
<h2>Get path for save<a class="headerlink" href="#get-path-for-save" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Default open in user documents.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Open in other path.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_tmp</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">temp_dir</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">path_tmp</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Add one filter</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">filters</span><span class="o">=</span><span class="s1">'xml'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Add multiple filters</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">filters</span><span class="o">=</span><span class="s1">'xml,txt'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="select-directory">
|
||||
<h2>Select directory<a class="headerlink" href="#select-directory" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Default open in user documents.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_dir</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">get_dir</span><span class="p">()</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_dir</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Open in other path.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_tmp</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">temp_dir</span>
|
||||
<span class="n">path_dir</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">get_dir</span><span class="p">(</span><span class="n">path_tmp</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_dir</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-path-exists-file">
|
||||
<h2>Get path exists file<a class="headerlink" href="#get-path-exists-file" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Default open in user documents.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_file</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">get_file</span><span class="p">()</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_file</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Change init dir.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau'</span>
|
||||
<span class="n">path_file</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">get_file</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_file</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Add filter or filters.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_file</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">get_file</span><span class="p">(</span><span class="n">filters</span><span class="o">=</span><span class="s1">'ods'</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># or</span>
|
||||
|
||||
<span class="n">path_file</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">get_file</span><span class="p">(</span><span class="n">filters</span><span class="o">=</span><span class="s1">'ods,odt'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Can select multiple files.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_file</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">get_file</span><span class="p">(</span><span class="n">multiple</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="replace-extension">
|
||||
<h2>Replace extension<a class="headerlink" href="#replace-extension" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myFile.ods'</span>
|
||||
<span class="n">path_new</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">replace_ext</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s1">'pdf'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_new</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="path-in-format-url-system">
|
||||
<h2>Path in format URL <-> System<a class="headerlink" href="#path-in-format-url-system" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myFile.ods'</span>
|
||||
<span class="n">path_url</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">to_url</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_url</span><span class="p">)</span>
|
||||
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">to_system</span><span class="p">(</span><span class="n">path_url</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="delete-files-and-directories">
|
||||
<h2>Delete files and directories<a class="headerlink" href="#delete-files-and-directories" title="Permalink to this headline">¶</a></h2>
|
||||
<p><strong>CAUTION</strong>: Delete files and directories immediately, always confirm this action.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/temp.bin'</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">kill</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Delete directory and all content.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/safe_for_delete'</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">kill</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-files">
|
||||
<h2>Get files<a class="headerlink" href="#get-files" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This method use library <cite>pathlib</cite></p>
|
||||
<ul class="simple">
|
||||
<li><p>Get files not recursively</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/Documents'</span>
|
||||
<span class="n">files</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">files</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">files</span><span class="p">:</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Add filter</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">files</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">files</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s1">'*.pdf'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get from this directory and all subdirectories, recursively</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">files</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">files</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s1">'**/*.pdf'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This method use <cite>os.walk</cite></p>
|
||||
<ul class="simple">
|
||||
<li><p>Get content files recursively</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/Documents'</span>
|
||||
<span class="n">files</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">files</span><span class="p">:</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Add filters</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">files</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s1">'ods'</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># or filters</span>
|
||||
|
||||
<span class="n">files</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s1">'ods|odt'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-directories">
|
||||
<h2>Get directories<a class="headerlink" href="#get-directories" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This method use library <cite>pathlib</cite></p>
|
||||
<ul class="simple">
|
||||
<li><p>Get directories in path not recursively</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/Documents'</span>
|
||||
<span class="n">folders</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">dirs</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">folders</span><span class="p">:</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>This method use <cite>os.walk</cite></p>
|
||||
<ul class="simple">
|
||||
<li><p>Get directories in path recursively</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/Documents'</span>
|
||||
<span class="n">folders</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">walk_dirs</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">folders</span><span class="p">:</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get info in a tuple (ID_FOLDER, ID_PARENT, NAME)</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/Documents'</span>
|
||||
<span class="n">folders</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">walk_dirs</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">folders</span><span class="p">:</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-install-path-extension-from-id">
|
||||
<h2>Get install path extension from id<a class="headerlink" href="#get-install-path-extension-from-id" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">id_ext</span> <span class="o">=</span> <span class="s1">'net.elmau.zaz.EasyMacro'</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">from_id</span><span class="p">(</span><span class="n">id_ext</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="m">24</span>/06/2021 <span class="m">21</span>:47:29 - DEBUG - /home/mau/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu20665x29msz.tmp_/ZAZEasyMacro_v0.1.0.oxt
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="verify-if-application-exists">
|
||||
<h2>Verify if application exists<a class="headerlink" href="#verify-if-application-exists" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app_name</span> <span class="o">=</span> <span class="s1">'nosoffice'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">exists_app</span><span class="p">(</span><span class="n">app_name</span><span class="p">))</span>
|
||||
|
||||
<span class="n">app_name</span> <span class="o">=</span> <span class="s1">'soffice'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">exists_app</span><span class="p">(</span><span class="n">app_name</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="open-any-type-file">
|
||||
<h2>Open any type file<a class="headerlink" href="#open-any-type-file" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Open with default application in OS.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/Downloads/file.pdf'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/Projects/libre_office/zaz/doc/build/index.html'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="save-and-read-json">
|
||||
<h2>Save and read json<a class="headerlink" href="#save-and-read-json" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/data.json'</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'type'</span><span class="p">:</span> <span class="s1">'calc'</span><span class="p">,</span>
|
||||
<span class="s1">'name'</span><span class="p">:</span> <span class="s1">'myfile.ods'</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">to_json</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">from_json</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="save-and-read-csv">
|
||||
<h2>Save and read csv<a class="headerlink" href="#save-and-read-csv" title="Permalink to this headline">¶</a></h2>
|
||||
<p>You can used the same way that <a class="reference external" href="https://docs.python.org/3.7/library/csv.html">python csv</a></p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/data.csv'</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'one'</span><span class="p">,</span> <span class="n">app</span><span class="o">.</span><span class="n">now</span><span class="p">()),</span>
|
||||
<span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s1">'two'</span><span class="p">,</span> <span class="n">app</span><span class="o">.</span><span class="n">now</span><span class="p">()),</span>
|
||||
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s1">'three'</span><span class="p">,</span> <span class="n">app</span><span class="o">.</span><span class="n">now</span><span class="p">()),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">from_csv</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="zip-unzip">
|
||||
<h2>Zip, unzip<a class="headerlink" href="#zip-unzip" title="Permalink to this headline">¶</a></h2>
|
||||
<p>For default, save in the same directory with the same name + <cite>.zip</cite></p>
|
||||
<ul class="simple">
|
||||
<li><p>Zip file</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="o">=</span> <span class="s1">'/home/mau/logo.svg'</span>
|
||||
<span class="n">path_zip</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">zip</span><span class="p">(</span><span class="n">source</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">path_zip</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Zip directory</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="o">=</span> <span class="s1">'/home/mau/test'</span>
|
||||
<span class="n">path_zip</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">zip</span><span class="p">(</span><span class="n">source</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">path_zip</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Set target</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="o">=</span> <span class="s1">'/home/mau/logo.svg'</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.zip'</span>
|
||||
<span class="n">path_zip</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">zip</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">path_zip</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Read content of zip</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_zip</span> <span class="o">=</span> <span class="s1">'/home/mau/test.zip'</span>
|
||||
<span class="n">names</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">zip_content</span><span class="p">(</span><span class="n">path_zip</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">names</span><span class="p">:</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Unzip in the same directory</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_zip</span> <span class="o">=</span> <span class="s1">'/home/mau/test.zip'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">unzip</span><span class="p">(</span><span class="n">path_zip</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Unzip in other directory</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_zip</span> <span class="o">=</span> <span class="s1">'/home/mau/test.zip'</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="s1">'/srv/mau'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">unzip</span><span class="p">(</span><span class="n">path_zip</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Extract one or more files</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path_zip</span> <span class="o">=</span> <span class="s1">'/home/mau/test.zip'</span>
|
||||
<span class="n">members</span> <span class="o">=</span> <span class="s1">'calc.ods'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">unzip</span><span class="p">(</span><span class="n">path_zip</span><span class="p">,</span> <span class="n">members</span><span class="o">=</span><span class="n">members</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># or</span>
|
||||
|
||||
<span class="n">members</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'calc.ods'</span><span class="p">,</span> <span class="s1">'subdir/file.md'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Merge zips</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">zips</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s1">'/home/mau/test.zip'</span><span class="p">,</span>
|
||||
<span class="s1">'/home/mau/pictures.zip'</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="s1">'/srv/mau/file.zip'</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">merge_zip</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">zips</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy-files">
|
||||
<h2>Copy files<a class="headerlink" href="#copy-files" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Copy with the same name</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/image.png'</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="s1">'/home/mau/Pictures'</span>
|
||||
<span class="n">path_new</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_new</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Copy with other name</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/image.png'</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="s1">'/home/mau/Pictures'</span>
|
||||
<span class="n">new_name</span> <span class="o">=</span> <span class="s1">'other_name.png'</span>
|
||||
<span class="n">path_new</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">paths</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">path_new</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li>Previous: <a href="tools.html" title="previous chapter">Tools</a></li>
|
||||
<li>Next: <a href="email.html" title="next chapter">Email</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/paths.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,589 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Tools — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Paths and files" href="paths.html" />
|
||||
<link rel="prev" title="Tools for debug" href="tools_for_debug.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="tools">
|
||||
<h1>Tools<a class="headerlink" href="#tools" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Remember, always import library.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<section id="info-from-pc">
|
||||
<h2>Info from PC<a class="headerlink" href="#info-from-pc" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Operate system</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">OS</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Current user</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">USER</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Name PC</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">PC</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Name desktop, only GNU/Linux</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">DESKTOP</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Language</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">LANG</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Language with variant</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">LANGUAGE</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Application name</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">NAME</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Application version</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">VERSION</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>In Windows</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">IS_WIN</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>In Mac</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">IS_MAC</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="message-box">
|
||||
<h2>Message Box<a class="headerlink" href="#message-box" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">IS_WIN</span><span class="p">,</span> <span class="s1">'My Macro'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="show-warning">
|
||||
<h2>Show warning<a class="headerlink" href="#show-warning" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s1">'Caution, this action is dangerous'</span>
|
||||
<span class="n">title</span> <span class="o">=</span> <span class="s1">'My App'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">title</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="show-error-box">
|
||||
<h2>Show error box<a class="headerlink" href="#show-error-box" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s1">'ERROR: Contact technical support'</span>
|
||||
<span class="n">title</span> <span class="o">=</span> <span class="s1">'My App'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">errorbox</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">title</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="make-question">
|
||||
<h2>Make question<a class="headerlink" href="#make-question" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s1">'Is easy Python?'</span>
|
||||
<span class="n">title</span> <span class="o">=</span> <span class="s1">'My App'</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">question</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">title</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="inputbox">
|
||||
<h2>InputBox<a class="headerlink" href="#inputbox" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Normal data</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s1">'Type your name'</span>
|
||||
<span class="n">default</span> <span class="o">=</span> <span class="s1">''</span>
|
||||
<span class="n">title</span> <span class="o">=</span> <span class="s1">'My App'</span>
|
||||
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">inputbox</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">default</span><span class="p">,</span> <span class="n">title</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Private data</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s1">'Type your password'</span>
|
||||
<span class="n">default</span> <span class="o">=</span> <span class="s1">''</span>
|
||||
<span class="n">title</span> <span class="o">=</span> <span class="s1">'My App'</span>
|
||||
<span class="n">echochar</span> <span class="o">=</span> <span class="s2">"*"</span>
|
||||
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">inputbox</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">default</span><span class="p">,</span> <span class="n">title</span><span class="p">,</span> <span class="n">echochar</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="date-and-times">
|
||||
<h2>Date and times<a class="headerlink" href="#date-and-times" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Get today</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">today</span><span class="p">())</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get now</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">now</span><span class="p">())</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get now only time</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">now</span><span class="p">(</span><span class="kc">True</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get <a class="reference external" href="https://en.wikipedia.org/wiki/Unix_time">epoch time</a></p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">get_epoch</span><span class="p">())</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Simple measure time</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
|
||||
<span class="n">seconds</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">end</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">seconds</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="thread">
|
||||
<h2>Thread<a class="headerlink" href="#thread" title="Permalink to this headline">¶</a></h2>
|
||||
<p>You can execute any macro in thread</p>
|
||||
<ul class="simple">
|
||||
<li><p>Normal execution</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">show_time</span><span class="p">(</span><span class="n">seconds</span><span class="p">):</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">seconds</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">NAME</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">args</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="n">show_time</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="s1">'Finish...'</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Run in thread</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@app</span><span class="o">.</span><span class="n">run_in_thread</span>
|
||||
<span class="k">def</span> <span class="nf">show_time</span><span class="p">(</span><span class="n">seconds</span><span class="p">):</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">seconds</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">NAME</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">args</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="n">show_time</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="s1">'Finish...'</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="dictionary-properties">
|
||||
<h2>Dictionary <-> properties<a class="headerlink" href="#dictionary-properties" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">args</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'Hidden'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<span class="s1">'Password'</span><span class="p">:</span> <span class="s1">'letmein'</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">properties</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">dict_to_property</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span>
|
||||
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">data_to_dict</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="tuples-or-lists-to-dictionary">
|
||||
<h2>Tuples or lists to dictionary<a class="headerlink" href="#tuples-or-lists-to-dictionary" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">tuple_of_tuples</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="p">(</span><span class="s1">'Hidden'</span><span class="p">,</span> <span class="kc">True</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s1">'Password'</span><span class="p">,</span> <span class="s1">'letmein'</span><span class="p">),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">data_to_dict</span><span class="p">(</span><span class="n">tuple_of_tuples</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="n">list_of_lists</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="p">[</span><span class="s1">'Hidden'</span><span class="p">,</span> <span class="kc">True</span><span class="p">],</span>
|
||||
<span class="p">[</span><span class="s1">'Password'</span><span class="p">,</span> <span class="s1">'letmein'</span><span class="p">],</span>
|
||||
<span class="p">]</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">data_to_dict</span><span class="p">(</span><span class="n">list_of_lists</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="json">
|
||||
<h2>Json<a class="headerlink" href="#json" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'Hidden'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<span class="s1">'Password'</span><span class="p">:</span> <span class="s1">'letmein'</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">json</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">json_dumps</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">json</span><span class="p">)</span>
|
||||
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">json_loads</span><span class="p">(</span><span class="n">json</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="call-macros">
|
||||
<h2>Call Macros<a class="headerlink" href="#call-macros" title="Permalink to this headline">¶</a></h2>
|
||||
<p>You can any macro, for default call macros Python.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">show_message</span><span class="p">():</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">INFO_DEBUG</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">args</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'library'</span><span class="p">:</span> <span class="s1">'test'</span><span class="p">,</span>
|
||||
<span class="s1">'name'</span><span class="p">:</span> <span class="s1">'show_message'</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">call_macro</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Of course is better call directly if both macros are the same languaje, but, you can call macro in Basic too.</p>
|
||||
<div class="highlight-vbnet notranslate"><div class="highlight"><pre><span></span><span class="k">Sub</span> <span class="nf">show_message</span><span class="p">()</span>
|
||||
<span class="n">MsgBox</span> <span class="s">"Basic from Python"</span>
|
||||
<span class="k">End</span> <span class="k">Sub</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Call from Python with.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">args</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'language'</span><span class="p">:</span> <span class="s1">'Basic'</span><span class="p">,</span>
|
||||
<span class="s1">'library'</span><span class="p">:</span> <span class="s1">'Standard'</span><span class="p">,</span>
|
||||
<span class="s1">'module'</span><span class="p">:</span> <span class="s1">'Module1'</span><span class="p">,</span>
|
||||
<span class="s1">'name'</span><span class="p">:</span> <span class="s1">'show_message'</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">call_macro</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Execute macro in other thread</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">call_macro</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="call-external-program">
|
||||
<h2>Call external program<a class="headerlink" href="#call-external-program" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app_name</span> <span class="o">=</span> <span class="s1">'gnome-calculator'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">app_name</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="s1">'ok'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Call command line and capture output</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">args</span> <span class="o">=</span> <span class="s1">'ls -lh ~'</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="m">21</span>/06/2021 <span class="m">22</span>:27:22 - DEBUG - total <span class="m">1</span>.3M
|
||||
drwxr-xr-x <span class="m">5</span> mau mau <span class="m">4</span>.0K Jun <span class="m">17</span> <span class="m">13</span>:09 Desktop
|
||||
drwxr-xr-x <span class="m">6</span> mau mau <span class="m">4</span>.0K Jun <span class="m">15</span> <span class="m">12</span>:35 Documents
|
||||
drwxr-xr-x <span class="m">2</span> mau mau <span class="m">4</span>.0K Jun <span class="m">21</span> <span class="m">20</span>:26 Downloads
|
||||
drwxr-xr-x <span class="m">2</span> mau mau <span class="m">4</span>.0K Jun <span class="m">21</span> <span class="m">16</span>:18 Pictures
|
||||
drwxr-xr-x <span class="m">13</span> mau mau <span class="m">4</span>.0K Jun <span class="m">21</span> <span class="m">15</span>:34 Projects
|
||||
drwxr-xr-x <span class="m">2</span> mau mau <span class="m">4</span>.0K May <span class="m">11</span> <span class="m">18</span>:48 Templates
|
||||
drwxr-xr-x <span class="m">2</span> mau mau <span class="m">4</span>.0K Jun <span class="m">20</span> <span class="m">23</span>:27 Videos
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Call command line and capture output line by line.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">args</span> <span class="o">=</span> <span class="s1">'ls -lh /home/mau'</span>
|
||||
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">app</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="m">21</span>/06/2021 <span class="m">22</span>:34:42 - DEBUG - total <span class="m">1</span>.3M
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:34:42 - DEBUG - drwxr-xr-x <span class="m">5</span> mau mau <span class="m">4</span>.0K Jun <span class="m">17</span> <span class="m">13</span>:09 Desktop
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:34:42 - DEBUG - drwxr-xr-x <span class="m">6</span> mau mau <span class="m">4</span>.0K Jun <span class="m">15</span> <span class="m">12</span>:35 Documents
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:34:42 - DEBUG - drwxr-xr-x <span class="m">2</span> mau mau <span class="m">4</span>.0K Jun <span class="m">21</span> <span class="m">20</span>:26 Downloads
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:34:42 - DEBUG - -rw-r----- <span class="m">1</span> mau mau <span class="m">1</span>.3M Jun <span class="m">14</span> <span class="m">11</span>:53 out.png
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:34:42 - DEBUG - drwxr-xr-x <span class="m">2</span> mau mau <span class="m">4</span>.0K Jun <span class="m">21</span> <span class="m">16</span>:18 Pictures
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:34:42 - DEBUG - drwxr-xr-x <span class="m">13</span> mau mau <span class="m">4</span>.0K Jun <span class="m">21</span> <span class="m">15</span>:34 Projects
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:34:42 - DEBUG - drwxr-xr-x <span class="m">2</span> mau mau <span class="m">4</span>.0K May <span class="m">11</span> <span class="m">18</span>:48 Templates
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:34:42 - DEBUG - drwxr-xr-x <span class="m">2</span> mau mau <span class="m">4</span>.0K Jun <span class="m">20</span> <span class="m">23</span>:27 Videos
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="timer">
|
||||
<h2>Timer<a class="headerlink" href="#timer" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Execute any macro every seconds.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">TIMER_NAME</span> <span class="o">=</span> <span class="s1">'clock'</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">show_time</span><span class="p">():</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">now</span><span class="p">(</span><span class="kc">True</span><span class="p">))</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">start_clock</span><span class="p">():</span>
|
||||
<span class="n">seconds</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="n">macro</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'library'</span><span class="p">:</span> <span class="s1">'test'</span><span class="p">,</span>
|
||||
<span class="s1">'name'</span><span class="p">:</span> <span class="s1">'show_time'</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">start_timer</span><span class="p">(</span><span class="n">TIMER_NAME</span><span class="p">,</span> <span class="n">seconds</span><span class="p">,</span> <span class="n">macro</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">stop_clock</span><span class="p">():</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">stop_timer</span><span class="p">(</span><span class="n">TIMER_NAME</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">args</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="n">start_clock</span><span class="p">()</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Execute <cite>stop_clock</cite> for stop timer.</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="m">21</span>/06/2021 <span class="m">22</span>:43:17 - INFO - Timer started... show_time
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:43:18 - DEBUG - <span class="m">22</span>:43:18.080315
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:43:19 - DEBUG - <span class="m">22</span>:43:19.082211
|
||||
...
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:43:46 - DEBUG - <span class="m">22</span>:43:46.126446
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:43:47 - DEBUG - <span class="m">22</span>:43:47.128487
|
||||
<span class="m">21</span>/06/2021 <span class="m">22</span>:43:47 - INFO - Timer stopped... show_time
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-digest">
|
||||
<h2>Get digest<a class="headerlink" href="#get-digest" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="s1">'LibreOffice with Python'</span>
|
||||
|
||||
<span class="n">digest</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">sha256</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">digest</span><span class="p">)</span>
|
||||
|
||||
<span class="n">digest</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">sha512</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">digest</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="save-and-get-configurations">
|
||||
<h2>Save and get configurations<a class="headerlink" href="#save-and-get-configurations" title="Permalink to this headline">¶</a></h2>
|
||||
<p>You can save any data.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">my_app</span> <span class="o">=</span> <span class="s1">'my_extension'</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s1">'path'</span><span class="p">:</span> <span class="s1">'/home/mau/work'</span><span class="p">,</span>
|
||||
<span class="s1">'save_data'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">set_config</span><span class="p">(</span><span class="s1">'config'</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">my_app</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="s1">'Save config'</span><span class="p">)</span>
|
||||
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_config</span><span class="p">(</span><span class="s1">'config'</span><span class="p">,</span> <span class="n">my_app</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="render-string">
|
||||
<h2>Render string<a class="headerlink" href="#render-string" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">template</span> <span class="o">=</span> <span class="s2">"""Hello $name</span>
|
||||
|
||||
<span class="s2">I send you this $file_name</span>
|
||||
|
||||
<span class="s2">Best regards</span>
|
||||
<span class="s2">"""</span>
|
||||
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Ingrid Bergman'</span><span class="p">,</span> <span class="s1">'file_name'</span><span class="p">:</span> <span class="s1">'letter_love.odt'</span><span class="p">}</span>
|
||||
|
||||
<span class="n">render</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">template</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">render</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="encrypt-decrypt">
|
||||
<h2>Encrypt decrypt<a class="headerlink" href="#encrypt-decrypt" title="Permalink to this headline">¶</a></h2>
|
||||
<p>You need install library <a class="reference external" href="https://github.com/pyca/cryptography">cryptography</a></p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
<span class="kn">from</span> <span class="nn">conf</span> <span class="kn">import</span> <span class="n">PASSWORD</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">encrypt_decrypt</span><span class="p">():</span>
|
||||
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="s1">'My super secret data'</span>
|
||||
<span class="n">token</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">encrypt</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">PASSWORD</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">token</span><span class="p">)</span>
|
||||
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">decrypt</span><span class="p">(</span><span class="n">token</span><span class="p">,</span> <span class="n">PASSWORD</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="simple-url-open">
|
||||
<h2>Simple url open<a class="headerlink" href="#simple-url-open" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Get text data</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">url</span> <span class="o">=</span> <span class="s1">'https://api.ipify.org'</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">url_open</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get json data</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">url</span> <span class="o">=</span> <span class="s1">'https://api.ipify.org?format=json'</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">url_open</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">get_json</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>For more complex case, you can used <a class="reference external" href="https://docs.python-requests.org">requests</a> or <a class="reference external" href="https://www.python-httpx.org/">httpx</a></p>
|
||||
</section>
|
||||
<section id="color">
|
||||
<h2>Color<a class="headerlink" href="#color" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Look colors that you can used in <a class="reference external" href="https://en.wikipedia.org/wiki/Web_colors">web colors</a></p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">color_name</span> <span class="o">=</span> <span class="s1">'darkblue'</span>
|
||||
<span class="n">color</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_color</span><span class="p">(</span><span class="n">color_name</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">color</span><span class="p">)</span>
|
||||
|
||||
<span class="n">color_rgb</span> <span class="o">=</span> <span class="p">(</span><span class="mi">125</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
|
||||
<span class="n">color</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_color</span><span class="p">(</span><span class="n">color_rgb</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">color</span><span class="p">)</span>
|
||||
|
||||
<span class="n">color_html</span> <span class="o">=</span> <span class="s1">'#008080'</span>
|
||||
<span class="n">color</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_color</span><span class="p">(</span><span class="n">color_html</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">color</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li>Previous: <a href="tools_for_debug.html" title="previous chapter">Tools for debug</a></li>
|
||||
<li>Next: <a href="paths.html" title="next chapter">Paths and files</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/tools.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,241 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Tools for debug — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Tools" href="tools.html" />
|
||||
<link rel="prev" title="Library easymacro.py" href="easymacro.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="tools-for-debug">
|
||||
<h1>Tools for debug<a class="headerlink" href="#tools-for-debug" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="info-debug">
|
||||
<h2>INFO_DEBUG<a class="headerlink" href="#info-debug" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Show info debug, show in message box.</p>
|
||||
<p>If you have any problem in your code, you can <a class="reference external" href="https://git.cuates.net/elmau/zaz/issues">open issue</a> in this project,
|
||||
always copy the information of INFO_DEBUG in your ticket.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">info</span><span class="p">():</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">INFO_DEBUG</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Show in shell.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">info</span><span class="p">():</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">INFO_DEBUG</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="log-error">
|
||||
<h2>Log error<a class="headerlink" href="#log-error" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Show error message in shell.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">error</span><span class="p">():</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="s1">'My error 500'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="log-debug">
|
||||
<h2>Log debug<a class="headerlink" href="#log-debug" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Show debug message in shell.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">error</span><span class="p">():</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="s1">'Verify this data...'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="log-info">
|
||||
<h2>Log info<a class="headerlink" href="#log-info" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Show info message in shell.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">error</span><span class="p">():</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="s1">'Start process...'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="log-to-file">
|
||||
<h2>Log to file<a class="headerlink" href="#log-to-file" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Save log to file, automatic add date and time.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">log</span><span class="p">():</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">save_log</span><span class="p">(</span><span class="s1">'/home/mau/log.txt'</span><span class="p">,</span> <span class="s1">'PyUNO'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">save_log</span><span class="p">(</span><span class="s1">'/home/mau/log.txt'</span><span class="p">,</span> <span class="n">app</span><span class="o">.</span><span class="n">INFO_DEBUG</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="message-box">
|
||||
<h2>Message box<a class="headerlink" href="#message-box" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Show any data in message box</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">message</span><span class="p">():</span>
|
||||
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="s1">'Please, save the planet'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'one'</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="s1">'three'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'name'</span><span class="p">:</span> <span class="s1">'Teresa'</span><span class="p">}</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="catch-exceptions">
|
||||
<h2>Catch exceptions<a class="headerlink" href="#catch-exceptions" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Sometimes, for difficult errors, you can catch exceptions.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
|
||||
<span class="nd">@app</span><span class="o">.</span><span class="n">catch_exception</span>
|
||||
<span class="k">def</span> <span class="nf">test</span><span class="p">():</span>
|
||||
<span class="n">r</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">/</span> <span class="mi">0</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>And not, not used you this function in production.</p>
|
||||
</section>
|
||||
<section id="call-mri">
|
||||
<h2>Call MRI<a class="headerlink" href="#call-mri" title="Permalink to this headline">¶</a></h2>
|
||||
<p><a class="reference external" href="https://github.com/hanya/MRI">MRI</a> is the better extension for debug any object in LibreOffice, you need
|
||||
install before call it.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">error</span><span class="p">():</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">mri</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li>Previous: <a href="easymacro.html" title="previous chapter">Library easymacro.py</a></li>
|
||||
<li>Next: <a href="tools.html" title="next chapter">Tools</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/tools_for_debug.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,135 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Writer — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Base" href="base.html" />
|
||||
<link rel="prev" title="Calc" href="calc.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="writer">
|
||||
<h1>Writer<a class="headerlink" href="#writer" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Remember, always import library.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<section id="current-doc">
|
||||
<h2>Current doc<a class="headerlink" href="#current-doc" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li>Previous: <a href="calc.html" title="previous chapter">Calc</a></li>
|
||||
<li>Next: <a href="base.html" title="next chapter">Base</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/writer.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue