+ // Get all commands defined for this file type
+ %addmethods {
+ PyObject* GetAllCommands(const wxString& filename,
+ const wxString& mimetype=wxPyEmptyString) {
+ wxArrayString verbs;
+ wxArrayString commands;
+ if (self->GetAllCommands(&verbs, &commands,
+ wxFileType::MessageParameters(filename, mimetype))) {
+ wxPyBeginBlockThreads();
+ PyObject* tuple = PyTuple_New(2);
+ PyTuple_SetItem(tuple, 0, wxArrayString2PyList_helper(verbs));
+ PyTuple_SetItem(tuple, 1, wxArrayString2PyList_helper(commands));
+ wxPyEndBlockThreads();
+ return tuple;
+ }
+ else
+ RETURN_NONE();
+ }
+ }
+
+
+ // set an arbitrary command, ask confirmation if it already exists and
+ // overwriteprompt is TRUE
+ bool SetCommand(const wxString& cmd, const wxString& verb,
+ bool overwriteprompt = TRUE);
+
+ bool SetDefaultIcon(const wxString& cmd = wxPyEmptyString, int index = 0);
+
+
+ // remove the association for this filetype from the system MIME database:
+ // notice that it will only work if the association is defined in the user
+ // file/registry part, we will never modify the system-wide settings
+ bool Unassociate();
+
+ // operations
+ // expand a string in the format of GetOpenCommand (which may contain
+ // '%s' and '%t' format specificators for the file name and mime type
+ // and %{param} constructions).
+ static wxString ExpandCommand(const wxString& command,
+ const MessageParameters& params);
+
+ // dtor (not virtual, shouldn't be derived from)
+ ~wxFileType();
+
+};
+
+
+
+
+class wxMimeTypesManager
+{
+public:
+ // static helper functions
+ // -----------------------
+
+ // check if the given MIME type is the same as the other one: the
+ // second argument may contain wildcards ('*'), but not the first. If
+ // the types are equal or if the mimeType matches wildcard the function
+ // returns TRUE, otherwise it returns FALSE
+ static bool IsOfType(const wxString& mimeType, const wxString& wildcard);
+
+ // ctor
+ wxMimeTypesManager();
+
+ // loads data from standard files according to the mailcap styles
+ // specified: this is a bitwise OR of wxMailcapStyle values
+ //
+ // use the extraDir parameter if you want to look for files in another
+ // directory
+ void Initialize(int mailcapStyle = wxMAILCAP_STANDARD,
+ const wxString& extraDir = wxPyEmptyString);
+
+ // and this function clears all the data from the manager
+ void ClearData();
+
+ // Database lookup: all functions return a pointer to wxFileType object
+ // whose methods may be used to query it for the information you're
+ // interested in. If the return value is !NULL, caller is responsible for
+ // deleting it.
+ // get file type from file extension
+ %new wxFileType *GetFileTypeFromExtension(const wxString& ext);
+
+ // get file type from MIME type (in format <category>/<format>)
+ %new wxFileType *GetFileTypeFromMimeType(const wxString& mimeType);
+
+ // other operations: return TRUE if there were no errors or FALSE if there
+ // were some unreckognized entries (the good entries are always read anyhow)
+ //
+
+ // read in additional file (the standard ones are read automatically)
+ // in mailcap format (see mimetype.cpp for description)
+ //
+ // 'fallback' parameter may be set to TRUE to avoid overriding the
+ // settings from other, previously parsed, files by this one: normally,
+ // the files read most recently would override the older files, but with
+ // fallback == TRUE this won't happen
+ bool ReadMailcap(const wxString& filename, bool fallback = FALSE);
+
+ // read in additional file in mime.types format
+ bool ReadMimeTypes(const wxString& filename);
+
+ // enumerate all known MIME types
+ %addmethods {
+ PyObject* EnumAllFileTypes() {
+ wxArrayString arr;
+ self->EnumAllFileTypes(arr);
+ return wxArrayString2PyList_helper(arr);
+ }
+ }
+
+ // these functions can be used to provide default values for some of the
+ // MIME types inside the program itself (you may also use
+ // ReadMailcap(filenameWithDefaultTypes, TRUE /* use as fallback */) to
+ // achieve the same goal, but this requires having this info in a file).
+ //
+ void AddFallback(const wxFileTypeInfo& ft);
+
+
+ // create or remove associations
+
+ // create a new association using the fields of wxFileTypeInfo (at least
+ // the MIME type and the extension should be set)
+ // if the other fields are empty, the existing values should be left alone
+ %new wxFileType *Associate(const wxFileTypeInfo& ftInfo);
+
+ // undo Associate()
+ bool Unassociate(wxFileType *ft) ;
+
+ // dtor (not virtual, shouldn't be derived from)
+ ~wxMimeTypesManager();
+};
+
+
+%readonly
+%{
+#if 0
+%}
+extern wxMimeTypesManager* wxTheMimeTypesManager;
+%{
+#endif
+%}
+%readwrite
+
+//----------------------------------------------------------------------
+
+%{
+#include <wx/docview.h>
+%}
+
+class wxFileHistory : public wxObject
+{
+public:
+ wxFileHistory(int maxFiles = 9);
+ ~wxFileHistory();
+
+ // Operations
+ void AddFileToHistory(const wxString& file);
+ void RemoveFileFromHistory(int i);
+ int GetMaxFiles() const;
+ void UseMenu(wxMenu *menu);
+
+ // Remove menu from the list (MDI child may be closing)
+ void RemoveMenu(wxMenu *menu);
+
+ void Load(wxConfigBase& config);
+ void Save(wxConfigBase& config);
+
+ void AddFilesToMenu();
+ %name(AddFilesToThisMenu)void AddFilesToMenu(wxMenu* menu);
+
+ // Accessors
+ wxString GetHistoryFile(int i) const;
+
+ // A synonym for GetNoHistoryFiles
+ int GetCount() const;
+ int GetNoHistoryFiles() const;
+
+};
+
+//----------------------------------------------------------------------