// ----------------------------------------------------------------------------
// Generated by ScriptObjectFactory [Sun Dec 14 07:21:52 2003]
// 
// File        : xuimenuso.h
// Class       : XuiMenuScriptObject
// class layer : Automatic Object Scripting
// ----------------------------------------------------------------------------

#ifndef __XUIMENUSCRIPTOBJECT_H
#define __XUIMENUSCRIPTOBJECT_H

class XuiMenu;

#include <api/script/objects/rootobj.h>
#include <api/script/objcontroller.h>

#define XUIMENU_SCRIPTPARENT GuiObjectWnd
#define XUIMENU_SCRIPTPARENTCLASS L"GuiObject"

// ----------------------------------------------------------------------------
// {73C00594-961F-401B-9B1B-672427AC4165}
static const GUID XuiMenuScriptGuid =
{ 0x73c00594, 0x961f, 0x401b, { 0x9b, 0x1b, 0x67, 0x24, 0x27, 0xac, 65, 101 } };
// -----------------------------------------------------------------------------

class XuiMenuScriptObject : public XUIMENU_SCRIPTPARENT {
protected:
  XuiMenuScriptObject();
  virtual ~XuiMenuScriptObject();
  
public:
  void xuiMenuScriptObject_init();

public:
  virtual void script_onOpenMenu();
  virtual void script_onCloseMenu();
private:
};

// -----------------------------------------------------------------------------
class XuiMenuScriptController : public ScriptObjectControllerI {
public:

  virtual const wchar_t *getClassName();
  virtual const wchar_t *getAncestorClassName();
  virtual ScriptObjectController *getAncestorController();
  virtual int getNumFunctions();
  virtual const function_descriptor_struct *getExportedFunctions();
  virtual GUID getClassGuid();
  virtual ScriptObject *instantiate();
  virtual void destroy(ScriptObject *o);
  virtual void *encapsulate(ScriptObject *o);
  virtual void deencapsulate(void *o);

public:
  static scriptVar script_setMenuGroup(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO, scriptVar mg);
  static scriptVar script_getMenuGroup(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO);
  static scriptVar script_setMenu(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO, scriptVar m);
  static scriptVar script_getMenu(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO);
  static scriptVar script_spawnMenu(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO, scriptVar monitor);
  static scriptVar script_cancelMenu(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO);
  static scriptVar script_setNormalId(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO, scriptVar id);
  static scriptVar script_setDownId(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO, scriptVar id);
  static scriptVar script_setHoverId(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO, scriptVar id);
  static scriptVar script_onOpenMenu(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO);
  static scriptVar script_onCloseMenu(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO);
  static scriptVar script_nextMenu(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO);
  static scriptVar script_previousMenu(SCRIPT_FUNCTION_PARAMS, ScriptObject *_pSO);
  
private:static function_descriptor_struct exportedFunctions[];
};

extern XuiMenuScriptController *xuiMenuScriptController;
// ----------------------------------------------------------------------------

#endif // __XUIMENUSCRIPTOBJECT_H