← Back to team overview

kicad-developers team mailing list archive

[PATCH] RFC: toolbar button support for action plugins


Hi KiCad devs,

I am proposing an addition to plugin system.
Probably most will agree that menus suck. Toolbars suck less :)

In my plugin I added a dirty hack to modify top toolbar from plugin init
code to add a button
that calls plugins run() method. It is broken on linux X11 and is not a
sustainable way others
can add buttons in their plugins. But having a button was quite popular
among users so I
decided to implement this functionality directly in pcbnew.

I introduced one more field plugin writers can define in defaults() that
contains path to png icon
and if that string is not empty, pcbnew will attempt to load that icon and
add a button to top
toolbar with action that calls the same run() method. I traced in code how
plugin action menu
is generated and added similar logic for buttons.

Here is how the result looks like:


Sample dummy plugin __init__.py code:

import os
import pcbnew
import wx

class Plugin1(pcbnew.ActionPlugin):

    def defaults(self):
        self.name = "Dummy Plugin 1"
        self.category = "Read PCB"
        self.description = ""
        self.icon_file_name = os.path.join(os.path.dirname(__file__),

    def Run(self):
        wx.MessageBox("Plugin 1")


It's as simple as that.

The patch is attached. It probably needs some error checking but seems to
be working great.
Tested in win64 so far.
I'm open to suggestions on how to get it to good state, I will also test on
linux asap.


Attachment: 0001-Add-toolbar-buttons-for-action-plugins.patch
Description: Binary data

Follow ups