This is a very simple event filter that listens for mouseReleased events; when it sees one, it emits a signal with the given point.
Click events are filtered by how long the mouse was held down and how far the cursor moved in order to prevent the user holding and dragging the map from firing a click event. By default, "clicks" that take longer than 500ms or move longer than 2 pixels are ignored.
This object supports moving/resizing a "window" on the canvas. It should be installed as an event filter on the map canvas and be given an initial rectangle. It will watch for mouse events that occur within the rectangle and move/resize the rectangle accordingly. You can listen to signals to determine when the window was moved, or just use the rectangle at the start of every draw.
Since this class is designed for moving windows around the canvas, it does everything in terms of pixels.
To do: Need to deactivate the proxy when the plugin is marked invisible, or is not drawing data.
This is a pretty straightforward plugin. It watches for user clicks on the canvas, then converts the coordinates into a specified frame and publishes them as PointStamped messages on a specified topic.