wxWidgets/interface/wx/filehistory.h
Vadim Zeitlin f8f0b8b50c Remove public wxFileHistory::RefreshLabels()
Replace it with a private DoRefreshLabels() and call it ourselves from
SetMenuPathStyle() to make the class simpler (and less error-prone, as
it's now impossible to forget to call RefreshLabels() any more) to use.
2021-04-05 16:20:02 +02:00

181 lines
4.9 KiB
Objective-C

/////////////////////////////////////////////////////////////////////////////
// Name: filehistory.h
// Purpose: wxFileHistory class
// Author: wxWidgets team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
Styles for the paths shown in wxFileHistory menus.
The values of this enum determine whether the labels in the menu managed by
wxFileHistory show the full path for the corresponding file or just the
base name.
The default style is wxFH_PATH_SHOW_IF_DIFFERENT, i.e. the full path of the
file is only shown in the menu if it's different from the path of the first
file.
@since 3.1.5
*/
enum wxFileHistoryMenuPathStyle
{
/**
Show the full path if it's different from the path of the first file.
Otherwise show just the file name.
This value corresponds to the default behaviour.
*/
wxFH_PATH_SHOW_IF_DIFFERENT,
/**
Never show full path, always show just the base file name.
*/
wxFH_PATH_SHOW_NEVER,
/**
Always show the full path for all files.
*/
wxFH_PATH_SHOW_ALWAYS
};
/**
@class wxFileHistory
The wxFileHistory encapsulates a user interface convenience, the list of
most recently visited files as shown on a menu (usually the File menu).
wxFileHistory can manage one or more file menus. More than one menu may be
required in an MDI application, where the file history should appear on
each MDI child menu as well as the MDI parent frame.
@library{wxcore}
@category{docview}
@see @ref overview_docview, wxDocManager
*/
class wxFileHistory : public wxObject
{
public:
/**
Constructor. Pass the maximum number of files that should be stored and
displayed.
@a 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 @a idBase (to one of your own defined IDs) when using
more than one wxFileHistory in your application.
*/
wxFileHistory(size_t maxFiles = 9, wxWindowID idBase = wxID_FILE1);
/**
Destructor.
*/
virtual ~wxFileHistory();
/**
Adds a file to the file history list, if the object has a pointer to an
appropriate file menu.
*/
virtual void AddFileToHistory(const wxString& filename);
/**
Appends the files in the history list, to all menus managed by the file
history object.
*/
virtual void AddFilesToMenu();
/**
Appends the files in the history list, to the given menu only.
*/
virtual void AddFilesToMenu(wxMenu* menu);
/**
Returns the base identifier for the range used for appending items.
*/
wxWindowID GetBaseId() const;
/**
Returns the number of files currently stored in the file history.
*/
virtual size_t GetCount() const;
/**
Returns the file at this index (zero-based).
*/
virtual wxString GetHistoryFile(size_t index) const;
/**
Returns the maximum number of files that can be stored.
*/
virtual int GetMaxFiles() const;
/**
Returns the list of menus that are managed by this file history object.
@see UseMenu()
*/
const wxList& GetMenus() const;
/**
Loads the file history from the given config object. This function
should be called explicitly by the application.
@see wxConfigBase
*/
virtual void Load(const wxConfigBase& config);
/**
Removes the specified file from the history.
*/
virtual void RemoveFileFromHistory(size_t i);
/**
Removes this menu from the list of those managed by this object.
*/
virtual void RemoveMenu(wxMenu* menu);
/**
Saves the file history into the given config object. This must be
called explicitly by the application.
@see wxConfigBase
*/
virtual void Save(wxConfigBase& config);
/**
Sets the base identifier for the range used for appending items.
*/
void SetBaseId(wxWindowID baseId);
/**
Adds this menu to the list of those menus that are managed by this file
history object. Also see AddFilesToMenu() for initializing the menu
with filenames that are already in the history when this function is
called, as this is not done automatically.
*/
virtual void UseMenu(wxMenu* menu);
/**
Set the style of the menu item labels.
By default, the menu item label style is ::wxFH_PATH_SHOW_IF_DIFFERENT.
@since 3.1.5
*/
void SetMenuPathStyle(wxFileHistoryMenuPathStyle style);
/**
Get the current style of the menu item labels.
Initially returns ::wxFH_PATH_SHOW_IF_DIFFERENT.
@see SetMenuPathStyle()
@since 3.1.5
*/
wxFileHistoryMenuPathStyle GetMenuPathStyle() const;
};