On 7. Sep, 2010, at 12:39 , Amir Pakdel wrote: > On Tue, Sep 7, 2010 at 10:36 AM, Michael Wild <[email protected]> wrote: >> >> On 7. Sep, 2010, at 6:45 , Amir Pakdel wrote: >> >>> Hi developers, >>> >>> I am trying to add a MIME type for "Basket Note Pads" files so that >>> Desktop Environments (KDE and GNOME) can recognise them. For that >>> purpose, I created a basket.xml and included the MIME type in the >>> basket.desktop file; then, I have added the MIME >>> type and associated this MIME type with the basket.desktop using the >>> following commands: >>> >>> xdg-mime install --novendor basket.xml >>> xdg-desktop-menu install --novendor basket.desktop >>> xdg-mime default basket.desktop application/x-basket-item >>> >>> This procedure seems work fine, but I cannot add it to the CMake. I >>> mean, I cannot do it automatically during installation via CMake >>> rules. >>> >>> Below is basket.xml: >>> <?xml version="1.0" encoding="UTF-8"?> >>> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> >>> <mime-type type="application/x-basket-item"> >>> <sub-class-of type="text/xml"/> >>> <sub-class-of type="application/xml"/> >>> <comment>Basket Note Pads</comment> >>> <icon>basket</icon> >>> <glob pattern=".basket" weight="50" /> >>> <magic priority="90"> >>> <match type="string" offset="2" value="xml"> >>> <match type="string" offset="39" value="!DOCTYPE basket>"/> >>> </match> >>> </magic> >>> <root-XML localName="basket" /> >>> </mime-type> >>> </mime-info> >>> >>> >>> And this is the basket.desktop file: >>> [Desktop Entry] >>> Type=Application >>> Exec=basket %f >>> MimeType=application/x-basket-archive;application/x-basket-template;application/x-basket-item; >>> Icon=basket >>> Categories=Qt;KDE;Office; >>> X-DBUS-StartupType=Unique >>> Name=BasKet Note Pads >>> GenericName=Multi-Purpose Notepad >>> Comment=Taking care of your ideas. >>> >>> >>> >>> >>> >>> Can anyone help me please. >>> >>> Cheers, >>> >>> Amir >> >> Write the commands to a script file (probably created using configure_file) >> and then invoke it in >> >> install(SCRIPT ${CMAKE_BINARY_DIR}/script_name) >> >> You can write a shell script, or if you prefer a CMake script that uses >> execute_process to run the xdg-* commands. >> >> It would also be advisable to use find_program in your CMakeLists.txt file >> to find these executables and then configure them into the script, otherwise >> you're never sure whether the user has them actually installed. >> >> HTH >> >> Michael >> >> -- >> There is always a well-known solution to every human problem -- neat, >> plausible, and wrong. >> H. L. Mencken >> >> > Hi, > > Thank you very much. That worked for me. I have added the following to > my CMakeLists.txt: > > find_program(XDG-MIME_EXECUTABLE xdg-mime) > find_program(XDG-DESKTOP-MENU_EXECUTABLE xdg-desktop-menu) > execute_process(COMMAND ${XDG-MIME_EXECUTABLE} install --novendor basket.xml) > execute_process(COMMAND ${XDG-DESKTOP-MENU_EXECUTABLE} install > --novendor basket.desktop) > execute_process(COMMAND ${XDG-MIME_EXECUTABLE} default basket.desktop > "application/x-basket-item")
You'll want to put those execute_process calls inside an install(CODE ...)
command, otherwise you install update the MIME database when configuring. E.g:
install(CODE "
execute_process(COMMAND ${XDG-MIME_EXECUTABLE} install
--novendor basket.xml)
execute_process(COMMAND ${XDG-DESKTOP-MENU_EXECUTABLE} install
--novendor basket.desktop)
execute_process(COMMAND ${XDG-MIME_EXECUTABLE} default basket.desktop
application/x-basket-item)"
)
Michael
--
There is always a well-known solution to every human problem -- neat,
plausible, and wrong.
H. L. Mencken
PGP.sig
Description: This is a digitally signed message part
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake
