- for (i = 0; i < m_fileHistoryN; i++)
- if (m_fileHistory[i])
- {
- wxString buf;
- buf.Printf(s_MRUEntryFormat, i+1, m_fileHistory[i]);
- wxNode* node = m_fileMenus.First();
- while (node)
- {
- wxMenu* menu = (wxMenu*) node->Data();
- menu->SetLabel(wxID_FILE1+i, buf);
- node = node->Next();
- }
- }
-}
-
-void wxFileHistory::RemoveFileFromHistory(int i)
-{
- wxCHECK_RET( i < m_fileHistoryN,
- wxT("invalid index in wxFileHistory::RemoveFileFromHistory") );
-
- wxNode* node = m_fileMenus.First();
- while ( node )
- {
- wxMenu* menu = (wxMenu*) node->Data();
-
- // delete the element from the array (could use memmove() too...)
- delete [] m_fileHistory[i];
-
- int j;
- for ( j = i; j < m_fileHistoryN - 1; j++ )
- {
- m_fileHistory[j] = m_fileHistory[j + 1];
- }
-
- // shuffle filenames up
- wxString buf;
- for ( j = i; j < m_fileHistoryN - 1; j++ )
- {
- buf.Printf(s_MRUEntryFormat, j + 1, m_fileHistory[j]);
- menu->SetLabel(wxID_FILE1 + j, buf);
- }
-
- node = node->Next();
-
- // delete the last menu item which is unused now
- menu->Delete(wxID_FILE1 + m_fileHistoryN - 1);
-
- // delete the last separator too if no more files are left
- if ( m_fileHistoryN == 1 )
- {
- wxMenuItemList::Node *node = menu->GetMenuItems().GetLast();
- if ( node )
- {
- wxMenuItem *menuItem = node->GetData();
- if ( menuItem->IsSeparator() )
- {
- menu->Delete(menuItem);
- }
- //else: should we search backwards for the last separator?
- }
- //else: menu is empty somehow
- }