core: Add the middle click support and unhandled button support
* This commit fix #259 * Support of middle click button * Add an unhandled click events for all button that will not be handled * Remove the return type of on_click: it became useless now * Fix the unique call of on_click in CommandEndpoint Signed-off-by: Mathis FELARDOS <mathis.felardos@gmail.com>
This commit is contained in:
parent
98e8a1cc04
commit
95f625cd6b
@ -38,7 +38,8 @@ class CommandEndpoint:
|
|||||||
except Exception:
|
except Exception:
|
||||||
pos = {}
|
pos = {}
|
||||||
|
|
||||||
if target_module and target_module.on_click(cmd["button"], **pos):
|
if target_module:
|
||||||
|
target_module.on_click(cmd["button"], **pos)
|
||||||
target_module.run()
|
target_module.run()
|
||||||
self.io.async_refresh()
|
self.io.async_refresh()
|
||||||
|
|
||||||
|
@ -26,26 +26,36 @@ class Module(SettingsBase):
|
|||||||
|
|
||||||
settings = (
|
settings = (
|
||||||
('on_leftclick', "Callback called on left click (see :ref:`callbacks`)"),
|
('on_leftclick', "Callback called on left click (see :ref:`callbacks`)"),
|
||||||
|
('on_middleclick', "Callback called on middle click (see :ref:`callbacks`)"),
|
||||||
('on_rightclick', "Callback called on right click (see :ref:`callbacks`)"),
|
('on_rightclick', "Callback called on right click (see :ref:`callbacks`)"),
|
||||||
('on_upscroll', "Callback called on scrolling up (see :ref:`callbacks`)"),
|
('on_upscroll', "Callback called on scrolling up (see :ref:`callbacks`)"),
|
||||||
('on_downscroll', "Callback called on scrolling down (see :ref:`callbacks`)"),
|
('on_downscroll', "Callback called on scrolling down (see :ref:`callbacks`)"),
|
||||||
('on_doubleleftclick', "Callback called on double left click (see :ref:`callbacks`)"),
|
('on_doubleleftclick', "Callback called on double left click (see :ref:`callbacks`)"),
|
||||||
|
('on_doubleleftclick', "Callback called on double left click (see :ref:`callbacks`)"),
|
||||||
|
('on_doublemiddleclick', "Callback called on double middle click (see :ref:`callbacks`)"),
|
||||||
('on_doublerightclick', "Callback called on double right click (see :ref:`callbacks`)"),
|
('on_doublerightclick', "Callback called on double right click (see :ref:`callbacks`)"),
|
||||||
('on_doubleupscroll', "Callback called on double scroll up (see :ref:`callbacks`)"),
|
('on_doubleupscroll', "Callback called on double scroll up (see :ref:`callbacks`)"),
|
||||||
('on_doubledownscroll', "Callback called on double scroll down (see :ref:`callbacks`)"),
|
('on_doubledownscroll', "Callback called on double scroll down (see :ref:`callbacks`)"),
|
||||||
|
('on_unhandledclick', "Callback called on unhandled click (see :ref:`callbacks`)"),
|
||||||
|
('on_doubleunhandledclick', "Callback called on double unhandled click (see :ref:`callbacks`)"),
|
||||||
('multi_click_timeout', "Time (in seconds) before a single click is executed."),
|
('multi_click_timeout', "Time (in seconds) before a single click is executed."),
|
||||||
('hints', "Additional output blocks for module output (see :ref:`hints`)"),
|
('hints', "Additional output blocks for module output (see :ref:`hints`)"),
|
||||||
)
|
)
|
||||||
|
|
||||||
on_leftclick = None
|
on_leftclick = None
|
||||||
|
on_middleclick = None
|
||||||
on_rightclick = None
|
on_rightclick = None
|
||||||
on_upscroll = None
|
on_upscroll = None
|
||||||
on_downscroll = None
|
on_downscroll = None
|
||||||
on_doubleleftclick = None
|
on_doubleleftclick = None
|
||||||
|
on_doublemiddleclick = None
|
||||||
on_doublerightclick = None
|
on_doublerightclick = None
|
||||||
on_doubleupscroll = None
|
on_doubleupscroll = None
|
||||||
on_doubledownscroll = None
|
on_doubledownscroll = None
|
||||||
|
|
||||||
|
on_unhandledclick = None
|
||||||
|
on_doubleunhandledclick = None
|
||||||
|
|
||||||
multi_click_timeout = 0.25
|
multi_click_timeout = 0.25
|
||||||
|
|
||||||
hints = {"markup": "none"}
|
hints = {"markup": "none"}
|
||||||
@ -189,21 +199,15 @@ class Module(SettingsBase):
|
|||||||
positions of the mouse where the click occured.
|
positions of the mouse where the click occured.
|
||||||
:return: Returns ``True`` if a valid callback action was executed.
|
:return: Returns ``True`` if a valid callback action was executed.
|
||||||
``False`` otherwise.
|
``False`` otherwise.
|
||||||
:rtype: bool
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if button == 1: # Left mouse button
|
actions = ['leftclick', 'middleclick', 'rightclick',
|
||||||
action = 'leftclick'
|
'upscroll', 'downscroll']
|
||||||
elif button == 3: # Right mouse button
|
try:
|
||||||
action = 'rightclick'
|
action = actions[button - 1]
|
||||||
elif button == 4: # mouse wheel up
|
except (TypeError, IndexError):
|
||||||
action = 'upscroll'
|
|
||||||
elif button == 5: # mouse wheel down
|
|
||||||
action = 'downscroll'
|
|
||||||
else:
|
|
||||||
self.__log_button_event(button, None, None, "Unhandled button")
|
self.__log_button_event(button, None, None, "Unhandled button")
|
||||||
return False
|
action = "unhandled"
|
||||||
|
|
||||||
m_click = self.__multi_click
|
m_click = self.__multi_click
|
||||||
|
|
||||||
@ -225,8 +229,6 @@ class Module(SettingsBase):
|
|||||||
else:
|
else:
|
||||||
self.__button_callback_handler(button, cb, **kwargs)
|
self.__button_callback_handler(button, cb, **kwargs)
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def move(self, position):
|
def move(self, position):
|
||||||
self.position = position
|
self.position = position
|
||||||
return self
|
return self
|
||||||
|
Loading…
Reference in New Issue
Block a user