mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-17 20:52:36 +01:00
texturev: Fixed mime type assocation on Linux.
This commit is contained in:
@@ -1222,34 +1222,60 @@ void associate()
|
||||
}
|
||||
}
|
||||
#elif BX_PLATFORM_LINUX
|
||||
std::string str;
|
||||
str += "#/bin/bash\n\n";
|
||||
|
||||
for (uint32_t ii = 0; ii < BX_COUNTOF(s_supportedExt); ++ii)
|
||||
std::string mimeType;
|
||||
|
||||
auto associate = [&mimeType](const char* _ext)
|
||||
{
|
||||
const char* ext = s_supportedExt[ii];
|
||||
bx::stringPrintf(str, "xdg-mime default texturev.desktop image/%s\n", ext);
|
||||
}
|
||||
std::string tmp;
|
||||
bx::stringPrintf(tmp, "default texturev.desktop image/%s", _ext);
|
||||
|
||||
bx::stringPrintf(str, "xdg-mime default texturev.desktop image/x-dds\n");
|
||||
|
||||
str += "\n";
|
||||
|
||||
bx::FileWriter writer;
|
||||
bx::Error err;
|
||||
if (bx::open(&writer, "/tmp/texturev.sh", false, &err) )
|
||||
{
|
||||
bx::write(&writer, str.c_str(), uint32_t(str.length()), &err);
|
||||
bx::close(&writer);
|
||||
|
||||
if (err.isOk() )
|
||||
{
|
||||
bx::ProcessReader reader;
|
||||
if (bx::open(&reader, "/bin/bash", "/tmp/texturev.sh", &err) )
|
||||
bx::Error err;
|
||||
if (bx::open(&reader, "xdg-mime", tmp.c_str(), &err) )
|
||||
{
|
||||
bx::close(&reader);
|
||||
}
|
||||
else
|
||||
{
|
||||
bx::printf("Failed to associate MIME type image/%s (error: \"%S\")!\n", _ext, &err.getMessage() );
|
||||
}
|
||||
|
||||
bx::stringPrintf(mimeType, "image/%s;", _ext);
|
||||
};
|
||||
|
||||
for (uint32_t ii = 0; ii < BX_COUNTOF(s_supportedExt); ++ii)
|
||||
{
|
||||
associate(s_supportedExt[ii]);
|
||||
}
|
||||
|
||||
associate("x-dds");
|
||||
|
||||
bx::FileWriter writer;
|
||||
bx::Error err;
|
||||
if (bx::open(&writer, "/usr/share/applications/texturev.desktop", false, &err) )
|
||||
{
|
||||
bx::write(&writer, &err
|
||||
, "[Desktop Entry]\n"
|
||||
"Version=%d.%d.%d\n"
|
||||
"Type=Application\n"
|
||||
"Name=texturev\n"
|
||||
"GenericName=bgfx Image/Texture Viewer\n"
|
||||
"Exec=texturev %%U\n"
|
||||
"Terminal=false\n"
|
||||
"Categories=Graphics\n"
|
||||
"StartupNotify=true\n"
|
||||
"MimeType=%s\n"
|
||||
, BGFX_TEXTUREV_VERSION_MAJOR
|
||||
, BGFX_TEXTUREV_VERSION_MINOR
|
||||
, BGFX_API_VERSION
|
||||
, mimeType.c_str()
|
||||
);
|
||||
bx::close(&writer);
|
||||
}
|
||||
else
|
||||
{
|
||||
bx::printf("Failed to create texturev desktop entry (error: \"%S\")! Permissions (try sudo)?!\n", &err.getMessage() );
|
||||
}
|
||||
#endif // BX_PLATFORM_WINDOWS
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user