fbsdk/fbassetmng.h Source File
 
 
 
fbsdk/fbassetmng.h
Go to the documentation of this file.
00001 #ifndef __FBASSETMNG_H__
00002 #define __FBASSETMNG_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 
00043 #include <kaydaradef.h>
00044 #ifndef FBSDK_DLL
00045 
00048         #define FBSDK_DLL K_DLLIMPORT
00049 #endif
00050 
00051 #include <fbsdk/fbcomponent.h>
00052 
00053 #ifdef FBSDKUseNamespace
00054         namespace FBSDKNamespace {
00055 #endif
00056 
00057 
00058 __FB_FORWARD( FBAssetItem );
00059 __FB_FORWARD( FBAssetFile );
00060 __FB_FORWARD( FBAssetFolder );
00061 __FB_FORWARD( FBAssetMng );
00062 
00063 
00065 // FBAssetItem
00067 
00069 class FBSDK_DLL FBAssetItem : public FBComponent
00070 {
00071         __FBClassDeclare( FBAssetItem, FBComponent );
00072 public:
00073 
00078         FBAssetItem( const char* pName, HIObject pObject=NULL );
00079 
00083         virtual FBString GetName() const = 0;
00084 
00088         virtual FBString GetLocalPath() const = 0;
00089 
00093         virtual FBString GetServerPath() const = 0;
00094 
00098         virtual FBAssetFolder* GetParent() const = 0;
00099 
00105         virtual bool GetLatest( bool pReplaceCheckedOut = false, bool pSilent = false ) = 0;
00106 
00113         virtual bool CheckIn( const FBString& pComment = "", bool pKeepCheckedOut = false, bool pSilent = false ) = 0;
00114 
00122         virtual bool CheckOut( const FBString& pComment = "", bool pDontGetLocal = false, bool pSilent = false ) = 0;
00123 
00129         virtual bool UndoCheckOut( bool pReplaceLocalFile = true, bool pSilent = false ) = 0;
00130 
00133         virtual void ShowHistory() const = 0;
00134 
00137         virtual void ShowProperties() const = 0;
00138 
00139         FBString                                        LastError;              
00140 };
00141 
00142 
00144 // FBAssetFile
00146 
00153 #define FBRegisterAssetFile( UniqueNameStr, ClassName, Label, Desc, IconFilename ) \
00154         HIObject RegisterAssetFile##ClassName( HIObject /*pOwner*/,const char* pName,void * /*pData*/) \
00155         { \
00156           ClassName *Class = new ClassName( Label ); \
00157                 Class->Name = UniqueNameStr; \
00158                 if (Class->FBCreate()) { \
00159                         return Class->GetHIObject(); \
00160                 } else { \
00161                         delete Class; \
00162                         return NULL; \
00163                 } \
00164         } \
00165         FBLibraryModule( ClassName )    \
00166         {       \
00167                 FBRegisterObject( ClassName,"Asset/AssetItem/AssetFile",Label,Desc,RegisterAssetFile##ClassName, true, IconFilename );  \
00168         }
00169 
00174 #define FBAssetFileDeclare( ClassName, Parent  ) \
00175         FBClassDeclare( ClassName,Parent); \
00176   public: \
00177         ClassName(const char* pName):Parent(pName) { FBClassInit; } \
00178   private:
00179 
00183 #define FBAssetFileImplementation( ThisComponent ) \
00184                 FBClassImplementation( ThisComponent )
00185 
00187 // FBAssetFile
00189 
00191 class FBSDK_DLL FBAssetFile : public FBAssetItem
00192 {
00193         __FBClassDeclare( FBAssetFile, FBAssetItem );
00194 public:
00199         FBAssetFile( const char* pName, HIObject pObject=NULL );
00200 
00201         IObject_Declare(K_IMPLEMENTATION);              // Interface to IObject.
00202 
00206         virtual bool FBCreate();
00207 
00211         virtual bool IsCheckedOut() const = 0;
00212 
00216         virtual bool IsCheckedOutByMe() const = 0;
00217 
00221         virtual FBString GetCheckedOutBy() const = 0;
00222 };
00223 
00224 
00226 // FBAssetFolder
00228 
00235 #define FBRegisterAssetFolder( UniqueNameStr, ClassName, Label, Desc, IconFilename ) \
00236         HIObject RegisterAssetFolder##ClassName( HIObject /*pOwner*/,const char* pName,void * /*pData*/) \
00237         { \
00238           ClassName *Class = new ClassName( Label ); \
00239                 Class->Name = UniqueNameStr; \
00240                 if (Class->FBCreate()) { \
00241                         return Class->GetHIObject(); \
00242                 } else { \
00243                         delete Class; \
00244                         return NULL; \
00245                 } \
00246         } \
00247         FBLibraryModule( ClassName )    \
00248         {       \
00249                 FBRegisterObject( ClassName,"Asset/AssetItem/AssetFolder",Label,Desc,RegisterAssetFolder##ClassName, true, IconFilename );      \
00250         }
00251 
00256 #define FBAssetFolderDeclare( ClassName, Parent  ) \
00257         FBClassDeclare( ClassName,Parent); \
00258   public: \
00259         ClassName(const char* pName):Parent(pName) { FBClassInit; } \
00260   private:
00261 
00265 #define FBAssetFolderImplementation( ThisComponent ) \
00266                 FBClassImplementation( ThisComponent )
00267 
00269 // FBAssetFolder
00271 
00273 class FBSDK_DLL FBAssetFolder : public FBAssetItem
00274 {
00275         __FBClassDeclare( FBAssetFolder, FBAssetItem );
00276 public:
00281         FBAssetFolder( const char* pName, HIObject pObject=NULL );
00282 
00283         IObject_Declare(K_IMPLEMENTATION);              // Interface to IObject.
00284 
00288         virtual bool FBCreate();
00289 
00293         virtual int     GetChildCount() const = 0;
00294 
00298         virtual FBAssetItem* GetChild( int pIndex ) = 0;
00299 
00303         virtual FBAssetFile* GetFile( const FBString& pName ) = 0;
00304 
00308         virtual FBAssetFolder* GetFolder( const FBString& pName ) = 0;
00309 
00317         virtual FBAssetFile* AddFile( const FBString& pLocalPath, const FBString& pComment = "", bool pCheckOut = false, bool pSilent = false ) = 0;
00318 
00325         virtual FBAssetFolder* AddFolder( const FBString& pName, const FBString& pComment = "", bool pSilent = false ) = 0;
00326 };
00327 
00328 
00330 // FBAssetMng
00332 
00339 #define FBRegisterAssetMng( UniqueNameStr, ClassName, Label, Desc, IconFilename ) \
00340         HIObject RegisterAssetMng##ClassName( HIObject /*pOwner*/,const char* pName,void * /*pData*/) \
00341         { \
00342           ClassName *Class = new ClassName( Label ); \
00343                 Class->Name = UniqueNameStr; \
00344                 Class->Description = Desc; \
00345                 if (Class->FBCreate()) { \
00346                         return Class->GetHIObject(); \
00347                 } else { \
00348                         delete Class; \
00349                         return NULL; \
00350                 } \
00351         } \
00352         FBLibraryModule( ClassName )    \
00353         {       \
00354                 FBRegisterObject( ClassName,"Asset/AssetMng",Label,Desc,RegisterAssetMng##ClassName, false, IconFilename );     \
00355         }
00356 
00361 #define FBAssetMngDeclare( ClassName, Parent  ) \
00362         FBClassDeclare( ClassName,Parent); \
00363   public: \
00364         ClassName(const char* pName):Parent(pName) { FBClassInit; } \
00365   private:
00366 
00370 #define FBAssetMngImplementation( ThisComponent ) \
00371                 FBClassImplementation( ThisComponent )
00372 
00374 // FBAssetMng
00376 
00380 enum FBAssetMngMenuOptions              {       
00381         kMenuOpenFromDatabase   = 1<<0,         
00382         kMenuAddToDatabase              = 1<<1,         
00383         kMenuUploadToDatabase   = 1<<2,         
00384         kMenuGetLatest                  = 1<<3,         
00385         kMenuCheckIn                    = 1<<4,         
00386         kMenuCheckOut                   = 1<<5,         
00387         kMenuUndoCheckOut               = 1<<6,         
00388         kMenuShowHistory                = 1<<7,         
00389         kMenuShowProperties             = 1<<8,         
00390         kMenuShowExplorer               = 1<<9,         
00391         kMenuShowReferenceMng   = 1<<10,        
00392         kMenuShowSettings               = 1<<11,        
00393         kMenuEnable                             = 1<<12,        
00394 
00396         kMenuFileAll                    = kMenuOpenFromDatabase | kMenuAddToDatabase | kMenuUploadToDatabase,
00397 
00399         kMenuSourceControlAll   = kMenuGetLatest | kMenuCheckIn | kMenuCheckOut | kMenuUndoCheckOut |
00400                                                           kMenuShowHistory | kMenuShowProperties | kMenuShowExplorer |
00401                                                           kMenuShowReferenceMng | kMenuShowSettings | kMenuEnable,
00402 
00404         kMenuSourceControlMin   =  kMenuGetLatest | kMenuCheckIn | kMenuCheckOut | kMenuUndoCheckOut |
00405                                                            kMenuShowSettings | kMenuEnable,
00406 
00408         kMenuAll                                = 0xFFFFFFFF
00409 };
00410 
00411 
00414 enum FBAssetMngFileOptions      {
00415         kFileCheckOutOnLoad             = 1<<0,         
00416         kFileCheckOutOnLoad_Ask = 1<<1,         
00417         kFileUploadOnSave               = 1<<2,         
00418         kFileUploadOnSave_Ask   = 1<<3,         
00419         kFileAddOnNewSave               = 1<<4,         
00420         kFileAddOnNewSave_Ask   = 1<<5,         
00421         kFileCheckInOnClose             = 1<<6,         
00422         kFileCheckInOnClose_Ask = 1<<7,         
00423         kFileOptionsAll                 = 0xFFFFFFFF
00424 };
00425 
00426 
00427 FB_DEFINE_COMPONENT( FBSDK_DLL, AssetMng );
00428 
00431 class FBSDK_DLL FBAssetMng : public FBComponent {
00432         __FBClassDeclare( FBAssetMng, FBComponent );
00433 public:
00438         FBAssetMng( const char* pName, HIObject pObject=NULL );
00439 
00440         IObject_Declare(K_IMPLEMENTATION);              // Interface to IObject.
00441 
00445         virtual bool Initialize() = 0;
00446 
00450         virtual FBAssetFile* BrowseForFile() = 0;
00451 
00455         virtual FBAssetFolder* BrowseForFolder() = 0;
00456 
00461         virtual FBAssetFolder* CreateServerPath( const FBString& pServerPath ) = 0;
00462         
00467         virtual bool FileIsManaged( const FBString& pFilename ) = 0;
00468         
00473         virtual bool WithinManagedPath( const FBString& pLocalPath ) = 0;
00474         
00479         virtual FBString MapLocalPathToServerPath( const FBString& pLocalPath ) = 0;
00480 
00485         virtual FBAssetFile* GetAssetFile( const FBString& pServerFilename ) = 0;
00486         
00491         virtual FBAssetFile* GetAssetFileFromLocalPath( const FBString& pLocalFilename ) = 0;
00492 
00497         virtual FBAssetFolder* GetAssetFolder( const FBString& pServerPath ) = 0;
00498         
00503         virtual FBAssetFolder* GetAssetFolderFromLocalPath( const FBString& pLocalPath ) = 0;
00504 
00507         virtual void ShowSettings() = 0;
00508 
00512         virtual int GetFileOptions() = 0;
00513 
00516         virtual bool CheckAvailability() const = 0;
00517         
00518         FBPropertyString                        Name;                   
00519         FBPropertyString                        Description;    
00520         FBPropertyInt                           MenuFlags;              
00521         FBString                                        LastError;              
00522 };
00523 
00524 #ifdef FBSDKUseNamespace
00525         }
00526 #endif
00527 #endif  /* __FBASSETMNG_H__     */