X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1cd04aa2e1c4ec7ff9425cb8114211c7885dcd22..bbd55ff9564dcaf1a5d2ee93d789c4d656baabef:/src/os2/mimetype.cpp diff --git a/src/os2/mimetype.cpp b/src/os2/mimetype.cpp index bee950fe6d..1da8b9cbfe 100644 --- a/src/os2/mimetype.cpp +++ b/src/os2/mimetype.cpp @@ -1,34 +1,40 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: common/mimetype.cpp +// Name: src/os2/mimetype.cpp // Purpose: classes and functions to manage MIME types // Author: David Webster // Modified by: // Created: 01.21.00 // RCS-ID: $Id$ // Copyright: Adopted from msw port --(c) 1998 Vadim Zeitlin -// Licence: wxWindows license (part of wxExtra library) +// Licence: wxWindows licence (part of wxExtra library) ///////////////////////////////////////////////////////////////////////////// +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#if wxUSE_MIMETYPE + +#include "wx/os2/mimetype.h" + +#ifndef WX_PRECOMP + #include "wx/dynarray.h" + #include "wx/string.h" + #include "wx/intl.h" + #include "wx/log.h" + #if wxUSE_GUI + #include "wx/icon.h" + #endif +#endif //WX_PRECOMP + #define INCL_DOS #define INCL_GPI #define INCL_WIN #include -#ifndef WX_PRECOMP - #include "wx/string.h" - #if wxUSE_GUI - #include "wx/icon.h" - #endif -#endif //WX_PRECOMP - -#include "wx/log.h" #include "wx/file.h" -#include "wx/intl.h" -#include "wx/dynarray.h" +#include "wx/iconloc.h" #include "wx/confbase.h" -#include "wx/os2/mimetype.h" - // other standard headers #include @@ -59,7 +65,7 @@ class WXDLLEXPORT wxIcon; // location, uses it, so it isn't likely to change static const wxChar *MIME_DATABASE_KEY = wxT("MIME\\Database\\Content Type\\"); -wxString wxFileTypeImpl::GetCommand(const wxChar *verb) const +wxString wxFileTypeImpl::GetCommand(const wxChar *WXUNUSED(verb)) const { // TODO: OS/2 doesn't have a registry but uses Prf /* @@ -67,9 +73,9 @@ wxString wxFileTypeImpl::GetCommand(const wxChar *verb) const wxLogNull nolog; wxString strKey; - if ( wxRegKey(wxRegKey::HKCR, m_ext + _T("\\shell")).Exists() ) + if ( wxRegKey(wxRegKey::HKCR, m_ext + wxT("\\shell")).Exists() ) strKey = m_ext; - if ( wxRegKey(wxRegKey::HKCR, m_strFileType + _T("\\shell")).Exists() ) + if ( wxRegKey(wxRegKey::HKCR, m_strFileType + wxT("\\shell")).Exists() ) strKey = m_strFileType; if ( !strKey ) @@ -79,7 +85,7 @@ wxString wxFileTypeImpl::GetCommand(const wxChar *verb) const } strKey << wxT("\\shell\\") << verb; - wxRegKey key(wxRegKey::HKCR, strKey + _T("\\command")); + wxRegKey key(wxRegKey::HKCR, strKey + wxT("\\command")); wxString command; if ( key.Open() ) { // it's the default value of the key @@ -91,7 +97,7 @@ wxString wxFileTypeImpl::GetCommand(const wxChar *verb) const // NB: we don't make any attempt to verify that the string is valid, // i.e. doesn't contain %2, or second %1 or .... But we do make // sure that we return a string with _exactly_ one '%s'! - bool foundFilename = FALSE; + bool foundFilename = false; size_t len = command.Len(); for ( size_t n = 0; (n < len) && !foundFilename; n++ ) { if ( command[n] == wxT('%') && @@ -101,32 +107,32 @@ wxString wxFileTypeImpl::GetCommand(const wxChar *verb) const // replace it with '%s' command[n + 1] = wxT('s'); - foundFilename = TRUE; + foundFilename = true; } } #if wxUSE_DDE // look whether we must issue some DDE requests to the application // (and not just launch it) - strKey += _T("\\DDEExec"); + strKey += wxT("\\DDEExec"); wxRegKey keyDDE(wxRegKey::HKCR, strKey); if ( keyDDE.Open() ) { wxString ddeCommand, ddeServer, ddeTopic; - keyDDE.QueryValue(_T(""), ddeCommand); - ddeCommand.Replace(_T("%1"), _T("%s")); + keyDDE.QueryValue(wxT(""), ddeCommand); + ddeCommand.Replace(wxT("%1"), wxT("%s")); - wxRegKey(wxRegKey::HKCR, strKey + _T("\\Application")). - QueryValue(_T(""), ddeServer); - wxRegKey(wxRegKey::HKCR, strKey + _T("\\Topic")). - QueryValue(_T(""), ddeTopic); + wxRegKey(wxRegKey::HKCR, strKey + wxT("\\Application")). + QueryValue(wxT(""), ddeServer); + wxRegKey(wxRegKey::HKCR, strKey + wxT("\\Topic")). + QueryValue(wxT(""), ddeTopic); // HACK: we use a special feature of wxExecute which exists // just because we need it here: it will establish DDE // conversation with the program it just launched - command.Prepend(_T("WX_DDE#")); - command << _T('#') << ddeServer - << _T('#') << ddeTopic - << _T('#') << ddeCommand; + command.Prepend(wxT("WX_DDE#")); + command << wxT('#') << ddeServer + << wxT('#') << ddeTopic + << wxT('#') << ddeCommand; } else #endif // wxUSE_DDE @@ -162,7 +168,7 @@ wxFileTypeImpl::GetOpenCommand(wxString *openCmd, *openCmd = wxFileType::ExpandCommand(cmd, params); - return !openCmd->IsEmpty(); + return !openCmd->empty(); } bool @@ -180,7 +186,7 @@ wxFileTypeImpl::GetPrintCommand(wxString *printCmd, *printCmd = wxFileType::ExpandCommand(cmd, params); - return !printCmd->IsEmpty(); + return !printCmd->empty(); } // TODO this function is half implemented @@ -189,19 +195,19 @@ bool wxFileTypeImpl::GetExtensions(wxArrayString& extensions) if ( m_info ) { extensions = m_info->GetExtensions(); - return TRUE; + return true; } - else if ( m_ext.IsEmpty() ) { + else if ( m_ext.empty() ) { // the only way to get the list of extensions from the file type is to // scan through all extensions in the registry - too slow... - return FALSE; + return false; } else { extensions.Empty(); extensions.Add(m_ext); // it's a lie too, we don't return _all_ extensions... - return TRUE; + return true; } } @@ -211,7 +217,7 @@ bool wxFileTypeImpl::GetMimeType(wxString *mimeType) const // we already have it *mimeType = m_info->GetMimeType(); - return TRUE; + return true; } // suppress possible error messages @@ -220,21 +226,34 @@ bool wxFileTypeImpl::GetMimeType(wxString *mimeType) const /* wxRegKey key(wxRegKey::HKCR, wxT(".") + m_ext); if ( key.Open() && key.QueryValue(wxT("Content Type"), *mimeType) ) { - return TRUE; + return true; } else { - return FALSE; + return false; } */ - return FALSE; + return false; +} + +bool wxFileTypeImpl::GetMimeTypes(wxArrayString& mimeTypes) const +{ + wxString s; + + if (GetMimeType(&s)) + { + mimeTypes.Clear(); + mimeTypes.Add(s); + return true; + } + else + return false; } -bool wxFileTypeImpl::GetIcon(wxIcon *icon) const +bool wxFileTypeImpl::GetIcon(wxIconLocation *WXUNUSED(iconLoc)) const { -#if wxUSE_GUI if ( m_info ) { // we don't have icons in the fallback resources - return FALSE; + return false; } wxString strIconKey; @@ -249,7 +268,7 @@ bool wxFileTypeImpl::GetIcon(wxIcon *icon) const if ( key.Open() ) { wxString strIcon; // it's the default value of the key - if ( key.QueryValue(wxT(""), strIcon) ) { + if ( key.QueryValue(wxEmptyString, strIcon) ) { // the format is the following: , // NB: icon index may be negative as well as positive and the full // path may contain the environment variables inside '%' @@ -258,33 +277,25 @@ bool wxFileTypeImpl::GetIcon(wxIcon *icon) const // index may be omitted, in which case BeforeLast(',') is empty and // AfterLast(',') is the whole string - if ( strFullPath.IsEmpty() ) { + if ( strFullPath.empty() ) { strFullPath = strIndex; strIndex = wxT("0"); } - wxString strExpPath = wxExpandEnvVars(strFullPath); - int nIndex = wxAtoi(strIndex); + if ( iconLoc ) + { + iconLoc->SetFileName(wxExpandEnvVars(strFullPath)); - HICON hIcon = ExtractIcon(GetModuleHandle(NULL), strExpPath, nIndex); - switch ( (int)hIcon ) { - case 0: // means no icons were found - case 1: // means no such file or it wasn't a DLL/EXE/OCX/ICO/... - wxLogDebug(wxT("incorrect registry entry '%s': no such icon."), - key.GetName().c_str()); - break; - - default: - icon->SetHICON((WXHICON)hIcon); - return TRUE; + iconLoc->SetIndex(wxAtoi(strIndex)); } + + return true; } } // no such file type or no value or incorrect icon entry */ -#endif // wxUSE_GUI - return FALSE; + return false; } bool wxFileTypeImpl::GetDescription(wxString *desc) const @@ -293,7 +304,7 @@ bool wxFileTypeImpl::GetDescription(wxString *desc) const // we already have it *desc = m_info->GetDescription(); - return TRUE; + return true; } // suppress possible error messages @@ -305,11 +316,11 @@ bool wxFileTypeImpl::GetDescription(wxString *desc) const if ( key.Open() ) { // it's the default value of the key if ( key.QueryValue(wxT(""), *desc) ) { - return TRUE; + return true; } } */ - return FALSE; + return false; } // extension -> file type @@ -318,7 +329,7 @@ wxMimeTypesManagerImpl::GetFileTypeFromExtension(const wxString& ext) { // add the leading point if necessary wxString str; - if ( ext[0u] != wxT('.') ) { + if ( ext[(size_t) 0] != wxT('.') ) { str = wxT('.'); } str << ext; @@ -326,7 +337,7 @@ wxMimeTypesManagerImpl::GetFileTypeFromExtension(const wxString& ext) // suppress possible error messages wxLogNull nolog; - bool knownExtension = FALSE; + bool knownExtension = false; wxString strFileType; // TODO: @@ -345,7 +356,7 @@ wxMimeTypesManagerImpl::GetFileTypeFromExtension(const wxString& ext) // this extension doesn't have a filetype, but it's known to the // system and may be has some other useful keys (open command or // content-type), so still return a file type object for it - knownExtension = TRUE; + knownExtension = true; } } */ @@ -414,7 +425,7 @@ wxMimeTypesManagerImpl::GetFileTypeFromMimeType(const wxString& mimeType) return NULL; } -size_t wxMimeTypesManagerImpl::EnumAllFileTypes(wxArrayString& mimetypes) +size_t wxMimeTypesManagerImpl::EnumAllFileTypes(wxArrayString& WXUNUSED(mimetypes)) { // enumerate all keys under MIME_DATABASE_KEY // TODO: @@ -436,3 +447,4 @@ size_t wxMimeTypesManagerImpl::EnumAllFileTypes(wxArrayString& mimetypes) return 0; } +#endif //wxUSE_MIMETYPE