KVIrc 5.2.0
Developer APIs
KviKvsEventManager.h
Go to the documentation of this file.
1#ifndef _KVI_KVS_EVENTMANAGER_H_
2#define _KVI_KVS_EVENTMANAGER_H_
3//=============================================================================
4//
5// File : KviKvsEventManager.h
6// Creation date : Thu Aug 17 2000 13:59:12 by Szymon Stefanek
7//
8// This file is part of the KVIrc IRC client distribution
9// Copyright (C) 2000-2010 Szymon Stefanek <pragma at kvirc dot net>
10//
11// This program is FREE software. You can redistribute it and/or
12// modify it under the terms of the GNU General Public License
13// as published by the Free Software Foundation; either version 2
14// of the License, or (at your option) any later version.
15//
16// This program is distributed in the HOPE that it will be USEFUL,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19// See the GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program. If not, write to the Free Software Foundation,
23// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24//
25//=============================================================================
26
27#include "kvi_settings.h"
28
29#include "KviKvsEvent.h"
30#include "KviPointerList.h"
31#include "KviKvsEventTable.h"
32
33class KviWindow;
37#define KVI_KVS_NUM_RAW_EVENTS 1000
38
39#define KVI_KVS_EVENT_HANDLER_NAME_REG_EXP "^[A-Za-z0-9_]*$"
40#define KVI_KVS_EVENT_HANDLER_NAME_INVALID_CHARS_REG_EXP "[^A-Za-z0-9_]"
41
42class KVIRC_API KviKvsEventManager : public QObject
43{
44 Q_OBJECT
45 friend class KviModule; // compatibility only!
46protected: // it only can be created and destroyed by KviKvsAliasManager::init()/done()
49
50protected:
52
53 static KviKvsEvent m_appEventTable[KVI_KVS_NUM_APP_EVENTS];
55
56public:
57 static KviKvsEventManager * instance() { return m_pInstance; };
58 static void init(); // called by KviKvs::init()
59 static void done(); // called by KviKvs::done()
60
61 KviKvsEvent * appEvent(unsigned int uEvIdx) { return &(m_appEventTable[uEvIdx]); };
62
63 bool hasAppHandlers(unsigned int uEvIdx) { return m_appEventTable[uEvIdx].hasHandlers(); };
64 KviPointerList<KviKvsEventHandler> * appHandlers(unsigned int uEvIdx) { return m_appEventTable[uEvIdx].handlers(); };
65
66 bool hasRawHandlers(unsigned int uEvIdx) { return m_rawEventTable[uEvIdx]; };
67 KviPointerList<KviKvsEventHandler> * rawHandlers(unsigned int uEvIdx) { return m_rawEventTable[uEvIdx]; };
68
69 KviKvsEvent * findAppEventByName(const QString & szName);
70 unsigned int findAppEventIndexByName(const QString & szName);
71 bool isValidAppEvent(unsigned int uEvIdx) { return (uEvIdx < KVI_KVS_NUM_APP_EVENTS); };
72
73 bool isValidRawEvent(unsigned int uEvIdx) { return (uEvIdx < KVI_KVS_NUM_RAW_EVENTS); };
74
75 bool addAppHandler(unsigned int uEvIdx, KviKvsEventHandler * h);
76 bool addRawHandler(unsigned int uRawIdx, KviKvsEventHandler * h);
77
78 // To prevent the virtual table from no longer
79 // existing after we unload the DLL, we make a
80 // copy of the event handler within the manager
81 // and allocate the pointer directly within the
82 // exe.
83 bool addRawHandler(unsigned int uRawIdx, const KviKvsEventHandler & h);
84
85 bool removeScriptAppHandler(unsigned int uEvIdx, const QString & szName);
86 bool removeScriptRawHandler(unsigned int uEvIdx, const QString & szName);
87
88 bool enableScriptAppHandler(unsigned int uEvIdx, const QString & szName, bool bEnable);
89 bool enableScriptRawHandler(unsigned int uEvIdx, const QString & szName, bool bEnable);
90
91 bool removeModuleAppHandler(unsigned int uEvIdx, KviKvsModuleInterface * i);
92 bool removeModuleRawHandler(unsigned int uRawIdx, KviKvsModuleInterface * i);
93
94 void removeAllModuleAppHandlers(KviKvsModuleInterface * i);
95 void removeAllModuleRawHandlers(KviKvsModuleInterface * i);
96
97 void removeAllModuleHandlers(KviKvsModuleInterface * i);
98
99 KviKvsScriptEventHandler * findScriptRawHandler(unsigned int uEvIdx, const QString & szName);
100 KviKvsScriptEventHandler * findScriptAppHandler(unsigned int uEvIdx, const QString & szName);
101
102 // returns true if further processing should be stopped
103 // none of these functions takes params ownership, so be sure to delete them !
104 bool triggerHandlers(KviPointerList<KviKvsEventHandler> * pHandlers, KviWindow * pWnd, KviKvsVariantList * pParams);
105 bool trigger(unsigned int uEvIdx, KviWindow * pWnd, KviKvsVariantList * pParams)
106 {
107 return triggerHandlers(m_appEventTable[uEvIdx].handlers(), pWnd, pParams);
108 };
109 bool triggerRaw(unsigned int uEvIdx, KviWindow * pWnd, KviKvsVariantList * pParams)
110 {
111 return triggerHandlers(m_rawEventTable[uEvIdx], pWnd, pParams);
112 };
113
114 // this is the only that takes parameter ownership and deletes them
115 bool triggerDeleteParams(unsigned int uEvIdx, KviWindow * pWnd, KviKvsVariantList * pParams)
116 {
117 bool bRet = triggerHandlers(m_appEventTable[uEvIdx].handlers(), pWnd, pParams);
118 delete pParams;
119 return bRet;
120 };
121
122 void removeAllScriptAppHandlers();
123 void removeAllScriptRawHandlers();
124
125 void clearAppEvents();
126 void clearRawEvents();
127 void clear();
128
129 void loadAppEvents(const QString & szFileName);
130 void saveAppEvents(const QString & szFileName);
131 void loadRawEvents(const QString & szFileName);
132 void saveRawEvents(const QString & szFileName);
133
134 void cleanHandlerName(QString & szHandlerName);
135signals:
136 void eventHandlerDisabled(const QString &);
137};
138
139#endif
#define KVI_KVS_NUM_RAW_EVENTS
Definition KviKvsEventManager.h:37
Events table.
#define KVI_KVS_NUM_APP_EVENTS
Definition KviKvsEventTable.h:384
C++ Template based double linked pointer list class.
btnDict clear()
Definition KviKvsEventHandler.h:34
Definition KviKvsEventManager.h:43
KviPointerList< KviKvsEventHandler > * appHandlers(unsigned int uEvIdx)
Definition KviKvsEventManager.h:64
bool isValidRawEvent(unsigned int uEvIdx)
Definition KviKvsEventManager.h:73
bool isValidAppEvent(unsigned int uEvIdx)
Definition KviKvsEventManager.h:71
static KviKvsEventManager * m_pInstance
Definition KviKvsEventManager.h:51
bool triggerDeleteParams(unsigned int uEvIdx, KviWindow *pWnd, KviKvsVariantList *pParams)
Definition KviKvsEventManager.h:115
KviPointerList< KviKvsEventHandler > * rawHandlers(unsigned int uEvIdx)
Definition KviKvsEventManager.h:67
bool hasRawHandlers(unsigned int uEvIdx)
Definition KviKvsEventManager.h:66
void eventHandlerDisabled(const QString &)
static KviKvsEventManager * instance()
Definition KviKvsEventManager.h:57
bool hasAppHandlers(unsigned int uEvIdx)
Definition KviKvsEventManager.h:63
KviKvsEvent * appEvent(unsigned int uEvIdx)
Definition KviKvsEventManager.h:61
bool trigger(unsigned int uEvIdx, KviWindow *pWnd, KviKvsVariantList *pParams)
Definition KviKvsEventManager.h:105
bool triggerRaw(unsigned int uEvIdx, KviWindow *pWnd, KviKvsVariantList *pParams)
Definition KviKvsEventManager.h:109
Definition KviKvsEvent.h:34
KviPointerList< KviKvsEventHandler > * handlers()
Definition KviKvsEvent.h:48
bool hasHandlers()
Definition KviKvsEvent.h:47
Definition KviKvsModuleInterface.h:136
Definition KviKvsEventHandler.h:54
Class to handle variant variables lists.
Definition KviKvsVariantList.h:42
Definition KviModule.h:131
A template double linked list of pointers.
Definition KviPointerList.h:371
Base class for all windows in KVIrc.
Definition KviWindow.h:75
#define i
Definition detector.cpp:74
#define h
Definition detector.cpp:73
This file contains compile time settings.
#define KVIRC_API
Definition kvi_settings.h:127
int init()
Definition winamp.cpp:118