deargui-vpl/ref/virtools/Includes/VEP_VersionControlInfo.h

218 lines
9.9 KiB
C++

/*
* Project: Virtools Interface Plugin SDK
* File: VEP_VersionControlInfo.h
* Author: Thomas Vissieres
* Last check date: 11/19/2003
* optimized for Tab Size: 4
* Quick file summary: structure that describes a Source Control Plugin
*/
#ifndef _VEP_VERSIONCONTROLINFO_H_
#define _VEP_VERSIONCONTROLINFO_H_
class CImageList;
class CMenu;
namespace VirtoolsExternalPlugin //-----------------------------------------
{
/*
* VersionControlInfo
* if your plugin is a version control plugin (using NxNAlienBrain, Microsoft Visual Source Safe for instance)
* This structure contains all callback function pointer necessary for version control, you must then fill
* these callback ptrs.
*
* If your plugin is something else, you may just want to access to version control tools.
* just call these functions in fitting place of your loading/saving/opening/closing code:
* m_OnPreOpen, m_OnPostOpen, m_OnPreSave, m_OnPostSave, m_OnPreClose
* and use other functions according to your needs
* a VersionControlInfo* is available with PluginInterface::GetVersionControl()
*
*/
struct VersionControlInfo
{ //note : item may be a file,folder or project
//-----------------------------------------------------------------------------
//enums
enum NODE_TYPE{
NT_NONE, //unknow node type in managed source control database
NT_FILE, //file node type in managed source control database
NT_FOLDER, //folder node type in managed source control database
NT_PROJECT, //project node type in managed source control database
NT_FILE_NS, //file node type manageable by source control but exists only in client computer (not synchronised)
NT_FOLDER_NS, //folder node type manageable by source control but exists only in client computer (not synchronised)
};
enum CHECKOUT_TYPE{
CT_UNDEFINED=-1,
CT_NONE=0, //file not checked out
CT_USER, //file checked out by user
CT_ANOTHERUSER, //file checked out by another user
CT_FOLDER_FULLY, //folder with all files /sub files checked out, by current user
CT_FOLDER_PARTIALLY,//folder with some files checked out but some not, by current user
};
enum MENU_FLAGS
{
MF_GETLATESTVERSION = 0x00000001,
MF_CHECKOUT = 0x00000002,
MF_CHECKIN = 0x00000004,
MF_UNDOCHECKOUT = 0x00000008,
MF_IMPORT = 0x00000010,
MF_SHOWHISTORY = 0x00000020,
MF_SHOWDIFFERENCES = 0x00000040,
MF_SHOWPROPERTIES = 0x00000080,
MF_SHOWDATABASEEXPLORER = 0x00000100,
MF_SHOWSETTINGS = 0x00000200,
MF_DISABLE = 0000000400,
MF_ADDTOSOURCECONTROL = 0x00000800,
MF_REMOVEFROMSOURCECONTROL = 0x00001000,
MF_BASIC = MF_GETLATESTVERSION+ //GETLATESTVERSION->IMPORT)
MF_CHECKOUT+
MF_CHECKIN+
MF_UNDOCHECKOUT+
MF_IMPORT,
MF_EXTENTED = MF_ADDTOSOURCECONTROL+ //SHOWHISTORY->SHOWPROPERTIES)
MF_REMOVEFROMSOURCECONTROL+
MF_SHOWHISTORY+
MF_SHOWDIFFERENCES+
MF_SHOWPROPERTIES,
MF_TOOLS = MF_SHOWDATABASEEXPLORER+ //SHOWDATABASEEXPLORER->DISABLE)
MF_SHOWSETTINGS+
MF_DISABLE,
MF_BASIC_EXTENDED = MF_BASIC+MF_EXTENTED,
MF_BASIC_EXTENDED_TOOLS = MF_BASIC_EXTENDED+MF_BASIC_EXTENDED+MF_TOOLS,
MF_BASIC_TOOLS = MF_BASIC_EXTENDED+MF_TOOLS,
MF_EXTENDED_TOOLS = MF_BASIC_EXTENDED+MF_TOOLS,
};
enum IMAGE_INDEX //image index in image list obtained with m_GetImageList function ptr
{
II_FOLDER_NS, //folder not synchronised with database
II_FOLDER_S, //folder synchronised with database
II_FILE_NS, //file not synchronised with database
II_FILE_S, //file synchronised with database
II_FILE_CHECKOUT, //file checked out by user
II_FILE_CHECKOUTANOTHER, //file checked out by another user
II_FOLDER_NS_SPEC, //folder not synchronised with database with source control specific icon
II_FOLDER_S_SPEC, //folder synchronised with database with source control specific icon
II_PROJECT, //project
II_PROJECT_SPEC, //project with source control specific icon
II_FILE_NOTLOCAL, //file available in server only
II_FOLDER_NOTLOCAL, //folder available in server only
};
enum STATUS_FLAGS
{
SF_FOLDER = 0x00000000,
SF_FILE = 0x00000001,
SF_LINK = 0x00000002,
SF_SYSTEM = 0x00000004,
SF_READONLY = 0x00000008,
SF_LOCKED = 0x00000010,
SF_CHECKED_OUT = 0x00000020,
SF_MOUNTED = 0x00000040,
SF_LOCKED_MULTIPLE = 0x00000080,
SF_LOCKED_EXCLUSIVE = 0x00000100,
SF_NOTUNDERSOURCECONTROL = 0x10000000,
};
//-----------------------------------------------------------------------------
//typedef function ptr
typedef BOOL (*InitializeFunc) ();
typedef BOOL (*IsSourceControlPluginActiveFunc) ();
typedef void (*EnableFunc) (BOOL iEnable);
typedef BOOL (*OnPreOpenFunc) (const char** iFiles,int iFileCount);
typedef BOOL (*OnPostOpenFunc) (const char** iFiles,int iFileCount);
typedef BOOL (*OnPreSaveFunc) (const char** iFiles,int iFileCount);
typedef BOOL (*OnPostSaveFunc) (const char** iFiles,int iFileCount);
typedef BOOL (*OnPreCloseFunc) (const char** iFiles,int iFileCount);
typedef BOOL (*CheckOutFunc) (const char** iFiles,int iFileCount);
typedef BOOL (*UndoCheckOutFunc) (const char** iFiles,int iFileCount);
typedef BOOL (*CheckInFunc) (const char** iFiles,int iFileCount,BOOL iKeepCheckOut);
typedef BOOL (*ImportFunc) (const char** iFiles,int iFileCount);
typedef BOOL (*GetLatestVersionFunc) (const char** iFiles,int iFileCount,BOOL iReferences);
//typedef BOOL (*AddToSourceControlFunc) (const char** iFiles,int iFileCount);
typedef BOOL (*RemoveFromSourceControlFunc) (const char** iFiles,int iFileCount);
typedef BOOL (*LoadFileFromSourceControlFunc) (XString& oFile);
typedef NODE_TYPE (*IsNodeInDatabaseFunc) (const char* iFile,CHECKOUT_TYPE *oCheckOut);
typedef long (*GetStatusFlagsFunc) (const char* iFile);//return combination of STATUS_FLAGS
typedef BOOL (*ShowDatabaseExplorerFunc) ();
typedef BOOL (*EditSettingsFunc) ();
typedef BOOL (*ShowHistoryFunc) (const char* iFile);
typedef BOOL (*ShowDifferencesFunc) (const char* iFile);
typedef BOOL (*ShowPropertiesFunc) (const char* iFile);
typedef BOOL (*AddSourceControlMenuToFunc) (CMenu* iMenu,const char** iFiles,int iFileCount,int iStartingCommandID,int* oEndingCommandID,MENU_FLAGS iFlags);
typedef void (*MenuCallbackFunc) (int iCommandID);
typedef CImageList* (*GetImageListFunc) ();
typedef int (*GetFileSCIconFunc) (const char* iFile);//return a IMAGE_INDEX according to file (full path)
//-----------------------------------------------------------------------------
//function ptr
InitializeFunc m_Start; //to call after loading dll
InitializeFunc m_Stop; //to call before unloading dll
IsSourceControlPluginActiveFunc m_IsEnabled; //is source control plugin active
EnableFunc m_Enable; //enable / disable source control plugin
OnPreOpenFunc m_OnPreOpen; //callback that should be called before opening file
OnPostOpenFunc m_OnPostOpen; //callback that should be called after opening file
OnPreSaveFunc m_OnPreSave; //callback that should be called before saving file
OnPostSaveFunc m_OnPostSave; //callback that should be called after saving file
OnPreCloseFunc m_OnPreClose; //callback that should be called before closing file
CheckOutFunc m_CheckOut; //check out item
CheckInFunc m_CheckIn; //check in item
ImportFunc m_Import; //import item (and add it in alienbrain database
GetLatestVersionFunc m_GetLatestVersion; //get latest version of item
//if references==TRUE, then setting
//"When opening a file with references" will be used
UndoCheckOutFunc m_UndoCheckOut; //undo check out item
//AddToSourceControlFunc m_AddToSourceControl; //add item to source control
RemoveFromSourceControlFunc m_RemoveFromSourceControl; //remove item from source control
LoadFileFromSourceControlFunc m_LoadFileFromSourceControl; //load file from source control
IsNodeInDatabaseFunc m_IsNodeInDatabase; //is item in database, return a NXN_NODE_TYPE
//Note that NT_FOLDER_NS & NT_FILE_NS mean
//that folder / file is not present in database but only on client computer
//and can be managed by source control
//because a parent folder is in database.
GetStatusFlagsFunc m_GetStatusFlags; //return combination of STATUS_FLAGS
//to know the source control state
//of a file
ShowDatabaseExplorerFunc m_ShowDatabaseExplorer; //show database explorer
EditSettingsFunc m_EditSettings; //edit nxn settings func
ShowHistoryFunc m_ShowHistory; //show history of file if mapped in source control
ShowDifferencesFunc m_ShowDifferences; //show difference of file with previous version (stats comparison)
ShowPropertiesFunc m_ShowProperties; //show file properties if mapped (show statistics)
AddSourceControlMenuToFunc m_AddSourceControlMenuTo; //add to a CMenu* menu item according to file / path state in Source Control database
//return value: endingCommandID: you should use that value to determine
//if you should callback VersionControl plugin after
MenuCallbackFunc m_MenuCallback; //if you called m_AddSourceControlMenuTo, when your windowProc
//returns a menu command between startingCommandID and endingCommandID,
//then call this callback with id = returned ID - startingCommandID
GetImageListFunc m_GetImageList; //returns image list, use IMAGE_INDEX to get required image
GetFileSCIconFunc m_GetFileSCIcon; //return a IMAGE_INDEX according to file (full path)
};
}//namespace VirtoolsExternalPlugin
#endif //#ifndef _VEP_VERSIONCONTROLINFO_H_