wxWidgets 3.1.3 загрузка значков под ма c - Файлы ICNS не читаются? - PullRequest
0 голосов
/ 09 января 2020

Теперь кажется невозможным загружать файлы .icns в ma c. Раньше это было возможно, используя wxIcon и wxIconLocation, например.

wxMimeTypesManager manager;
wxFileType *type = manager.GetFileTypeFromExtension("zip");
wxIconLocation location;
if(type->GetIcon(&location))
{
  // location m_filename is something like "/System/Library/CoreServices/Applications/Archive Utility.app/Contents/Resources/bah-zip.icns"
  wxIcon icon;
  // This will FAIL now as there is no handler for wxBITMAP_TYPE_ICON...
  icon.LoadFile(location.GetFileName(), wxBITMAP_TYPE_ICON, 32, 32);
}

wxMimeTypesManager :: GetFileTypeFromExtension возвращает wxFileType. Затем вы можете использовать wxFileType :: GetIcon для возврата wxIconLocation.

wxIconLocation :: GetFileName () возвращает файл .icns в OSX. Раньше это можно было загружать как wxIcon в wxWidgets 2.9.1, если вы передали wxBITMAP_TYPE_ICON в wxIcon :: LoadFile, поскольку это заставило wxIcon :: LoadIconFromFile (src / osx / carbon / icon. cpp) загружаться из icns с использованием ReadIconFromFSRef.

Но так как весь код Carbon исчез, теперь я не могу ничего загрузить из файла .icns.

Как я могу сделать это сейчас?

РЕДАКТИРОВАТЬ: я использовал следующие настройки: configure --disable-shared --enable-unicode --prefix="$(pwd)" --enable-stc --enable-ipc --enable-base64 --enable-exceptions --enable-fontenum --enable-fs_archive --enable-stdpaths --enable-sysoptions --enable-threads --enable-url --enable-aui --enable-graphics_ctx --enable-printarch --enable-timer --enable-ribbon --enable-webview --enable-display --enable-splash --enable-snglinst --enable-printfposparam --with-opengl --with-osx_cocoa --with-expat=builtin --with-cxx=11 --enable-cxx11 --enable-stl --enable-std_iostreams --enable-std_string --enable-ftp --enable-http --enable-fileproto --enable-sockets --enable-ipv6 --enable-dataobj --enable-ipc --enable-any --enable-arcstream --enable-backtrace --enable-cmdline --enable-datetime --enable-debugreport --enable-dynamicloader --enable-exceptions --enable-ffile --enable-file --enable-filehistory --enable-filesystem --enable-fontmap --enable-fs_inet --enable-fs_zip --enable-fsvolume --enable-fswatcher --enable-geometry --enable-sound --enable-stopwatch --enable-streams --enable-tarstream --enable-textbuf --enable-textfile --enable-variant --enable-zipstream --enable-protocol --enable-protocol-http --enable-protocol-ftp --enable-protocol-file --enable-html --enable-htmlhelp --enable-propgrid --enable-svg --enable-clipboard --enable-dnd --enable-accel --with-osx_cocoa --enable-debug --with-libpng=builtin --with-libjpeg=builtin --with-zlib=builtin --with-libtiff=builtin

1 Ответ

0 голосов
/ 10 января 2020

К сожалению, мне это кажется ошибкой. В настоящее время wxIcon::LoadIconFromFile() просто всегда возвращает false, когда wxOSX_ICON_USE_NSIMAGE==1, что является значением по умолчанию. Вы можете попробовать установить wxOSX_BITMAP_NATIVE_ACCESS в 0 в setup.h и перестроить как очень краткосрочное исправление, но что действительно нужно сделать, это реализовать эту функцию с использованием NSImage, возможно, с использованием [NSImage initWithContentsOfFile:].

...