← Back to team overview

kicad-developers team mailing list archive

Re: Better organizing of Python plugins using subdirectories

 

I'm OK with using the XDG directory specification but dealing with the
legacy directory may be problematic.  I wonder in practice how many
users it will actually effect?  I'm guessing the number of users who
have custom python scripts in ~/.kicad_plugins is fairly low.

On 6/12/2017 5:54 AM, Maciej Sumiński wrote:
> 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