#include "RecentList.h" RecentList::RecentList() { p_iMax=0; sEntry.Clear(); p_Menu=NULL; } RecentList::~RecentList() { } void RecentList::Append(const wxString &sValue) { wxString sTxt; if (((int)sEntry.Count() On sort if (idx==0) return; // sinon, on enlève l'entrée de son emplacement actuel sEntry.RemoveAt(idx); } // On insert l'entrée au début de celle-ci sEntry.Insert(pSVal,0); // Si on a dépassé le nombre maxi d'entrées voulues, alors, on enlève la dernière while ((int)sEntry.Count()>p_iMax) { sEntry.RemoveAt(sEntry.Count()-1); } // Mise à jour éventuelle du menu associé UpdateMenu(); } int RecentList::GetEntryCount() { return (int)sEntry.Count(); } int RecentList::GetMaxEntries() { return p_iMax; } wxString RecentList::GetEntry(int Index) { if (Index>(p_iMax-1)) return wxEmptyString; if (Index>(int)(sEntry.Count()-1)) return wxEmptyString; return sEntry[Index]; } void RecentList::SetMaxEntries(int iNbEntries) { if ((iNbEntries==0)||(iNbEntries==p_iMax)) return; // On ne peut mettre que 9 entrées maximum, sinon, il faut passer par des // IDs personnalisés if (iNbEntries>9) return; // Si on veut diminuer le nombre maximum d'entrées if (iNbEntriesGetMenuItemCount()>0) return; int imax; wxString sTxt; imax=p_iMax; if ((int)sEntry.Count()Append(wxID_FILE1,_("Empty list")); p_Menu->Enable(wxID_FILE1,false); UpdateMenu(); } void RecentList::UpdateMenu() { int i,imax,immax; wxString sTxt; if (p_Menu==NULL) return; immax=p_Menu->GetMenuItemCount(); imax=sEntry.Count(); if (immax!=imax) // Si on n'a pas le même nombre d'entrées que de menuitems { // il y a un cas particulier : 1 menuitem et 0 entrées dans la liste // c'est normal, l'item est "Liste Vide" if ((immax==1)&&(imax==0)) return; // Si on a plus de menuitems que d'entrées dans la liste, ce qui peut // se produire lors d'un changement du nombre maxi d'entrées while(immax>imax) { p_Menu->Destroy(wxID_FILE1+immax-1); immax--; } // Si on a moins de menuitems que d'entrées dans la liste while(immaxAppend(wxID_FILE1+immax,_T("Recent Entry")); immax++; } } // Mise à jour des entrées du menu for (i=0;iSetLabel(wxID_FILE1+i,sEntry[i]); p_Menu->SetHelpString(wxID_FILE1+i,sTxt); } // Activation de la première entrée, si ce n'étais pas déjà fait p_Menu->Enable(wxID_FILE1,true); }