// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. #ifndef __MASTERTREE_H__ #define __MASTERTREE_H__ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // MasterTree.h : header file // #include <string> #include <map> ///////////////////////////////////////////////////////////////////////////// #define MT_SORT_BY_NAME_INC 0 #define MT_SORT_BY_NAME_DEC 1 #define MT_SORT_BY_DATE_INC 2 #define MT_SORT_BY_DATE_DEC 3 ///////////////////////////////////////////////////////////////////////////// // CMasterTree Control ///////////////////////////////////////////////////////////////////////////// class CMasterTree : public CTreeCtrl { bool _LDrag; CImageList *_DragImg; HTREEITEM _DragItem; HTREEITEM _LastItemSelected; HTREEITEM _LastActiveContinent; UINT m_nTimerID; UINT m_timerticks; public: CMasterTree (); afx_msg void OnTimer(UINT nIDEvent); afx_msg void OnLBeginDrag (NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnMouseMove (UINT nFlags, CPoint point); afx_msg void OnLButtonDown (UINT nFlags, CPoint point); afx_msg void OnLButtonUp (UINT nFlags, CPoint point); afx_msg void OnLButtonDblClk (UINT nFlags, CPoint point); afx_msg void OnRButtonDown (UINT nFlags, CPoint point); // Continent menus (a level under the root) afx_msg void OnMenuNewContinent (); afx_msg void OnMenuContinentOpen (); afx_msg void OnMenuContinentProperties (); afx_msg void OnMenuContinentNewRegion (); afx_msg void OnMenuContinentDelete (); // Regions menus (a level under the continent) afx_msg void OnMenuRegionOpen (); afx_msg void OnMenuRegionRename (); afx_msg void OnMenuRegionNewSubRegion (); afx_msg void OnMenuRegionNewPrim (); afx_msg void OnMenuRegionNewGeorges (); afx_msg void OnMenuRegionDelete (); // File menus (a level under the Region) afx_msg void OnMenuFileOpen (); afx_msg void OnMenuFileRename (); afx_msg void OnMenuFileDelete (); std::string getCurrentPath (); DECLARE_MESSAGE_MAP() private: // TOOLS std::string getPath (HTREEITEM ht); HTREEITEM getContinent (HTREEITEM ht); HTREEITEM getRegion (HTREEITEM ht); bool isFile (HTREEITEM ht); }; ///////////////////////////////////////////////////////////////////////////// // CMasterTreeDlg Dialog ///////////////////////////////////////////////////////////////////////////// class CMasterTreeDlg : public CDialog { CMasterTree *_Tree; std::map<HTREEITEM,std::string> _Files; char ContinentSortBy; // 0/1 - Sort by name increasing(z-a)/decreasing(a-z) char TrashSortBy; // 2/3 - Sort by date increasing(new-old)/decreasing(old-new) char BackupSortBy; private: void parseAdd (HTREEITEM itRoot, const std::string &path, char nSortType, int DirDepth = 0); public: CMasterTreeDlg(); // standard constructor HTREEITEM activate (const std::string& EltName, HTREEITEM parent); void update (const std::string& ContinentsPath); void openFile (const std::string &fname); void openDir (const std::string &fname); void continentNew (); void sortContinentBy (int mt_sort_type); // Continent byPass void continentDelete (const std::string &Continent); void continentProperties (const std::string &Continent); void continentNewRegion (const std::string &Continent); void continentOpen (const std::string &Continent); // Region byPass void regionOpen (const std::string &path); void regionRename (const std::string &path); void regionNewPrim (const std::string &path); void regionNewGeorges (const std::string &path); void regionNewSubRegion (const std::string &path); void regionDelete (const std::string &path); // File byPass void fileOpen (const std::string &sFileFullName); void fileRename (const std::string &sFileFullName); void fileDelete (const std::string &sFileFullName); void copy (const std::string &pathSrc, const std::string &pathDst); enum { IDD = IDD_MASTERTREE }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support // Implementation protected: BOOL OnInitDialog (); void OnCancel (); void OnOK (); afx_msg void OnSize (UINT nType, int cx, int cy); afx_msg void OnExpanding (LPNMHDR pnmhdr, LRESULT *pLResult); afx_msg void OnLDblClkTree(NMHDR* pNMHDR, LRESULT* pResult); DECLARE_MESSAGE_MAP() // Friends friend class CMasterTree; }; #endif // __MASTERTREE_H__