RFC: Herding your program’s icons, how?

Friedrich W. H. Kossebau kossebau at kde.org
Thu Apr 26 14:36:41 BST 2012


Hi,

(cc: to kde-bindings for heads-up, follow-ups please only on kde-core-devel)

Problem__
How to get all icon-ids in your codebase?

Just blogged* about this, but then more something for this ml.

* http://frinring.wordpress.com/2012/04/26/herding-your-programs-icons-how/

When seeing for the icon-ids used in Calligra, I have used a simple approach 
to get at least most of them, doing a grep for lines with “KIcon(“. That gave 
me more than 1000 lines for Calligra, and almost all also directly used an 
icon-id, so there was chance to do a check and create a report for these.

Now this is quite unsatisfying to not be able to easily get a list of _all_ 
the icon resources used in your codebase, and having to do manually extraction 
is not nice. How do you deal with this in your project?


Proposal__

Ideally icon-ids would be kind-of tagged when used, so like gettext is able to 
extract all strings which need a translation, some geticon would be able to 
extract all icon-ids. The result could then be used to check the icon-ids 
against the icons available from the icon themes and the icons installed from 
the project itself, ideally automatically (as doing that manually is… pretty 
boring, time-consuming and error-prone).

I could imagine that there could be some macros

    kicon("some-icon")

and

    kiconid("some-icon")

which would resolve to

    KIcon(QLatin1String("some-icon"))  // kicon("...") is even more readable

and

    "some-icon"

and would enable to automatically extract these icon-ids (with metadata like 
file, line, etc). It should be backward-compatible, as it is just some mark-up 
which resolves to what there was before. And while there is nothing to enforce 
that all icon-ids are marked up, the same problem exists with i18n, so 
something we are okay with.

With that markup IDEs might be even able to check the validness of icon-ids or 
offer code-completion, perhaps even with preview of the actual icon :) 
</dream>


Questions__

What about icons used in UI files, will they still pass KIconLoader or 
whatever makes the icon being picked from the usual places?

Are there other usages of icon-ids which might not be catchable this way?

Would something similar work for non-C++ languages?

What could be better keywords for the macros?

What do you think in general? Comments, other/better proposals welcome!

Cheers
Friedrich





More information about the kde-core-devel mailing list