Debug warnings for broken icons

Jakob Petsovits jpetso at gmx.at
Mon Dec 24 23:23:54 GMT 2007


On Friday, 21. December 2007, Allen Winter wrote:
> On Thursday 20 December 2007 08:10:47 Jakob Petsovits wrote:
> > Nice idea... although, I could imagine that this would make a really nice
> > Krazy check as well, catching most of the icons by just testing on three
> > or four usage patterns.
>
> If you give me the usage patterns I can try to put such a check into Krazy.
> .. or you can try to write the plugin yourself :)

Thinking a bit more about it, it might be harder than I originally imagined, 
mostly based on the fact that checking icon names is probably a bit hard to 
perform with application specific icon folders and minor other issues.

I'm not sure if it's worth the effort at this time... but if it is,
I could imagine the following usage patterns to be checked.

First, you go after one of the following strings
(insert spaces where C++ allows it):

* KIcon(
* DesktopIcon(
* SmallIcon(
* BarIcon(
* MainBarIcon(
* KIconLoader().loadIcon(
* KIconLoader().iconPath(
* KIconLoader().loadIconSet(

The KIconLoader calls are a small minority so few icons should go missing 
because of some variant like loader.loadIcon().

Then you check if the following token is a string and the token after that is 
a closing parenthesis or a comma following more arguments, e.g.
* KIcon( "media-playback-start" )
* KIconLoader().loadIcon( "go-back", ...

If this token is not a string, abort, as it's too difficult to determine the 
icon name. Otherwise, we have the name and can check it:

Check in all subfolders of kdebase/runtime/pics/oxygen/scalable and the 
(magically determined?) app-specific icon folder if an icon with that name 
exists there, or an appropriate fallback. If neither of those exist, we have 
a positive that would be listed on EBN.

(A fallback has the same name as the original icon minus any amount 
of "-[a-zA-z]" suffixes, in other words, "media-playback-start" can fall back 
to "media-playback" and afterwards to "media" even.)

An icon in kdebase/runtime/pics/oxygen/scalable/* can be named 
[icon-name].svgz. An icon in an application specific icon folder can be named 
[size]-[category]-[icon-name].png, the size and category don't really matter 
for icon checking purposes.

So that's essentially it. As I said, implementing icon lookups and stuff might 
be a bit too much effort for little gain... but in case someone doesn't have 
better stuff to do, it might be worth a try.

Merry Christmas,
  Jakob




More information about the kde-core-devel mailing list