From 7d6df5692c5c13c804f562be98a84c66dc8a540f Mon Sep 17 00:00:00 2001 From: fluxgen Date: Wed, 27 Nov 2002 21:41:13 +0000 Subject: initial import --- src/FbTk/EventManager.cc | 92 ++++++++++++++++++++++++++++++++++++++++++++++++ src/FbTk/EventManager.hh | 47 +++++++++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 src/FbTk/EventManager.cc create mode 100644 src/FbTk/EventManager.hh diff --git a/src/FbTk/EventManager.cc b/src/FbTk/EventManager.cc new file mode 100644 index 0000000..223b004 --- /dev/null +++ b/src/FbTk/EventManager.cc @@ -0,0 +1,92 @@ +// EventManager.cc +// Copyright (c) 2002 Henrik Kinnunen (fluxgen at linuxmail.org) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +// $Id: EventManager.cc,v 1.1 2002/11/27 21:41:13 fluxgen Exp $ + +#include "EventManager.hh" + +#include +using namespace std; + +namespace FbTk { + +EventManager *EventManager::instance() { + static EventManager ev; + return &ev; +} + +EventManager::~EventManager() { + if (m_eventhandlers.size() != 0) + cerr<<"FbTk::EventManager: Warning: unregistered eventhandlers!"<keyPressEvent(ev.xkey); + break; + case KeyRelease: + evhand->keyReleaseEvent(ev.xkey); + break; + case ButtonPress: + evhand->buttonPressEvent(ev.xbutton); + break; + case ButtonRelease: + evhand->buttonReleaseEvent(ev.xbutton); + break; + case MotionNotify: + evhand->motionNotifyEvent(ev.xmotion); + break; + case Expose: + evhand->exposeEvent(ev.xexpose); + break; + case EnterNotify: + evhand->enterNotifyEvent(ev.xcrossing); + break; + case LeaveNotify: + evhand->leaveNotifyEvent(ev.xcrossing); + break; + default: + evhand->handleEvent(ev); + break; + }; +} + +void EventManager::registerEventHandler(EventHandler &ev, Window win) { + m_eventhandlers[win] = &ev; +} + +void EventManager::unregisterEventHandler(Window win) { + m_eventhandlers.erase(win); +} + +}; diff --git a/src/FbTk/EventManager.hh b/src/FbTk/EventManager.hh new file mode 100644 index 0000000..97a0dc6 --- /dev/null +++ b/src/FbTk/EventManager.hh @@ -0,0 +1,47 @@ +// EventManager.hh +// Copyright (c) 2002 Henrik Kinnunen (fluxgen at linuxmail.org) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +// $Id: EventManager.hh,v 1.1 2002/11/27 21:41:13 fluxgen Exp $ + +#include "EventHandler.hh" +#include + +namespace FbTk { + +/** + singleton mediator for EventHandlers +*/ +class EventManager { +public: + static EventManager *instance(); + + void handleEvent(XEvent &ev); + + void registerEventHandler(EventHandler &ev, Window win); + void unregisterEventHandler(Window win); +private: + EventManager() { } + ~EventManager(); + + std::map m_eventhandlers; +}; + +}; //end namespace FbTk -- cgit v0.11.2