Crazy Eddie's GUI System  0.8.5
ScriptModule.h
1 /***********************************************************************
2  created: 16/7/2004
3  author: Paul D Turner
4 
5  purpose: Abstract class interface for scripting support
6 *************************************************************************/
7 /***************************************************************************
8  * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
9  *
10  * Permission is hereby granted, free of charge, to any person obtaining
11  * a copy of this software and associated documentation files (the
12  * "Software"), to deal in the Software without restriction, including
13  * without limitation the rights to use, copy, modify, merge, publish,
14  * distribute, sublicense, and/or sell copies of the Software, and to
15  * permit persons to whom the Software is furnished to do so, subject to
16  * the following conditions:
17  *
18  * The above copyright notice and this permission notice shall be
19  * included in all copies or substantial portions of the Software.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27  * OTHER DEALINGS IN THE SOFTWARE.
28  ***************************************************************************/
29 #ifndef _CEGUIScriptModule_h_
30 #define _CEGUIScriptModule_h_
31 
32 #include "CEGUI/Base.h"
33 #include "CEGUI/String.h"
34 #include "CEGUI/Event.h"
35 
36 
37 // Start of CEGUI namespace section
38 namespace CEGUI
39 {
45 class CEGUIEXPORT ScriptModule :
46  public AllocatedObject<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  public AllocatedObject<ScriptFunctor>
240 {
241 public:
242  ScriptFunctor(const String& functionName) : scriptFunctionName(functionName) {}
243  ScriptFunctor(const ScriptFunctor& obj) : scriptFunctionName(obj.scriptFunctionName) {}
244  bool operator()(const EventArgs& e) const;
245 
246 private:
247  // no assignment possible
248  ScriptFunctor& operator=(const ScriptFunctor& rhs);
249 
250  const String scriptFunctionName;
251 };
252 
253 } // End of CEGUI namespace section
254 
255 
256 #endif // end of guard _CEGUIScriptModule_h_
Abstract interface required for all scripting support modules to be used with the CEGUI system...
Definition: ScriptModule.h:45
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: ScriptModule.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: ScriptModule.h:136
Definition: MemoryAllocatedObject.h:109
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1
virtual ~ScriptModule(void)
Destructor for ScriptModule base class.
Definition: ScriptModule.h:63
Base class used as the argument to all subscribers Event object.
Definition: EventArgs.h:49
String d_identifierString
String that holds some id information about the module.
Definition: ScriptModule.h:228
static String d_defaultResourceGroup
holds the default resource group ID for loading script files.
Definition: ScriptModule.h:230
static const String & getDefaultResourceGroup()
Returns the default resource group used when loading script files.
Definition: ScriptModule.h:223
Interface providing event signaling and handling.
Definition: EventSet.h:166
unsigned int Group
Type for a subscriber group. You can use the subscriber group to order calls to multiple subscribers...
Definition: Event.h:84
Functor class used for binding named script functions to events.
Definition: ScriptModule.h:238
static void setDefaultResourceGroup(const String &resourceGroup)
Sets the default resource group to be used when loading script files.
Definition: ScriptModule.h:213
String class used within the GUI system.
Definition: String.h:62