Implement wxFileType::GetOpenCommand() in wxOSX.
This method used to work in 2.8 but was unimplemented in 2.9. Restore more or less the old implementation using the data that we already have in wxMimeTypesManager anyhow. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68563 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -456,6 +456,7 @@ All (GUI):
|
|||||||
OSX:
|
OSX:
|
||||||
|
|
||||||
- Implement wxRegion::Equal() (Dr.Acula).
|
- Implement wxRegion::Equal() (Dr.Acula).
|
||||||
|
- Implement wxFileType::GetOpenCommand().
|
||||||
- wxGetOsVersion() now returns more sensible version numbers, e.g. 10 and 6
|
- wxGetOsVersion() now returns more sensible version numbers, e.g. 10 and 6
|
||||||
for OS X 10.6.
|
for OS X 10.6.
|
||||||
|
|
||||||
|
@@ -56,6 +56,7 @@ private:
|
|||||||
bool GetMimeTypes(const wxString& uti, wxArrayString& mimeTypes);
|
bool GetMimeTypes(const wxString& uti, wxArrayString& mimeTypes);
|
||||||
bool GetIcon(const wxString& uti, wxIconLocation *iconLoc);
|
bool GetIcon(const wxString& uti, wxIconLocation *iconLoc);
|
||||||
bool GetDescription(const wxString& uti, wxString *desc);
|
bool GetDescription(const wxString& uti, wxString *desc);
|
||||||
|
bool GetApplication(const wxString& uti, wxString *command);
|
||||||
|
|
||||||
// Structure to represent file types
|
// Structure to represent file types
|
||||||
typedef struct FileTypeData
|
typedef struct FileTypeData
|
||||||
@@ -63,6 +64,7 @@ private:
|
|||||||
wxArrayString extensions;
|
wxArrayString extensions;
|
||||||
wxArrayString mimeTypes;
|
wxArrayString mimeTypes;
|
||||||
wxIconLocation iconLoc;
|
wxIconLocation iconLoc;
|
||||||
|
wxString application;
|
||||||
wxString description;
|
wxString description;
|
||||||
}
|
}
|
||||||
FileTypeInfo;
|
FileTypeInfo;
|
||||||
@@ -95,9 +97,9 @@ public:
|
|||||||
bool GetMimeTypes(wxArrayString& mimeTypes) const ;
|
bool GetMimeTypes(wxArrayString& mimeTypes) const ;
|
||||||
bool GetIcon(wxIconLocation *iconLoc) const ;
|
bool GetIcon(wxIconLocation *iconLoc) const ;
|
||||||
bool GetDescription(wxString *desc) const ;
|
bool GetDescription(wxString *desc) const ;
|
||||||
|
bool GetOpenCommand(wxString *openCmd, const wxFileType::MessageParameters& params) const;
|
||||||
|
|
||||||
// These functions are only stubs on Mac OS X
|
// These functions are only stubs on Mac OS X
|
||||||
bool GetOpenCommand(wxString *openCmd, const wxFileType::MessageParameters& params) const;
|
|
||||||
bool GetPrintCommand(wxString *printCmd, const wxFileType::MessageParameters& params) const;
|
bool GetPrintCommand(wxString *printCmd, const wxFileType::MessageParameters& params) const;
|
||||||
size_t GetAllCommands(wxArrayString *verbs, wxArrayString *commands, const wxFileType::MessageParameters& params) const;
|
size_t GetAllCommands(wxArrayString *verbs, wxArrayString *commands, const wxFileType::MessageParameters& params) const;
|
||||||
bool SetCommand(const wxString& cmd, const wxString& verb, bool overwriteprompt = TRUE);
|
bool SetCommand(const wxString& cmd, const wxString& verb, bool overwriteprompt = TRUE);
|
||||||
|
@@ -447,7 +447,11 @@ void wxMimeTypesManagerImpl::LoadDisplayDataForUti(const wxString& uti)
|
|||||||
if( !bundle )
|
if( !bundle )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Get a all the document type data in this bundle
|
// Also get the open command while we have the bundle
|
||||||
|
wxCFStringRef cfsAppPath(CFURLCopyFileSystemPath(appUrl, kCFURLPOSIXPathStyle));
|
||||||
|
m_utiMap[ uti ].application = cfsAppPath.AsString();
|
||||||
|
|
||||||
|
// Get all the document type data in this bundle
|
||||||
CFTypeRef docTypeData;
|
CFTypeRef docTypeData;
|
||||||
docTypeData = CFBundleGetValueForInfoDictionaryKey( bundle, docTypesKey );
|
docTypeData = CFBundleGetValueForInfoDictionaryKey( bundle, docTypesKey );
|
||||||
|
|
||||||
@@ -587,6 +591,19 @@ bool wxMimeTypesManagerImpl::GetDescription(const wxString& uti, wxString *desc)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxMimeTypesManagerImpl::GetApplication(const wxString& uti, wxString *command)
|
||||||
|
{
|
||||||
|
const UtiMap::const_iterator itr = m_utiMap.find( uti );
|
||||||
|
|
||||||
|
if( itr == m_utiMap.end() )
|
||||||
|
{
|
||||||
|
command->clear();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
*command = itr->second.application;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// The remaining functionality has not yet been implemented for OS X
|
// The remaining functionality has not yet been implemented for OS X
|
||||||
@@ -626,9 +643,36 @@ bool wxFileTypeImpl::GetDescription(wxString *desc) const
|
|||||||
return m_manager->GetDescription( m_uti, desc );
|
return m_manager->GetDescription( m_uti, desc );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxFileTypeImpl::GetOpenCommand(wxString *WXUNUSED(openCmd), const wxFileType::MessageParameters& WXUNUSED(params)) const
|
namespace
|
||||||
{
|
{
|
||||||
return false;
|
|
||||||
|
// Helper function for GetOpenCommand(): returns the string surrounded by
|
||||||
|
// (singly) quotes if it contains spaces.
|
||||||
|
wxString QuoteIfNecessary(const wxString& path)
|
||||||
|
{
|
||||||
|
wxString result(path);
|
||||||
|
|
||||||
|
if ( path.find(' ') != wxString::npos )
|
||||||
|
{
|
||||||
|
result.insert(0, "'");
|
||||||
|
result.append("'");
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
|
bool wxFileTypeImpl::GetOpenCommand(wxString *openCmd, const wxFileType::MessageParameters& params) const
|
||||||
|
{
|
||||||
|
wxString application;
|
||||||
|
if ( !m_manager->GetApplication(m_uti, &application) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
*openCmd << QuoteIfNecessary(application)
|
||||||
|
<< ' ' << QuoteIfNecessary(params.GetFileName());
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxFileTypeImpl::GetPrintCommand(wxString *WXUNUSED(printCmd), const wxFileType::MessageParameters& WXUNUSED(params)) const
|
bool wxFileTypeImpl::GetPrintCommand(wxString *WXUNUSED(printCmd), const wxFileType::MessageParameters& WXUNUSED(params)) const
|
||||||
|
Reference in New Issue
Block a user