fbcontrols/fbgenericmenu.h Source File
 
 
 
fbcontrols/fbgenericmenu.h
Go to the documentation of this file.
00001 #ifndef __GENERIC_MENU_H__
00002 #define __GENERIC_MENU_H__
00003 /**************************************************************************
00004  Copyright (c) 1994 - 2009 Autodesk, Inc. and/or its licensors.
00005  All Rights Reserved.
00006  
00007  The coded instructions, statements, computer programs, and/or related 
00008  material (collectively the "Data") in these files contain unpublished 
00009  information proprietary to Autodesk, Inc. and/or its licensors, which is 
00010  protected by Canada and United States of America federal copyright law 
00011  and by international treaties.
00012  
00013  The Data may not be disclosed or distributed to third parties, in whole 
00014  or in part, without the prior written consent of Autodesk, Inc. 
00015  ("Autodesk").
00016  
00017  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00018  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO 
00019  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR 
00020  ARISING BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES 
00021  OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR 
00022  PURPOSE OR USE. WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT 
00023  WARRANT THAT THE OPERATION OF THE DATA WILL BE UNINTERRUPTED OR ERROR 
00024  FREE.
00025  
00026  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS 
00027  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR 
00028  EXPENSES OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE 
00029  DAMAGES OR OTHER SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS 
00030  OF PROFITS, REVENUE OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR 
00031  DAMAGES OF ANY KIND), HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF 
00032  LIABILITY, WHETHER DERIVED FROM CONTRACT, TORT (INCLUDING, BUT NOT 
00033  LIMITED TO, NEGLIGENCE), OR OTHERWISE, ARISING OUT OF OR RELATING TO THE 
00034  DATA OR ITS USE OR ANY OTHER PERFORMANCE, WHETHER OR NOT AUTODESK HAS 
00035  BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
00036  
00037 **************************************************************************/
00038 
00047 #include <kaydaradef.h>
00048 #ifndef FBSDK_DLL
00049 
00050         #define FBSDK_DLL K_DLLEXPORT
00051 #endif
00052 
00053 #include <fbsdk/fbcomponent.h>
00054 #include <fbcontrols/fbcontrols.h>
00055 
00056 K_FORWARD( IKtObject );
00057 
00058 
00059 #ifdef FBSDKUseNamespace
00060         namespace FBSDKNamespace {
00061 #endif
00062 
00063 __FB_FORWARD( FBGenericMenuItem );
00064 __FB_FORWARD( FBGenericMenu );
00065 __FB_FORWARD( FBMenuManager );
00066 FB_DEFINE_COMPONENT( FBSDK_DLL, GenericMenuItem );
00067 FB_DEFINE_COMPONENT( FBSDK_DLL, GenericMenu );
00068 FB_DEFINE_COMPONENT( FBSDK_DLL, MenuManager );
00069 
00080 class  FBSDK_DLL FBGenericMenuItem : public FBComponent {
00081     __FBClassDeclare( FBGenericMenuItem, FBComponent );
00082 public:      
00083     FBGenericMenuItem(HIObject pObject);  
00084 
00085         FBPropertyString Caption; 
00086     FBPropertyInt Id; 
00087     FBPropertyBool Enable; 
00088     FBPropertyGenericMenu Menu; 
00089 };
00090 
00126 class  FBSDK_DLL FBGenericMenu : public FBComponent {
00127     __FBClassDeclare( FBGenericMenu, FBComponent );
00128 public:
00131     FBGenericMenu(HIObject pObject=NULL);
00132 
00135         virtual void FBDelete() override;
00136         
00141     FBGenericMenuItem* GetFirstItem();
00142 
00147     FBGenericMenuItem* GetLastItem();
00148 
00153     FBGenericMenuItem* GetNextItem(FBGenericMenuItem* pItem);
00154 
00159     FBGenericMenuItem* GetPrevItem(FBGenericMenuItem* pItem);
00160 
00165     FBGenericMenuItem* GetItem( int pItemId );
00166 
00173     FBGenericMenuItem* InsertFirst(const char*  pItemName, int pItemId, FBGenericMenu* pMenu = NULL);
00174 
00181     FBGenericMenuItem* InsertLast(const char*  pItemName, int pItemId, FBGenericMenu* pMenu = NULL);
00182 
00190     FBGenericMenuItem* InsertAfter(FBGenericMenuItem* pBeforeItem, const char*  pItemName, int pItemId, FBGenericMenu* pMenu = NULL);
00191 
00199     FBGenericMenuItem* InsertBefore(FBGenericMenuItem* pAfterItem, const char*  pItemName, int pItemId, FBGenericMenu* pMenu = NULL);
00200     
00204     void DeleteItem(FBGenericMenuItem* pToDelete);
00205 
00213     FBGenericMenuItem* Execute(int pX, int pY, bool pRightAlign = true);
00214 
00215 
00216     FBPropertyEvent OnMenuActivate; 
00217 private:
00218     friend class FBMenuManager;
00219     friend class DataFBMenuManager;
00220     friend class DataFBGenericMenu;
00221 };
00222 
00248 class  FBSDK_DLL FBMenuManager : public FBComponent {
00249     __FBClassDeclare( FBMenuManager, FBComponent );
00250 public:
00254     FBMenuManager();
00255     
00262     FBGenericMenu* GetMenu(const char*  pPath);
00263 
00269     FBGenericMenuItem* InsertFirst(const char*  pMenuPath, const char*  pMenuName);
00270 
00276     FBGenericMenuItem* InsertLast(const char*  pMenuPath, const char*  pMenuName);
00277 
00283     FBGenericMenuItem* InsertBefore(const char*  pMenuPath, const char*  pAfterMenuName, const char*  pMenuName);    
00284 
00290     FBGenericMenuItem* InsertAfter(const char*  pMenuPath, const char*  pBeforeMenuName, const char*  pMenuName);    
00291 
00298     void SetItemEnable(const char*  pMenuPath, int pItemId, bool pEnable );
00299 
00306     bool IsItemEnable(const char*  pMenuPath, int pItemId);
00307 private:
00308     FBGenericMenuItem* GetMenuItem(const char*  pMenuPath, const char*  pMenuName, int pId );
00309 };
00310 
00311 
00312 
00313 #ifdef FBSDKUseNamespace
00314         }
00315 #endif
00316 
00317 #endif