// EMERGENT GAME TECHNOLOGIES PROPRIETARY INFORMATION
//
// This software is supplied under the terms of a license agreement or
// nondisclosure agreement with Emergent Game Technologies and may not
// be copied or disclosed except in accordance with the terms of that
// agreement.
//
// Copyright (c) 1996-2007 Emergent Game Technologies.
// All Rights Reserved.
//
// Emergent Game Technologies, Chapel Hill, North Carolina 27517
// http://www.emergent.net
#pragma once
#include "IService.h"
#include "UICommand.h"
namespace Emergent{ namespace Gamebryo{ namespace SceneDesigner{
namespace PluginAPI{ namespace StandardServices
{
///
/// Provides a means for plug-ins to interact with the main menu.
///
///
/// All menu names are 'dot delimited'. And the service will merge
/// the items into the existing menu structure
///
///
///
/// IMenuService service = //get service
/// service.AddMenu("View.Customize", new EventHandler(Some_handler);
///
/// This will add to the existing View menu, if it exists and add
/// a Customize menu that will call the delegate
///
public __gc __interface IMenuService : public IService
{
///
/// Adds a "leaf" menu to the main menu
///
/// The 'dot' delimited name of the menu
/// A UICommand object that will be called
/// when the menu is clicked
///
void AddMenu(String* strMenu, UICommand* pmCommand);
void RemoveMenu(String* strMenu, UICommand* pmCommand,
bool bPruneEmpty);
bool IsMenuEnabled(String* strMenu);
void EnableMenu(String* strMenu, bool bEnable);
///
///Intended for editor internal use
///
String* GetAssignedMenus(UICommand* pmCommand)[];
};
}}}}}