← Back to team overview

kicad-developers team mailing list archive

Re: Better organizing of Python plugins using subdirectories

 

That is something I wondered when first looking at this stuff :-) I think it is a good idea. In fact I was about to ask something like this too, but I did not have the guts to do so. Being new to KiCAD and this mailing list and all.. ;-)

Btw, isn't there also a ~/.kicad folder where program settings are stored? Maybe it is better to put the plugins there. Because as I understand, this is the quasi-standard for Linux applications to store their settings (or plugins) per user.

Best Regards
Simon

Am 2017-06-12 11:54, schrieb Maciej Sumiński:
Speaking of Python scripts path - I wonder whether we should move it to
$XDG_DATA_HOME/kicad/plugins, as we already try to conform to XDG base
directory specification for configuration files.

I suppose we would have to keep ~/.kicad_plugins path during the
transition process or automatically move the files for the user.

Regards,
Orson

On 06/11/2017 11:19 PM, Simon Küppers wrote:
Hey guys,
There does not seem to be a lot of feedback. I guess I am rather early
to the pcbnew Python Plugin Party ;-)

I have dug deeper into the code and found out, that the plugins are
actually pulled into python using 'import'. I was under the impression
that a python interpreter was instantiated each time a plugin was executed.

This changed everything completely, I have found a good way to organize
the stuff (and I have done it here as an example:
https://github.com/skuep/kicad-plugins/tree/master).

I am currently going with the following folder structure
+ ~/.kicad_plugins/
    - action_plugin_a.py # some other plugin
    - action_plugin_b.py # another one
    + action_plugin_big/ # a big plugin in a folder
        - plugin_big_action.py # containing the ActionPlugin class
        - plugin_big.py # containing some more general stuff
        - plugin_dialogs.py # containing generated dialogs
        - __init__.py # containing the instantiation and register()
        - __main__.py # optional. if available, plugin runs standalone
        + resources/
            - some_other_stuff.png

So everything looks good right now. It just has to be documented somewhere.

Is there a place where documentation about the python plugins is
collected? Again, I hate when these informations are scattered in forums
or other peoples githubs... Also this looks unprofessional ;-)

Best Regards!
Simon

Am 09.06.2017 um 13:09 schrieb Simon Küppers:
Hey guys,
With my current work on python plugins for pcbnew, I noticed that you
quickly want to go ahead and divide up your plugin into multiple
subfiles (e.g. test_plugin.py, test_plugin_main_dialog.py, etc..)

Right now, KiCad loads the python files from the hardcoded folders (one
of them being ~/.kicad_plugins however it does not do it recursively.
Thus it is not possible to organize the files in a subdirectory (e.g.
test_plugin/).

Another thing that I noticed (but did not confirm yet) is, that action plugins need actually have "action_" prepended to the .py file in order
for them to load properly so that they are shown in the pcbnew menu.
This is also on purpose right?

I guess my proposal for a _consistent_ handling of python plugins in the
future might be either
1) Make test_plugin/ subfolder and place all files into this
subdirectory. KiCad recursively loads all plugins in the hardcoded
directories

2) Make test_plugin/ subfolder and place all files into this
subdirectory. When the user wants to use a plugin, he needs to create a relative link in the hardcoded directory to the corresponding entry-file
in the test_plugin/ sub-directory.

I am currently leaning towards the 2nd solution. But in order for it to be user friendly (also to those who arent computer savvy), each plugin needs some kind of installer to perform the copying and linking. I guess this solution is also more "linuxy" since I have seen this technique in
a lot of different applications (e.g. munin plugins).

What are your thoughts on that?

_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp




_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


References