📄 workspacedlg.cpp
字号:
pNewItem = new CWorkspaceItem;
pNewItem->m_pView = pView;
strcpy (pNewItem->m_szTailFile, pszFilename);
if (!pWorkspace)
{
pNewItem->m_hti = m_Tree.AddTreeItem (m_htiNonWorkspace, pszFilename, WORKSPACE_ICON_FILE, WORKSPACE_ICON_FILE, (void*) pNewItem);
m_pDefaultWorkspace->m_pItems->AddTail ((CObject*) pNewItem);
m_Tree.Expand (m_htiNonWorkspace, TVE_EXPAND);
}
else
{
pNewItem->m_hti = m_Tree.AddTreeItem (pWorkspace->m_hti, pszFilename, WORKSPACE_ICON_FILE, WORKSPACE_ICON_FILE, (void*) pNewItem);
pWorkspace->AddItem (pNewItem);
m_Tree.Expand (pWorkspace->m_hti, TVE_EXPAND);
}
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
BOOL CWorkspaceDlg::RemoveWorkspaceFile (
CTailView* pView)
{
POSITION stPos;
CWorkspaceItem* pItem = NULL;
CWorkspace* pSearch = NULL;
// Loop over all workspaces to find the view.
for (stPos = m_pWorkspaces->GetHeadPosition (); stPos != NULL; )
{
pSearch = (CWorkspace*) m_pWorkspaces->GetNext (stPos);
if (pItem = pSearch->FindView (pView))
{
m_Tree.DelTreeItem (pItem->m_hti);
pSearch->RemoveItem (pItem);
delete (CWorkspaceItem*) pItem;
return TRUE;
}
}
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
BOOL CWorkspaceDlg::RemoveWorkspaceFile (
CTailView* pView,
CWorkspace* pWorkspace)
{
CWorkspaceItem* pItem = NULL;
CWorkspace* pSearch = NULL;
pSearch = pWorkspace;
if (!pWorkspace)
{
pSearch = m_pDefaultWorkspace;
}
if (pItem = pSearch->FindView (pView))
{
m_Tree.DelTreeItem (pItem->m_hti);
pSearch->RemoveItem (pItem);
delete (CWorkspaceItem*) pItem;
}
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
BOOL CWorkspaceDlg::RemoveWorkspaceFile (
CTailDoc* pDoc,
CWorkspace* pWorkspace)
{
CWorkspaceItem* pItem = NULL;
CWorkspace* pSearch = NULL;
pSearch = pWorkspace;
if (!pWorkspace)
{
pSearch = m_pDefaultWorkspace;
}
if (pItem = pSearch->FindDocument (pDoc))
{
m_Tree.DelTreeItem (pItem->m_hti);
pSearch->RemoveItem (pItem);
delete (CWorkspaceItem*) pItem;
}
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
BOOL CWorkspaceDlg::AddWorkspace (
char* pszName)
{
CWorkspace* pNewItem = NULL;
pNewItem = new CWorkspace;
strcpy (pNewItem->m_szName, pszName);
pNewItem->m_hti = m_Tree.AddTreeItem (m_htiRoot,
pszName,
WORKSPACE_ICON_WORKSPACE,
WORKSPACE_ICON_WORKSPACE,
(void*) pNewItem);
// m_DefaultWorkspace.m_pItems->AddTail ((CObject*) pNewItem);
m_Tree.Expand (m_htiRoot, TVE_EXPAND);
m_pWorkspaces->AddTail ((CObject*) pNewItem);
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
BOOL CWorkspaceDlg::AddNewWorkspace (
void)
{
char szWkspName[1024] = "";
sprintf (szWkspName, "Workspace %ld", ++m_lAnonymousWorkspaceCount);
AddWorkspace (szWkspName);
return TRUE;
}
/*void CWorkspaceDlg::OnTreeItemAddToWorkspace()
{
CWorkspaceListDlg stDlg;
CWorkspaceItem* pItem = NULL;
HTREEITEM hItem = m_Tree.GetSelectedItem ();
if (hItem && (pItem = (CWorkspaceItem*) m_Tree.GetItemData (hItem)))
{
stDlg.DoModal ();
}
} */
/*void CWorkspaceDlg::OnTreeItemDelFromWorkspace()
{
CWorkspaceItem* pItem = NULL;
HTREEITEM hItem = m_Tree.GetSelectedItem ();
if (hItem && (pItem = (CWorkspaceItem*) m_Tree.GetItemData (hItem)))
{
char szText[1024];
sprintf (szText, pItem->GetFilename ());
::AfxMessageBox (szText);
}
} */
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
// See if this file already exists in the given workspace.
CWorkspaceItem* CWorkspaceDlg::FindFile (
CWorkspace* pWorkspace,
char* pszFilename)
{
POSITION stPos;
CWorkspace* pSearch = NULL;
CWorkspaceItem* pFound = NULL;
pSearch = pWorkspace;
if (!pWorkspace)
{
pSearch = m_pDefaultWorkspace;
}
for (stPos = pSearch->m_pItems->GetHeadPosition (); stPos != NULL; )
{
pFound = (CWorkspaceItem*) pSearch->m_pItems->GetNext (stPos);
if (strcmp (pFound->GetFilename (), pszFilename) == 0)
{
return pFound;
}
}
return NULL;
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
CWorkspace* CWorkspaceDlg::FindWorkspace (
CWorkspace* pWorkspace)
{
POSITION stPos;
CWorkspace* pFound = NULL;
for (stPos = m_pWorkspaces->GetHeadPosition (); stPos != NULL; )
{
pFound = (CWorkspace*) m_pWorkspaces->GetNext (stPos);
if (pFound == pWorkspace)
{
return pWorkspace;
}
}
return NULL;
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
// Find the workspace containing the given workspace item.
CWorkspace* CWorkspaceDlg::GetWorkspace (
CWorkspaceItem* pWorkspaceItem)
{
POSITION stPos;
CWorkspace* pFoundWksp = NULL;
CWorkspaceItem* pFoundItem = NULL;
for (stPos = m_pWorkspaces->GetHeadPosition (); stPos != NULL; )
{
pFoundWksp = (CWorkspace*) m_pWorkspaces->GetNext (stPos);
if (pFoundWksp->FindItem (pWorkspaceItem))
{
return pFoundWksp;
}
}
return NULL;
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
CWorkspaceItem* CWorkspaceDlg::FindWorkspaceItem (
CWorkspaceItem* pWorkspaceItem)
{
POSITION stPos;
CWorkspace* pFound = NULL;
CWorkspaceItem* pFoundItem = NULL;
for (stPos = m_pWorkspaces->GetHeadPosition (); stPos != NULL; )
{
pFound = (CWorkspace*) m_pWorkspaces->GetNext (stPos);
if (pFound->FindItem (pWorkspaceItem))
{
return pWorkspaceItem;
}
}
return NULL;
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
CWorkspace* CWorkspaceDlg::FindWorkspace (
long lIndex)
{
POSITION stPos;
if ((stPos = m_pWorkspaces->FindIndex (lIndex)) != NULL)
{
return (CWorkspace*) m_pWorkspaces->GetAt (stPos);
}
return NULL;
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
void CWorkspaceDlg::OnWorkspaceRenameWorkspace()
{
::AfxMessageBox ("Rename workspace");
m_Tree.ModifyStyleEx (0, TVS_EDITLABELS);
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
void CWorkspaceDlg::OnWorkspaceAddFileToWorkspace()
{
::AfxMessageBox ("Add file to workspace");
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
void CWorkspaceDlg::OnWorkspaceRemoveWorkspace()
{
::AfxMessageBox ("Delete workspace");
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
void CWorkspaceDlg::OnWorkspaceSaveWorkspace()
{
::AfxMessageBox ("Save workspace");
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
void CWorkspaceDlg::OnWorkspaceSaveWorkspaceAs()
{
::AfxMessageBox ("Save workspace as...");
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
void CWorkspaceDlg::OnFileAddToWorkspace()
{
CWorkspaceListDlg stDlg;
CWorkspaceItem* pItem = NULL;
CWorkspace* pWorkspace = NULL;
int nItem = 0;
HTREEITEM hItem = m_Tree.GetSelectedItem ();
if (hItem && (pItem = (CWorkspaceItem*) m_Tree.GetItemData (hItem)))
{
nItem = stDlg.DoModal ();
if (nItem != -1)
{
if (pWorkspace = FindWorkspace (nItem))
{
AddWorkspaceFile ((char*) pItem->GetFilename (), pWorkspace);
}
}
}
}
/////////////////////////////////////////////////////////////////////////////
// CWorkspaceDlg
//
void CWorkspaceDlg::OnFileDeleleteFromWorkspace()
{
CWorkspaceItem* pItem = NULL;
HTREEITEM hItem = NULL;
hItem = m_Tree.GetSelectedItem ();
if (hItem && (pItem = (CWorkspaceItem*) m_Tree.GetItemData (hItem)))
{
// This *should* do everything we need.
pItem->Close ();
}
}
void CWorkspaceDlg::OnTopLevelAddNewWorkspace()
{
AddNewWorkspace ();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -