Add a function to remove items from MRU lists, in preparation for a fix for #717. Also a bit of prettyfication of the MRU handling code.

Originally committed to SVN as r2220.
This commit is contained in:
Niels Martin Hansen 2008-07-03 01:53:22 +00:00
parent 5a2e91c00a
commit 67bfd70f82
2 changed files with 37 additions and 4 deletions

View File

@ -644,7 +644,7 @@ void OptionsManager::AddToRecentList (wxString entry,wxString list) {
int recentMax = AsInt(list + _T(" max"));
int n = 0;
for (int i=0;i<recentMax;i++) {
wxString key = list + _T(" #") + wxString::Format(_T("%i"),i+1);
wxString key = wxString::Format(_T("%s #%i"), list.c_str(), i+1);
if (IsDefined(key)) {
cur = AsText(key);
if (cur != entry) {
@ -659,7 +659,7 @@ void OptionsManager::AddToRecentList (wxString entry,wxString list) {
SetText(list + _T(" #1"),entry);
if (n > recentMax-1) n = recentMax-1;
for (int i=0;i<n;i++) {
wxString key = list + _T(" #") + wxString::Format(_T("%i"),i+2);
wxString key = wxString::Format(_T("%s #%i"), list.c_str(), i+2);
SetText(key,orig[i]);
}
@ -668,14 +668,45 @@ void OptionsManager::AddToRecentList (wxString entry,wxString list) {
}
///////////////////////////////////////////////////////////////
// Removes an item from a list of recents, if it's in the list
void OptionsManager::RemoveFromRecentList (wxString entry,wxString list) {
// Find strings already in recent list
wxArrayString cleaned;
wxString cur;
int recentMax = AsInt(list + _T(" max"));
int n = 0;
for (int i=0;i<recentMax;i++) {
wxString key = wxString::Format(_T("%s #%i"), list.c_str(), i+1);
if (IsDefined(key)) {
cur = AsText(key);
if (cur != entry) {
cleaned.Add(cur);
n++;
}
}
else break;
}
// Write back to options
if (n > recentMax-1) n = recentMax-1;
for (int i=0;i<n;i++) {
wxString key = wxString::Format(_T("%s #%i"), list.c_str(), i+1);
SetText(key,cleaned[i]);
}
// Save options
Save();
}
///////////////////
// Get recent list
wxArrayString OptionsManager::GetRecentList (wxString list) {
wxArrayString work;
int recentMax = AsInt(list + _T(" max"));
for (int i=0;i<recentMax;i++) {
wxString n = wxString::Format(_T("%i"),i+1);
wxString key = list + _T(" #") + n;
wxString key = wxString::Format(_T("%s #%i"), list.c_str(), i+1);
if (IsDefined(key)) {
work.Add(Options.AsText(key));
}

View File

@ -82,7 +82,9 @@ public:
void Save();
void Load();
void LoadDefaults(bool onlyDefaults=false,bool versionOverride=false);
void AddToRecentList (wxString entry,wxString list);
void RemoveFromRecentList (wxString entry,wxString list);
wxArrayString GetRecentList (wxString list);
void SetInt(wxString key,int param,int ifLastVersion=-1);