// Created: 23.09.98
// RCS-ID: $Id$
// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence: wxWidgets licence (part of wxExtra library)
+// Licence: wxWindows licence (part of wxExtra library)
/////////////////////////////////////////////////////////////////////////////
#ifndef _MIMETYPE_IMPL_H
#define _MIMETYPE_IMPL_H
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma interface "mimetype.h"
-#endif
-
#include "wx/mimetype.h"
-#if (wxUSE_FILE && wxUSE_TEXTFILE)
+#if wxUSE_MIMETYPE
class wxMimeTypeCommands;
-WX_DEFINE_ARRAY(wxMimeTypeCommands *, wxMimeCommandsArray);
+WX_DEFINE_ARRAY_PTR(wxMimeTypeCommands *, wxMimeCommandsArray);
// this is the real wxMimeTypesManager for Unix
-class WXDLLEXPORT wxMimeTypesManagerImpl
+class WXDLLIMPEXP_BASE wxMimeTypesManagerImpl
{
public:
// ctor and dtor
wxMimeTypesManagerImpl();
- ~wxMimeTypesManagerImpl();
+ virtual ~wxMimeTypesManagerImpl();
// load all data into memory - done when it is needed for the first time
void Initialize(int mailcapStyles = wxMAILCAP_ALL,
size_t EnumAllFileTypes(wxArrayString& mimetypes);
- bool ReadMailcap(const wxString& filename, bool fallback = FALSE);
- bool ReadMimeTypes(const wxString& filename);
-
void AddFallback(const wxFileTypeInfo& filetype);
// add information about the given mimetype
// file type
wxString GetExtension(size_t index) { return m_aExtensions[index]; }
-private:
+protected:
void InitIfNeeded();
wxArrayString m_aTypes, // MIME types
// are we initialized?
bool m_initialized;
- // keep track of the files we had already loaded (this is a bitwise OR of
- // wxMailcapStyle values)
- int m_mailcapStylesInited;
-
wxString GetCommand(const wxString &verb, size_t nIndex) const;
- // read Gnome files
- void LoadGnomeDataFromKeyFile(const wxString& filename,
- const wxArrayString& dirs);
- void LoadGnomeMimeTypesFromMimeFile(const wxString& filename);
- void LoadGnomeMimeFilesFromDir(const wxString& dirbase,
- const wxArrayString& dirs);
- void GetGnomeMimeInfo(const wxString& sExtraDir);
-
- // write gnome files
- bool CheckGnomeDirsExist();
- bool WriteGnomeKeyFile(int index, bool delete_index);
- bool WriteGnomeMimeFile(int index, bool delete_index);
-
- // read KDE
- void LoadKDELinksForMimeSubtype(const wxString& dirbase,
- const wxString& subdir,
- const wxString& filename,
- const wxArrayString& icondirs);
- void LoadKDELinksForMimeType(const wxString& dirbase,
- const wxString& subdir,
- const wxArrayString& icondirs);
- void LoadKDELinkFilesFromDir(const wxString& dirbase,
- const wxArrayString& icondirs);
- void GetKDEMimeInfo(const wxString& sExtraDir);
-
- // write KDE
- bool WriteKDEMimeFile(int index, bool delete_index);
- bool CheckKDEDirsExist(const wxString & sOK, const wxString& sTest);
-
- //read write Netscape and MetaMail formats
- void GetMimeInfo (const wxString& sExtraDir);
- bool WriteToMailCap (int index, bool delete_index);
- bool WriteToMimeTypes (int index, bool delete_index);
- bool WriteToNSMimeTypes (int index, bool delete_index);
-
- // ReadMailcap() helper
- bool ProcessOtherMailcapField(struct MailcapLineData& data,
- const wxString& curField);
+ // Read XDG *.desktop file
+ void LoadXDGApp(const wxString& filename);
+ // Scan XDG directory
+ void LoadXDGAppsFilesFromDir(const wxString& dirname);
- // functions used to do associations
+ // Load XDG globs files
+ void LoadXDGGlobs(const wxString& filename);
- int AddToMimeData(const wxString& strType,
+ // functions used to do associations
+ virtual int AddToMimeData(const wxString& strType,
const wxString& strIcon,
wxMimeTypeCommands *entry,
const wxArrayString& strExtensions,
const wxString& strDesc,
- bool replaceExisting = TRUE);
-
- bool DoAssociation(const wxString& strType,
+ bool replaceExisting = true);
+ virtual bool DoAssociation(const wxString& strType,
const wxString& strIcon,
wxMimeTypeCommands *entry,
const wxArrayString& strExtensions,
const wxString& strDesc);
- bool WriteMimeInfo(int nIndex, bool delete_mime );
-
// give it access to m_aXXX variables
- friend class WXDLLEXPORT wxFileTypeImpl;
+ friend class WXDLLIMPEXP_FWD_BASE wxFileTypeImpl;
};
-
-
-class WXDLLEXPORT wxFileTypeImpl
+class WXDLLIMPEXP_BASE wxFileTypeImpl
{
public:
// initialization functions
// accessors
bool GetExtensions(wxArrayString& extensions);
bool GetMimeType(wxString *mimeType) const
- { *mimeType = m_manager->m_aTypes[m_index[0]]; return TRUE; }
+ { *mimeType = m_manager->m_aTypes[m_index[0]]; return true; }
bool GetMimeTypes(wxArrayString& mimeTypes) const;
bool GetIcon(wxIconLocation *iconLoc) const;
bool GetDescription(wxString *desc) const
- { *desc = m_manager->m_aDescriptions[m_index[0]]; return TRUE; }
+ { *desc = m_manager->m_aDescriptions[m_index[0]]; return true; }
bool GetOpenCommand(wxString *openCmd,
const wxFileType::MessageParameters& params) const
// 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 SetCommand(const wxString& cmd, const wxString& verb, bool overwriteprompt = true);
bool SetDefaultIcon(const wxString& strIcon = wxEmptyString, int index = 0);
private:
wxArrayInt m_index; // in the wxMimeTypesManagerImpl arrays
};
-#endif
- // wxUSE_FILE
+#endif // wxUSE_MIMETYPE
+
+#endif // _MIMETYPE_IMPL_H
-#endif
- //_MIMETYPE_IMPL_H