]> git.saurik.com Git - wxWidgets.git/commitdiff
added possibility to use several wxFileHistories (patch 685876)
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 2 Mar 2003 23:35:17 +0000 (23:35 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 2 Mar 2003 23:35:17 +0000 (23:35 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19443 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
docs/latex/wx/filehist.tex
include/wx/docview.h
src/common/docview.cpp

index 443e730a1c0cee9150fdbc7ce9cabe489cb18c19..37a92302548c6a395edd0a487c84f72171f7636d 100644 (file)
@@ -39,6 +39,9 @@ All GUI ports:
 - support wxListCtrl columns alignment for all platforms and not just MSW
 - added wxToolBar Add/InsertTool(tool) (Janusz Piwowarski)
 - WXR resources can now be used in Unicode builds
+- it is now possible to use several wxFileHistory objects in the same menu
+  by giving them different base IDs (Dimitri Schoolwerth)
+
 - changed to type-safe wxSizerItemList for wxSizer child items
     Deprecated:
         wxSizer::Remove( wxWindow* )
index 2804384dc2f5562c03fda1db60bccfaf74163d5b..e92d9a8784bd6e5183004ec9463f184d9a0f9ff0 100644 (file)
@@ -30,13 +30,13 @@ files.
 
 \membersection{wxFileHistory::m\_fileHistoryN}
 
-\member{int}{m\_fileHistoryN}
+\member{size_t}{m\_fileHistoryN}
 
 The number of files stored in the history array.
 
 \membersection{wxFileHistory::m\_fileMaxFiles}
 
-\member{int}{m\_fileMaxFiles}
+\member{size_t}{m\_fileMaxFiles}
 
 The maximum number of files to be stored and displayed on the menu.
 
@@ -48,10 +48,15 @@ The file menu used to display the file history list (if enabled).
 
 \membersection{wxFileHistory::wxFileHistory}
 
-\func{}{wxFileHistory}{\param{int}{ maxFiles = 9}}
+\func{}{wxFileHistory}{\param{size_t}{ maxFiles = 9}, \param{wxWindowID}{ idBase = wxID_FILE1}}
 
 Constructor. Pass the maximum number of files that should be stored and displayed.
 
+idBase defaults to wxID_FILE1 and represents the id given to the first history menu item.
+Since menu items can't share the same ID you should change idBase (To one of your own
+defined IDs) when using more than one wxFileHistory in your application.
+
+
 \membersection{wxFileHistory::\destruct{wxFileHistory}}
 
 \func{}{\destruct{wxFileHistory}}{\void}
@@ -76,19 +81,19 @@ Appends the files in the history list, to the given menu only.
 
 \membersection{wxFileHistory::GetHistoryFile}\label{wxfilehistorygethistoryfile}
 
-\constfunc{wxString}{GetHistoryFile}{\param{int}{ index}}
+\constfunc{wxString}{GetHistoryFile}{\param{size_t}{ index}}
 
 Returns the file at this index (zero-based).
 
 \membersection{wxFileHistory::GetMaxFiles}
 
-\constfunc{int}{GetMaxFiles}{\void}
+\constfunc{size_t}{GetMaxFiles}{\void}
 
 Returns the maximum number of files that can be stored.
 
 \membersection{wxFileHistory::GetNoHistoryFiles}
 
-\constfunc{int}{GetNoHistoryFiles}{\void}
+\constfunc{size_t}{GetNoHistoryFiles}{\void}
 
 Returns the number of files currently stored in the file history.
 
index ce8b94011dad614ee659f171112ded7a2d8e787f..8c8bf6fa6f405a8b6773171ca5690480ec02aca8 100644 (file)
@@ -395,9 +395,9 @@ public:
 
     // File history management
     virtual void AddFileToHistory(const wxString& file);
-    virtual void RemoveFileFromHistory(int i);
-    virtual int GetNoHistoryFiles() const;
-    virtual wxString GetHistoryFile(int i) const;
+    virtual void RemoveFileFromHistory(size_t i);
+    virtual size_t GetNoHistoryFiles() const;
+    virtual wxString GetHistoryFile(size_t i) const;
     virtual void FileHistoryUseMenu(wxMenu *menu);
     virtual void FileHistoryRemoveMenu(wxMenu *menu);
 #if wxUSE_CONFIG
@@ -535,12 +535,12 @@ private:
 class WXDLLEXPORT wxFileHistory : public wxObject
 {
 public:
-    wxFileHistory(int maxFiles = 9);
+    wxFileHistory(size_t maxFiles = 9, wxWindowID idBase = wxID_FILE1);
     ~wxFileHistory();
 
     // Operations
     virtual void AddFileToHistory(const wxString& file);
-    virtual void RemoveFileFromHistory(int i);
+    virtual void RemoveFileFromHistory(size_t i);
     virtual int GetMaxFiles() const { return m_fileMaxFiles; }
     virtual void UseMenu(wxMenu *menu);
 
@@ -556,11 +556,11 @@ public:
     virtual void AddFilesToMenu(wxMenu* menu); // Single menu
 
     // Accessors
-    virtual wxString GetHistoryFile(int i) const;
+    virtual wxString GetHistoryFile(size_t i) const;
 
     // A synonym for GetNoHistoryFiles
-    virtual int GetCount() const { return m_fileHistoryN; }
-    int GetNoHistoryFiles() const { return m_fileHistoryN; }
+    virtual size_t GetCount() const { return m_fileHistoryN; }
+    size_t GetNoHistoryFiles() const { return m_fileHistoryN; }
 
     wxList& GetMenus() const { return (wxList&) m_fileMenus; }
 
@@ -568,13 +568,16 @@ protected:
     // Last n files
     wxChar**          m_fileHistory;
     // Number of files saved
-    int               m_fileHistoryN;
+    size_t            m_fileHistoryN;
     // Menus to maintain (may need several for an MDI app)
     wxList            m_fileMenus;
     // Max files to maintain
-    int               m_fileMaxFiles;
+    size_t            m_fileMaxFiles;
     
 private:
+    // The ID of the first history menu item (Doesn't have to be wxID_FILE1)
+    wxWindowID m_idBase;
+
     DECLARE_DYNAMIC_CLASS(wxFileHistory)
     DECLARE_NO_COPY_CLASS(wxFileHistory)
 };
index 2081dbc49c32f7272a3a0b9073cedac903c9b79a..125c5a81c708c00547ec91797b934d5734761b14 100644 (file)
@@ -1267,13 +1267,13 @@ void wxDocManager::AddFileToHistory(const wxString& file)
         m_fileHistory->AddFileToHistory(file);
 }
 
-void wxDocManager::RemoveFileFromHistory(int i)
+void wxDocManager::RemoveFileFromHistory(size_t i)
 {
     if (m_fileHistory)
         m_fileHistory->RemoveFileFromHistory(i);
 }
 
-wxString wxDocManager::GetHistoryFile(int i) const
+wxString wxDocManager::GetHistoryFile(size_t i) const
 {
     wxString histFile;
 
@@ -1321,7 +1321,7 @@ void wxDocManager::FileHistoryAddFilesToMenu()
         m_fileHistory->AddFilesToMenu();
 }
 
-int wxDocManager::GetNoHistoryFiles() const
+size_t wxDocManager::GetNoHistoryFiles() const
 {
     if (m_fileHistory)
         return m_fileHistory->GetNoHistoryFiles();
@@ -1908,16 +1908,17 @@ void wxDocPrintout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, in
 // File history processor
 // ----------------------------------------------------------------------------
 
-wxFileHistory::wxFileHistory(int maxFiles)
+wxFileHistory::wxFileHistory(size_t maxFiles, wxWindowID idBase)
 {
     m_fileMaxFiles = maxFiles;
+    m_idBase = idBase;
     m_fileHistoryN = 0;
     m_fileHistory = new wxChar *[m_fileMaxFiles];
 }
 
 wxFileHistory::~wxFileHistory()
 {
-    int i;
+    size_t i;
     for (i = 0; i < m_fileHistoryN; i++)
         delete[] m_fileHistory[i];
     delete[] m_fileHistory;
@@ -1926,7 +1927,7 @@ wxFileHistory::~wxFileHistory()
 // File history management
 void wxFileHistory::AddFileToHistory(const wxString& file)
 {
-    int i;
+    size_t i;
 
     // Check we don't already have this file
     for (i = 0; i < m_fileHistoryN; i++)
@@ -1960,7 +1961,7 @@ void wxFileHistory::AddFileToHistory(const wxString& file)
             {
                 menu->AppendSeparator();
             }
-            menu->Append(wxID_FILE1+m_fileHistoryN, _("[EMPTY]"));
+            menu->Append(m_idBase+m_fileHistoryN, _("[EMPTY]"));
             node = node->GetNext();
         }
         m_fileHistoryN ++;
@@ -2001,46 +2002,49 @@ void wxFileHistory::AddFileToHistory(const wxString& file)
             while (node)
             {
                 wxMenu* menu = (wxMenu*) node->GetData();
-                menu->SetLabel(wxID_FILE1 + i, buf);
+                menu->SetLabel(m_idBase + i, buf);
                 node = node->GetNext();
             }
         }
     }
 }
 
-void wxFileHistory::RemoveFileFromHistory(int i)
+void wxFileHistory::RemoveFileFromHistory(size_t i)
 {
     wxCHECK_RET( i < m_fileHistoryN,
                  wxT("invalid index in wxFileHistory::RemoveFileFromHistory") );
 
-        // delete the element from the array (could use memmove() too...)
-        delete [] m_fileHistory[i];
+    // 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];
-        }
+    size_t j;
+    for ( j = i; j < m_fileHistoryN - 1; j++ )
+    {
+        m_fileHistory[j] = m_fileHistory[j + 1];
+    }
 
     wxNode* node = m_fileMenus.GetFirst();
     while ( node )
     {
-        wxMenu* menu = (wxMenu*) node->GetData();
+         wxMenu* menu = (wxMenu*) node->GetData();
 
 
-        // 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);
-        }
+         // shuffle filenames up
+         wxString buf;
+         for ( j = i; j < m_fileHistoryN - 1; j++ )
+         {
+             buf.Printf(s_MRUEntryFormat, j + 1, m_fileHistory[j]);
+             menu->SetLabel(m_idBase + j, buf);
+         }
 
-        node = node->GetNext();
+         node = node->GetNext();
 
         // delete the last menu item which is unused now
-        if (menu->FindItem(wxID_FILE1 + m_fileHistoryN - 1))
-        menu->Delete(wxID_FILE1 + m_fileHistoryN - 1);
+        wxWindowID lastItemId = m_idBase + m_fileHistoryN - 1;
+        if (menu->FindItem(lastItemId))
+        {
+            menu->Delete(lastItemId);
+        }
 
         // delete the last separator too if no more files are left
         if ( m_fileHistoryN == 1 )
@@ -2062,7 +2066,7 @@ void wxFileHistory::RemoveFileFromHistory(int i)
     m_fileHistoryN--;
 }
 
-wxString wxFileHistory::GetHistoryFile(int i) const
+wxString wxFileHistory::GetHistoryFile(size_t i) const
 {
     wxString s;
     if ( i < m_fileHistoryN )
@@ -2107,7 +2111,7 @@ void wxFileHistory::Load(wxConfigBase& config)
 
 void wxFileHistory::Save(wxConfigBase& config)
 {
-    int i;
+    size_t i;
     for (i = 0; i < m_fileHistoryN; i++)
     {
         wxString buf;
@@ -2130,14 +2134,14 @@ void wxFileHistory::AddFilesToMenu()
                 menu->AppendSeparator();
             }
 
-            int i;
+            size_t i;
             for (i = 0; i < m_fileHistoryN; i++)
             {
                 if (m_fileHistory[i])
                 {
                     wxString buf;
                     buf.Printf(s_MRUEntryFormat, i+1, m_fileHistory[i]);
-                    menu->Append(wxID_FILE1+i, buf);
+                    menu->Append(m_idBase+i, buf);
                 }
             }
             node = node->GetNext();
@@ -2154,14 +2158,14 @@ void wxFileHistory::AddFilesToMenu(wxMenu* menu)
             menu->AppendSeparator();
         }
 
-        int i;
+        size_t i;
         for (i = 0; i < m_fileHistoryN; i++)
         {
             if (m_fileHistory[i])
             {
                 wxString buf;
                 buf.Printf(s_MRUEntryFormat, i+1, m_fileHistory[i]);
-                menu->Append(wxID_FILE1+i, buf);
+                menu->Append(m_idBase+i, buf);
             }
         }
     }