summaryrefslogtreecommitdiff
path: root/doc/Howto_Write_Plugins
blob: bb63120d08d29c02a565c016539f8e49812bbe1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
HowTo Write A Plugin For Portato
=================================

Writing plugins for Portato is quite easy: (Nearly) all you have to do is to write a plain Python module :).

A plugin has two more builtins than a normal Python module:

    ``Plugin``
        This is a class representing a plugin.

    ``register``
        A function which you have to call to get the your plugin added to Portato.

In this module you need to have at least one class, which inherits from ``Plugin``. This class does all the handling you want your plugin to do. If you want, you can implement more classes - from Portato's view they are handled as different plugins. Thus: It is not the module hierarchy, but the classes that count.
Add the end you only call ``register`` once for each class and are done :).

Of course there are some things you should bare in mind:
    
    1. Do not use the ``__init__`` method, but ``init``.
    2. Do not use a member which shadows one from the original class:
       ``description``, ``author``, ``status``, ``menus``, ``name``, ``calls``, ``deps``, ``enabled``, ``add_menu``, ``add_call``
    3. Of course you can *use* the members mentioned under point 2.

For the details, please see the source code at the moment or write your question to portato@necoro.net

.. vim: ft=rst
an> 2014-03-24Add some commonly used completions for `pass git`Dmitry Medvinsky1-0/+3 2014-03-24Update copyright years and email addressDmitry Medvinsky1-1/+1 2014-03-24Add `-p` `--path` option completion for `pass init`Dmitry Medvinsky1-0/+1 2014-03-23Use heredoc for unset error.Jason A. Donenfeld1-4/+6 Suggested-by: Tom Vincent <pass@tlvince.com> 2014-03-23umask: allow overridableJason A. Donenfeld2-1/+4 Suggested-by: Matthew Richardson <m.richardson@ed.ac.uk> 2014-03-23Heredoc refresh.Jason A. Donenfeld1-43/+45 2014-03-23clip: wait longer for slow systemsJason A. Donenfeld2-2/+2 2014-03-22gpg: allow the use of gpg1 with or without agentJason A. Donenfeld1-10/+15 Suggested-by: Matthieu Weber <mweber@free.fr> 2014-03-22clip: rename SELECTION to X_SELECTIONJason A. Donenfeld2-6/+6 2014-03-22Version bump ahead of release.Jason A. Donenfeld1-1/+1 2014-03-22Makefile: do not use recursion and organizeJason A. Donenfeld12-9/+7 2014-03-22clip: suppress kill errorJason A. Donenfeld2-3/+3 2014-03-22clip: do not race on osxJason A. Donenfeld1-5/+5 2014-03-22clip: use pkill instead of procJason A. Donenfeld1-1/+1 2014-03-20Keepass import should include root-level entriesErik Mackdanz1-0/+1 Repro steps: 1. In KeePass, add some entries as children of the root node 2. Export the KeePass to foo.xml 3. 'keepass2pass.py -f foo.xml' Expect: all entries imported Actual: root-level entries are skipped 2014-03-20keepassx2pass: friendly title fieldPhilip Chase1-1/+24 This patch removes several special characters while attempting to preserve as much meaning in the filename as possible. These changes are made to the KeepassX title before it is used as a file password store filename: - Spaces between words in file names are replaced with camelCasing. - The characters \ | ( ) are each replaced with a hyphen. - Trailing hypens are removed. - @ is replaced with "At" - ' is removed