############################################################################# ## Name: XS/MimeTypes.xsp ## Purpose: XS++ for wxMimeTypesManager and related classes ## Author: Mattia Barbon ## Modified by: ## Created: 28/03/2005 ## RCS-ID: $Id: MimeTypes.xsp 2911 2010-04-26 19:51:34Z mbarbon $ ## Copyright: (c) 2005-2010 Mattia Barbon ## Licence: This program is free software; you can redistribute it and/or ## modify it under the same terms as Perl itself ############################################################################# %module{Wx}; %{ #if wxUSE_MIMETYPE #include <wx/mimetype.h> %} %typemap{wxMimeTypesManager*}{simple}; %typemap{wxFileType*}{simple}; %typemap{wxIconLocation*}{simple}; %typemap{wxFileTypeInfo*}{simple}; %typemap{const wxFileTypeInfo*}{parsed}{ %cpp_type{%wxFileTypeInfo*%}; }; #if WXPERL_W_VERSION_GE( 2, 5, 2 ) %name{Wx::IconLocation} class wxIconLocation { bool IsOk() const; }; #endif %name{Wx::FileTypeInfo} class wxFileTypeInfo { bool IsValid() const; void SetIcon( const wxString& iconFile, int iconIndex = 0 ); void SetShortDesc( const wxString& shortDesc ); const wxString& GetMimeType() const; const wxString& GetOpenCommand() const; const wxString& GetPrintCommand() const; const wxString& GetShortDesc() const; const wxString& GetDescription() const; int GetExtensionsCount() const; const wxString& GetIconFile(); int GetIconIndex() const; }; %{ wxFileTypeInfo* wxFileTypeInfo::new( strings ) wxArrayString strings void wxFileTypeInfo::GetExtensions() PPCODE: const wxArrayString& extensions = THIS->GetExtensions(); PUTBACK; wxPli_stringarray_push( aTHX_ extensions ); SPAGAIN; %} %name{Wx::FileType} class wxFileType { }; %{ void wxFileType::GetMimeTypes() PREINIT: wxArrayString mimeTypes; PPCODE: bool ok = THIS->GetMimeTypes( mimeTypes ); if( ok ) { PUTBACK; wxPli_stringarray_push( aTHX_ mimeTypes ); SPAGAIN; } else XSRETURN_EMPTY; void wxFileType::GetMimeType() PREINIT: wxString mimeType; PPCODE: bool ok = THIS->GetMimeType( &mimeType ); if( ok ) { XPUSHs( wxPli_wxString_2_sv( aTHX_ mimeType, sv_newmortal() ) ); } else XSRETURN_EMPTY; void wxFileType::GetExtensions() PREINIT: wxArrayString extensions; PPCODE: bool ok = THIS->GetExtensions( extensions ); if( ok ) { PUTBACK; wxPli_stringarray_push( aTHX_ extensions ); SPAGAIN; } else XSRETURN_EMPTY; void wxFileType::GetIcon() PREINIT: #if WXPERL_W_VERSION_GE( 2, 5, 2 ) wxIconLocation iconLoc; #else wxIcon iconLoc; #endif PPCODE: bool ok = THIS->GetIcon( &iconLoc ); if( ok ) { #if WXPERL_W_VERSION_GE( 2, 5, 2 ) XPUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(), new wxIconLocation( iconLoc ), "Wx::IconLocation" ) ); #else XPUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(), new wxIcon( iconLoc ), "Wx::Icon" ) ); #endif } else XSRETURN_EMPTY; void wxFileType::GetDescription() PREINIT: wxString desc; PPCODE: bool ok = THIS->GetDescription( &desc ); if( ok ) { XPUSHs( wxPli_wxString_2_sv( aTHX_ desc, sv_newmortal() ) ); } else XSRETURN_EMPTY; void wxFileType::GetOpenCommand( file, mimeType = wxEmptyString ) wxString file wxString mimeType PREINIT: wxString command; PPCODE: bool ok = THIS->GetOpenCommand( &command, wxFileType::MessageParameters ( file, mimeType ) ); if( ok ) XPUSHs( wxPli_wxString_2_sv( aTHX_ command, sv_newmortal() ) ); else XSRETURN_EMPTY; void wxFileType::GetPrintCommand( file, mimeType = wxEmptyString ) wxString file wxString mimeType PREINIT: wxString command; PPCODE: bool ok = THIS->GetPrintCommand( &command, wxFileType::MessageParameters ( file, mimeType ) ); if( ok ) XPUSHs( wxPli_wxString_2_sv( aTHX_ command, sv_newmortal() ) ); else XSRETURN_EMPTY; %} %name{Wx::MimeTypesManager} class wxMimeTypesManager { wxMimeTypesManager(); %{ static void wxMimeTypesManager::CLONE() CODE: wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object ); %} ## // thread OK ~wxMimeTypesManager() %code{% wxPli_thread_sv_unregister( aTHX_ "Wx::MimeTypesManager", THIS, ST(0) ); delete THIS; %}; void AddFallbacks( const wxFileTypeInfo *fallbacks ); wxFileType* GetFileTypeFromExtension( const wxString& extension ); wxFileType* GetFileTypeFromMimeType( const wxString& mimeType ); bool IsOfType( const wxString& mimeType, const wxString& wildcard ); #if WXPERL_W_VERSION_LT( 2, 9, 0 ) bool ReadMailcap( const wxString& filename, bool fallback = false ); bool ReadMimeTypes( const wxString& filename ); #endif }; %{ #endif // wxUSE_MIMETYPE %}