1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
#include "clWorkspaceManager.h"
#include <algorithm>
#include "codelite_events.h"
#include "event_notifier.h"
clWorkspaceManager::clWorkspaceManager()
: m_workspace(NULL)
{
EventNotifier::Get()->Bind(wxEVT_WORKSPACE_CLOSED, &clWorkspaceManager::OnWorkspaceClosed, this);
}
clWorkspaceManager::~clWorkspaceManager()
{
std::for_each(m_workspaces.begin(), m_workspaces.end(), [&](IWorkspace* workspace) { wxDELETE(workspace); });
EventNotifier::Get()->Unbind(wxEVT_WORKSPACE_CLOSED, &clWorkspaceManager::OnWorkspaceClosed, this);
}
clWorkspaceManager& clWorkspaceManager::Get()
{
static clWorkspaceManager mgr;
return mgr;
}
void clWorkspaceManager::RegisterWorkspace(IWorkspace* workspace) { m_workspaces.push_back(workspace); }
void clWorkspaceManager::OnWorkspaceClosed(wxCommandEvent& e)
{
e.Skip();
SetWorkspace(NULL);
}
wxArrayString clWorkspaceManager::GetAllWorkspaces() const
{
wxArrayString all;
std::for_each(m_workspaces.begin(), m_workspaces.end(), [&](IWorkspace* workspace) {
all.Add(workspace->GetWorkspaceType());
});
return all;
}
wxArrayString clWorkspaceManager::GetUnifiedFilesMask() const
{
wxArrayString all;
std::for_each(m_workspaces.begin(), m_workspaces.end(), [&](IWorkspace* workspace) {
all.Add(workspace->GetFilesMask());
});
return all;
}
|