summaryrefslogtreecommitdiff
path: root/doc/Howto_Write_Plugins
blob: 4fce64d221afec538a788be77460866a42471d90 (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 declare a member which shadows one from the original class:
       ``description``, ``author``, ``status``, ``menus``, ``name``, ``calls``, ``deps``, ``enabled``, ``add_widget``, ``create_widget``, ``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
34f&follow=1'>First quick hack to have a world listRené 'Necoro' Neumann3-2/+24 2009-09-06Re-formulate the debug message if a menu file has been found.René 'Necoro' Neumann1-1/+1 2009-09-06Update ui files with gladeRené 'Necoro' Neumann8-72/+167 2009-09-06Install .menuRené 'Necoro' Neumann1-1/+1 2009-09-06Automatic loading of the external menuRené 'Necoro' Neumann2-3/+25 2009-09-06Make glade update the MainWindow.ui fileRené 'Necoro' Neumann1-85/+134 2009-09-06Moved the menu to an extra fileRené 'Necoro' Neumann2-210/+207 2009-09-05One database instance is enough :)René 'Necoro' Neumann1-7/+18 2009-09-05Print database type at the bottom of exceptions. NOTE: This does not handle m...René 'Necoro' Neumann2-1/+6 2009-09-05Fix an error, where a category vanishes after refreshing, using the EixSQLDat...René 'Necoro' Neumann2-1/+19 2009-09-03And here is the debugging again :) ... using ctypesRené 'Necoro' Neumann1-1/+8 2009-09-03Screw debugging ... prefer the ctypes approach to get rid of yet another c-mo...René 'Necoro' Neumann3-27/+11 2009-09-03Use this wrapper instead of ctypes to set the textdomain and stuff for the gt...René 'Necoro' Neumann1-9/+5 2009-09-03Add small wrapper to C-gettextRené 'Necoro' Neumann2-1/+22 2009-08-31Update messages.potRené 'Necoro' Neumann1-42/+94 2009-08-31Removed the gtk- strings from translationsRené 'Necoro' Neumann7-3639/+3479 2009-08-31Removed the 'translatable' attribute from 'gtk-*' stringsRené 'Necoro' Neumann5-11/+11 2009-08-31Removed TODO. Renamed ChangeLog to TODORené 'Necoro' Neumann2-40/+0 2009-08-27Only import stuff if necessaryRené 'Necoro' Neumann1-8/+8 2009-08-25Release the threadQueue-Lock in syncv0.13René 'Necoro' Neumann1-0/+1 2009-08-25Updated portugese translationAlberto Federman Neto1-650/+687 2009-08-15Update spanish translationDaniel Halens1-245/+258 2009-08-15Use boolean flags instead of obscure C flags for ipc.MessageQueueRené 'Necoro' Neumann3-13/+15 2009-08-15TypoRené 'Necoro' Neumann1-1/+1 2009-08-15Enhanced the extensions.shRené 'Necoro' Neumann1-3/+8 2009-08-15Move eix-format to correct locationRené 'Necoro' Neumann1-0/+0