13 #include "pybind11/functional.h"
16 namespace visualization {
20 py::native_enum<MouseButton> buttons(m,
"MouseButton",
"enum.IntFlag",
21 "Mouse button identifiers.");
30 py::native_enum<KeyModifier> key_mod(m,
"KeyModifier",
"enum.IntFlag",
31 "Key modifier identifiers.");
39 py::class_<MouseEvent> mouse_event(m,
"MouseEvent",
40 "Object that stores mouse events");
42 py::native_enum<MouseEvent::Type> mouse_event_type(
43 mouse_event,
"Type",
"enum.Enum",
"MouseEvent::Type.");
44 mouse_event_type.value(
"MOVE", MouseEvent::Type::MOVE)
45 .value(
"BUTTON_DOWN", MouseEvent::Type::BUTTON_DOWN)
46 .value(
"DRAG", MouseEvent::Type::DRAG)
47 .value(
"BUTTON_UP", MouseEvent::Type::BUTTON_UP)
48 .value(
"WHEEL", MouseEvent::Type::WHEEL)
52 "x coordinate of the mouse event")
54 "y coordinate of the mouse event")
60 "Convenience function to more easily deterimine if a "
66 if (e.
type == MouseEvent::Type::WHEEL) {
68 }
else if (e.
type == MouseEvent::Type::BUTTON_DOWN) {
69 return (e.button.button == b);
71 return ((e.move.buttons & int(b)) != 0);
74 "Convenience function to more easily deterimine if a mouse "
77 "ORed mouse modifiers")
81 if (e.
type == MouseEvent::Type::WHEEL) {
82 return int(MouseButton::NONE);
83 }
else if (e.
type == MouseEvent::Type::BUTTON_DOWN) {
84 return int(e.button.button);
86 return e.move.buttons;
90 if (e.
type == MouseEvent::Type::WHEEL) {
92 }
else if (e.
type == MouseEvent::Type::BUTTON_DOWN) {
95 e.
move.buttons = new_value;
102 if (e.
type == MouseEvent::Type::WHEEL) {
109 if (e.
type == MouseEvent::Type::WHEEL) {
110 e.
wheel.dx = new_value;
113 "Cannot set MouseEvent.wheel_dx unless "
114 "MouseEvent.type == MouseEvent.Type.WHEEL");
117 "Mouse wheel horizontal motion")
121 if (e.
type == MouseEvent::Type::WHEEL) {
128 if (e.
type == MouseEvent::Type::WHEEL) {
129 e.
wheel.dy = new_value;
132 "Cannot set MouseEvent.wheel_dy unless "
133 "MouseEvent.type == MouseEvent.Type.WHEEL");
136 "Mouse wheel vertical motion")
140 if (e.
type == MouseEvent::Type::WHEEL) {
141 return e.
wheel.isTrackpad;
147 if (e.
type == MouseEvent::Type::WHEEL) {
148 e.
wheel.isTrackpad = new_value;
151 "Cannot set MouseEvent.wheel_is_trackpad "
152 "unless MouseEvent.type == "
153 "MouseEvent.Type.WHEEL");
156 "Is mouse wheel event from a trackpad");
158 py::native_enum<KeyName> key_name(m,
"KeyName",
"enum.IntEnum",
159 "Names of keys. Used by KeyEvent.key.");
266 py::class_<KeyEvent> key_event(m,
"KeyEvent",
267 "Object that stores mouse events");
269 py::native_enum<KeyEvent::Type> key_event_type(
270 key_event,
"Type",
"enum.Enum",
"KeyEvent::Type.");
271 key_event_type.value(
"DOWN", KeyEvent::Type::DOWN)
272 .value(
"UP", KeyEvent::Type::UP)
274 key_event.def_readwrite(
"type", &
KeyEvent::type,
"Key event type")
276 "This is the actual key that was pressed, not the "
277 "character generated by the key. This event is "
278 "not suitable for text entry")
280 "True if this key down event comes from a key "
void pybind_gui_events(py::module &m)
Generic file read and write utility for python interface.
struct cloudViewer::visualization::gui::MouseEvent::@17::@21 wheel
struct cloudViewer::visualization::gui::MouseEvent::@17::@19 move