The Battle for Wesnoth  1.13.4+dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | Friends | List of all members
gui2::event::thandler Class Reference

This singleton class handles all events. More...

Inheritance diagram for gui2::event::thandler:
Inheritance graph

Public Member Functions

 thandler ()
 
 ~thandler ()
 
void handle_event (const SDL_Event &event)
 Inherited from events::sdl_handler. More...
 
void handle_window_event (const SDL_Event &event)
 Inherited from events::sdl_handler. More...
 
void connect (tdispatcher *dispatcher)
 Connects a dispatcher. More...
 
void disconnect (tdispatcher *dispatcher)
 Disconnects a dispatcher. More...
 
- Public Member Functions inherited from events::sdl_handler
virtual void process_event ()
 
virtual void draw ()
 
virtual void volatile_draw ()
 
virtual void volatile_undraw ()
 
virtual bool requires_event_focus (const SDL_Event *=nullptr) const
 
virtual void process_help_string (int, int)
 
virtual void process_tooltip_string (int, int)
 
virtual void join ()
 
virtual void join (context &c)
 
virtual void join_same (sdl_handler *parent)
 
virtual void leave ()
 
virtual void join_global ()
 
virtual void leave_global ()
 

Public Attributes

tdispatchermouse_focus
 The dispatcher that captured the mouse focus. More...
 

Private Member Functions

void activate ()
 Reinitializes the state of all dispatchers. More...
 
void draw (const bool force)
 
void video_resize (const tpoint &new_size)
 Fires a video resize event. More...
 
void mouse (const tevent event, const tpoint &position)
 Fires a generic mouse event. More...
 
void mouse_button_up (const tpoint &position, const Uint8 button)
 Fires a mouse button up event. More...
 
void mouse_button_down (const tpoint &position, const Uint8 button)
 Fires a mouse button down event. More...
 
void mouse_wheel (const tpoint &position, int scrollx, int scrolly)
 Fires a mouse wheel event. More...
 
tdispatcherkeyboard_dispatcher ()
 Gets the dispatcher that wants to receive the keyboard input. More...
 
void hat_motion (const SDL_Event &event)
 Handles a hat motion event. More...
 
void button_down (const SDL_Event &event)
 Handles a joystick button down event. More...
 
void key_down (const SDL_Event &event)
 Fires a key down event. More...
 
bool hotkey_pressed (const hotkey::hotkey_ptr key)
 Handles the pressing of a hotkey. More...
 
void key_down (const SDLKey key, const SDLMod modifier, const utf8::string &unicode)
 Fires a key down event. More...
 
void text_input (const std::string &unicode)
 Fires a text input event. More...
 
void keyboard (const tevent event)
 Fires a keyboard event which has no parameters. More...
 

Private Attributes

std::vector< tdispatcher * > dispatchers_
 The dispatchers. More...
 
tdispatcherkeyboard_focus_
 Needed to determine which dispatcher gets the keyboard events. More...
 

Friends

bool gui2::is_in_dialog ()
 
void capture_keyboard (tdispatcher *)
 Captures the keyboard. More...
 

Additional Inherited Members

- Protected Member Functions inherited from events::sdl_handler
 sdl_handler (const bool auto_join=true)
 
virtual ~sdl_handler ()
 
virtual std::vector
< sdl_handler * > 
handler_members ()
 

Detailed Description

This singleton class handles all events.

It's a new experimental class.

Definition at line 123 of file handler.cpp.

Constructor & Destructor Documentation

gui2::event::thandler::thandler ( )

Definition at line 297 of file handler.cpp.

References events::sdl_handler::join().

gui2::event::thandler::~thandler ( )

Definition at line 315 of file handler.cpp.

References events::sdl_handler::leave().

Member Function Documentation

void gui2::event::thandler::activate ( )
private

Reinitializes the state of all dispatchers.

This is needed when the application gets activated, to make sure the state of mainly the mouse is set properly.

Definition at line 490 of file handler.cpp.

References dispatchers_, and gui2::event::SDL_ACTIVATE.

Referenced by disconnect(), and handle_event().

void gui2::event::thandler::button_down ( const SDL_Event &  event)
private

Handles a joystick button down event.

Parameters
eventThe SDL joystick button event triggered.

Definition at line 679 of file handler.cpp.

References hotkey::get_hotkey(), and hotkey_pressed().

Referenced by handle_event().

void gui2::event::thandler::connect ( tdispatcher dispatcher)

Connects a dispatcher.

Parameters
dispatcherThe dispatcher to connect.

Definition at line 441 of file handler.cpp.

References dispatchers_, gui2::event::event_context, gui2::event::find(), and events::sdl_handler::join().

Referenced by gui2::event::connect_dispatcher().

void gui2::event::thandler::disconnect ( tdispatcher dispatcher)

Disconnects a dispatcher.

Parameters
dispatcherThe dispatcher to disconnect.

Definition at line 454 of file handler.cpp.

References activate(), dispatchers_, gui2::event::event_context, gui2::event::find(), itor, keyboard_focus_, events::sdl_handler::leave(), mouse_focus, and gui2::twidget::set_is_dirty().

Referenced by gui2::event::disconnect_dispatcher().

void gui2::event::thandler::draw ( const bool  force)
private
Todo:
Need to evaluate which windows really to redraw.

For now we use a hack, but would be nice to rewrite it for 1.9/1.11.

Definition at line 499 of file handler.cpp.

References dispatchers_, gui2::event::DRAW, CVideo::flip(), and gui2::twidget::set_is_dirty().

void gui2::event::thandler::handle_event ( const SDL_Event &  event)
virtual
void gui2::event::thandler::handle_window_event ( const SDL_Event &  event)
virtual

Inherited from events::sdl_handler.

Implements events::sdl_handler.

Definition at line 436 of file handler.cpp.

References handle_event().

void gui2::event::thandler::hat_motion ( const SDL_Event &  event)
private

Handles a hat motion event.

Parameters
eventThe SDL joystick hat event triggered.

Definition at line 666 of file handler.cpp.

References hotkey::get_hotkey(), and hotkey_pressed().

Referenced by handle_event().

bool gui2::event::thandler::hotkey_pressed ( const hotkey::hotkey_ptr  key)
private

Handles the pressing of a hotkey.

Parameters
keyThe hotkey item pressed.
Returns
True if the hotkey is handled false otherwise.

Definition at line 711 of file handler.cpp.

References gui2::event::tdispatcher::execute_hotkey(), hotkey::get_id(), and keyboard_dispatcher().

Referenced by button_down(), hat_motion(), and key_down().

void gui2::event::thandler::key_down ( const SDL_Event &  event)
private

Fires a key down event.

Parameters
eventThe SDL keyboard event triggered.

Definition at line 692 of file handler.cpp.

References hotkey::get_hotkey(), and hotkey_pressed().

Referenced by handle_event(), and text_input().

void gui2::event::thandler::key_down ( const SDLKey  key,
const SDLMod  modifier,
const utf8::string unicode 
)
private

Fires a key down event.

Parameters
keyThe SDL key code of the key pressed.
modifierThe SDL key modifiers used.
unicodeThe unicode value for the key pressed.

Definition at line 722 of file handler.cpp.

References DBG_GUI_E, keyboard_dispatcher(), and gui2::event::SDL_KEY_DOWN.

void gui2::event::thandler::keyboard ( const tevent  event)
private

Fires a keyboard event which has no parameters.

This can happen for example when the mouse wheel is used.

Parameters
eventThe event to fire.

Definition at line 737 of file handler.cpp.

References DBG_GUI_E, and keyboard_dispatcher().

tdispatcher * gui2::event::thandler::keyboard_dispatcher ( )
private

Gets the dispatcher that wants to receive the keyboard input.

Returns
The dispatcher.
Return values
nullptrNo dispatcher found.

Definition at line 647 of file handler.cpp.

References dispatchers_, and keyboard_focus_.

Referenced by hotkey_pressed(), key_down(), and keyboard().

void gui2::event::thandler::mouse ( const tevent  event,
const tpoint position 
)
private

Fires a generic mouse event.

Parameters
eventThe event to fire.
positionThe position of the mouse.

Definition at line 552 of file handler.cpp.

References gui2::event::tdispatcher::all, DBG_GUI_E, dispatchers_, gui2::event::tdispatcher::fire(), mouse_focus, and gui2::event::tdispatcher::none.

Referenced by handle_event(), mouse_button_down(), mouse_button_up(), and mouse_wheel().

void gui2::event::thandler::mouse_button_down ( const tpoint position,
const Uint8  button 
)
private

Fires a mouse button down event.

Parameters
positionThe position of the mouse.
buttonThe SDL id of the button that caused the event.

Definition at line 604 of file handler.cpp.

References mouse(), SDL_BUTTON_WHEELDOWN, SDL_BUTTON_WHEELLEFT, SDL_BUTTON_WHEELRIGHT, SDL_BUTTON_WHEELUP, gui2::event::SDL_LEFT_BUTTON_DOWN, gui2::event::SDL_MIDDLE_BUTTON_DOWN, gui2::event::SDL_RIGHT_BUTTON_DOWN, and WRN_GUI_E.

Referenced by handle_event().

void gui2::event::thandler::mouse_button_up ( const tpoint position,
const Uint8  button 
)
private

Fires a mouse button up event.

Parameters
positionThe position of the mouse.
buttonThe SDL id of the button that caused the event.

Definition at line 583 of file handler.cpp.

References mouse(), gui2::event::SDL_LEFT_BUTTON_UP, gui2::event::SDL_MIDDLE_BUTTON_UP, gui2::event::SDL_RIGHT_BUTTON_UP, and WRN_GUI_E.

Referenced by handle_event().

void gui2::event::thandler::mouse_wheel ( const tpoint position,
int  scrollx,
int  scrolly 
)
private

Fires a mouse wheel event.

Parameters
positionThe position of the mouse.
scrollxThe amount of horizontal scrolling.
scrollyThe amount of vertical scrolling.

Definition at line 632 of file handler.cpp.

References mouse(), gui2::event::SDL_WHEEL_DOWN, gui2::event::SDL_WHEEL_LEFT, gui2::event::SDL_WHEEL_RIGHT, and gui2::event::SDL_WHEEL_UP.

Referenced by handle_event().

void gui2::event::thandler::text_input ( const std::string unicode)
private

Fires a text input event.

Parameters
unicodeThe unicode value for the text entered.

Definition at line 706 of file handler.cpp.

References key_down().

Referenced by handle_event().

void gui2::event::thandler::video_resize ( const tpoint new_size)
private

Fires a video resize event.

Parameters
new_sizeThe new size of the window.

Definition at line 540 of file handler.cpp.

References DBG_GUI_E, dispatchers_, and gui2::event::SDL_VIDEO_RESIZE.

Referenced by handle_event().

Friends And Related Function Documentation

void capture_keyboard ( tdispatcher )
friend

Captures the keyboard.

A dispatcher can capture the keyboard, when for example it's pressed on a button, this means all keyboard events after that are send to that widget.

Parameters
dispatcherThe dispatcher which should get the keyboard focus.

Definition at line 817 of file handler.cpp.

bool gui2::is_in_dialog ( )
friend

Member Data Documentation

std::vector<tdispatcher*> gui2::event::thandler::dispatchers_
private

The dispatchers.

The order of the items in the list is also the z-order the front item being the one completely in the background and the back item the one completely in the foreground.

Definition at line 286 of file handler.cpp.

Referenced by activate(), connect(), disconnect(), draw(), handle_event(), gui2::is_in_dialog(), keyboard_dispatcher(), mouse(), and video_resize().

tdispatcher* gui2::event::thandler::keyboard_focus_
private

Needed to determine which dispatcher gets the keyboard events.

NOTE the keyboard events aren't really wired in yet so doesn't do much.

Definition at line 293 of file handler.cpp.

Referenced by gui2::event::capture_keyboard(), disconnect(), and keyboard_dispatcher().

tdispatcher* gui2::event::thandler::mouse_focus

The dispatcher that captured the mouse focus.

Definition at line 153 of file handler.cpp.

Referenced by gui2::event::capture_mouse(), disconnect(), mouse(), and gui2::event::release_mouse().


The documentation for this class was generated from the following file: