Crazy Eddies GUI System  0.7.9
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
CEGUIScriptModule.h
1 /***********************************************************************
2  filename: CEGUIScriptModule.h
3  created: 16/7/2004
4  author: Paul D Turner
5 
6  purpose: Abstract class interface for scripting support
7 *************************************************************************/
8 /***************************************************************************
9  * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining
12  * a copy of this software and associated documentation files (the
13  * "Software"), to deal in the Software without restriction, including
14  * without limitation the rights to use, copy, modify, merge, publish,
15  * distribute, sublicense, and/or sell copies of the Software, and to
16  * permit persons to whom the Software is furnished to do so, subject to
17  * the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be
20  * included in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
26  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
27  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28  * OTHER DEALINGS IN THE SOFTWARE.
29  ***************************************************************************/
30 #ifndef _CEGUIScriptModule_h_
31 #define _CEGUIScriptModule_h_
32 
33 #include "CEGUIBase.h"
34 #include "CEGUIString.h"
35 #include "CEGUIEvent.h"
36 
37 
38 // Start of CEGUI namespace section
39 namespace CEGUI
40 {
46 class CEGUIEXPORT ScriptModule
47 {
48 public:
49  /*************************************************************************
50  Construction and Destruction
51  *************************************************************************/
56  ScriptModule(void);
57 
58 
63  virtual ~ScriptModule(void) {}
64 
65 
66  /*************************************************************************
67  Abstract interface
68  *************************************************************************/
79  virtual void executeScriptFile(const String& filename, const String& resourceGroup = "") = 0;
80 
81 
93  virtual int executeScriptGlobal(const String& function_name) = 0;
94 
95 
112  virtual bool executeScriptedEventHandler(const String& handler_name, const EventArgs& e) = 0;
113 
114 
125  virtual void executeString(const String& str) = 0;
126 
127 
136  virtual void createBindings(void) {}
137 
138 
148  virtual void destroyBindings(void) {}
149 
158  const String& getIdentifierString() const;
159 
178  virtual Event::Connection subscribeEvent(EventSet* target, const String& name, const String& subscriber_name) = 0;
179 
201  virtual Event::Connection subscribeEvent(EventSet* target, const String& name, Event::Group group, const String& subscriber_name) = 0;
202 
213  static void setDefaultResourceGroup(const String& resourceGroup)
214  { d_defaultResourceGroup = resourceGroup; }
215 
224  { return d_defaultResourceGroup; }
225 
226 protected:
231 };
232 
233 
238 class CEGUIEXPORT ScriptFunctor
239 {
240 public:
241  ScriptFunctor(const String& functionName) : scriptFunctionName(functionName) {}
242  ScriptFunctor(const ScriptFunctor& obj) : scriptFunctionName(obj.scriptFunctionName) {}
243  bool operator()(const EventArgs& e) const;
244 
245 private:
246  // no assignment possible
247  ScriptFunctor& operator=(const ScriptFunctor& rhs);
248 
249  const String scriptFunctionName;
250 };
251 
252 } // End of CEGUI namespace section
253 
254 
255 #endif // end of guard _CEGUIScriptModule_h_
Abstract interface required for all scripting support modules to be used with the CEGUI system...
Definition: CEGUIScriptModule.h:46
virtual void destroyBindings(void)
Method called during system destruction, after all scripts have been run via the ScriptModule, to enable the ScriptModule to perform any operations required to cleanup bindings of the script language to the gui system objects, as set-up in the earlier createBindings call.
Definition: CEGUIScriptModule.h:148
virtual void createBindings(void)
Method called during system initialisation, prior to running any scripts via the ScriptModule, to enable the ScriptModule to perform any operations required to complete initialisation or binding of the script language to the gui system objects.
Definition: CEGUIScriptModule.h:136
virtual ~ScriptModule(void)
Destructor for ScriptModule base class.
Definition: CEGUIScriptModule.h:63
Base class used as the argument to all subscribers Event object.
Definition: CEGUIEventArgs.h:52
String d_identifierString
String that holds some id information about the module.
Definition: CEGUIScriptModule.h:228
static String d_defaultResourceGroup
holds the default resource group ID for loading script files.
Definition: CEGUIScriptModule.h:230
static const String & getDefaultResourceGroup()
Returns the default resource group used when loading script files.
Definition: CEGUIScriptModule.h:223
Class that collects together a set of Event objects.
Definition: CEGUIEventSet.h:66
unsigned int Group
Type for a subscriber group. You can use the subscriber group to order calls to multiple subscribers...
Definition: CEGUIEvent.h:84
Functor class used for binding named script functions to events.
Definition: CEGUIScriptModule.h:238
static void setDefaultResourceGroup(const String &resourceGroup)
Sets the default resource group to be used when loading script files.
Definition: CEGUIScriptModule.h:213
String class used within the GUI system.
Definition: CEGUIString.h:57