// // Copyright 1997 Nicholas J. Irias. All rights reserved. // // // DepotTreeCtrl.h : header file // #ifndef __DEPOTCTRL #define __DEPOTCTRL #include "P4FileStats.h" #include "P4StatColl.h" #include "MSTreeCtrl.h" #include "customgetdlg.h" #include "IntegContinue.h" // Added by ClassView #include "integdlg\FileSpecPage.h" #include "P4PaneView.h" #include "Diff2Output.h" #define EDIT_FINDNEWVIEWER 1000 #define EDIT_CHOOSEVIEWER 100 #define EDIT_ASSOCVIEWER 10 //////////////////////////////////////////////// // WINDOW RELOAD/UPDATE CONSIDERATIONS // // There are two entry points for initiating some sort of // update - ExpandTree() and OnViewUpdate(). The expand // operation is only valid for 98.2 or newer servers, but // OnViewUpdate() can be called for both new and old servers. // // All update code will examine m_UpdateType before proceeding. // Its values are: // UPDATE_NONE: // there should be no update going on at this time // UPDATE_FULL: // With pre-98.2 servers, we initialize and refresh by running fstat on the whole // friggin depot to cache its contents. With 98.2 servers, the initial update just // loads depot folders // UPDATE_EXPAND: // with 98.2 servers, when a folder or depot is clicked, we run // p4 dirs and p4 fstat just for that directory level prior to // expanding the tree node // UPDATE_REDRILL: // with 98.2 servers, if the port or client hasnt changed, refresh // information in all explored depot folders and re-expand folders // as required #define UPDATE_NONE 0 // There is no update under way #define UPDATE_FULL 1 // Reloading all #define UPDATE_EXPAND 2 // A single node is expanding #define UPDATE_REDRILL 3 // Doing a refresh of all explored folders #define REDRILL TRUE #define NO_REDRILL FALSE class CP4; ///////////////////////////////////////////////////////////////////////////// // CDepotTreeCtrl class CDepotTreeCtrl; class CCmd_ListOpStat; class CP4DOleDataSource : public COleDataSource { CDepotTreeCtrl * m_depotTree; public: CP4DOleDataSource() : m_depotTree(0) {} void SetTreeCtrl(CDepotTreeCtrl *pDepotTree) { m_depotTree = pDepotTree; } BOOL OnRenderData( LPFORMATETC lpFormatEtc, LPSTGMEDIUM lpStgMedium ); }; class CDepotTreeCtrl : public CMultiSelTreeCtrl { private: ////////////// // Tracking info for window updates. CString m_LastPath; // last folder we inserted an fstat file under CString m_LastChildlessPath;// last childless folder we searched to HTREEITEM m_LastPathItem; // The tree node of that folder // Note that folders are not counted long m_ItemCount; // number of files in tree long m_DepotCount; // number of depots in tree // Type of window update int m_UpdateType; BOOL m_RunningUpdate; BOOL m_Redrill; BOOL m_ClearedChangeWnd; // The root item of the entire tree HTREEITEM m_Root; // The Custom Sync Dialog Box CCustomGetDlg *m_CustomGetDlg; // The Integ File Spec Dialox Box CIntegFileSpecPage *m_IntegWizard; protected: public: CDepotTreeCtrl(); // protected constructor used by dynamic creation protected: DECLARE_DYNCREATE(CDepotTreeCtrl) BOOL ExpandTree( const HTREEITEM hItem ); BOOL CollapseTree( const HTREEITEM hItem ); // Additional file info is stored in an array class attached to tree nodes w/ LParam // There is one row per file CP4StatColl m_FSColl; // A list of depot filespecs sent to CP4 for all multiple file type commands CStringList m_StringList; CStringList m_StringList2; CStringList m_SelectionList; // A list of depot filespecs sent to CP4 for integrates CStringList m_StringListI1; CStringList m_StringListI2; CStringList m_StringListI3; CStringList m_StringListI4; CStringList m_StringListSv; // A list of change numbers an integration can be done under CStringList m_Changes; // Data save area when doing an interg using branch int m_Save_branchFlag; BOOL m_Save_useBranch; BOOL m_Save_entireView; int m_Save_changeList; BOOL m_Save_rename; BOOL m_Save_isChgListInteg; // A list of nodes that are currently expanded, to support UPDATE_REDRILL_982API CStringList m_ExpandedNodeList; CString m_FirstVisibleNodeText; // A list of depot files currently selected - saved during refreshes CStringList m_SavedSelectionSet; // OLE drag-drop source widget CP4DOleDataSource m_OLESource; BOOL m_DepotIsDropTarget; DWORD m_DragDropCtr; // Internal clipboard formats UINT m_CF_DELTA; UINT m_CF_DEPOT; // Drag info stored in OnDragEnter DROPEFFECT m_DropEffect; UINT m_DragDataFormat; // clipboard data format (also indicates source) UINT m_SelectOnDrag; // Context for p4 edit in response to a drop long m_OpenUnderChangeNumber; // Depot lists CStringList m_LocalDepotList; CStringList m_RemoteDepotList; // Utility functions for counting leafs int GetLeafCount(HTREEITEM item); int LeafSelectedCount(); // Context menu tests for selection set BOOL AnyHaveChildren(); BOOL HasChildren(HTREEITEM currentItem); BOOL AnyEditable(); BOOL AnyAddable(); BOOL AllAddable(); BOOL AnyOpenedForInteg(); BOOL AnyLockable(); BOOL AnyRecoverable(); BOOL AnyUnlockable(); BOOL AnyOpened(); BOOL AnyDeleted(); BOOL AnyOtherOpened(); BOOL AnyRemoveable(); BOOL AnyInView(); BOOL AnyNotCurrent(); BOOL AnyInRemoteDepot(); BOOL AllInView(); BOOL AllNotInDepot(); BOOL IsDeleted(HTREEITEM item); BOOL IsOpened(HTREEITEM item); BOOL IsInView(); BOOL AutoEditPossible(BOOL *mustWaitForServer); CString m_Viewer; BOOL m_Editing; CString m_ViewFilePath; BOOL m_ViewFileIsText; HTREEITEM m_ViewItem; CIntegContinue m_integCont3; CPoint m_ContextPoint; BOOL m_InContextMenu; BOOL m_SkipSyncDialog; CDiff2Output *m_Diff2dlg; // Expand Depot String data CString m_ExpandPath; CString m_OrigPath; HTREEITEM m_ExpandItem; CObList m_ExpandItemList; BOOL m_Add2ExpandItemList; BOOL m_ExpandDepotContinue; BOOL m_JustExpanded; BOOL m_Need2Filter; CString m_SaveP4Files_FileSpec; CString m_P4Files_FileSpec; CStringList m_P4Files_List; BOOL m_P4Files_Deselect; void *m_pCmdFiles; TCHAR m_SlashChar; int m_DropTargetFlag; CPoint m_DropTargetPt; BOOL m_DiffSd; BOOL m_DiffSe; // Depot Filter data BOOL m_FilterDepot; int m_DepotFilterType; CStringList m_DepotFilterList; // list of depot syntax files to filter to CString m_FilterList; // list of ambigeous filenames to filter on - 1 per line CString m_DepotFilterPort; // depot filter was created for this port CString m_DepotFilterClient; // depot filter was created for this client // Fields to speed up idle processing int m_FlgHaveChildren; int m_FlgLockable; int m_FlgUnlockable; int m_FlgNotCurrent; int m_FlgAllNotInDepot; int m_FlgAllInView; int m_FlgInView; int m_FlgEditable; int m_FlgAddable; int m_FlgAllAddable; int m_FlgOpened; BOOL m_AnyHaveChildren; BOOL m_AnyLockable; BOOL m_AnyUnlockable; BOOL m_AnyNotCurrent; BOOL m_AllNotInDepot; BOOL m_AllInView; BOOL m_AnyInView; BOOL m_AnyEditable; BOOL m_AnyAddable; BOOL m_AllAddable; BOOL m_AnyOpened; // Fstats from 'p4 opened' for files opened for add. CObList m_FstatsAdds; // Operations protected: inline CP4winApp *TheApp() { return (CP4winApp *) AfxGetApp(); } public: void SetCaption( int iShowEntiredepot ); void AssembleStringList(CStringList *list,BOOL bDepotSyntax4Files=FALSE,BOOL bNoRemoteFiles=FALSE,BOOL bWildOK=FALSE); BOOL GetSelectedFiles( CStringList *list ); BOOL GetSelectedFStats( CObList *list ); int RenderFileNames(LPTSTR p); BOOL IsDepotFiltered() { return m_FilterDepot; } void EmptyDepotFilter() { m_DepotFilterList.RemoveAll(); } void ClearDepotFilter(BOOL bRunUpdate = TRUE); void ConvertDepotFilterList(int key); void LoadDepotFilterList(CStringList *pList); int GetDepotFilterType() { return m_DepotFilterType; } void SetDepotFilterType(int i) { m_DepotFilterType = i; } CString GetDepotFilterPort() { return m_DepotFilterPort; } void SetDepotFilterPort(CString port) { m_DepotFilterPort = port; } CString GetDepotFilterClient() { return m_DepotFilterClient; } void SetDepotFilterClient(CString client) { m_DepotFilterClient = client; } BOOL IsExpandDepotContinuing() { return m_ExpandDepotContinue; } void GetOpenedList(BOOL bAll); void FilterViaList(CString filelist); CString GetFilterList() { return m_FilterList; } void GetNextFilesFromFilterList(); BOOL IsInRemoteDepot(CString *depotfilename); CString GetCurrentItemPath(); CString GetItemDepotSyntax(HTREEITEM item, CString *localStr=NULL); void RunP4Files(CString str); void Clear(); void Empty_FstatsAdds(); void Call_OnContextMenu(CWnd* pWnd, CPoint point) { OnContextMenu(pWnd, point); } // Call this with TRUE to have ExpandDepotString() start keeping a list of found items // Call this with FALSE to stop ExpandDepotString() from adding to the list void SetAdd2ExpandItemList(BOOL b) { m_Add2ExpandItemList = b; if (b) m_ExpandItemList.RemoveAll(); } int GetExpandItemListCount() { return m_ExpandItemList.GetCount(); } BOOL SelectExpandItemList(); // called by mainframe to initiate updates of depot view // void OnViewUpdate( BOOL redrill, int key=0 ); // Expand an entire path. TRUE=new path in path; FALSE continue expanding old path // void ExpandDepotString(const CString &path,BOOL newPath,BOOL noExpand=FALSE,int key=0,BOOL noErrMsg=FALSE); // Given a tree item, search it siblings for the last element of the given path // HTREEITEM FindDepotSibling(const CString &path, HTREEITEM itemStart, BOOL bUp = FALSE); // Overrides public: virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point); virtual void OnDragLeave(); virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point); // Implementation protected: BOOL OnDrop(COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point); // Message handlers to receive info from server LRESULT OnP4Error(WPARAM wParam, LPARAM lParam); LRESULT OnP4Depots(WPARAM wParam, LPARAM lParam); LRESULT OnP4ExpandTree(WPARAM wParam, LPARAM lParam); LRESULT OnP4DirStat(WPARAM wParam, LPARAM lParam); LRESULT OnP4FStat(WPARAM wParam, LPARAM lParam); LRESULT OnP4PrepBrowse(WPARAM wParam, LPARAM lParam); LRESULT OnP4PrepEdit(WPARAM wParam, LPARAM lParam); LRESULT OnP4ListOp(WPARAM wParam, LPARAM lParam); LRESULT OnP4History(WPARAM wParam, LPARAM lParam); LRESULT OnP4EndHistory(WPARAM wParam, LPARAM lParam); LRESULT OnP4Get(WPARAM wParam, LPARAM lParam); LRESULT OnP4GetWhatIf(WPARAM wParam, LPARAM lParam); LRESULT OnP4Integ(WPARAM wParam, LPARAM lParam); LRESULT OnP4Add(WPARAM wParam, LPARAM lParam); LRESULT OnP4Recover(WPARAM wParam, LPARAM lParam); LRESULT OnP4Refresh(WPARAM wParam, LPARAM lParam); LRESULT OnP4UpdateOpen(WPARAM wParam, LPARAM lParam); LRESULT OnP4Diff(WPARAM wParam, LPARAM lParam); LRESULT OnP4Diff_sd_se(WPARAM wParam, LPARAM lParam); LRESULT InsertFromFstat(CP4FileStats *stats); LRESULT OnP4FileInformation(WPARAM wParam, LPARAM lParam); LRESULT OnP4EndFileInformation(WPARAM wParam, LPARAM lParam); LRESULT OnP4Files( WPARAM wParam, LPARAM lParam ); LRESULT OnDropTarget( WPARAM wParam, LPARAM lParam ); LRESULT OnSetAddFstats(WPARAM wParam, LPARAM lParam); LRESULT OnGetAddFstats(WPARAM wParam, LPARAM lParam); LRESULT OnP4Diff2(WPARAM wParam, LPARAM lParam); LRESULT OnP4EndDiff2( WPARAM wParam, LPARAM lParam ); LRESULT OnP4EndDiff2Output( WPARAM wParam, LPARAM lParam ); BOOL InsertDir( CString &path ); void FindParentDirectory(CString path, int& commonLength); void ProcessStatListResults(WPARAM wParam); void ProcessGetListResults(UINT command, CStringList *list); BOOL OnP4RevertFile(CCmd_ListOpStat *pCmd); void LabelDropMenu(BOOL bLabelSelected); // Message handler to process request from Branch View to integrate an entire branch LRESULT OnBranchIntegrate(WPARAM wParam, LPARAM lParam); // Message handler to process request from Sumitted Changelist View to integrate a change LRESULT OnChangelistIntegrate(WPARAM wParam, LPARAM lParam); // A few functions to make tree item manipulation a little easier HTREEITEM Insert(LPCTSTR text, int imageIndex, LPARAM lparam, HTREEITEM hParent); void DeleteLeaf(HTREEITEM item); CString GetItemPath(HTREEITEM item); CString GetItemName(HTREEITEM curr_item); CString GetItemRev(HTREEITEM curr_item); CString GetItemHeadRev(HTREEITEM curr_item); CString GetItemType(HTREEITEM curr_item); HTREEITEM VerifySubdir(CString path, HTREEITEM startItem); HTREEITEM CheckItem(CString lookingfor, HTREEITEM item, BOOL useRevNum, int revNum); HTREEITEM FindItem(CString path, CString fnamerev, BOOL useRevision); void InitFindItem() { m_LastChildlessPath=_T("////"); } HTREEITEM FindFolder(LPCTSTR depotName); void RunCStat( int key ); BOOL IsDepot( HTREEITEM hItem ); // CMSTreeView virt func to set status messages on mouse flyover void OnSetFlyoverMessage(HTREEITEM currentItem); // CMSTreeView virt func to attempt drag drop during left mouse button down BOOL TryDragDrop(HTREEITEM currentItem); // CMSTreeView virt func to handle a left dbl clk after the Item is determined void OnLButtonDblClk(HTREEITEM currentItem); // Initiate a refresh of the changes window. Called from OnP4Depots or OnP4FStat // void StartChangeWndUpdate(int key); // Support for UPDATE_REDRILL_982API void RecordTreeExploration(); void RecordFolderExploration(HTREEITEM parentItem, LPCTSTR path); void RunRedrill( int key ); // FileGet used by OnFileGet(), OnFileGetWhatIf(), OnFileRemove() void FileGet(BOOL whatIf, BOOL force, BOOL removeFiles, LPCTSTR qualifier=_T("")); // Used if Depot is to be sorted by extension HTREEITEM SortItemByExtension(LPCTSTR text, HTREEITEM hParent); public: virtual ~CDepotTreeCtrl() { Empty_FstatsAdds(); } protected: #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif // Generated message map functions public: afx_msg void OnViewUpdate(); protected: afx_msg void OnRButtonUp(UINT nFlags, CPoint point); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnUpdateFileLock(CCmdUI* pCmdUI); afx_msg void OnUpdateFileUnlock(CCmdUI* pCmdUI); afx_msg void OnUpdateFileOpendelete(CCmdUI* pCmdUI); afx_msg void OnUpdateFileOpenedit(CCmdUI* pCmdUI); afx_msg void OnUpdateFileRevert(CCmdUI* pCmdUI); afx_msg void OnUpdateFileGet(CCmdUI* pCmdUI); afx_msg void OnUpdateGetwhatif(CCmdUI* pCmdUI); afx_msg void OnUpdateFileRemove(CCmdUI* pCmdUI); afx_msg void OnUpdateFileTimeLapse(CCmdUI* pCmdUI); afx_msg void OnUpdateFileAnnotate(CCmdUI* pCmdUI); afx_msg void OnUpdateFileRevisionhistory(CCmdUI* pCmdUI); afx_msg void OnUpdateFileRevisiontree(CCmdUI* pCmdUI); afx_msg void OnUpdateFileDiffhead(CCmdUI* pCmdUI); afx_msg void OnUpdateFileDiff2(CCmdUI* pCmdUI); afx_msg void OnUpdatePositionDepot(CCmdUI* pCmdUI); afx_msg void OnUpdatePositionDepotNext(CCmdUI* pCmdUI); afx_msg void OnUpdatePositionChgs(CCmdUI* pCmdUI); afx_msg void OnUpdateShowDeletedFiles(CCmdUI* pCmdUI); afx_msg void OnUpdateWinExplore(CCmdUI* pCmdUI); afx_msg void OnUpdateCmdPrompt(CCmdUI* pCmdUI); afx_msg void OnFileLock(); afx_msg void OnFileUnlock(); afx_msg void OnFileOpenedit(); afx_msg void OnFileOpendelete(); afx_msg void OnFileRevert(); afx_msg void OnFileGet(); afx_msg void OnFileGetwhatif(); afx_msg void OnFileRemove(); afx_msg void OnFileTimeLapseView(); afx_msg void OnFileAnnotate(); afx_msg void OnFileAnnotateAll(); afx_msg void OnFileAnnotateChg(); afx_msg void OnFileAnnotateChgAll(); afx_msg void OnFileRevisionhistory(); afx_msg void OnFileRevisionTree(); afx_msg void OnPositionDepot(); afx_msg void OnPositionDepotNext(); afx_msg void OnPositionDepotPrev(); afx_msg void OnPositionChgs(); afx_msg void OnShowDeletedFiles(); afx_msg void OnWinExplore(); afx_msg void OnCmdPrompt(); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnUpdateFileGetcustom(CCmdUI* pCmdUI); afx_msg void OnFileGetcustom(); afx_msg void OnUpdateFileRefresh(CCmdUI* pCmdUI); afx_msg void OnFileRefresh(); afx_msg void CDepotTreeCtrl::OnUpdateFileForceToHead(CCmdUI* pCmdUI); afx_msg void OnFileForceToHead(); afx_msg void OnUpdateFileSubmit(CCmdUI* pCmdUI); afx_msg void OnFileSubmit(); afx_msg void OnFileDiffhead(); afx_msg void OnFileDiff2(); afx_msg void OnUpdateFileInformation(CCmdUI* pCmdUI); afx_msg void OnFileInformation(); afx_msg void OnUpdateFiledropEdit(CCmdUI* pCmdUI); afx_msg void OnFiledropEdit(); afx_msg void OnUpdateFiledropDelete(CCmdUI* pCmdUI); afx_msg void OnFiledropDelete(); afx_msg void OnUpdateFiledropCancel(CCmdUI* pCmdUI); afx_msg void OnFiledropCancel(); afx_msg void OnUpdateFileAutoedit(CCmdUI* pCmdUI); afx_msg void OnFileAutoedit(); afx_msg void OnFileQuickedit(); afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnUpdateFileAutobrowse(CCmdUI* pCmdUI); afx_msg void OnFileAutobrowse(); afx_msg void OnFileQuickbrowse(); afx_msg void OnUpdateFileRename(CCmdUI* pCmdUI); afx_msg void OnUpdateFileIntegrate(CCmdUI* pCmdUI); afx_msg void OnFileIntegrate(); afx_msg void OnFileIntegspec(); afx_msg void OnFileRename(); afx_msg void OnUpdateFileRecover(CCmdUI* pCmdUI); afx_msg void OnFileRecover(); afx_msg void OnUpdateEditSelectAll(CCmdUI* pCmdUI); afx_msg void OnEditSelectAll(); afx_msg void OnUpdateEditCopy(CCmdUI* pCmdUI); afx_msg void OnEditCopy(); afx_msg void OnUpdateEditCopyclientpath(CCmdUI* pCmdUI); afx_msg void OnEditCopyclientpath(); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnDiff_sd_se(); afx_msg void OnUpdateDiff_sd_se(CCmdUI* pCmdUI); afx_msg void OnUpdateAddToClientView(CCmdUI* pCmdUI); afx_msg void OnAddToClientView(); afx_msg void OnUpdateAddReviews(CCmdUI* pCmdUI); afx_msg void OnAddReviews(); afx_msg void OnUpdateFilterJobview(CCmdUI* pCmdUI); afx_msg void OnFilterJobview(); afx_msg void OnFilterJobviewInteg(); afx_msg void OnUpdateFindFileUnderFolder(CCmdUI* pCmdUI); afx_msg void OnFindFileUnderFolder(); afx_msg void OnUpdateRemoveViewer(CCmdUI* pCmdUI); afx_msg void OnRemoveViewer(); afx_msg void OnUpdateAddBookmark(CCmdUI* pCmdUI); afx_msg void OnAddBookmark(); afx_msg void OnUpdateLabelSync(CCmdUI* pCmdUI); afx_msg void OnLabelSync(); afx_msg void OnUpdateLabelDeleteFiles(CCmdUI* pCmdUI); afx_msg void OnLabelDeleteFiles(); afx_msg void OnUpdateLabelSyncClient(CCmdUI* pCmdUI); afx_msg void OnLabelSyncClient(); afx_msg void OnUpdateFileDelete(CCmdUI* pCmdUI); afx_msg void OnFileDelete(); afx_msg void OnUpdateFileAdd(CCmdUI* pCmdUI); afx_msg void OnFileAdd(); afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); afx_msg void OnUpdateViewUpdate(CCmdUI* pCmdUI); afx_msg void OnUpdateViewFilteredview(CCmdUI* pCmdUI); afx_msg void OnViewFilteredview(); afx_msg void OnUpdateViewClearfilter(CCmdUI* pCmdUI); afx_msg void OnViewClearfilter(); afx_msg void OnUpdateFilterSetview(CCmdUI* pCmdUI); afx_msg void OnFilterSetview(); afx_msg void OnUpdateFilterClearview(CCmdUI* pCmdUI); afx_msg void OnFilterClearview(); afx_msg void OnUpdateLabelFilterSetview(CCmdUI* pCmdUI); afx_msg void OnLabelFilterSetview(); afx_msg void OnUpdateLabelFilterSetviewRev(CCmdUI* pCmdUI); afx_msg void OnLabelFilterSetviewRev(); afx_msg void OnUpdateLabelFilterClearview(CCmdUI* pCmdUI); afx_msg void OnLabelFilterClearview(); afx_msg void OnPerforceOptions(); // Keep the OnContextMenu out of the AFX_MSG set, since MFC right click in a TreeView is busted. void OnFileMRUBrowse(UINT nID); void OnFileMRUEditor(UINT nID); void RunMRUViewer(UINT nID); void OnFileNewBrowser(); void OnFileNewEditor(); void FindAndRunNewViewer(); void RunAssocViewer(); void ChooseAndRunViewer(); void PrepareForViewer(); void RunViewer(); void UpdateFileAnnotate(CCmdUI* pCmdUI, BOOL bUnicodeOK=FALSE); void FileAnnotate(BOOL bAll, BOOL bChg=FALSE); void OnIntegrate(BOOL useBranch,LPCTSTR branchName,BOOL entireView,int changeList,CStringList *filelist,BOOL rename=FALSE,BOOL isChgListInteg=FALSE); void OnIntegrate0(int branchFlag, BOOL useBranch,LPCTSTR branchName,BOOL entireView,int changeList,CStringList *filelist,BOOL rename=FALSE,BOOL isChgListInteg=FALSE); LRESULT OnIntegrate1(WPARAM wParam, LPARAM lParam); void OnIntegrate2(CStringList *list); BOOL OnIntegrate3(BOOL bRunSyncAftPreview = FALSE, BOOL bDontSync = FALSE); void AddBookmark(CString &depotPath); LRESULT OnEditFileTxt(WPARAM wParam, LPARAM lParam); LRESULT OnEditFileBin(WPARAM wParam, LPARAM lParam); LRESULT OnEditFile(WPARAM wParam, LPARAM lParam); LRESULT OnBrowseFileTxt(WPARAM wParam, LPARAM lParam); LRESULT OnBrowseFileBin(WPARAM wParam, LPARAM lParam); LRESULT OnBrowseFile(WPARAM wParam, LPARAM lParam); LRESULT OnGetSelectedCount(WPARAM wParam, LPARAM lParam); LRESULT OnGetSelectedList(WPARAM wParam, LPARAM lParam); LRESULT OnP4Opened(WPARAM wParam, LPARAM lParam); LRESULT OnViewHead(WPARAM wParam, LPARAM lParam); LRESULT OnRedoOpendList(WPARAM wParam, LPARAM lParam); LRESULT OnDoGetCustom(WPARAM wParam, LPARAM lParam); LRESULT IsFilteredOnOpen(WPARAM wParam, LPARAM lParam); LRESULT OnP4FileRevert(WPARAM wParam, LPARAM lParam); LRESULT OnAddBookmarkMsg(WPARAM wParam, LPARAM lParam); LRESULT OnIntegBranchBrowseCallBack(WPARAM wParam, LPARAM lParam); LRESULT OnSetViewer( WPARAM wParam, LPARAM lParam ); LRESULT OnEndPositionDepot( WPARAM wParam, LPARAM lParam ); void OnContextMenu(CWnd*, CPoint point); void SetToolTipColors(CPoint point); BOOL AllOpenedForAdd(); BOOL extUsesOpen(CString extension); DECLARE_MESSAGE_MAP() private: BOOL RunDirStat( const CString &path ); CString GetFileSpec( ); void LockAndUnlock( int which ) ; BOOL FindFileInDepotFilter(LPCTSTR depotPath); BOOL FindDirInDepotFilter(LPCTSTR path); BOOL FileExtUsesLiveFileToView(LPCTSTR path); void OnFileRecoverProceed(); }; ///////////////////////////////////////////////////////////////////////////// #endif //DEPOTTREECTRL
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 19924 | YourUncleBob |
Populate -o //guest/perforce_software/p4win/... //guest/YourUncleBob/p4win/..... |
||
//guest/perforce_software/p4win/main/gui/DepotTreeCtrl.h | |||||
#1 | 16169 | perforce_software | Move files to follow new path scheme for branches. | ||
//guest/perforce_software/p4win/gui/DepotTreeCtrl.h | |||||
#1 | 8562 | Matt Attaway |
These feet never stop running. Initial commit of the P4Win source code. To the best of our knowledge this compiles and runs using the 2013.3 P4 API and VS 2010. Expect a few changes as we refine the build process. Please post any build issues to the forums. |