Added callback for custom button being pressed

I've added ability to implement custom blocks or selectors when custom buttons are pressed.
Try to avoid duplication of code as much as possible.
In cases `Block` and `Selector` you duplicate code 3 times.
In every common cases in subclasses - just call method of `super` instead.