summaryrefslogtreecommitdiffstats
path: root/prompt_toolkit/mouse_events.py
diff options
context:
space:
mode:
authorJonathan Slenders <jonathan@slenders.be>2015-09-20 19:46:31 +0200
committerJonathan Slenders <jonathan@slenders.be>2015-09-20 19:57:53 +0200
commit794ae0c6fffbfaea4a88104beb709a0b6b09c425 (patch)
tree2a56475d962edd494c7ced26ee00225e324db841 /prompt_toolkit/mouse_events.py
parent107cfe8480369389dd548273487977dffc623ecd (diff)
Small refactoring of mouse events + implementation of buffer text selection.
Diffstat (limited to 'prompt_toolkit/mouse_events.py')
-rw-r--r--prompt_toolkit/mouse_events.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/prompt_toolkit/mouse_events.py b/prompt_toolkit/mouse_events.py
new file mode 100644
index 00000000..08d9a897
--- /dev/null
+++ b/prompt_toolkit/mouse_events.py
@@ -0,0 +1,42 @@
+"""
+Mouse events.
+
+
+How it works
+------------
+
+The renderer has a 2 dimensional grid of mouse event handlers.
+(`prompt_toolkit.layout.MouseHandlers`.) When the layout is rendered, the
+`Window` class will make sure that this grid will also be filled with
+callbacks. For vt100 terminals, mouse events are received through stdin, just
+like any other key press. There is a handler among the key bindings that
+catches these events and forwards them to such a mouse event handler. It passes
+through the `Window` class where the coordinates are translated from absolute
+coordinates to coordinates relative to the user control, and there
+`UIControl.mouse_handler` is called.
+"""
+from __future__ import unicode_literals
+
+__all__ = (
+ 'MouseEventTypes',
+ 'MouseEvent'
+)
+
+
+class MouseEventTypes:
+ MOUSE_UP = 'MOUSE_UP'
+ MOUSE_DOWN = 'MOUSE_DOWN'
+ SCROLL_UP = 'SCROLL_UP'
+ SCROLL_DOWN = 'SCROLL_DOWN'
+
+
+class MouseEvent(object):
+ """
+ Mouse event, sent to `UIControl.mouse_handler`.
+
+ :param position: `Point` instance.
+ :param event_type: `MouseEventType`.
+ """
+ def __init__(self, position, event_type):
+ self.position = position
+ self.event_type = event_type