Issue #394 - Fixed conflicting names in style storage.
Originally committed to SVN as r1458.
This commit is contained in:
parent
ad601c46d1
commit
8d69e930f6
3 changed files with 26 additions and 3 deletions
|
@ -95,10 +95,19 @@ void AssStyleStorage::Clear () {
|
|||
/////////////
|
||||
// Get names
|
||||
wxArrayString AssStyleStorage::GetNames() {
|
||||
using std::list;
|
||||
wxArrayString names;
|
||||
for (list<AssStyle*>::iterator cur=style.begin();cur!=style.end();cur++) {
|
||||
for (std::list<AssStyle*>::iterator cur=style.begin();cur!=style.end();cur++) {
|
||||
names.Add((*cur)->name);
|
||||
}
|
||||
return names;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////
|
||||
// Get a style by name
|
||||
AssStyle *AssStyleStorage::GetStyle(wxString name) {
|
||||
for (std::list<AssStyle*>::iterator cur=style.begin();cur!=style.end();cur++) {
|
||||
if ((*cur)->name == name) return *cur;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -56,6 +56,7 @@ public:
|
|||
std::list<AssStyle*> style;
|
||||
|
||||
wxArrayString GetNames();
|
||||
AssStyle *GetStyle(wxString name);
|
||||
void Clear();
|
||||
void Save(wxString name);
|
||||
void Load(wxString name);
|
||||
|
|
|
@ -440,7 +440,20 @@ void DialogStyleEditor::Apply (bool apply,bool close) {
|
|||
// Check if style name is unique
|
||||
for (unsigned int i=0;i<styles.Count();i++) {
|
||||
if (styles[i] == newStyleName) {
|
||||
if (grid->ass->GetStyle(styles[i]) != style) {
|
||||
bool ok = true;
|
||||
|
||||
// Local
|
||||
if (isLocal) {
|
||||
if (grid->ass->GetStyle(styles[i]) != style) ok = false;
|
||||
}
|
||||
|
||||
// Storage
|
||||
else {
|
||||
if (store->GetStyle(styles[i]) != style) ok = false;
|
||||
}
|
||||
|
||||
// Repeated name
|
||||
if (!ok) {
|
||||
wxMessageBox(_T("There is already a style with this name. Please choose another name."),_T("Style name conflict."),wxICON_ERROR);
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue