Files
FC1/Editor/BaseLibraryDialog.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

157 lines
5.0 KiB
C++

////////////////////////////////////////////////////////////////////////////
//
// Crytek Engine Source File.
// Copyright (C), Crytek Studios, 2002.
// -------------------------------------------------------------------------
// File name: BaseLibraryDialog.h
// Version: v1.00
// Created: 22/1/2003 by Timur.
// Compilers: Visual Studio.NET
// Description:
// -------------------------------------------------------------------------
// History:
//
////////////////////////////////////////////////////////////////////////////
#ifndef __baselibrarydialog_h__
#define __baselibrarydialog_h__
#pragma once
//#include "XTToolkit.h"
#include "ToolbarDialog.h"
#include "Controls\SplitterWndEx.h"
#include "Controls\TreeCtrlEx.h"
#include "Controls\PropertyCtrl.h"
#include "Controls\PreviewModelCtrl.h"
class CBaseLibrary;
class CBaseLibraryItem;
class CBaseLibraryManager;
/** Base class for all BasLibrary base dialogs.
Provides common methods for handling library items.
*/
class CBaseLibraryDialog : public CToolbarDialog,public IDocListener
{
DECLARE_DYNAMIC(CBaseLibraryDialog);
public:
CBaseLibraryDialog( UINT nID,CWnd *pParent );
~CBaseLibraryDialog();
//! Reload all data in dialog.
virtual void Reload();
// Called every frame.
virtual void Update();
//! This dialog is activated.
virtual void SetActive( bool bActive );
virtual void SelectLibrary( const CString &library );
virtual void SelectItem( CBaseLibraryItem *item,bool bForceReload=false );
virtual bool CanSelectItem( CBaseLibraryItem *pItem );
//! Returns menu for this dialog.
virtual UINT GetDialogMenuID() { return 0; };
protected:
virtual void OnOK() {};
virtual void OnCancel() {};
void DoDataExchange(CDataExchange* pDX);
BOOL OnInitDialog();
afx_msg void OnDestroy();
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnSelChangedItemTree(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnKeyDownItemTree(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnUpdateSelected( CCmdUI* pCmdUI );
afx_msg void OnUpdatePaste( CCmdUI* pCmdUI );
virtual afx_msg void OnAddLibrary();
virtual afx_msg void OnRemoveLibrary();
virtual afx_msg void OnAddItem();
virtual afx_msg void OnRemoveItem();
virtual afx_msg void OnRenameItem();
virtual afx_msg void OnChangedLibrary();
virtual afx_msg void OnExportLibrary();
virtual afx_msg void OnSave();
virtual afx_msg void OnReloadLib();
virtual afx_msg void OnLoadLibrary();
//////////////////////////////////////////////////////////////////////////
// Must be overloaded in derived classes.
//////////////////////////////////////////////////////////////////////////
virtual CBaseLibrary* FindLibrary( const CString &libraryName );
virtual CBaseLibrary* NewLibrary( const CString &libraryName );
virtual void DeleteLibrary( CBaseLibrary *pLibrary );
virtual void DeleteItem( CBaseLibraryItem *pItem );
//////////////////////////////////////////////////////////////////////////
// Some functions can be overriden to modify standart functionality.
//////////////////////////////////////////////////////////////////////////
virtual void InitToolbar();
virtual void ReloadLibs();
virtual void ReloadItems();
virtual HTREEITEM InsertItemToTree( CBaseLibraryItem *pItem,HTREEITEM hParent );
virtual void SetItemName( CBaseLibraryItem *item,const CString &groupName,const CString &itemName );
//////////////////////////////////////////////////////////////////////////
// IDocListener listener implementation
//////////////////////////////////////////////////////////////////////////
virtual void OnNewDocument();
virtual void OnLoadDocument();
virtual void OnCloseDocument();
virtual void OnMissionChange() {};
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// Copying and cloning of items.
//////////////////////////////////////////////////////////////////////////
virtual void OnCopy() = 0;
virtual void OnPaste() = 0;
virtual void OnCut();
virtual void OnClone();
DECLARE_MESSAGE_MAP()
// Dialog Toolbar.
CDlgToolBar m_toolbar;
// Tree control.
CTreeCtrl m_treeCtrl;
// Library control.
CComboBox m_libraryCtrl;
// Map of library items to tree ctrl.
typedef std::map<CBaseLibraryItem*,HTREEITEM> ItemsToTreeMap;
ItemsToTreeMap m_itemsToTree;
//CXTToolBar m_toolbar;
// Name of currently selected library.
CString m_selectedLib;
CString m_selectedGroup;
bool m_bLibsLoaded;
//! Selected library.
TSmartPtr<CBaseLibrary> m_pLibrary;
//! Selected Item.
TSmartPtr<CBaseLibraryItem> m_pCurrentItem;
//! Pointer to item manager.
CBaseLibraryManager* m_pItemManager;
//////////////////////////////////////////////////////////////////////////
// Dragging support.
//////////////////////////////////////////////////////////////////////////
CBaseLibraryItem *m_pDraggedItem;
CImageList* m_dragImage;
bool m_bIgnoreSelectionChange;
HCURSOR m_hCursorDefault;
HCURSOR m_hCursorNoDrop;
HCURSOR m_hCursorCreate;
HCURSOR m_hCursorReplace;
};
#endif // __baselibrarydialog_h__