Don't add all the items in the history to the menu again, remove the old ones if we had already added them. Closes #16588. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78013 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			104 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wx/filehistory.h
 | |
| // Purpose:     wxFileHistory class
 | |
| // Author:      Julian Smart, Vaclav Slavik
 | |
| // Created:     2010-05-03
 | |
| // Copyright:   (c) Julian Smart, Vaclav Slavik
 | |
| // Licence:     wxWindows licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_FILEHISTORY_H_
 | |
| #define _WX_FILEHISTORY_H_
 | |
| 
 | |
| #include "wx/defs.h"
 | |
| 
 | |
| #if wxUSE_FILE_HISTORY
 | |
| 
 | |
| #include "wx/windowid.h"
 | |
| #include "wx/object.h"
 | |
| #include "wx/list.h"
 | |
| #include "wx/string.h"
 | |
| #include "wx/arrstr.h"
 | |
| 
 | |
| class WXDLLIMPEXP_FWD_CORE wxMenu;
 | |
| class WXDLLIMPEXP_FWD_BASE wxConfigBase;
 | |
| class WXDLLIMPEXP_FWD_BASE wxFileName;
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // File history management
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class WXDLLIMPEXP_CORE wxFileHistoryBase : public wxObject
 | |
| {
 | |
| public:
 | |
|     wxFileHistoryBase(size_t maxFiles = 9, wxWindowID idBase = wxID_FILE1);
 | |
| 
 | |
|     // Operations
 | |
|     virtual void AddFileToHistory(const wxString& file);
 | |
|     virtual void RemoveFileFromHistory(size_t i);
 | |
|     virtual int GetMaxFiles() const { return (int)m_fileMaxFiles; }
 | |
|     virtual void UseMenu(wxMenu *menu);
 | |
| 
 | |
|     // Remove menu from the list (MDI child may be closing)
 | |
|     virtual void RemoveMenu(wxMenu *menu);
 | |
| 
 | |
| #if wxUSE_CONFIG
 | |
|     virtual void Load(const wxConfigBase& config);
 | |
|     virtual void Save(wxConfigBase& config);
 | |
| #endif // wxUSE_CONFIG
 | |
| 
 | |
|     virtual void AddFilesToMenu();
 | |
|     virtual void AddFilesToMenu(wxMenu* menu); // Single menu
 | |
| 
 | |
|     // Accessors
 | |
|     virtual wxString GetHistoryFile(size_t i) const { return m_fileHistory[i]; }
 | |
|     virtual size_t GetCount() const { return m_fileHistory.GetCount(); }
 | |
| 
 | |
|     const wxList& GetMenus() const { return m_fileMenus; }
 | |
| 
 | |
|     // Set/get base id
 | |
|     void SetBaseId(wxWindowID baseId) { m_idBase = baseId; }
 | |
|     wxWindowID GetBaseId() const { return m_idBase; }
 | |
| 
 | |
| protected:
 | |
|     // Last n files
 | |
|     wxArrayString     m_fileHistory;
 | |
| 
 | |
|     // Menus to maintain (may need several for an MDI app)
 | |
|     wxList            m_fileMenus;
 | |
| 
 | |
|     // Max files to maintain
 | |
|     size_t            m_fileMaxFiles;
 | |
| 
 | |
| private:
 | |
|     // The ID of the first history menu item (Doesn't have to be wxID_FILE1)
 | |
|     wxWindowID m_idBase;
 | |
| 
 | |
|     // Normalize a file name to canonical form. We have a special function for
 | |
|     // this to ensure the same normalization is used everywhere.
 | |
|     static wxString NormalizeFileName(const wxFileName& filename);
 | |
| 
 | |
|     // Remove any existing entries from the associated menus.
 | |
|     void RemoveExistingHistory();
 | |
| 
 | |
|     wxDECLARE_NO_COPY_CLASS(wxFileHistoryBase);
 | |
| };
 | |
| 
 | |
| #if defined(__WXGTK20__)
 | |
|     #include "wx/gtk/filehistory.h"
 | |
| #else
 | |
|     // no platform-specific implementation of wxFileHistory yet
 | |
|     class WXDLLIMPEXP_CORE wxFileHistory : public wxFileHistoryBase
 | |
|     {
 | |
|     public:
 | |
|         wxFileHistory(size_t maxFiles = 9, wxWindowID idBase = wxID_FILE1)
 | |
|             : wxFileHistoryBase(maxFiles, idBase) {}
 | |
| 
 | |
|         DECLARE_DYNAMIC_CLASS(wxFileHistory)
 | |
|     };
 | |
| #endif
 | |
| 
 | |
| #endif // wxUSE_FILE_HISTORY
 | |
| 
 | |
| #endif // _WX_FILEHISTORY_H_
 |