Development/Tutorials/Icons: Difference between revisions
Appearance
< Development | Tutorials
No edit summary |
No edit summary |
||
Line 16: | Line 16: | ||
[pid 3457] open("/var/tmp/kdecache-root/kpc/kde-icon-cache.index", O_RDONLY|O_CLOEXEC) = 10 | [pid 3457] open("/var/tmp/kdecache-root/kpc/kde-icon-cache.index", O_RDONLY|O_CLOEXEC) = 10 | ||
[...] | [...] | ||
If you have a KDE project and want to use icons within it, and want that these icons install seamlessly, you will have to name the icons after the project. In the following we look at a project named ''krep''. The important lines in CMakeLists.txt are the ones printed bold below: | |||
PROJECT( krep ) | |||
FIND_PACKAGE( KDE4 REQUIRED ) | |||
INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} . ) | |||
SET(krepSources main.cpp krep.cpp krep.h) | |||
qt4_add_dbus_adaptor( krepSources | |||
org.kde.krep.xml | |||
krep.h | |||
krep | |||
mainadaptor | |||
MainAdaptor ) | |||
kde4_add_ui_files( krepSources krepui.ui ) | |||
'''kde4_add_app_icon( krepSources "hi*-app-krep.png" )''' | |||
KDE4_ADD_EXECUTABLE( krep ${krepSources} ) | |||
TARGET_LINK_LIBRARIES( krep ${KDE4_KPARTS_LIBS} ) | |||
install( TARGETS krep ${INSTALL_TARGETS_DEFAULT_ARGS} ) | |||
'''kde4_install_icons( ${ICON_INSTALL_DIR} )''' |
Revision as of 21:09, 27 August 2011
Maybe you have already searched for yourself how a KDE application finds its icons. You will not be successful like this:
# strace -e open ktimetracker 2>&1 | grep icon open("/usr/lib64/libkemoticons.so.4", O_RDONLY) = 3 #
You see, a KDE application (in this case ktimetracker) does not open icon files or even look for them. However, it spawns a process to look for these icons:
linux-qgla:~/repos/kdepim/ktimetracker # strace -ffe open ktimetracker 2>&1 | grep icon open("/usr/lib64/libkemoticons.so.4", O_RDONLY) = 3 [pid 3457] open("/root/.icons/DMZ/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory) [pid 3457] open("/root/.icons/DMZ/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory) [pid 3457] open("/usr/share/icons/DMZ/cursors/left_ptr", O_RDONLY) = 10 [pid 3457] open("/var/tmp/kdecache-root/icon-cache.kcache", O_RDWR|O_CREAT|O_CLOEXEC, 0666) = 10 [pid 3457] open("/var/tmp/kdecache-root/kpc/kde-icon-cache.data", O_RDONLY|O_CLOEXEC) = 10 [pid 3457] open("/var/tmp/kdecache-root/kpc/kde-icon-cache.index", O_RDONLY|O_CLOEXEC) = 10 [...]
If you have a KDE project and want to use icons within it, and want that these icons install seamlessly, you will have to name the icons after the project. In the following we look at a project named krep. The important lines in CMakeLists.txt are the ones printed bold below:
PROJECT( krep ) FIND_PACKAGE( KDE4 REQUIRED ) INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} . ) SET(krepSources main.cpp krep.cpp krep.h) qt4_add_dbus_adaptor( krepSources org.kde.krep.xml krep.h krep mainadaptor MainAdaptor ) kde4_add_ui_files( krepSources krepui.ui ) kde4_add_app_icon( krepSources "hi*-app-krep.png" ) KDE4_ADD_EXECUTABLE( krep ${krepSources} ) TARGET_LINK_LIBRARIES( krep ${KDE4_KPARTS_LIBS} ) install( TARGETS krep ${INSTALL_TARGETS_DEFAULT_ARGS} ) kde4_install_icons( ${ICON_INSTALL_DIR} )