Menu

[r1967]: / trunk / src / sdk / filegroupsandmasks.cpp  Maximize  Restore  History

Download this file

181 lines (155 with data), 4.6 kB

  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
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
/*
* This file is part of Code::Blocks Studio, an open-source cross-platform IDE
* Copyright (C) 2003 Yiannis An. Mandravellos
*
* This program is distributed under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
*
* $Revision$
* $Id$
* $HeadURL$
*/
#include "sdk_precomp.h"
#ifndef CB_PRECOMP
#include <wx/intl.h>
#include "globals.h"
#include "configmanager.h"
#include "manager.h"
#include "messagemanager.h"
#endif
#include "filegroupsandmasks.h"
FilesGroupsAndMasks::FilesGroupsAndMasks()
{
//ctor
Load();
if (m_Groups.GetCount() == 0)
{
// only add default groups if none were loaded...
unsigned int group = AddGroup(_("Sources"));
SetFileMasks(group, _T("*.c;*.cpp;*.cc;*.cxx;*.C;*.CPP;*.CC;*.CXX;*.d;*.D") );
group = AddGroup(_("Headers"));
SetFileMasks(group, _T("*.h;*.hpp;*.hh;*.hxx;*.H;*.HPP;*.HH;*.HXX") );
group = AddGroup(_("Resources"));
SetFileMasks(group, _T("*.res;*.xrc;*.rc;*.RES;*.XRC;*.RC") );
}
}
FilesGroupsAndMasks::FilesGroupsAndMasks(FilesGroupsAndMasks& copy)
{
// copy ctor
CopyFrom(copy);
}
FilesGroupsAndMasks::~FilesGroupsAndMasks()
{
//dtor
Save();
Clear();
}
void FilesGroupsAndMasks::CopyFrom(FilesGroupsAndMasks& copy)
{
Clear();
for (unsigned int i = 0; i < copy.m_Groups.GetCount(); ++i)
{
FileGroups* fg = new FileGroups;
FileGroups* otherfg = copy.m_Groups[i];
fg->groupName = otherfg->groupName;
fg->fileMasks = otherfg->fileMasks;
m_Groups.Add(fg);
}
}
void FilesGroupsAndMasks::Load()
{
Clear();
ConfigManager* conf = Manager::Get()->GetConfigManager(_T("project_manager"));
wxArrayString list = conf->EnumerateSubPaths(_T("/file_groups"));
for (unsigned int i = 0; i < list.GetCount(); ++i)
{
// new way (reading groups)
wxString key = _T("/file_groups/") + list[i];
unsigned int group = AddGroup(conf->Read(key + _T("/name")));
SetFileMasks(group, conf->Read(key + _T("/mask")));
}
}
void FilesGroupsAndMasks::Save()
{
ConfigManager* conf = Manager::Get()->GetConfigManager(_T("project_manager"));
conf->DeleteSubPath(_T("/file_groups"));
for (unsigned int i = 0; i < m_Groups.GetCount(); ++i)
{
FileGroups* fg = m_Groups[i];
wxString key;
key << _("/file_groups/group") << wxString::Format(_T("%d"), i) << _T("/") << _T("name");
conf->Write(key, fg->groupName);
key.Clear();
key << _("/file_groups/group") << wxString::Format(_T("%d"), i) << _T("/") << _T("mask");
conf->Write(key, GetStringFromArray(fg->fileMasks, _T(";")));
}
}
void FilesGroupsAndMasks::Clear()
{
for (unsigned int i = 0; i < m_Groups.GetCount(); ++i)
{
FileGroups* fg = m_Groups[i];
if (fg)
delete fg;
}
m_Groups.Clear();
}
unsigned int FilesGroupsAndMasks::AddGroup(const wxString& name)
{
FileGroups* fg = new FileGroups;
fg->groupName = name;
m_Groups.Add(fg);
return m_Groups.GetCount() - 1;
}
void FilesGroupsAndMasks::RenameGroup(unsigned int group, const wxString& newName)
{
if (group >= m_Groups.GetCount())
return;
FileGroups* fg = m_Groups[group];
fg->groupName = newName;
}
void FilesGroupsAndMasks::DeleteGroup(unsigned int group)
{
if (group >= m_Groups.GetCount())
return;
FileGroups* fg = m_Groups[group];
delete fg;
m_Groups.Remove(fg);
}
void FilesGroupsAndMasks::SetFileMasks(unsigned int group, const wxString& masks)
{
if (group >= m_Groups.GetCount())
return;
FileGroups* fg = m_Groups[group];
fg->fileMasks = GetArrayFromString(masks, _T(";"));
}
unsigned int FilesGroupsAndMasks::GetGroupsCount() const
{
return m_Groups.GetCount();
}
wxString FilesGroupsAndMasks::GetGroupName(unsigned int group) const
{
if (group >= m_Groups.GetCount())
return wxEmptyString;
FileGroups* fg = m_Groups[group];
return fg->groupName;
}
wxString FilesGroupsAndMasks::GetFileMasks(unsigned int group) const
{
if (group >= m_Groups.GetCount())
return wxEmptyString;
FileGroups* fg = m_Groups[group];
return GetStringFromArray(fg->fileMasks);
}
bool FilesGroupsAndMasks::MatchesMask(const wxString& ext, unsigned int group)
{
if (ext.IsEmpty() || group >= m_Groups.GetCount())
return false;
FileGroups* fg = m_Groups[group];
for (unsigned int i = 0; i < fg->fileMasks.GetCount(); ++i)
{
if (ext.Matches(fg->fileMasks[i]))
return true;
}
return false;
}